MATLAB - 两个图像的直方图匹配

标签 matlab histogram matching

我需要编写一个函数,将 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/

相关文章:

asynchronous - 异步方法中的类型不匹配

matlab - 3D 空间中多个 2D 矢量 [字段] 之间的插值

user-interface - 计算 MATLAB uicontrol 所需的实际大小

matlab - 如何在 MATLAB 2013b 中创建自定义 setter 方法?

key - gnuplot:添加额外的键

python - 列表的哪些元素进入哪个直方图箱?

opencv - OpenCv 中值数组的直方图

python - 使用 in 运算符来匹配元组中的项目

matlab - Matlab : constructing it and colouring it 中散点图的边界

c++ - 计算数组中的匹配项