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 修改文件指定行的方法
May 15 Python
python切换hosts文件代码示例
Dec 31 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
Python使用os模块和fileinput模块来操作文件目录
Jan 19 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
python psutil监控进程实例
Dec 17 Python
解决paramiko执行命令超时的问题
Apr 16 Python
python实现图片转字符画的完整代码
Feb 21 Python
python如何利用traceback获取详细的异常信息
Jun 05 Python
Python标准库pathlib操作目录和文件
Nov 20 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 错误处理经验分享
2011/10/11 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
Javascript动画效果(2)
2016/10/11 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python处理cookie详解
2014/02/07 Python
python引用DLL文件的方法
2015/05/11 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
python版本的读写锁操作方法
2016/04/25 Python
python3 拼接字符串的7种方法
2018/09/12 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
中间件分为哪几类
2016/09/18 面试题
纠风工作实施方案
2014/03/15 职场文书
班级文化建设标语
2014/06/23 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
python基础之文件操作
2021/10/24 Python
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库