基于颜色直方图优化的图像增强方法

最近改图像颜色迁移的论文,审稿人要求补充基于直方图优化的方法细节。趁此机会,我重新下载了相关文献,决定重新学习下该类方法,并把一些细节记录在本篇博客中,供交流学习。

目录

1. 前言

2. 背景知识

3. 颜色变换

4. 颜色匹配

5. 颜色对比度

6. 实验结果

总结

Reference


1. 前言

在之前的博客中,我们已经系统的介绍了颜色迁移的一些比较主流的工作:

图像颜色迁移专题介绍(一): Global Color Transfer_程序猿老甘的博客-CSDN博客_颜色迁移图像颜色迁移专题介绍(二): Correspondence_程序猿老甘的博客-CSDN博客_遥感图像颜色迁移

图像颜色迁移专题介绍(三): Deep Examplar-based Colorization_程序猿老甘的博客-CSDN博客_基于深度学习的色彩迁移

基于GMM模型的图像分割与颜色迁移算法_程序猿老甘的博客-CSDN博客_gmm 图像分割

这些工作从全局颜色对应,语义分析,低维图像特征相似度等角度,尝试提升颜色迁移的精确度。基于颜色直方图优化的方法同样可以被看做是颜色迁移或颜色加强的一种解决方案。其优势在于,直方图优化脱离了图像的语义,从颜色分布的全局角度来估算源图像和目标图像的对应关系。同时,由于考虑到直方图本身颜色分布的一些统计特性,使得颜色映射能够考虑部分局部的颜色匹配关系,而该过程又独立于图像的位置于语义信息。这些特点使得颜色直方图优化方法具备一些与众不同的性能优势。本文基于论文[1]的相关内容,来展开介绍下基于直方图优化的图像增强方法。


2. 背景知识

直方图优化的基础实现是基于累积分布函数以产生一个均匀分布。具体的实现方法包括:树搜索[2],整数线性规划[3],动态规划[4],或者直方图度量[5]。严格来说,利用上述方法可以派生一个中间映射,以平衡各方面的映射需求,完成复杂的直方图优化任务。这些方法能够生成一个离散的映射来减少量化差异,同时不考虑源图像直方图的失真。这为源图像到目标图像的直方图优化匹配创造了条件。

最简单的直方图优化方法是线性变换,一般用来指定图像颜色分布的范围,均值或者标准差。优化高阶的统计变量是比较困难的,这时候就需要非线性数值优化。一个更灵活的方法是将直方图视为一个嵌套区间树,以实现一个分级的线性变换。不过,分段线性映射缺少灵活性,其不能保证映射变换是连续可微的并保持单调性。文献[1]提供了一个方案,以解决当前分段映射方法的问题。

另外,针对颜色的图像增强方法,需要选定对应的颜色空间,以实现对颜色分布的调整。传统的颜色空间最大的问题在于各个信息通道具有耦合性,不利于独立优化。根据Reinhard的相关工作,使用CIE Lab color space对颜色的解耦表达具有天然的优势。因此,利用该颜色空间实现对直方图优化算法,能够降低优化任务的耦合性,以得到更好的结果。


3. 颜色变换

类似于传统的分段线性映射,文献[1]的方法主要还是以来建立几个关键颜色的对应关系,使用位移来决定颜色偏移,坡度决定对比度。

a_k为源图像的关键颜色,b_k为参考图像的关键颜色。映射T决定了两幅图像关键颜色的对应关系。自然,T应该满足一阶的连续关系,即对比度调整。这里,使用一个分段定义,并使用插值样条来确保这些参数的局部有效性。唯一的约束是,参数必须满足一个单调函数,即:

除了保证不可逆性,单调函数还需要保持颜色的自然顺序,从而避免由图像对比度的局部反转引起的颜色分布异常。变换需要保持连续性(包括一阶连续),以防止畸变,进而产生错误的边缘。为了满足这些要求,我们的直方图优化依赖于分段有理插值样条[6]:

对于直方图的拉伸与压缩过度,都会导致颜色分布的异常。对于一个区域的对比度增强,必然意味着其他区域的对比度压缩。这种权衡取决于变换函数的选择。相对来说,分段有理插值样条与适度的形状参数控制能够得到较好的结果。


4. 颜色匹配

