图像去噪的原理及实现

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

·图像噪声

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

·噪声来源

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

·常见噪声

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

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

·噪声的坏处

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

·噪声处理

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

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

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

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

·常见噪声处理算法

 🌟 均值滤波

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

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

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

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

e320e544ae61f3f4e6462964b150a093.png

 🌟 中值滤波

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

·利用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('中值处理高斯噪声图像');

代码片段

fe6ff05258aa186493b55df528ed915c.png

结果展示图

💭利用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);
    end
end
g2=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;
    end
end
subplot(221);imshow(f1);title('椒盐噪声图像');
subplot(222);imshow(g1);title('for循环中值去噪');
subplot(223);imshow(f2);title('高斯噪声图像');
subplot(224);imshow(g2);title('for循环均值值去噪');

代码片段

5a9c93d4a3e0f4e2f4fc3653ea4d62f2.png

结果展示图

通过图像不难发现

被高斯噪声污染的图像

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

而被椒盐噪声污染的图像

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

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

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

 
 

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 
 

f073a00f6cb72a6d2f02b9e6698cdf63.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值