图像去噪的原理及实现

科技   2024-11-07 10:27   中国香港  

点击下方深度学习爱好者”,选择加p"星标"或“置顶

·图像噪声

图像在摄取或传输时所受的随机信号干扰,表现为图像信息或者像素亮度的随机变化。一张图像通常会包含很多噪声,很多时候将图像噪声看成是多维随机过程。


·噪声来源

①图像在拍摄时不够明亮、亮度不够均匀;②电路各元器件自身噪声和相互影响;③传感器长期工作温度过高等。


·常见噪声

💫 高斯噪声高斯噪声又称为正态噪声,在噪声图像的统计直方图上呈正态分布。高斯噪声对原图像的影响是随机,特别常见的一种噪声。

💫 椒盐噪声脉冲噪声又称为椒盐噪声,因为用椒盐来命名特别形象。它是一种随机出现的黑点(胡椒)或者白点(盐),前者是高灰度噪声,后者是低灰度噪声,一般两者同时出现在图像中。


·噪声的坏处

①噪声污染的图像其可读性变差,清晰度变低;②可导致违规摄像头误判,有用可读点变少;③即便对图像进行去噪,其清晰度依然没有比不上原图。


·噪声处理

💫 空间域滤波在原图像上直接进行数据运算,对像素的灰度值进行处理,常见算法有中值和均值滤波。

💫 变换域滤波对图像进行某种变换,将图像从空间域转换到变换域,再对变换域中的变换系数进行处理,再进行反变换将图像从变换域转换到空间域。有傅立叶变换和小波变换等方法。

💫 偏微分方程过随时间变化的更新,使得图像向所要得到的效果逐渐逼近。可以在去除噪声的同时,很好的保持边缘。

💫 变分法确定图像的能量函数,通过对能量函数的最小化工作,使得图像达到平滑状态。


·常见噪声处理算法

 🌟 均值滤波

算术均值滤波滤出加性噪声,但丢失细节

算术均值滤波器就是简单的计算窗口区域的像素均值,然后将均值赋值给窗口中心点处的像素


几何均值滤波更好保护细节

滤波后图像的像素由模板窗口内像素的乘积的1/mn幂给出。

 🌟 中值滤波

把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围像素的值接近真实值,从而消除孤立的噪声点。


·利用MATLAB实现图像去噪

💭利用MATLAB图像处理工具箱的imfilter函数实现均值滤波和中值滤波。

f=imread('C:\matlabworks\building.tif');%椒盐噪声图像f1=imnoise(f,'salt & pepper',0.2);%高斯噪声图像f2=imnoise(f,'gaussian',0,0.02);w=fspecial('average',[5,5]);%均值处理椒盐噪声图像gm1=imfilter(f1,w,'replicate');%均值处理高斯噪声图像gm2=imfilter(f2,w,'replicate');%中值处理椒盐噪声图像gn1=medfilt2(f1,[5 5],'symmetric');%中值处理椒盐噪声图像gn2=medfilt2(f2,[5 5],'symmetric');subplot(231);imshow(f1);title('椒盐噪声图像');subplot(232);imshow(gm1);title('均值处理椒盐噪声图像');subplot(233);imshow(gn1);title('中值处理椒盐噪声图像');subplot(234);imshow(f2);title('高斯噪声图像');subplot(235);imshow(gm2);title('均值处理高斯噪声图像');subplot(236);imshow(gn2);title('中值处理高斯噪声图像');

代码片段


结果展示图



💭利用for循环遍历图像实现均值滤波和中值滤波算法。

f=imread('C:\matlabworks\building.tif');%椒盐噪声图像f1=imnoise(f,'salt & pepper',0.2);%高斯噪声图像f2=imnoise(f,'gaussian',0,0.02);[m,n]=size(f1);g1=f1;%for循环中值去噪for i=2:m-1    for j=2:n-1        temp=f(i-1:i+1,j-1:j+1);        temp=reshape(temp,1,[]);        temp=sort(temp);        g1(i,j)=temp(1,5);    endendg2=f2;for a=2:m-1    for b=2:n-1        temp=f(a-1:a+1,b-1:b+1);        g2(a,b)=sum(temp(:))/9;    endendsubplot(221);imshow(f1);title('椒盐噪声图像');subplot(222);imshow(g1);title('for循环中值去噪');subplot(223);imshow(f2);title('高斯噪声图像');subplot(224);imshow(g2);title('for循环均值值去噪');

代码片段


结果展示图


通过图像不难发现

被高斯噪声污染的图像

用均值滤波处理效果较好;

而被椒盐噪声污染的图像

用中值滤波处理效果较好。


来源: 数字图像处理线上线下混合式教学


本文仅做学术分享,如有侵权,请联系删文。

下载1:Pytoch常用函数手册
在「深度学习爱好者」公众号后台回复:Pytorch常用函数手册,即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。
下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

深度学习爱好者
分享机器学习、深度学习和Python等知识与原理,每天分享深度学习与计算机视觉领域的经典和最新的论文总结,带读者一起跟踪前言科技!
 最新文章