直方图优化的最终目的是按照参考图像的颜色分布,改变源图像的颜色分布。这里我们假设概率密度函数f,累计分布F,及其分位数F^-1。 所得变换函数y=T(x)的预期目标为:

 约束用于使得源图像的颜色分布趋近于参考图像。精确的直方图优化,使用:

 分段的重建目标分布,使得对比度的影响

为拉伸更可能的区域并压缩较不可能拉伸的区域。通常,目标是保留配色方案,而不是必须重现颜色直方图。由于色彩平衡体现在整体形状的分布上,而直方图之间的微小差异往往可以低于视觉感知的阈值。因此精确的直方图优化是不必要的。我们只关注统计意义上的直方图匹配。

 一个恰当的变换需要在颜色和对比度上,保持循序渐进和有控制变换过程。因此,文献[1]所提的算法专注于一些具有代表性的关键颜色的对应关系上,用以表达颜色分布相关的特征信息:

该方法映射一组源图像的关键颜色q_k,到关联的参考图像分布的累积分布函数的分位数。因此,源图像的范围就可以匹配目标图像的范围。关键颜色的数量决定了变换的精度。


5. 颜色对比度

关键颜色的对比度调整控制其对应的局部变换。对比度调整服务于直方图优化的精度调整以及畸变控制。这里对d_k的范围首先要加以控制:;注意保持关键颜色的对比度,设置d_k = 1。只对关键颜色之间的中间颜色进行调整。在关键颜色执行精确的直方图优化,通过设置对比度调整实现。这样:

我们避免直接使用源直方图和目标直方图之间的比率。因为来自图像数据的原始直方图在变换中,表现出大量的小范围变化,使得对比度变化从关键颜色扩展到中间颜色。这里作者给出使用最近邻估算 [7] 来平滑这种小范围变化。这里原作者给出了一个由梯度与最近邻推导出来的对比度调节公式,涉及概率密度计算。我将公式列在此处(具体的解释参看原文):


6. 实验结果

交叉颜色迁移结果:

 


总结

本文系统的介绍了直方图优化方面的一些基本问题,包括关键颜色对应,中间颜色调整,对比度优化等。同时,该文解释了如何利用颜色空间,直方图匹配,样条插值,概率密度函数等工具解决颜色编辑或颜色迁移的实际问题。总体来说,对于想要切入直方图优化方法的同学,本文还是由不少干货的。我的解读只是做点表面功夫,要想深入了解具体的实现细节,还是要花些时间认真学习。


Reference

[1] M. Grundland, Dodgson NA. Color histogram specification by histogram warping [C]. COLOR IMAGING X: PROCESSING, HARDCOPY, AND APPLICATIONS. 2005.

[2] SK. Chang, YW. Wong. Optimal histogram matching by monotone gray level transformation[J]. Communications of the Acm, 1978, 21(10):835-840.

[3] M. Mee, PP. Vaidyanathan. Optimal histogram modification with MSE metric[C]// Acoustics, Speech, and Signal Processing, 2001. Proceedings. (ICASSP '01). 2001 IEEE International Conference on. IEEE, 2001.

[4] IJ. Cox, S. Roy, SL. Hingorani. Dynamic histogram warping of image pairs for constant image brightness [C]. International Conference on Image Processing. IEEE, 1995.

[5] J. Morovic, J. Shaw, PL. Sun. A fast, non-iterative and exact histogram matching algorithm [J]. Pattern Recognition Letters, 2002, 23(1/3):127-135.

[6] JA. Gregory, R. Delbourgo. Piecewise Rational Quadratic Interpolation to Monotonic Data[J]. IMA Journal of Numerical Analysis, 1982, 2(2).

