簡體   English   中英

在matlab中拉伸圖像的直方圖

[英]stretching histogram of image in matlab

我正在嘗試使用每個像素的以下公式來實現函數imshow(img,[])

(img(x,y)-min(img))/(max(img)-min(img))*255  

但是我得到了不同的結果如何不使用imshow(img,[]) tnx來拉伸直方圖

在此處輸入圖片說明

碼:

IAS=input('please enter image address','s');
Iimg=imread(IAS);
stimg=(Iimg-min(Iimg(:)))/(max(Iimg(:))-min(Iimg(:)))*255;
subplot(1,3,1)
imshow(stimg);
title('strechself');
subplot(1,3,2)
imshow(Iimg);
title('original image');
subplot(1,3,3)
imshow(Iimg,[])
title('imshow(img,[])');

這可能是由於錯誤使用了maxmin

您正在執行min(img) ,這將為您提供每行最小值的數組。 如果想要整個圖像的絕對最小值,則應調用min(img(:))

因此,將您的行更改為:

img=(img-min(img(:)))/(max(img(:))-min(img(:)))*255  

請注意,它僅1行 在Matlab中,您不需要像其他語言一樣訪問每個像素( img(x,y) )並進行獨立更改,則可以直接進行操作。

另外,如果img不是uint8 ,我建議您制作(因為您使用的是0-255的縮放比例)

img=uint8(img);

編輯 :查看結果,很有可能您的原始圖像是uint8 ,因此, 拉伸圖像的行之前 ,應添加以下行:

img=double(img);

因此,您可以進行划分並保留數字。 否則,您正在執行整數除法,因此34/255 = 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM