[英]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,[])');
這可能是由於錯誤使用了max
和min
。
您正在執行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.