Histeq matlab无法正常工作

时间:2015-05-08 04:30:39

标签: image matlab image-processing histogram

我想对SPOT5图像进行直方图均衡化。我试着用histeq命令。为什么这不起作用?

这是我的输入和错误:

>>I = imread('C:\Users\windows 8\Downloads\ori.tif');

>>imshow( I(:,:,1:3) )
  

警告:图像太大,无法放在屏幕上;显示为17%   在imuitools \ private \ initSize at 72In imshow at 283

>> J = histeq(I);
  

使用histeq时出错   预期的输入数字1,I,是二维的。

我还是的新手。我真的 感谢一些帮助。提前谢谢

1 个答案:

答案 0 :(得分:1)

警告正在发生,因为or.tif的图像尺寸大于屏幕。它只是告诉你它没有以完整尺寸显示它。这不会影响直方图均衡。

直方图均衡化的错误是因为matlab期望I是2D矩阵。您的TIFF文件是一个3D矩阵,它的宽度为x高x颜色。

根据您使用直方图均衡化尝试实现的目标,您可能需要先将图像转换为灰度图像

greyI = rgb2gray( I(:,:,1:3) );
J = histeq( greyI );

或依次对三个颜色平面中的每一个应用直方图均衡。

J = zeros( size( I ) );
J(:,:,1) = histeq( squeeze( I(:,:,1) ) );
J(:,:,2) = histeq( squeeze( I(:,:,2) ) );
J(:,:,3) = histeq( squeeze( I(:,:,3) ) );
% Next line if you have alpha channel
if( size( J, 3 ) == 4 )
    J(:,:,4) = histeq( squeeze( I(:,:,4) ) );
end