图像去雾/图像去雨(matlab/python)

图像去雾和图像去雨是计算机视觉领域的两个重要问题,旨在改善被大气条件或降雨影响而模糊或噪声化的图像质量。这两个技术在很多实际应用中具有广泛的价值,包括无人驾驶、安防监控、航空航天等领域。下面将分点介绍图像去雾和图像去雨的相关内容。

1. 图像去雾:


   图像去雾技术旨在消除由于大气散射引起的图像模糊和低对比度问题。大气散射是指光线在经过大气层时与空气中的微粒发生相互作用,导致图像中出现散射光。这使得图像失去了远处物体的细节和清晰度,给图像处理和分析带来了挑战。

   图像去雾算法通常基于图像的物理模型和统计特性来推断和恢复雾霾图像。常见的方法包括暗通道先验、频域滤波、偏微分方程等。这些方法通过估计图像中的透射率和大气光照来恢复出清晰的图像,并使其更具可视性和信息量。

2. 图像去雨:


   图像去雨技术旨在消除由降雨引起的图像模糊和噪声问题。下雨时,雨滴会散射和吸收光线,进一步降低图像的质量。这使得图像失去了细节和清晰度,严重影响了视觉感知和后续图像处理任务。

   图像去雨算法通常基于图像的统计特性和纹理信息来推断和恢复雨滴造成的噪声。常见的方法包括多尺度分析、运动估计、降噪滤波等。这些方法通过建立图像中的雨滴模型,并利用图像间的关联性进行恢复,从而改善图像的质量和可视性。

图像去雾和图像去雨是计算机视觉领域的研究热点,目前已经有许多有效的算法被提出并得到广泛应用。然而,这两个问题仍然具有一定的挑战性,尤其在复杂场景和极端天气条件下。未来的研究将致力于进一步提高算法的鲁棒性和效果,以满足实际应用的需求。

总结起来,图像去雾和图像去雨技术在改善图像质量、提高视觉感知和图像处理任务的准确性方面具有重要意义。它们的发展为众多领域带来了巨大的潜力和机会,也为计算机视觉研究者提供了广阔的研究空间。

去雨前言


从静止图像中去除雨水是一项复杂且具有挑战性的任务。雨滴仅影响图像的很小区域,因此导致确定应考虑哪个区域和不应考虑哪个区域的混乱。 其他市面算法如FFT去雨也已经实现!
在本文中,已经实现了一种新技术,该技术有效地使用L0梯度最小化方法来去除雨像素。

最小化技术可以全局控制图像中产生多少非零梯度。该方法与局部特征无关,而是全局定位重要边缘。
保留了这些显着的边缘,并且减少了低振幅和微不足道的细节。以这种方式去除雨像素。
最后,使用直方图调整技术增强了雨水去除的图像的强度,以获得更好的对比度图像。实验结果表明,该算法在去除图像去雨方面有良好的效果。
 

去雨代码部分 
clear;
close all;
I=imread('youwutu.jpg'); %读入图像
R=I(:,:,1);% 取输入图像的R分量
[N1,M1]=size(R);
R0=double(R);% 对R分量进行数据转换,并对其取对数
Rlog=log(R0+1);
Rfft2=fft2(R0);% 对R分量进行二维傅里叶变换
sigma=250;% 形成高斯滤波函数
F = zeros(N1,M1);
for i=1:N1
for j=1:M1
F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));
end
end
F=F./(sum(F(:)));
Ffft=fft2(double(F)); %对高斯滤波函数进行二维傅里叶变换
DR0=Rfft2.*Ffft;  %对R分量与高斯滤波函数进行卷积运算
DR=ifft2(DR0);
DRdouble=double(DR); %在对数域中,用原图像减去低通滤波后的图像,得到高频增强图像
DRlog=log(DRdouble+1);
Rr=Rlog-DRlog;
G=I(:,:,2);   % 取输入图像的G分量
[N1,M1]=size(G);
G0=double(G);  %对G分量进行数据转换,并对其取对数
Glog = log(G0+1);
Gfft2=fft2(G0);  %对G分量进行二维傅里叶变换
sigma=250;
for i=1:N1
for j=1:M1
F(i,j)=exp(-((i-N1/2)^2+(j-M1/2)^2)/(2*sigma*sigma));end
end
F = F./(sum(F(:)));
Ffft=fft2(double(F));  %对高斯滤波函数进行二维傅里叶变换
DG0=Gfft2.*Ffft;  %对高斯滤波函数进行二维傅里叶变换
DG=ifft2(DG0);
DGdouble=double(DG); %在对数域中,用原图像减去低通滤波后的图像,得到高频增强图像
DGlog=log(DGdouble+1);
Gg=Glog-DGlog;
EXPGg=exp(Gg); %取反对数,得到增强后的图像分量
MIN = min(min(EXPGg)); %对增强后的图像进行对比度拉伸增强
MAX = max(max(EXPGg));end
endQQ767172261

