Matlab中两个彩色图像的直方图匹配

问题描述

| 有人知道如何对两个彩色图像执行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