我需要编写一个函数,它将image2
的直方图与将要重新映射的图像相匹配,我们称之为image1
。但我不允许使用histeq
。你能帮我解释一下代码吗?
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);
此致 Amadeus的
答案 0 :(得分:0)
我认为这个问题不够具体。解决此问题的一种方法是将三个通道转换为灰度图像(rgb2gray
),计算两个直方图(hist
),然后在直方图之间找到所需的映射并将其应用于每个通道原始图像。
无需转换为灰度,您可以在每个通道上执行此算法,然后再将通道连接在一起。
选中使用histq
的{{3}}。
答案 1 :(得分:0)
直方图匹配算法由3个阶段组成: 1-compute标准化第一图像的CDF(T(r))。 2-compute标准化第二图像的CDF(G(z))。 3 - 计算G ^ -1(T(r))并将第一图像的变换强度值变为所需的值。