直方图均衡有助于 MATLAB



我的代码如下所示:

G= histeq(imread('F:Thesisimagesimage1.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:Thesisimagesimage1.tif'));

您的图像很可能是彩色的。histeq仅适用于灰度图像。 根据您要执行的操作,有三个选项可供您使用。 您可以将图像转换为灰度,也可以直方图单独均衡每个通道,或者感知上更好的方法是将图像转换为 HSV 色彩空间,直方图均衡 V 或 Value 分量,然后转换回 RGB。 我倾向于彩色图像的最后一个选项。 因此,一种方法将是增强的灰度图像,另外两种将是增强的彩色图像。

选项#1 - 转换为灰度然后均衡

G = imread('F:Thesisimagesimage1.tif');
G = histeq(rgb2gray(G));
figure; imshow(G);

使用rgb2gray将图像转换为灰度,然后均衡图像。

选项 #2 - 单独均衡每个通道

G = imread('F:Thesisimagesimage1.tif');
for i = 1 : size(G, 3)
G(:,:,i) = histeq(G(:,:,i));
end
figure; imshow(G);

循环遍历每个通道并均衡。

选项 #3 - 转换为 HSV,直方图均衡 V 通道,然后转换回来

G = imread('F:Thesisimagesimages1.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函数从double转换回uint8

最新更新