我正在尝试使用imadjust
,为了做到这一点,我必须将图像中的值(灰度图像)标准化为0~1。我尝试过以下方法:
获取最小/最大值:
minValue = min(I(:));
maxValue = max(I(:));
比我在某些方面尝试使用imadjust
:
Iadjusted = imadjust(I,[lowestValue/highestValue; highestValue/highestValue] ,[0 1]);
Iadjusted = imadjust(I,[lowestValue/255; highestValue/255] ,[]);
Iadjusted = imadjust(I,[double(lowestValue/highestValue); double(highestValue/highestValue)] ,[]);
但它们都没有奏效。它们中的每一个都显示错误/显示原始图像而没有任何变化。当我显示最小/最大值时,结果是正确的,但是当我试图显示为标准化时,它总是显示0或1.我做错了什么?
答案 0 :(得分:0)
在MATLAB中,图像默认使用uint8存储,因此在[0 1]中只能有两个整数(即0和1)。要做你想要的并获得范围[0,1]的图像,你必须使用双打。
因此,如果你想使用imadjust:
I = double(I)/255;
J = imadjust(I,[min(I(:)); max(I(:))],[0.0; 1.0]);
(Imadjust with double想要一切都在0到1之间。对于用双打表示的图像,这是正确的)。
答案 1 :(得分:0)
此功能可将信号(可以是图像)调整到[0,1]
范围function normsig = normalize(sig)
sig = double(sig);
normsig = (sig-min(sig(:))) / (max(sig(:))-min(sig(:))) ;
end
用于图像信号:
img = imread('xxxx.jpg','jpg');
figure; imshow(img);
normalizedimg = normalize(img);
figure; imshow(normalizedimg);