去除椒盐噪声(简单的matlab代码实践,PSNR评价)
参考:
https://www.cnblogs.com/tiandsp/archive/2012/11/14/2770462.html
https://blog.csdn.net/zbc1090549839/article/details/38404995
https://baike.baidu.com/item/%E6%A4%92%E7%9B%90%E5%99%AA%E5%A3%B0/3455958?fr=aladdin
椒盐噪声
椒盐噪声也称为脉冲噪声。它是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。其中黑色的噪声点就被形象地称为胡椒噪声(pepper noise),而白色的噪声点就被称为盐噪声(salt noise)。一般这2种噪声同时出现,呈现在图像上就是黑白的杂点。
椒盐噪声往往由图像切割引起,去除脉冲干扰及椒盐噪声最常用的算法是中值滤波。
中值滤波
滤除椒盐噪声比较有效的方法是对信号进行中值滤波处理。去除椒盐噪声后可以得到较为平滑的信号,其效果要优于均值滤波器,当然中值滤波也同样会造成边缘模糊、信号不够锐利,这似乎也是很多滤波方法的一大通病。因为只要是去噪,一定是低频滤波,而低频滤波所造成的结果就是低频信息被保持,而高频信息受到损失。所以能够激发的一点思考就是在滤波的同时如何更好的保持边缘是滤波中尤其需要注意的。
在matlab中,调用 y = medfilt1(x,n)即可进行一维信号的中值滤波操作(x表示输入信号,n值窗宽度)
调用 B = medfilt2(A, [m n])可完成二维信号的中值滤波操作(A为要被中值滤波的图像,采用m*n大小的窗口)。
中值滤波代码
clc;
clear;
close all;
fprintf('=======中值滤波=====\n');
img=imread('remote_sense.tif');
[~,~,ch] = size(img);
if ch ==3img =rgb2gray(img);
end
figure;imshow(img);title('原始图像');
img_med = medfilt2(img, [2,2]);
figure;imshow(img_med);title('2*2中值滤波');psnr_med = eval_psnr(img,img_med);
% 使用[3,3]的窗口
img_med2 = medfilt2(img, [3,3]);
figure;imshow(img_med2);title('3*3中值滤波');
psnr_med2 = eval_psnr(img,img_med2);
为了作比较我们也是用DCT来去除椒盐噪声并利用PSNR评价。
DCT(频域滤波)去除椒盐噪声
经过显示去噪之后的结果我们同样可以看到,无论是在频域滤波还是在空间域滤波,我们都会造成边缘模糊。这是需要我们思考的。
clc;
close all;
img = imread('remote_sense.tif');
[m,n,ch] = size(img);
if ch == 3img = rgb2gray(img);
end
figure;imshow(img);title('原始图像');
%DCT变换
img_dct = dct2(img);
I = zeros(m,n);
% 高频屏蔽
I(1:m/3,1:n/3)=1;
Ydct = img_dct .* I;
%逆DCT变换
img_dct = uint8(idct2(Ydct));
%结果输出
figure;imshow(img_dct);title('去噪之后');
psnr_dct = eval_psnr(img,img_dct);
评价结果及结论
我们会发现中值滤波的结果要好于DCT滤波,但是[2,2]的窗口滤波却比[3,3]的窗口滤波效果要好。
PSNR评价
PSNR可简单地由均方差MSE进行定义。PSNR基于图像像素灰度值进行统计分析。由于人类视觉特性的差异性,通常出现的评价结果与人的主要感觉不一致,但其仍然是一个有参考价值的评价指标。
其求解公式为
这里的MAX通常是图像的灰度级,一般就是255。当用于对比2幅图像相似的时候,PSNR越大则表示图像之前相似性越高。
function [PSNR] = eval_psnr(img,imgn)
% =================PSNR评价
% param :
% img:输入灰度图像(img与imgn同等大小)
% imgn:输入要进行对比的灰度图像
%
B = 8; %编码一个像素用多少二进制位
MAX = 2^B-1; %图像有多少灰度级
[height,width,~] = size(img);
MES = sum(sum((img-imgn).^2))/(height*width); %均方差
PSNR = 20*log10(MAX/sqrt(MES)); %峰值信噪比end
去除椒盐噪声(简单的matlab代码实践,PSNR评价)相关推荐
- 利用中值滤波而不是均值滤波去除椒盐噪声(脉冲噪声)
在去除椒盐噪声方面均值滤波会模糊图像,并且去除效果较差.相比之下,中值滤波能够较好地去除椒盐噪声.我们直接看matlab实现的效果和代码: %这个程序为我们显示了在去除椒盐噪声方面 中值滤波优于均值滤 ...
- 色噪声原理及matlab代码实现,色噪声原理及matlab代码实现
色噪声原理及matlab代码实现 色噪声原理及 matlab 实现1.实验目的:⑴ 了解随机信号自身的特性,包括均值(数学期望) .均方值.方差.相关函数.概率密度.频谱及功率谱密度等.(2)了解色噪 ...
- 24.双边滤波和中值滤波器(自定义中值滤波器去除椒盐噪声、exp含义)-- OpenCV从零开始到图像(人脸 + 物体)识别系列
本文作者:小嗷 微信公众号:aoxiaoji 吹比QQ群:736854977 简书链接:https://www.jianshu.com/u/45da1fbce7d0 上篇写道模拟噪声,这篇打算利用中值 ...
- 泊松噪声(附Matlab代码)
泊松噪声(散粒噪声) 文章目录 泊松噪声(散粒噪声) 前言 一.成像模型 二.相关代码 三.成像结果 总结 前言 在研究生阶段,我除了做关联成像及单像素成像的研究,还做一些传统图像处理的方法,以及深度 ...
- python中值滤波去除椒盐噪声_python 中值滤波,椒盐去噪,图片增强实例
受光照.气候.成像设备等因素的影响,灰度化后的图像存在噪声和模糊干扰,直接影响到下一步的文字识别,因此,需要对图像进行增强处理.图片预处理中重要一环就是椒盐去澡,通常用到中值滤波器进行处理,效果很好. ...
- matlab如何代码实现原理,色噪声原理及matlab代码实现
色噪声原理及matlab实现 1.实验目的: ⑴了解随机信号自身的特性,包括均值(数学期望).均方值.方差.相关函数.概率密度.频谱及功率谱密度等. (2)了解色噪声的基本概念和分析方法,掌握用mat ...
- GAN 数学原理简单介绍以及代码实践
1. GAN 数学原理 1.1 GAN 概述 GAN(Generative Adversarial Network) 是一种深度生成神经网络,它包括 生成模型 与 判别模型 两个部分.其中,生成模型 ...
- matlab去除周期噪声,matlab在空域与频域中去除周期噪声、椒盐噪声的简单应用
前言 去年图像处理的DLL,有学弟问我做的思路,便放到博客里 github地址,欢迎star 图像增强处理:设计一套空间域与频率域结合的图像增强算法,处理以下任一组图片中的带噪声图像,去除噪声,提高图 ...
- 图像处理之椒盐噪声的添加与去除
椒盐噪声 什么是椒盐噪声 椒盐噪声,就是椒噪声和盐噪声的混合噪声.其中,椒噪声的椒即是黑胡椒之意,在图像中表现为黑色点斑:而盐噪声则是取自食盐,在图像中表现为白色点状.一般两种噪声在图像中混合出现,表 ...
- 如何运行matlab代码?怎样找到matlab主程序?
下载的代码包里的文件都是干什么的? 当我们从网络上下载matlab的源代码时,得到的通常是代码的压缩包,里面包括很多各种后缀的文件.他们都是什么文件呢,都是干什么用的? m后缀的文件:这是matlab ...
最新文章
- javascript数组排序和prototype详解
- js控制公共模板中,不同页面中的导航选中效果-判断当前的url
- 云空间-全面进入免费云时代-国内首家免费T级云空间!
- python入门第七章好友管理系统
- [基础篇]PHP引用变量
- php debugdumpparams,PHP PDOStatement::debugDumpParams讲解
- 火电厂( 4×300MW )电气主系统方案与设备配置初步设计
- mtk刷机报错4032专业维修教程(图文)
- vue中点击打开新的页面window.open()
- Redis发布订阅[西橙先生]
- bert中的cls和sep等等
- Siebel系统中配置LDAP认证
- AI算法之Encoder-Decoder 和 Seq2Seq
- 你不得不会的EXCEL选择性粘贴
- Ubuntu(debian)问题解决方案合集
- 霸榜世界第一的在线教育App,靠什么增长到3亿用户?
- html5 摇骰子游戏,html5摇骰子游戏
- 图应用之最短路径问题(头歌教学实践平台)
- Win电脑截图黑屏解决办法
- Autonomous Vehicle 仿真平台汇总
热门文章
- hadoop 权限错误 Permission denied: user=root, access=WRITE, inode=“/“:hdfs:super
- 像素生存者2为什么显示服务器不可用,像素生存者2为什么更新了玩不了 | 手游网游页游攻略大全...
- 怎么查看ingress的规则_Prometheus PormQL语法及告警规则写法
- kx3552驱动最佳连线图_意甲新赛季5大看点:C罗连线苏牙,皮尔洛执教初体验
- jquery选择器的介绍和使用
- ML/DL-复习笔记【三】- 算法的评价指标
- 机器学习笔记(二)——元学习
- LeetCode之寻找峰值
- 基于line2d算法的模板匹配
- Redis与Django中配置使用Redis