Python实现中值滤波去噪方式


Posted in Python onDecember 18, 2019

中值滤波器去噪:

中值滤波的主要原理是将数字图像中的某点用该点的邻域中各个像素值的中值所来代替,这样就能让目标像素周围能够更好的接近真实值,比如一张白纸上有一个黑点时,黑点的像素值比较大,经过中值滤波过后,黑点附近的像素值可能就会变小。经过中值滤波后一些相对孤立的噪声点就容易被清除掉,这样就能提高图像的质量。

所以中值滤波器去噪的一个优点就是对椒盐噪声的去除具有很好的效果,具体操作是选取一个中心邻域,然后给邻域类各个像素的灰度值按大小进行排序,选取排序序列中的中值作为该邻域中心点的像素值的灰度值。

它的缺点是当邻域挑选过大时,可能会造成图像特征丢失。

实现代码如下:

import numpy as np
import cv2
from PIL import Image
import scipy.signal as signal
import matplotlib.pyplot as plt
#创建一个500*500的矩阵
input_images = np.zeros((500, 500))
filename = "E:/pycharm/GraduationDesign/Test/testtwo.png"
#convert将当前图像转换为灰度模式,并且返回新的图像。
#将图片在重新定义的矩阵中再显示,不然可能会只显示部分。
img = Image.open(filename).resize((500, 500)).convert('L')
plt.subplot(221)
plt.title('原图', fontproperties=font_set)
plt.imshow(img)
#图像的尺寸,按照像素数计算。它的返回值为宽度和高度的二元组(width, height)。
width = img.size[0]
height = img.size[1]
threshold=130
#可以改写代码使其成为二值化,此代码可理解为反向二值化
for h in range(height):
 for w in range(width):
  #getpixel直接获得(h,w)处的像素直接返回这个点三个通道的像素值
  #返回给定位置的像素值。如果图像为多通道,则返回一个元组(r,g,b,阈值)。
  #如果改成(w,h)出现的图像会倒转
  if img.getpixel((w, h)) < threshold:
 
   input_images[h, w] = 1
  else:
   input_images[h, w] = 0
plt.subplot(222)
plt.title('二值化', fontproperties=font_set)
plt.imshow(input_images)
 
data = signal.medfilt2d(np.array(img), kernel_size=3) # 二维中值滤波
for h in range(0, height):
 for w in range(0, width):
  if data[h][w] < 128:
   input_images[h, w] = 0
  else:
   input_images[h, w] = 1
 
plt.subplot(223)
plt.title('中值滤波去噪(3*3)', fontproperties=font_set)
plt.imshow(input_images)
 
data = signal.medfilt2d(np.array(img), kernel_size=7) # 二维中值滤波
for h in range(0, height):
 for w in range(0, width):
  if data[h][w] < 128:
   input_images[h, w] = 0
  else:
   input_images[h, w] = 1
plt.subplot(224)
plt.title('中值滤波去噪(7*7)', fontproperties=font_set)
plt.imshow(input_images)
plt.show()

效果图:

Python实现中值滤波去噪方式

图中的小黑点是我简单模拟实现图片中含有椒盐噪声中所加入的。当中值滤波领域选取过大时会使图片失真。

以上这篇Python实现中值滤波去噪方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python with的用法
Aug 22 Python
python压缩文件夹内所有文件为zip文件的方法
Jun 20 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
简单谈谈python基本数据类型
Sep 26 Python
python3 实现一行输入,空格隔开的示例
Nov 14 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
Python实现TCP通信的示例代码
Sep 09 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
pytorch之inception_v3的实现案例
Jan 06 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 #Python
Python字典底层实现原理详解
Dec 18 #Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 #Python
简单介绍django提供的加密算法
Dec 18 #Python
详解从Django Allauth中进行登录改造小结
Dec 18 #Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 #Python
python 字段拆分详解
Dec 17 #Python
You might like
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
Yii2如何批量添加数据
2016/05/17 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python的一些用法分享
2012/10/07 Python
Python第三方库的安装方法总结
2016/06/06 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
HTML5实现经典坦克大战坦克乱走还能发出一个子弹
2013/09/02 HTML / CSS
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
高考自主招生自荐信
2013/10/20 职场文书
开业庆典邀请函
2014/01/08 职场文书
安全责任协议书
2014/04/21 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
Redis基本数据类型List常用操作命令
2022/06/01 Redis