我需要编写一个函数,将 image2
的直方图与将重新映射的图像相匹配,我们将其称为 image1
。但我不被允许使用histeq
。你能帮我写一下代码吗?
ps:我还想知道如果我被允许使用histeq
,我将如何执行该操作?提取红绿蓝 channel 后该怎么办? (我无法使用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);
问候, 艾玛迪斯
最佳答案
我认为这个问题不够具体。解决此问题的一种方法是将三个 channel 转换为灰度图像 (rgb2gray
),计算两个直方图 (hist
),然后在直方图和将其应用到原始图像的每个 channel 。
不需要转换为灰度,您可以在每个 channel 上执行此算法,然后将 channel 连接在一起。
检查这个question ,它使用histq
。
关于MATLAB - 两个图像的直方图匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058642/