matlab中两幅彩色图像的直方图匹配

时间:2011-06-14 23:29:40

标签: matlab image-processing histogram

任何人都知道如何在两个彩色图像上进行RGB直方图匹配?

例如,这是要重新映射的图像:

image to be re-mapped

这是一个目标图像

target image

然后RGB重新映射的图像看起来像这样

re-mapped image

这是我到目前为止所做的,在这段代码中我拍了两张彩色图片im1im2

我拿了im1这是必须重新映射的那个然后把它分解成

它的颜色然后我采用im1的每种颜色并使用histeq来匹配它们的直方图

im2中的每种颜色。

我不知道如何从我匹配的颜色重建重新映射的图像,任何帮助请那会很好??:

im1 = imread('Atlas-Mer.png');
im2 = imread('techno-trs.png');

Red1 = im1(:, :, 1);
Green1 = im1(:, :, 2);
Blue1 = im1(:, :, 3);
.
.
.
Red2 = im2(:, :, 1);
Green2 = im2(:, :, 2);
Blue2 = im2(:, :, 3);

red2n = histeq(Red2,HnRed1);
green2n = histeq(Green2,HnGreen1);
blue2n = histeq(Blue2,HnBlue1);

3 个答案:

答案 0 :(得分:5)

自从原始问题发布以来已经好几个月了,但我认为每个人都可以使用另一种方法来建议:下面的代码将三个颜色通道放入一个RGB图像中:

rgb_out = cat(3, red2n, green2n, blue2n);

答案 1 :(得分:4)

你可以这样做:

im2(:, :, 1) = red2n;

答案 2 :(得分:0)

Matlab现在在图像处理工具箱中有一个内置函数来执行此操作: http://www.mathworks.com/help/images/ref/imhistmatch.html

但是如果你有一个旧版本的Matlab(我有2010b并且它不包括imhistmatch.m),这是执行经典直方图匹配的功能: https://www.mathworks.com/matlabcentral/fileexchange/27396-matchhistograms