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 相关文章推荐
python3生成随机数实例
Oct 20 Python
Python中利用原始套接字进行网络编程的示例
May 04 Python
python基础_文件操作实现全文或单行替换的方法
Sep 04 Python
Python enumerate索引迭代代码解析
Jan 19 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
Python实现基于C/S架构的聊天室功能详解
Jul 07 Python
python实现批量注册网站用户的示例
Feb 22 Python
django的ORM操作 增加和查询
Jul 26 Python
pandas的排序和排名的具体使用
Jul 31 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
Python实现的北京积分落户数据分析示例
Mar 27 Python
在django中查询获取数据,get, filter,all(),values()操作
Aug 09 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
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
JS实现匀速运动的代码实例
2013/11/29 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
python实现通过shelve修改对象实例
2014/09/26 Python
深入理解python中的select模块
2017/04/23 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
将Python字符串生成PDF的实例代码详解
2019/05/17 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Python如何给函数库增加日志功能
2020/08/04 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
幼儿园小班教师寄语
2014/04/03 职场文书
2014年财政局工作总结
2014/12/09 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
活动总结模板大全
2015/05/11 职场文书
教师节联欢会主持词
2015/07/04 职场文书
2019新员工心得体会
2019/06/25 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python