问题描述
|
有人知道如何对两个彩色图像执行RGB直方图匹配吗?
例如,这是要重新映射的图像:
这是目标图像
然后RGB重新映射的图像如下所示
这是我到目前为止所做的,在这段代码中,我拍摄了两个彩色图像
im1
和im2
我取了“ 0”,它是必须重新映射的,然后分解为
它的颜色然后我取im1的每种颜色,并使用histeq
使其直方图与
color1 in中的每种颜色。
我不知道如何从我匹配的颜色中重建重新映射的图像,请帮忙,那会很好吗?
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);
解决方法
您可以这样做:
im2(:,:,1) = red2n;
等等
, 好了,距最初提出问题已有数月了,但我认为每个人都可以对建议的内容使用另一种方法:以下代码将三个颜色通道放入一个RGB图像中:
rgb_out = cat(3,red2n,green2n,blue2n);
, Matlab现在在“图像处理工具箱”中具有内置功能来执行此操作:
http://www.mathworks.com/help/images/ref/imhistmatch.html
但是,如果您使用的是Matlab的旧版本(我有2010b,并且不包含imhistmatch.m),则此函数可以执行经典的直方图匹配:
https://www.mathworks.com/matlabcentral/fileexchange/27396-matchhistograms