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连接池实现示例程序
Nov 26 Python
零基础写python爬虫之爬虫编写全记录
Nov 06 Python
Python访问纯真IP数据库脚本分享
Jun 29 Python
让代码变得更易维护的7个Python库
Oct 09 Python
使用django-guardian实现django-admin的行级权限控制的方法
Oct 30 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
Python常用特殊方法实例总结
Mar 22 Python
python 提取文件指定列的方法示例
Aug 07 Python
Python爬虫使用代理IP的实现
Oct 27 Python
Python实现井字棋小游戏
Mar 09 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
python+selenium实现12306模拟登录的步骤
Jan 21 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
玩转图像函数库―常见图形操作
2006/09/03 PHP
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
用jscript启动sqlserver
2007/06/21 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
jquery实现select下拉框美化特效代码分享
2015/08/18 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
JSP&Servlet技术面试题
2015/05/21 面试题
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
岗位聘任书范文
2014/03/29 职场文书
MySQL三种方式实现递归查询
2022/04/18 MySQL
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技