解决问题:
自动白平衡算法中存在白色区域检测错误导致白平衡失效的问题,作者提出了一种基于暗通道优先的白平衡算法。
算法思想:
图像中白色区域或者高饱和度区域的光线透射率较低,根据以上特性利用暗通道法计算图像中白色区域。
算法概述:
作者使用何凯明提出的基于暗通道优先的方法来估计光照透射模型,通过估计到的光照透射模型来计算图像中白色区域,在检测到白色区域后,相对于图像的亮度分量 Y 来计算每个颜色通道的增益值。
如果图像中存在比较强的光源或者高饱和度的区域,这些区域就会被错误检测为白色区域,作者设置一个阈值来去除高饱和度区域。
{ ( x , y ) = 255 ; i f t ( x , y ) < t 1 且 g c ( x , y ) < K { ( x , y ) = 0 , o t h e r w i s e \lbrace (x,y) = 255;\qquad if\quad t(x,y)<t_{1} 且g^{c}(x,y)<K \\ \lbrace(x,y) = 0,\qquad \qquad otherwise {(x,y)=255;ift(x,y)<t1且gc(x,y)<K{(x,y)=0,otherwise
其中, t ( x , y ) t(x,y) t(x,y)是对应白色区域与之变换的二值化图像, K K K是变换阈值
t 1 t_{1} t1是平均透射率
t 1 = 1 W ∗ H ∑ x = 0 W − 1 ∑ y = 0 H − 1 t ( x , y ) t1=\frac{1}{W*H}\sum_{x=0}^{W-1}\sum_{y=0}^{H-1} t(x,y) t1=W∗H1x=0∑W−1y=0∑H−1t(x,y)
终 K 的值选择为 230,即大于 230 认为是过饱和区域
参考效果
测试代码
感兴趣的可以跑一跑效果,测试代码路径:
https://github.com/AomanHao/AomanHao_example_of_algorithms/tree/main/z-source/2018_A%20fast%20automatic%20white%20balance%20algorithm%20base%20on%20dark%20channel%20priority
参考文献:
《一种暗通道优先的快速自动白平衡算法》DOI: 10.12086/oee.2018.170549170549-1
源代码:
GitHub - oraclBH/auto_white_balance: A white balance algorithm based on dark channel priority.文章来源:https://www.toymoban.com/news/detail-610559.html
觉得本文对您有一点帮助,欢迎讨论、点赞、收藏,您的支持激励我多多创作。文章来源地址https://www.toymoban.com/news/detail-610559.html
我的个人博客主页,欢迎访问
我的CSDN主页,欢迎访问
我的GitHub主页,欢迎访问
我的知乎主页,欢迎访问
到了这里,关于【阅读笔记】一种暗通道优先的快速自动白平衡算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!