[7] DW. Scott. Multivariate Density Estimation: Theory, Practice, and Visualization[M].  2008.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 亮通道先验增强是一种常用的图像增强技术,可以提高图像的清晰度和对比度。在Matlab中,可以通过以下步骤实现亮通道先验增强图像: 1. 读取图像:使用imread函数将待增强的图像读入Matlab中,得到一个矩阵表示的图像。 2. 亮通道计算:对于RGB图像,我们需要首先将图像转换到HSV色彩空间。使用rgb2hsv函数将RGB图像转换为HSV图像,并提取出亮度通道。 3. 估计全局透射率:在亮度通道中,我们可以通过使用imfilter函数对图像进行滤波来估计图像的全局透射率。常用的滤波方法有均值滤波、中值滤波等。 4. 估计全局大气光:通过获取原始图像中亮度较高的像素来估计图像的全局大气光。可以使用函数max找到亮度通道中最亮的像素,作为全局大气光估计值。 5. 亮度修正:将原始图像中的每个像素的亮度减去对应像素的透射率与全局大气光的乘积,得到亮度修正后的图像。 6. 对比度增强:为了增强图像的对比度,可以对亮度修正后的图像进行直方图均衡化操作,使用histeq函数来实现。 7. 转换回RGB:将亮度修正并对比度增强的图像转换回RGB色彩空间,使用hsv2rgb函数将图像从HSV转换为RGB。 8. 显示和保存结果:使用imshow函数显示增强后的图像,使用imwrite函数保存增强后的图像到磁盘。 通过以上步骤,我们可以使用Matlab实现亮通道先验增强图像的过程。根据具体的图像和需求,可以调整和优化每个步骤的参数和方法,以获得更好的增强效果。 ### 回答2: 亮通道先验增强是一种常用的图像增强技术,它利用了图像中的亮通道先验特性来提高图像的视觉效果。在Matlab中,我们可以通过以下步骤实现亮通道先验增强。 首先,我们需要加载原始图像。使用imread函数读取图像,并将其存储为灰度图像或RGB图像。 接下来,我们计算图像的亮通道。亮通道是指在每个像素周围一个局部窗口内的最小灰度值。我们可以通过使用imfilter函数并结合imregionalmin函数来计算每个像素的亮通道。 然后,我们将计算得到的亮通道图像进行归一化处理,以便提高后续的增强效果。可以使用mat2gray函数将图像灰度值映射到0-1的范围内。 接下来,我们计算图像的全局亮度值。通过计算亮通道的平均值来获得全局亮度。可以使用mean函数来计算平均值。 然后,我们计算图像的增强系数。通过将全局亮度值除以亮通道图像的最大值,我们可以得到一个增强系数。 最后,我们将亮通道图像与增强系数相乘,以得到最终增强后的图像。如果原始图像是RGB图像,我们需要对每个通道进行单独的增强。 这样,我们就完成了亮通道先验增强图像的过程。可以使用imwrite函数将增强后的图像保存到本地。 总结而言,亮通道先验增强图像是一种基于图像的亮通道特性来提高视觉效果的图像增强方法。在Matlab中,我们可以通过计算亮通道、归一化处理、计算全局亮度、计算增强系数以及对图像进行增强来实现该方法。这个过程可以简单地用几行代码实现,可以用于各种图像增强应用中。 ### 回答3: 亮通道先验(dark channel prior)是一种图像先验信息,它基于室外自然场景中的普遍规律,即室外远处的物体在至少一个颜色通道上的最小值会非常低。亮通道先验增强图像(dehazing)是通过利用亮通道先验来去除图像中的雾气效应,从而使图像变得更加清晰和真实。 在MATLAB中实现亮通道先验增强图像的基本步骤如下: 1. 读取待增强的图像,将其转换为双精度灰度图像。 2. 计算图像的亮通道(dark channel),亮通道的计算公式为:dark_channel = min(image, [], 3),其中min函数用于在第3个维度上计算每个像素点的最小值。 3. 对计算得到的亮通道进行滤波操作以减小噪声的影响,可以使用均值滤波或者导向滤波等方法。 4. 估计全局大气光(global atmospheric light)。一种简单的方法是选择亮通道最大值作为大气光估计值。例如,atmospheric_light = max(dark_channel(:))。 5. 根据亮通道先验,估计图像中的透射率(transmission)。透射率的估计公式为:transmission = 1 - w * dark_channel / atmospheric_light,其中w是一个常数,用于控制透射率的估计结果。 6. 对估计得到的透射率进行引导滤波以得到更加平滑的结果,可以使用引导滤波器函数guidedfilter()实现。 7. 根据估计得到的透射率对原始图像进行增强操作。增强的公式为:enhanced_image = (image - atmospheric_light) ./ max(transmission, t0) + atmospheric_light,其中t0是一个常数,用于避免除零错误。 8. 对增强后的图像进行后处理操作,例如亮度调整、对比度增强等。 通过以上步骤,我们可以实现亮通道先验增强图像的效果。当然,为了得到更好的结果,还可以尝试不同的参数及算法改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿老甘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值