大气散射模型
由于光线在传输时会与大气颗粒相互作用,而产生散射现象,该散射现象会衰减原始景物的光能量和光照的强度,导致拍摄出来的图像会出现清晰度,对比度和颜色等特征显著衰减的现象发生。
雾天图像成像模型
由入射光衰减模型和大气光成像模型组成。
有雾图像(待处理图像) = 无雾图像*透射率 + (1-透射率)大气光值
暗通道先验去雾算法
对一张除天空区域的无雾图像,在其他区域总存在某些像素点的颜色通道亮度值非常低,且其亮度值接近于零。
暗通道值趋于零的原因:
1 阴影
2 彩色物体或表面:由于彩色物体的tong'lu
暗通道的求取
暗通道的求取过程首先将雾天原始图像进行第一次最小值快速滤波,分别获得r,g,b三个通道中每个通道的像素最小值,第一次最小值滤波后得到一张灰度图,第二次最小值滤波通过滤波核进行滤波处理 --- 得到暗通道图像。
在清晰无雾图像中,非天空区域的暗通道的值 趋近于零。
对雾天成像模型进行归一化,两边同时处理大气光值。
公式两边用最小算子做最小值运算。
根据先验知识,可得到:
透射率 = 1- min(min 输入图像/大气光值)
对输入图像三个通道求最小值滤波。
还需要引入一个常数参数w,保留一部分雾。w = 0.85复原效果。
透射率 = 1- w*min(min 输入图像/大气光值)
求取透射率的时候假设大气光值A已知,估算出大气光值。大气光值的估算,可取暗通道图像中亮度值大小在前0.1%的像素点,再对这些像素点求平均值作为大气光值。或在暗通道图像中遍历得到亮度值最大的像素点作为大气光值A的取值。
图像复原
无雾图像 = 有雾图像 - 大气光值(1-透射率) 除以透射率
暗通道先验算法优化
粗略透射率模块化设计
求取透射率的时候将大气光值设置为常数255. w为0.85这样将公式扩大216倍得到,透射率计算公式为:
这样我们在计算大气光值的同时也可以进行透射率计算。
大气光值计算优化
求取暗通道图像中百分之0.1像素点的像素值,首先需要进行排序,和存储来比较每个像素大小。 会耗费大量的比较器和寄存器,拖延算法运行速度。
优化:遍历图像中每一个像素点数据,对暗通道图像像素点值进行最大值比较,将较大的值存储再寄存器中,通过对各个像素点进行最大值比较,不断更新图像亮度最大值。最后将遍历完一帧图像后将得到的最大值作为大气光值A。
细化透射率 导向滤波
为了消除边缘模糊,进行导向滤波的方法细化透射率。
通过引入一个引导图像来避免线性滤波对图像边缘和噪声进行相同的运算。
p为输入 I为引导 q为输出 q = a I +b q = p -n
将需要滤波的图像像素的平均值进行相加得到一个终值。为图中w
令n为噪声。 p = q -n 输入 = 输出 - 噪声
将n作为优化目标,
利用最小二乘法得到:ak,bk,表达式。
ak = 1/w I*p求和 - ui pk 除以方差
bk = q - ak*nk
q输出 = a*引导图像 + b
硬细化透射率件实现:
以原图的灰度图作为导向图。 以粗投射率图为输入图。
最小二乘法可以解决a和b的求解问题。本文设计了最小二乘法的逻辑电路。
参数b比较简单,调用乘法电路。
参数a,需要先求取图像的均值,再根据图像的均值求取图像方差。搭建除法电路完成对a的求取。
要求得一幅图像的均值和两幅图像的方差
为了求图像的均值,计算出上一帧图像的均值,作为这次要求的图像方差的参数。
均值通过累加的寄存器求取。
FPGA不擅长计算浮点数,通过同时扩大倍数。将浮点数的运算,变为加法运算的乘法运算。减小FPGA资源消耗。
浮点转定点
求取透射率的时候将大气光值设置为常数255. w为0.85这样将公式扩大216倍。
这样就实现了数的定标。另辟蹊径。