1.一种基于可变步长导向滤波和对比度拉伸的融合去雾方法,其特征是按如下步骤进行:
步骤1、获取颜色标准为RGB888且分辨率为M×N的输入图像,其中,M为每一行像素的个数,N为每一列像素的个数;
定义导向滤波窗口的大小为K×K;
定义导向滤波窗口移动的步长为k,k∈[1,K];
步骤2、将所述输入图像中的每一个像素值所对应的R、G、B三通道值从整数分别转化为单精度小数,并依次存储至M×N×3的三维矩阵A中;
对所述M×N×3的三维矩阵A进行s倍的采样压缩,得到(M/s)×(N/s)×3的三维压缩矩阵B;其中,s为采样压缩的倍数;
步骤3、对所述三维压缩矩阵B进行灰度变换,得到灰度图像并存储至(M/s)×(N/s)的二维灰度矩阵C中;
步骤4、对所述二维灰度矩阵C进行遍历,并筛选出最大灰度值GrayMax和最小灰度值GrayMin;
步骤5、利用所述最大灰度值GrayMax和最小灰度值GrayMin对所述二维灰度矩阵C进行线性变换,得到(M/s)×(N/s)的二维线性变换矩阵D;
步骤6、按照K×K的滤波窗口对所述三维压缩矩阵B进行可变步长的导向滤波,得到(M/s)×(N/s)×3的三维导向滤波矩阵E;
步骤6.1、初始化行计数值m=0和列计数值n=0;
步骤6.2、将所述三维压缩矩阵B复制,得到三维导向滤波矩阵E;
步骤6.3、按照K×K的滤波窗口对所述三维导向滤波矩阵E中的元素I(m,0),I(m+1,0),……,I(m+K‑1,0),……,I(m+K‑1,n+K‑1)进行导向滤波得到导向滤波系数a和b,其中,(m,
0),(m+1,0),……,(m+K‑1,0),……,(m+K‑1,n+K‑1)为元素的位置;
步骤6.4、使用公式I′(j,k)=aI(j,k)+b计算出第j行第k列位置元素I(j,k)的更新值,并将更新后的K×K个元素值依次储存在三维导向滤波矩阵E相对应的位置中,其中(j,k)=(m,
0),(m+1,0),……,(m+K‑1,0),……,(m+K‑1,n+K‑1);
步骤6.5、判断行计数值m是否小于M/s,若是,则执行步骤6.6,否则,执行步骤6.7;
步骤6.6、将m+k赋值给m后,返回步骤6.2;
步骤6.7、判断列计数值n是否小于N/s,若是,则执行步骤6.8,否则,执行步骤6.9;
步骤6.8、令m=0,将n+k赋值给n后,执行步骤6.3;
步骤6.9、得到(M/s)×(N/s)×3的三维导向滤波矩阵E;
步骤7、对所述三维导向滤波矩阵E进行高增压滤波,得到(M/s)×(N/s)×3的三维高增压滤波矩阵F;
步骤8、使用式(1)对所述二维线性变换矩阵D和所述三维高增压滤波矩阵F中第i个二维矩阵Fi进行融合,得到第i个二维色彩通道矩阵Gi,从而得到(M/s)×(N/s)×3的三维融合矩阵G:
式(1)中, 为第i个二维矩阵Fi的最大值,Dmax为线性变换矩阵的最大值;i=1,2,3;
步骤9、对所述三维融合矩阵G进行白平衡矫正,得到(M/s)×(N/s)×3的三维白平衡矩阵I;
步骤10、使用双线性插值对所述三维白平衡矩阵I进行上采样,得到M×N×3的三维去雾图像并输出显示。