我有彩色图像。我需要在其中应用直方图均衡。
如果我在以下代码中使用它
im = imread('E:\S1\New\Image1.png');
Test = histeq(im);
我收到以下错误
Function HISTEQ expected its first input, I, to be two-dimensional.
Error in ==> histeq at 71
iptcheckinput(a,{'uint8','uint16','double','int16','single'}, ...
如何解决这个问题?
答案 0 :(得分:5)
我认为最常见的解决方案是将图片转换为HSV colour space,然后仅将histeq
应用于V
(即价值或强度)频道。
http://en.wikipedia.org/wiki/Histogram_equalization#Histogram_equalization_of_color_images
答案 1 :(得分:3)
直觉图仅为灰度图像定义良好。您如何定义颜色的直方图均衡?
Hist-eq尝试通过稍微改变像素的亮度来重新分配灰度值以跨越(尽可能均匀地)整个范围0..255。
如果您希望对颜色执行相同操作:即均匀填充整个RGB立方体,您会发现自己更改像素的颜色。也就是说,你最终会变成黄色像素变成棕色。
你必须明确定义你的目标。
如果您只想跨越整个强度范围(不影响颜色),您会发现Dan的解决方案非常有用。
如果您确实要“填充”整个RGB多维数据集,可能需要考虑将hiseq
独立应用于图像的每个通道:
for ci = 1:size(im,3)
Test(:,:,ci) = histeq( im(:,:,ci) );
end
答案 2 :(得分:0)
简单来说,试试这个:
im = imread('E:\S1\New\Image1.png');
Test =im(:,:,1); ir=histeq(ir); figure; imshow(ir, 'Border', 'tight');