侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Python  /  管理员 发布于 7年前   145

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

代码如下:

import numpy as npfrom PIL import Imageimport matplotlib.pyplot as pltimport randomimport scipy.miscimport scipy.signalimport scipy.ndimagefrom matplotlib.font_manager import FontPropertiesfont_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 中值滤波,椒盐去噪,图片增强实例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客