【图像增强】基于matlab对数图像处理模型+去雾+暗原色先验图像增强【含Matlab源码 1012期】
一、 图像增强技术简介
1 图像增强
图像增强是对图像的某些特征,如边缘、轮廓、对比度等进行强调或锐化,以便于显示、观察或进一步分析与处理。通过对图像的特定加工,将被处理的图像转化为对具体应用来说视觉质量和效果更“好”或更“有用”的图像。
图像增强是最基本最常用的图像处理技术,常用于其他图像处理的预处理阶段。
(1)高通平滑、低通锐化;平滑模糊、锐化突出图像细节
(2)滤波器还有带通、带阻等形式
(3)根据噪声(椒盐噪声、高斯噪声…)的不同,选用不同的滤波
(4)邻域有4-邻域、对角邻域、8-邻域,相对应的有邻接,即空间上相邻、像素灰度相似
(5)图像边缘处理:忽略不处理、补充、循环使用
(6)目前尚未图像处理大多基于灰度图像
2 对数图像处理模型
3 图像去雾
4 暗通道先验图像去雾方法
4.1 光线透射率模型
光在传播中由于散射使得从光源发出的辐射只有部分能到达接收传感器,其他则被散射到传播介质中。假设距离较小时散射光强与距离是线性关系,当光源距离传感器无限接近时,光的衰减值可近似为:Br,其中β为空气的散射系数;r为光源与传感器间的距离。大气密度均匀时,光线透射率的数学模型为:
式中:D为场景深度;t为光线透射率,用于量化传感器接收光强与光源表面光强间的比例关系,即没有被散射的辐射与光源辐射间的比例关系。
4.2 暗通道先验理论
基于统计大量清晰图像得到的暗通道先验理论是指大部分不含天空的优质图像的所有像素在R,G,B这3个通道中最少存在一个颜色通道灰度值相当低以至趋近于0[5],也就是在一定的微小区域里最小辐射强度值极低。一幅图像J可定义为:
式中:J dark为图像J的暗通道值; J为图像J的c通道灰度值; Q(x) 为以像素x为中心的局部微小区域; y为区域内任一像素。
4.3 暗通道先验图像去雾处理
图像去雾的目标是将传感器接收到的有雾图像利用获得的有用信息通过去雾还原出清晰图像。暗通道先验图像去雾处理是根据暗通道原理获取先验知识,再利用有雾图像退化模型实现图像去雾效果。
4.3.1 图像退化模型
在计算机视觉图形学领域,有雾图像的退化模型为[6]:
式中:l(x)为传感器接收到的场景信号,即输入的有雾影像;场景辐射J(x)为信号处理后的清晰图像;A为环境光照强度;t(x)为大气透射率。J(x)t(x)称为直接衰减项,用来量化场景辐射和传播中的信号损失。A(1-t(x))表示图像接收到的大气散射光强,它是引起色彩偏移和云雾效果的直接原因。
4.3.2 估算环境光照强度
暗通道图像中灰度值越高的区域云雾越厚,在输入图像中位于这部分区域的]像素灰度值越接近于环境光照强度。估算环境光照强度首先需要找到暗通道图像中灰度值最高并占图像总像素数量01%的像素点,记录它们对应的坐标索引,然后根据坐标索引在输入的有雾图像中找到对应像素点,计算有雾图像中对应像素点的灰度平均值作为环境光照强度A。
4.3.3估算大气透射率
使用t’(x)表示以像素x为中心的滤波窗口内的大气透射率,假设它局部不变对式(3)最小值运算,分别计算R,G,B这3个颜色通道中的最小值,即
将3个颜色通道的最小值进行运算,可得出以像素x为中心的滤波窗口内的灰度最小值,即
根据暗通道先验原理和式(2)可以得出:
于是,由式(5)和式(6)计算出大气透射率为:
4.3.4 去雾处理
暗通道先验条件可用来量化云雾厚度和全部像素的辐射还原量,然后恢复出清晰优质的图像。通过式(3)的有雾图像退化模型和环境光照强度A、大气透射率t(x),可进行单幅图像去雾处理,即
5 暗通道先验算法去雾效果优化
本文优化流程如图1所示。当输入图像云雾不均时,其大气透射率图层的灰度信息仅处于有限范围内,而整张图像的辐射还原量将被限制在一定区间里,不能分别准确还原云雾厚薄区域的辐射强度,从而影响图像去雾效果,考虑利用拉伸大气透射率图层对比度的方法来改善云雾厚薄不均时基于暗通道先验得出的无雾图像质量。
图1 基于暗通道先验的图像去雾处理效果优化流程
三、部分源代码
clc,close all;
Image=im2double(rgb2gray(imread('couple.bmp')));%打开图像
[height,width]=size(Image);%获取原图的大小,h行w列
imshow(Image);%展示原图
M=1;%设置最大灰度等级
fImage=M-Image;%求得灰度色调函数
fLImage=log(fImage);%基本正态函数的正变换
AvgW=zeros(height,width);
w=1;%定义邻域窗口半径为1
temp=zeros(2*w+1,2*w+1);
for x=1+w:height-w
for y=1+w:width-w
temp=fLImage(x-w:x+w,y-w:y+w);
AvgW(x,y)=sum(temp(:))/(2*w+1)^2;
end
end%平均灰度值
alpha=3;
imshow(Image), title('原始图像');
[height width c]=size(Image);
dark_I = zeros(height,width);
for y=1:height
for x=1:width
dark_I(y,x) = min(Image(y,x,:)); %计算RGB取最小值后的图像dark_I
end
end
kenlRatio = .03;
krnlsz = floor(max([3, width*kenlRatio, height*kenlRatio]));
dark_I2 = minfilt2(dark_I, [krnlsz,krnlsz]);%最小值滤波
dark_I2(height,width)=0;
dark_channel=dark_I2;
hh=floor(width*height*0.001);
bb=reshape(dark_channel,1,[]);
bb=sort(bb,'descend');
cc=find(bb>0,hh);
dd=bb(cc(hh));
ee=dark_channel(find(dark_channel>dd));
AA=[ee];
num=length(find(dark_channel>dd));
sum=0;
for k=1:num
sum=sum+AA(k);
end
meandc=floor(sum/num);
minAtomsLight = 240;
A= min([minAtomsLight, meandc]);%计算大气光A
w0=0.9; t0=0.3;%设置调节参数w0值
t=1-w0*(dark_channel/A);%计算透射率t
t=max(t,t0);
img_d = double(Image);
三、运行结果
四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/117968553
- 点赞
- 收藏
- 关注作者
评论(0)