宽动态WDR

    传统的宽动态的算法感觉都是用多次曝光的算法进行的。我在想如何对一幅图像进行宽动态的处理呢,整了好长时间,也看了不少方法,基本都是对图片进行滤波,然后分解成基础层和细节层,然后分别对基础层和细节层进行处理。经过两个月的努力,终于做出来了,但是感觉更像是个暗场景提升。理论上采用双边滤波的效果最好,但是双边滤波速度太慢,为了能达到实时,采用更粗略的滤波,经过更深的优化,速度优化到了可以接受的地步。

下面就每一步骤详细说一下:

1 图像的色彩空间

    这个算法要用到滤波,如果是rgb的话,就需要在三个通道上分别处理,时间肯定快不起来,所以这里是在YCbCr空间上处理,这样只用在Y通道上处理,然后对CbCr进行修正,快速算法见:http://blog.csdn.net/laviewpbt/article/details/8580834

 

2 细节层和基础层提取

    基础层就是对图像进行滤波,这里可以用高斯滤波,均值滤波。。。,最好的效果是双边滤波,但是速度太慢,看了不少双边滤波的快速算法,但是就论文中的时间,速度还是很慢,这里我用了高斯滤波,可以说是一种粗略的近似。

    细节层论文中大多提到是拿原图除以基础层后得到的,我试了一下,效果不错,也可以用原图-基础层来得到细节层。

 

3 基础层与细节层处理

    我上面第一段说了,我这个“宽动态”更像是暗场景提升。而细节层很大程度上影响图像的细节,那么如何提升图像的亮度呢?可以有很多中方法,比如说直方图均衡化就是一种相当好的方法(但是有些图会失真)。总之这里需要得到一个映射表,要是这个映射表可以根据图像自适应得到更好了,我是所有图的初始映射表是相同的,然后根据图片的灰度进行调整,效果还不是很好。这里有个很大的优化空间。

   至于细节层,原来我是没有处理的,后来对其进行了提升,就是细节层同步提高10%(这个幅度不宜过大);

这里说一下,http://blog.csdn.net/laviewpbt/article/details/8769877,这个算法不错,可以借鉴一下。

 

4 亮度和色彩恢复

  根据上面的处理后,需要对亮度Y通道和色彩CbCr通道进行恢复,亮度恢复就是很简单的基础层-细节层的逆操作,而CbCr是根据Y处理前后的提升幅度做相同幅度的变化。

 

大概的思路就是这个了,上面有错误的地方还请各位读者指正。1080p速度可以达到25ms以内。这个可以做到更好,可惜本人才疏学浅。


宽动态WDR_第1张图片宽动态WDR_第2张图片

宽动态WDR_第3张图片

 

/********************************************

本人不提供代码

三人行必有我师,欢迎一起探讨

QQ:1729048547

********************************************/

你可能感兴趣的:(算法,宽动态)