Python实现图像去噪方式(中值去噪和均值去噪)


Posted in Python onDecember 18, 2019

实现对图像进行简单的高斯去噪和椒盐去噪。

代码如下:

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import random
import scipy.misc
import scipy.signal
import scipy.ndimage
from matplotlib.font_manager import FontProperties
font_set = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=10)
 
def medium_filter(im, x, y, step):
  sum_s = []
  for k in range(-int(step / 2), int(step / 2) + 1):
    for m in range(-int(step / 2), int(step / 2) + 1):
      sum_s.append(im[x + k][y + m])
  sum_s.sort()
  return sum_s[(int(step * step / 2) + 1)]
 
 
def mean_filter(im, x, y, step):
  sum_s = 0
  for k in range(-int(step / 2), int(step / 2) + 1):
    for m in range(-int(step / 2), int(step / 2) + 1):
      sum_s += im[x + k][y + m] / (step * step)
  return sum_s
 
 
def convert_2d(r):
  n = 3
  # 3*3 滤波器, 每个系数都是 1/9
  window = np.ones((n, n)) / n ** 2
  # 使用滤波器卷积图像
  # mode = same 表示输出尺寸等于输入尺寸
  # boundary 表示采用对称边界条件处理图像边缘
  s = scipy.signal.convolve2d(r, window, mode='same', boundary='symm')
  return s.astype(np.uint8)
 
 
def convert_3d(r):
  s_dsplit = []
  for d in range(r.shape[2]):
    rr = r[:, :, d]
    ss = convert_2d(rr)
    s_dsplit.append(ss)
  s = np.dstack(s_dsplit)
  return s
 
 
def add_salt_noise(img):
  rows, cols, dims = img.shape
  R = np.mat(img[:, :, 0])
  G = np.mat(img[:, :, 1])
  B = np.mat(img[:, :, 2])
 
  Grey_sp = R * 0.299 + G * 0.587 + B * 0.114
  Grey_gs = R * 0.299 + G * 0.587 + B * 0.114
 
  snr = 0.9
 
  noise_num = int((1 - snr) * rows * cols)
 
  for i in range(noise_num):
    rand_x = random.randint(0, rows - 1)
    rand_y = random.randint(0, cols - 1)
    if random.randint(0, 1) == 0:
      Grey_sp[rand_x, rand_y] = 0
    else:
      Grey_sp[rand_x, rand_y] = 255
  #给图像加入高斯噪声
  Grey_gs = Grey_gs + np.random.normal(0, 48, Grey_gs.shape)
  Grey_gs = Grey_gs - np.full(Grey_gs.shape, np.min(Grey_gs))
  Grey_gs = Grey_gs * 255 / np.max(Grey_gs)
  Grey_gs = Grey_gs.astype(np.uint8)
 
  # 中值滤波
  Grey_sp_mf = scipy.ndimage.median_filter(Grey_sp, (7, 7))
  Grey_gs_mf = scipy.ndimage.median_filter(Grey_gs, (8, 8))
 
  # 均值滤波
  Grey_sp_me = convert_2d(Grey_sp)
  Grey_gs_me = convert_2d(Grey_gs)
 
  plt.subplot(321)
  plt.title('加入椒盐噪声',fontproperties=font_set)
  plt.imshow(Grey_sp, cmap='gray')
  plt.subplot(322)
  plt.title('加入高斯噪声',fontproperties=font_set)
  plt.imshow(Grey_gs, cmap='gray')
 
  plt.subplot(323)
  plt.title('中值滤波去椒盐噪声(8*8)',fontproperties=font_set)
  plt.imshow(Grey_sp_mf, cmap='gray')
  plt.subplot(324)
  plt.title('中值滤波去高斯噪声(8*8)',fontproperties=font_set)
  plt.imshow(Grey_gs_mf, cmap='gray')
 
  plt.subplot(325)
  plt.title('均值滤波去椒盐噪声',fontproperties=font_set)
  plt.imshow(Grey_sp_me, cmap='gray')
  plt.subplot(326)
  plt.title('均值滤波去高斯噪声',fontproperties=font_set)
  plt.imshow(Grey_gs_me, cmap='gray')
  plt.show()
 
 
def main():
  img = np.array(Image.open('E:/pycharm/GraduationDesign/Test/testthree.png'))
  add_salt_noise(img)
 
 
if __name__ == '__main__':
  main()

效果如下

Python实现图像去噪方式(中值去噪和均值去噪)

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

Python 相关文章推荐
python网络编程之读取网站根目录实例
Sep 30 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python变量作用范围实例分析
Jul 07 Python
Python中random模块生成随机数详解
Mar 10 Python
Python多进程并发与多线程并发编程实例总结
Feb 08 Python
django 实现电子支付功能的示例代码
Jul 25 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
python调用百度REST API实现语音识别
Aug 30 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
详解Django配置优化方法
Nov 18 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
python 中值滤波,椒盐去噪,图片增强实例
Dec 18 #Python
Django中使用MySQL5.5的教程
Dec 18 #Python
Python hashlib加密模块常用方法解析
Dec 18 #Python
Python实现中值滤波去噪方式
Dec 18 #Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 #Python
Python字典底层实现原理详解
Dec 18 #Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 #Python
You might like
基于initPHP的框架介绍
2013/04/18 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
JS中Location使用详解
2015/05/12 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
Python实现的密码强度检测器示例
2017/08/23 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Python找出最小的K个数实例代码
2018/01/04 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
嘻哈珠宝品牌:KRKC&CO
2020/10/19 全球购物
金融专业个人的自我评价
2013/10/18 职场文书
行政助理岗位职责
2013/11/10 职场文书
优秀大专毕业生求职信
2014/08/04 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
工作建议书范文
2019/07/08 职场文书