去雨结果 matlab 展示

图像去雾


去雾概述


暗通道先验:首先说在绝大多数非天空的局部区域里,某一些像素总会有至少一个颜色通道具有很低的值,也就是说该区域光强是一个很小的值。

所以给暗通道下了个数学定义,对于任何输入的图像J,其暗通道可以用下面的公式来表示:图片其中表示彩色图像每个通道,表示以像素X为中心的一个窗口。

要求暗通道的图像是比较容易的,先求出每个像素在3个通道的最小值,存到一个二维Mat中(灰度图),然后做一个最小值滤波,滤波的半径由窗口大小决定,这里窗口大小为,公式表示为,其中表示滤波半径。

图片暗通道先验理论得出的结论,这个我不知道如何证明,不过论文给出了几个原因:

a)汽车、建筑物和城市中玻璃窗户的阴影,或者是树叶、树与岩石等自然景观的投影;
b)色彩鲜艳的物体或表面,在RGB的三个通道中有些通道的值很低(比如绿色的草地/树/植物,红色或黄色的花朵/叶子,或者蓝色的水面)
去雾代码:
计算雾化图像的暗通道。

def DarkChannel(img, size=15):"""暗通道的计算主要分成两个步骤:1.获取BGR三个通道的最小值2.以一个窗口做MinFilterps.这里窗口大小一般为15(radius为7)获取BGR三个通道的最小值就是遍历整个图像,取最小值即可"""r, g, b = cv2.split(img)min_img = cv2.min(r, cv2.min(g, b))kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (size, size))dc_img = cv2.erode(min_img, kernel)return dc_img
估算全局大气光值
def GetAtmo(img, percent=0.001):"""1.计算有雾图像的暗通道2.用一个Node的结构记录暗通道图像每个像素的位置和大小,放入list中3.对list进行降序排序4.按暗通道亮度前0.1%(用percent参数指定百分比)的位置,在原始有雾图像中查找最大光强值"""mean_perpix = np.mean(img, axis=2).reshape(-1)mean_topper = mean_perpix[:int(img.shape[0] * img.shape[1] * percent)]return np.mean(mean_topper)

估算透射率图

def GetTrans(img, atom, w):"""w为去雾程度,一般取0.95w的值越小,去雾效果越不明显"""x = img / atomt = 1 - w * DarkChannel(x, 15)return tdef GuidedFilter(p, i, r, e):""":param p: input image:param i: guidance image:param r: radius:param e: regularization:return: filtering output q"""# 1mean_I = cv2.boxFilter(i, cv2.CV_64F, (r, r))mean_p = cv2.boxFilter(p, cv2.CV_64F, (r, r))corr_I = cv2.boxFilter(i * i, cv2.CV_64F, (r, r))corr_Ip = cv2.boxFilter(i * p, cv2.CV_64F, (r, r))# 2var_I = corr_I - mean_I * mean_Icov_Ip = corr_Ip - mean_I * mean_p# 3a = cov_Ip / (var_I + e)b = mean_p - a * mean_I# 4mean_a = cv2.boxFilter(a, cv2.CV_64F, (r, r))mean_b = cv2.boxFilter(b, cv2.CV_64F, (r, r))# 5q = mean_a * i + mean_breturn q

