2012-10-24 40 views
3

直方图匹配我需要编写一个函数,将的image2直方图匹配可映射图像,让我们把它image1。但我不允许使用histeq。你能帮我用代码吗?MATLAB - 两幅图像

PS:我也想知道我会怎么做,如果操作我被允许使用histeq?提取红绿蓝通道后应该怎么做? (我不能使用histeq(R2,R1)?)

image1 = imread('color1.jpeg'); 
image2 = imread('color2.jpeg'); 

R1 = image1(:, :, 1); 
G1 = image1(:, :, 2); 
B1 = image1(:, :, 3); 

R2 = image2(:, :, 1); 
G2 = image2(:, :, 2); 
B2 = image2(:, :, 3); 

问候, 艾玛迪斯

回答

0

我不认为这个问题是不够具体。解决此问题的一种方法是将三个通道转换为灰度图像(rgb2gray),计算两个直方图(hist),然后在直方图之间找到所需的映射并将其应用于原始图像的每个通道。

转换为灰度是没有必要的,可以在每个通道上执行此算法,然后在以后加入通道在一起。

检查这个question,它采用histq

+0

我不明白'HnRed1'是在他的代码中。他在哪个区域跳过了哪些步骤? – Xentius

+0

不知道,也许'hist(Red1)'? – BorisM

+0

查看http://en.wikipedia.org/wiki/Histogram_equalization,它解释了'histq'的作用。 – BorisM

0

直方图匹配算法由3个阶段组成: 1-计算第一个图像的标准化CDF(T(r))。 2-计算归一化第二图像(G(z))的CDF。计算G^-1(T(r))并将第一图像的强度值变换为期望的一个。