您的图像很可能是彩色的。
histeq
只适用于灰度图像。根据您想要做什么,有三个可供选择的选项。您可以将图像转换为灰度图像,也可以单独直方图均衡化每个通道,或者更具感知性的方法是将图像转换为HSV颜色空间,直方图均衡化V或Value分量,然后转换回RGB。对于彩色图像,我倾向于最后一种方法。因此,其中一种方法将是增强的灰度图像,另外两种方法将是增强的彩色图像。
选项#1-转换为灰度,然后均衡化
G = imread('F:\Thesis\images\image1.tif');
G = histeq(rgb2gray(G));
figure; imshow(G);
使用rgb2gray
将图像转换为灰度图像,然后进行图像均衡处理。
选项#2 - 逐个通道均衡化
G = imread('F:\Thesis\images\image1.tif');
for i = 1 : size(G, 3)
G(:,:,i) = histeq(G(:,:,i));
end
figure; imshow(G);
循环遍历每个通道并进行均衡化。
选项 #3 - 转换为HSV,对V通道进行直方图均衡化,然后转换回来
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
的输出将是双精度类型的图像,因此假设原始输入图像为
uint8
,请使用
im2uint8
函数将其从
double
转换回
uint8
。