python中值滤波去除椒盐噪声_Python实现图像去噪方式(中值去噪和均值去噪)

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

代码如下:

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()

效果如下

20191218093039.jpg

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

本文标题: Python实现图像去噪方式(中值去噪和均值去噪)

本文地址: http://www.cppcns.com/jiaoben/python/293519.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理

点击关注上方“Java技术江湖”,设为“置顶或星标”,第一时间送达技术干货。作者:黄小斜文章来源:微信公众号【Java技术江湖】目录从JVM结构开始谈多态JVM 的结构Java 的方法调用方式常量池(constant pool)图 2. 常量池各表的关系方…

系统相机裁剪比例_如何正确设置相机:6个最常见的错误,你还在犯错吗?

你是否在摄影中出现这样的设置错误?查看相机的这6个设置,并按照以下自定义提示操作,以增强照片质量并提高专业摄影水平。1.白平衡绝大多数照片是在自动白平衡模式下拍摄的。这是一个简单的选择,在大多数情况下是合理的,但这不是1…

java 正则首位8或者9的8位数字_正则简单手机号和邮箱练习

正则表达式的组成规则在java中,正则表达式的编译是类java.util.regex.Pattern正则表达式的构造摘要1.字符x包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号的普通字符。比如之前的例子可以将[1-9][0-9]{4,12}改成1[0-9]{4,12}或者a[0-9]{4,12}此时就…

inputstreamreader 编码不完整_素材编码对剪辑效率的影响

这次说说在项目的剪辑阶段关于编码的一些注意事项。压缩编码会拖慢剪辑速度大多数中低端摄像机都使用其于时间压缩的编码来进行录制,也称为Long GOP压缩。这种编码对于缩小文件体积很有用,但是计算机不得不耗费更多的性能来进行剪辑。简单来讲&#xff0…

django默认缓存是多大_Django之缓存 - osc_fd8vzgsi的个人空间 - OSCHINA - 中文开源技术交流社区...

一、缓存由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中&#xff0c…

gitlab 安装gitlabrunner 无法连接tiller_谈一谈GitLab Runner是个什么东东?

概念我从官网搜了一下,GitLab Runner 是一个开源项目, 它用来运行你定制的任务(jobs)并把结果返回给 GitLab。 GitLab Runner 配合GitLab CI(GitLab 内置的持续集成服务) 协调完成任务。gitlab想要了解 GitLab Runner之前,我们先要知道或者说…

高中必背88个数学公式_高中数学:必修+选修全部知识点精华!附高考必背203个公式...

童鞋们好呀,2021高考将至,但是很多高三同学还是处于一个很不好的状态感觉每一科都很紧张,学校学习的节奏快,自己基础又没跟上,还要补基础总觉得后一步还没跟上,就要迈下一步了,不知道从哪学&…

mysql获取逻辑日志_Mysql 逻辑架构图及日志系统

1、Mysql逻辑架构图场景一:一条SQL语句如何执行?如图显示一条SQL语句的执行过程:执行器的执行流程:2、Mysql日志系统说到日志系统,需要了解几个概念:creash-safe、redo log、binlog、WAL技术。Redo log用于…

如何提高go代码覆盖率_如何通过静态分析提高iOS代码质量

随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:程序静态分析。程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分…

mysql 查看表是否存在_MySQL优化篇二

单表优化最佳左前缀原则为,保持索引的定义和使用顺序的一致性将含In的范围查询,放到where条件语句的最后。索引需要逐步优化两表优化小表驱动大表避免索引失效的一些原则:复合索引,不要跨列或无序使用(最佳左前缀&…

java http请求_如何设置Fiddler来拦截Java代码发送HTTP请求,进行各种问题排查

我们使用Java的RestTemplate或者Apache的HTTPClient编程的时候,经常遇到需要跟踪Java代码发送的HTTP请求明细的情况。和javascript代码在浏览器里发送请求可以通过Chrome开发者工具方便地跟踪一样,对于Java代码发送的网络请求,我们也可以使用…

mysql自增id用完了_MySQL 自增 ID 用完了怎么办?

MySQL 自增 ID 用完了怎么办?在MySQL中有很多类型的自增ID,每个自增ID都设置了初始值,然后按照一定的步长增加,只要定义了字节长度,那么就会有上限,如果达到上限再次添加,则会报主键冲突错误&am…

山洪沟防洪治理工程技术规范_幸福沟水库一期工程完工丨尚志城市供水、防洪、农业灌溉皆升级...

日前,尚志市幸福沟水库一期工程建设完成,已蓄水试运行。幸福沟水库工程是列入黑龙江省“十三五”规划的重点水利项目,是哈市重点推进的两座中型水库之一,也是尚志市一项打基础、利长远、惠民生的重大战略民生工程。幸福沟水库位于…

子类怎么继承父类方法中的变量_JavaOOP_04 封装 继承

一、封装概念:隐藏程序内部的具体实现细节,对外提供接口,从而提高程序的安全性。高内聚,低耦合。使用封装的步骤:1、属性私有化,使用private访问修饰符进行修饰2、对外提供 setter/getter 方法 setter设置值…

mysql 社区版密码如何修改_如何用优雅的方法修改MySQL root密码

搭噶好,我系小编,我好久没发文章了啊,今天发文章的原因是,我竟然忘了我的MySQL root密码。。本来想找RAKsmart客服直接重置啥的,后来想想还是自己搞吧,还能长知识。然后,我发现一个事情&#xf…

中countif函数_Count系列函数-Count、Counta、Countblank、Countif、Countifs

统计函数在我们的日常工作中也会经常使用。常见的有Count、Counta、Countblank、Countif、Countifs五个。Count用于统计数据类型的单元格个数,Counta用于统计非空单元格的个数,Countblank用于统计空单元格的个数,而Countif、Countifs用于条件…

labview实例_手把手以实例教你学LabVIEW编程,条件结构编程方法

LabVIEW又称为G语言,简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。在上篇文章(请参考:顺序结构编程)中已经讲了顺序结构的编程方法,下面通过具体例子演示条件结构的编程…

用递归与分治策略求解网球循环赛日程表_算法设计:分治法(比赛日程安排)...

一、算法思路1、思路分治算法的思想是:对于一个规模位N的问题,若该问题可以容易解决(比如规模N较小),则直接解决,否则将其分解为M个规模较小的子问题,这些子问题互相独立,并且与原问题形式相同,…

聚类算法 距离矩阵_谱聚类

比起传统的K-means算法,谱聚类对数据分布的适应性更强,计算量也要小很多。1. 谱聚类概述谱聚类是从图论中演化出来,主要思想是吧所有的数据看作空间中的点,这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低&#…

vlan划分不能上网_VLAN工作原理

什么是VLANVLAN(Virtual LAN),翻译成中文是“虚拟局域网”。可以看做是在一个物理局域网络上搭建出几个逻辑上分离的几个局域网。举个例子来说,如果一个交换机划分为两个VLAN,则相当于这台交换机逻辑上划分为两个交换机。VLAN的一个简单直观说…