图像去雾基于matlab暗通道和非均值滤波图像去雾含Matlab源码 2011期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像去雾基于matlab暗通道和非均值滤波图像去雾含Matlab源码 2011期相关的知识,希望对你有一定的参考价值。

一、暗通道先验图像去雾简介

1 暗通道先验图像去雾方法
1.1 光线透射率模型
光在传播中由于散射使得从光源发出的辐射只有部分能到达接收传感器,其他则被散射到传播介质中。假设距离较小时散射光强与距离是线性关系,当光源距离传感器无限接近时,光的衰减值可近似为:Br,其中β为空气的散射系数;r为光源与传感器间的距离。大气密度均匀时,光线透射率的数学模型为:

式中:D为场景深度;t为光线透射率,用于量化传感器接收光强与光源表面光强间的比例关系,即没有被散射的辐射与光源辐射间的比例关系。

1.2 暗通道先验理论
基于统计大量清晰图像得到的暗通道先验理论是指大部分不含天空的优质图像的所有像素在R,G,B这3个通道中最少存在一个颜色通道灰度值相当低以至趋近于0[5],也就是在一定的微小区域里最小辐射强度值极低。一幅图像J可定义为:

式中:J dark为图像J的暗通道值; J为图像J的c通道灰度值; Q(x) 为以像素x为中心的局部微小区域; y为区域内任一像素。

1.3 暗通道先验图像去雾处理
图像去雾的目标是将传感器接收到的有雾图像利用获得的有用信息通过去雾还原出清晰图像。暗通道先验图像去雾处理是根据暗通道原理获取先验知识,再利用有雾图像退化模型实现图像去雾效果。

1.3.1 图像退化模型
在计算机视觉图形学领域,有雾图像的退化模型为[6]:

式中:l(x)为传感器接收到的场景信号,即输入的有雾影像;场景辐射J(x)为信号处理后的清晰图像;A为环境光照强度;t(x)为大气透射率。J(x)t(x)称为直接衰减项,用来量化场景辐射和传播中的信号损失。A(1-t(x))表示图像接收到的大气散射光强,它是引起色彩偏移和云雾效果的直接原因。

1.3.2 估算环境光照强度
暗通道图像中灰度值越高的区域云雾越厚,在输入图像中位于这部分区域的]像素灰度值越接近于环境光照强度。估算环境光照强度首先需要找到暗通道图像中灰度值最高并占图像总像素数量01%的像素点,记录它们对应的坐标索引,然后根据坐标索引在输入的有雾图像中找到对应像素点,计算有雾图像中对应像素点的灰度平均值作为环境光照强度A。

1.3.3估算大气透射率
使用t’(x)表示以像素x为中心的滤波窗口内的大气透射率,假设它局部不变对式(3)最小值运算,分别计算R,G,B这3个颜色通道中的最小值,即

将3个颜色通道的最小值进行运算,可得出以像素x为中心的滤波窗口内的灰度最小值,即

根据暗通道先验原理和式(2)可以得出:

于是,由式(5)和式(6)计算出大气透射率为:

1.3.4 去雾处理
暗通道先验条件可用来量化云雾厚度和全部像素的辐射还原量,然后恢复出清晰优质的图像。通过式(3)的有雾图像退化模型和环境光照强度A、大气透射率t(x),可进行单幅图像去雾处理,即

2 暗通道先验算法去雾效果优化
本文优化流程如图1所示。当输入图像云雾不均时,其大气透射率图层的灰度信息仅处于有限范围内,而整张图像的辐射还原量将被限制在一定区间里,不能分别准确还原云雾厚薄区域的辐射强度,从而影响图像去雾效果,考虑利用拉伸大气透射率图层对比度的方法来改善云雾厚薄不均时基于暗通道先验得出的无雾图像质量。

图1 基于暗通道先验的图像去雾处理效果优化流程

二、部分源代码

%matlab 2014a
clear all; close all;
%执行的时候可以手动选择图像  
[filename,pathname]=uigetfile('*.jpg;*.bmp;*.tif;*.png;*.gif','All Image Files';'*.*','All Files');  
I = imread([pathname,filename]);%读入图像
Im_1=rgb2gray(I);
%figure(1);
% subplot(142);imhist(Im_1,64);xlabel('原图直方图');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%在RGB模型中对其进行直方图均衡化
RGB=I;
R=RGB(:,:,1);
G=RGB(:,:,2);
B=RGB(:,:,3);
r=histeq(R);
g=histeq(G);
b=histeq(B);
Im2=cat(3,r,g,b);
figure(1);
subplot(221);imshow(I);title('原图');
subplot(222);imshow(Im2);title('RGB三通道直方图均衡化去雾图');
Im_2=rgb2gray(Im2);

subplot(223);imhist(Im_1,64);title('原图直方图');
subplot(224);imhist(Im_2,64);title('复原后直方图均衡化后直方图');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%RGB转HSV均衡化
I = rgb2hsv(RGB);
H = I(:,:,1);
S = I(:,:,2);
V = I(:,:,3);
M = histeq(S); % 对饱和度直方图均衡化
N = histeq(V); % 对亮度直方图均衡化
U = hsv2rgb(H, M, N);
figure(3); 
subplot(2, 2, 1); imshow(RGB); title('原图像')
subplot(2, 2, 2); imshow(U); title('HSV均衡后图像')
Q = rgb2gray(RGB);
W = rgb2gray(U);
subplot(2, 2, 3); imhist(Q, 64); title('原图像直方图')
subplot(2, 2, 4); imhist(W, 64); title('HSV均衡变换后的直方图')


三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 戢凯,王晓峰.融合暗通道和颜色衰减先验的图像去雾算法[J].现代计算机(专业版). 2018,(22)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于图像去雾基于matlab暗通道和非均值滤波图像去雾含Matlab源码 2011期的主要内容,如果未能解决你的问题,请参考以下文章

图像去雾基于暗通道图像去雾matlab源码

matlab实现基于暗通道先验(DCP)的单图像去雾

图像增强基于matlab暗通道先验图像去雾含Matlab源码 1367期

图像增强基于matlab暗通道先验图像去雾含Matlab源码 1367期

图像增强基于matlab暗通道图像去雾含Matlab源码 1226期

基于暗通道优先算法的去雾应用(Matlab/C++)