我的代码如下所示:
G= histeq(imread('F:\Thesis\images\image1.tif'));
figure,imshow(G);
我收到的错误消息如下,我不确定为什么会出现:
Error using histeq
Expected input number 1, I, to be two-dimensional.
Error in histeq (line 68)
validateattributes(a,{'uint8','uint16','double','int16','single'}, ...
Error in testFile1 (line 8)
G= histeq(imread('F:\Thesis\images\image1.tif'));
答案 0 :(得分:3)
您的图片很可能是彩色的。 histeq
仅适用于灰度图像。根据您的要求,有三种选择。你可以将图像转换为灰度,你可以直接对每个通道进行均衡,或者在感知上更好的是将图像转换为HSV颜色空间,直方图均衡V或Value分量,然后转换回RGB。我倾向于选择彩色图像的最后一个选项。因此,一种方法是增强的灰度图像,另外两种是增强的彩色图像。
G = imread('F:\Thesis\images\image1.tif');
G = histeq(rgb2gray(G));
figure; imshow(G);
使用rgb2gray
将图像转换为灰度,然后均衡图像。
G = imread('F:\Thesis\images\image1.tif');
for i = 1 : size(G, 3)
G(:,:,i) = histeq(G(:,:,i));
end
figure; imshow(G);
循环遍历每个频道并均衡。
G = imread('F:\Thesis\images\images1.tif');
Gh = rgb2hsv(G);
Gh(:,:,3) = histeq(Gh(:,:,3));
G = im2uint8(hsv2rgb(Gh));
figure; imshow(G);
使用rgb2hsv
功能将彩色图像转换为HSV。然后我们在V或Value通道上使用直方图均衡,然后使用hsv2rgb
从HSV转换回RGB。请注意,hsv2rgb
的输出将为double
类型图像,因此假设原始输入图像为uint8
,请使用im2uint8
函数从{{1}转换}回到double
。