Ответ 1
Вы можете просто сделать:
im2(:, :, 1) = red2n;
и др.
Кто-нибудь знает, как выполнить сопоставление гистограммы 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);
Вы можете просто сделать:
im2(:, :, 1) = red2n;
и др.
Ну, прошло несколько месяцев с момента публикации исходного вопроса, но я думаю, что каждый может использовать альтернативный подход к тому, что было предложено: следующий код помещает три цветовых канала в одно изображение RGB:
rgb_out = cat(3, red2n, green2n, blue2n);
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