规范化imadjust的值

时间:2014-04-09 17:35:00

标签: matlab image-processing

我正在尝试使用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.我做错了什么?

2 个答案:

答案 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);