【问题标题】:Histeq matlab not workingHisteq matlab不工作
【发布时间】:2015-05-08 04:30:39
【问题描述】:

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

这是我的输入和错误:

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

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

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

>> J = histeq(I);

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

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

【问题讨论】:

  • 似乎histeq 仅适用于灰度图像。你的是 RGB 3D 图像

标签: matlab image matlab image-processing histogram


【解决方案1】:

出现警告是因为 or.tif 的图像尺寸大于您的屏幕。它只是告诉您它没有以全尺寸显示。这不会影响直方图均衡化。

直方图均衡的错误是因为 matlab 期望 I 是一个二维矩阵。您的 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

【讨论】:

  • 您在条件中留下了拼写错误==。我猜你也不需要最后一行的squeeze
  • @SanthanSalai - 正确。 squeeze 在这里是不必要的。通过直接索引到第三维来压缩单一维度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 2013-09-10
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多