去雾结果 matlab GUI交互展示:

同样的代码也有python版本

结论


本文只是众多流程的一部分,为目标检测 和其他应用奠定举出。

通过将所提算法与经典算法进行验证对比,结果表明本文极端环境下的目标 检测与测距方法具有良好的有效性和可行性
将处理后的图像输送到目标检测和测距模型,提高了目标检测和测距精度,为自动驾驶主动安全行为决策提供必要的技术支持,使得自动驾驶汽车应用在极端环境变得可行。
若果觉得有用的话,请帮忙点赞,也可以私信交流。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311411.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.30 二叉树中等题

236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff…

嵌入式学习路线

嵌入式系统是一种将软件和硬件紧密结合的技术,首先我们要认识到,无论我们是专注于软件开发还是硬件开发,最终的目标都是为了更好的工作和职业发展。 根据企业的规模和需求,大公司更倾向于将职责分得更细,例如软件分为…

MySQL例行检查

MySQL例行检查 1.实例例行检查1.1线程1.2索引1.3临时表1.4连接数1.5BINLOG1.6锁1.7WAIT事件1.8MySQL状态 2.事务与锁例行检查2.1查看索引的cardinality2.2查看是否存在事务阻塞现象2.3查看事务执行时长以及执行的所有SQL2.4事务与锁 3.库表例行检查3.1查看缺失主键的表3.2冗余索…

学Python的正确顺序千万别弄反了,到时候后悔就来不及了

学Python的正确顺序:从基础到高级,步步为营 在当今数字化时代,Python已成为最受欢迎的编程语言之一。它不仅广泛应用于数据分析、人工智能和Web开发等领域,还为初学者提供了一个友好且功能强大的平台。然而,学习Python…

三角函数两角和差公式推导

一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α , ∠ C B F ∠ β ∠ABC∠α,∠CBF∠β ∠ABC∠α,∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …

人工神经网络

前言 人工神经网络(Artificial Neural Network,ANN),通常简称为神经网络,是一种在生物神经网络的启示下建立的数据处理模型。神经网络由大量的人工神经元相互连接进行计算,根据外界的信息改变自身的结构,主要通过调整…

Stable Diffusion WebUI制作光影文字效果

在huggingface上下载control_v1p_sd15_brightness模型。 将模型放在stable-diffusion-webui\extensions\sd-webui-controlnet\models目录下。 SD参数配置 正向提示词: city,Building,tall building,Neon Light, gentle light shines through, anime style, paint…

python的pywebio库给孩子做加减法数学题

效果展示 程序执行后,打开浏览器,展示一些100以内的加减法混合运算的数学题并输入答案后判断对错,这样倒是省了买教材的钱了。 在题目下方的框中,输入答案,然后点击提交后, 会输出结果 pywebio库介绍 安装…

谷歌Linux内核自动测试平台架构介绍-用自动测试测试难以测试的问题

1 摘要 内核和硬件等低级系统已被证明极难进行有效测试,因此,许多内核测试都是以手动为主方式进行的。现有的大多数测试框架都是为测试与底层平台隔离的高级软件而设计的,而底层平台被假定是稳定可靠的。测试底层平台本身需要一套全新的假设…

⑩①【缓存】Redis持久化 RDB + AOF

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ ⑩①Redis持久化 RDB AOF Redis数据快照 - RD…

70内网安全-域横向内网漫游Socks代理隧道技术(下)

这节课解决代理的问题, 他是内网里面的穿透技术,隧道主要安全设备和流量监控的拦截问题,我们在做渗透的时候需要回显数据或者一些重要的信息,走的协议不一样,tcp/ip有七层, 在不同层里面有不同的协议&…

vue3关于Echarts的简单使用及配置

前言: ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE9/10/11,Chrome,Firefox,Safari等),底…