Гистограмма соответствия двух цветных изображений в Matlab

Кто-нибудь знает, как выполнить сопоставление гистограммы RGB на двух цветных изображениях?

например, это изображение, которое нужно повторно отобразить:

image to be re-mapped

и это целевой образ

target image

Затем образ RGB с переименованием выглядит следующим образом:

re-mapped image

вот что я сделал до сих пор, в этом коде я взял два цветных изображения 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);

Ответы

Ответ 1

Вы можете просто сделать:

im2(:, :, 1) = red2n;

и др.

Ответ 2

Ну, прошло несколько месяцев с момента публикации исходного вопроса, но я думаю, что каждый может использовать альтернативный подход к тому, что было предложено: следующий код помещает три цветовых канала в одно изображение RGB:

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

Ответ 3

Matlab теперь имеет встроенную функцию в Image Processing Toolbox для этого: http://www.mathworks.com/help/images/ref/imhistmatch.html

Но если у вас более старая версия Matlab (у меня есть версия 2010b, и она не включает imhistmatch.m), это функция, которая выполняет классическое сопоставление гистограммы: https://www.mathworks.com/matlabcentral/fileexchange/27396-matchhistograms