任何人都知道如何在两个彩色图像上进行RGB直方图匹配?
例如,这是要重新映射的图像:
这是一个目标图像
然后RGB重新映射的图像看起来像这样
这是我到目前为止所做的,在这段代码中我拍了两张彩色图片im1
和im2
我拿了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);
答案 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