Opencv图像添加椒盐噪声、高斯滤波去除噪声原理以及手写Python代码实现方法
作者:泡泡怡 发布时间:2021-12-30 00:21:40
标签:opencv,椒盐噪声,高斯滤波
一、噪声
我们将常会听到平滑(去噪),锐化(和平滑是相反的),那我们就会有疑惑?什么是噪声呢?图像噪声是指存在于图像数据中不必要的或多余的干扰信息,噪声的存在严重影响了图像的质量。噪声在理论上是”不可预测“的,所以我们只能用概率论方法认识“随机误差”。
二、噪声的分类
光电管的噪声、摄像管噪声、摄像机噪声、椒盐噪声(数字图像常见的噪声,椒盐噪声就是在图像上随机出现黑色白色的像素)等等。
三、图像中添加椒盐噪声
椒盐噪声又被称作脉冲噪声,它会随机改变图像中的像素值,是由相机成像、图像传输、解码处理等过程产生的黑白相间的亮暗点噪声,其样子就像在图像上随机的撒上一些盐粒和黑椒粒,因此被称为椒盐噪声。
代码如下:
import numpy as np
import cv2
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
def add_sp_noise(img,sp_number):
new_image=img
row,col,channel=img.shape#获取行列,通道信息
s=int(sp_number*img.size/channel)#根据sp_number确定椒盐噪声
#确定要扫椒盐的像素值
change=np.concatenate((np.random.randint(0,row,size=(s,1)),np.random.randint(0,col,size=(s,1))),axis=1)
for i in range(s):
r=np.random.randint(0,2)#确定撒椒(0)还是盐(1)
for j in range(channel):
new_image[change[i,0],change[i,1],j]=r
return new_image
注意:在进行实验的时候,我们需要注意要进行拷贝不然原图会被破坏。
测试:
img=cv2.imread("C:/Users/bwy/Desktop/peppers.JPG")
im=img.copy()
im2=img.copy()
im3=img.copy()
im=add_sp_noise(im,0.05)
im2=add_sp_noise(im2,0.1)
im3=add_sp_noise(im3,0.3)
r=np.hstack((img,im,im2,im3))
cv_show('r',r)
结果如图所示:
从图上看出,sp_number越大,噪声点越多。
四、基于滤波器方法去噪
高斯滤波(手写代码):滤掉噪声的代价就是图像会有所模糊。
计算过程:
此时还要确保这九个点加起来为1(高斯模板的特性),这9个点的权重为0.4787147,因此将9个值都除以0.4787147,得到最终的高斯模板。
再与图像像素进行乘积,四周加和代替中间的。
(1)灰度图像高斯滤波:
def gaosi_f(img,k_size,sigma):
##滤波图片的尺寸
h=img.shape[0]
w=img.shape[1]
##用0填充边缘
pad=k_size//2
transform_img=np.zeros((h+2*pad,w+2*pad))
transform_img[pad:h+pad,pad:w+pad]=img
new_img=np.zeros((h,w))
##先计算高斯滤波核
gaosi_filter=np.zeros((k_size,k_size))
for x in range(-pad,-pad+k_size):
for y in range(-pad,-pad+k_size):
gaosi_filter[y+pad,x+pad]=np.exp(-(x**2+y**2)/(2*sigma**2))/(2*np.pi*sigma**2)
gaosi_filter=gaosi_filter/np.sum(gaosi_filter)
##计算滤波后的图片
for i in range(pad,h+pad):
for j in range(pad,w+pad):
##取图像k_size x k_size的像素值
p_img=transform_img[i-pad:i+pad+1,j-pad:j+pad+1]
##进行高斯滤波
value=np.sum(np.multiply(p_img,gaosi_filter))
new_img[i-pad,j-pad]=value
##对滤波后的图片中的像素值取整
new_img=np.round(new_img).astype(np.uint8)
return new_img
彩色图像高斯滤波:
def gaosi_fS(img,k_size,sigma):
h=img.shape[0]
w=img.shape[1]
imShape=img.shape
dim=len(imShape)
if dim==2:
eim=gaosi_f(img,k_size,sigma)
else:
imR=img[:,:,0]
imG=img[:,:,1]
imB=img[:,:,2]
eim=np.zeros((h,w,3))
eimr=gaosi_f(imR,k_size,sigma)
eimg=gaosi_f(imG,k_size,sigma)
eimb=gaosi_f(imB,k_size,sigma)
eim[:,:,0]=eimr
eim[:,:,1]=eimg
eim[:,:,2]=eimb
return eim
测试:
new_img=gaosi_fS(im,3,0.5)
cv_show("new_img",new_img)
cv_show("im",im)
结果如图所示:
五、opencv高斯滤波调包
aussian = cv2.GaussianBlur(im, (5,5), 1)
cv_show("aussian",aussian)
结果如图所示:
总结
来源:https://blog.csdn.net/m0_72662900/article/details/126799509


猜你喜欢
- 今天在调试项目的时候出现下面的错误信息:SoapFaultlooks like we got no XML document (D:\php
- 1.安装mysql5.6 docker run mysql:5.6等所有项目都是Download complet 安装完毕5.6: Pull
- 众所周知,FileSystemObject(fso)组件的强大功能及破坏性是它屡屡被免费主页提供商(那些支持ASP)的禁用的原因,我整理了一
- 先来说说实现方式: 1、我们来假定Table中有一个已经建立了索引的主键字段ID(整数型),我们将按照这个字段来取数据进行分页。 2、页的大
- 在一些项目中, 我们会使用json 来将字符串转为结构体,但是很多时候,这种结构体只会用一次,基本上只会用于反序列化, 对于这种只用到一次的
- 英文文档:class complex([real[, imag]])Return a complex number with the val
- 目录你应该拥有的东西安装开始轻敲截图高级点击TemplateMatching滑动打电话给某人从手机下载文件到电脑手机录屏打开手机发送 Wha
- 1.echo和print的区别PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。echo输出后没有返回值,但
- 最近在做搜索设计时,发现了两个容易纠结的小问题,在这里谈谈自己的一些分析。问题一:提交的关键字是哪个?凡客的这个例子中,搜索建议“时尚斜拉链
- pygame.mixer是一个用来处理声音的模块,其含义为“混音器”。游戏中对声音的处理一般包括制造声音和播放声音两部分,这里仅学习了播放声
- 什么是科赫曲线科赫曲线是de Rham曲线的特例。给定线段AB,科赫曲线可以由以下步骤生成: 将线段分成三等份(AC,CD,DB) 以CD为
- 表单的验证是开发WEB应用程序中常遇到的一关。有时候我们必须保证表单的某些项必须填写、必须为数字、必须是指定的位数等等,这时候就要用到表单验
- Wordpress 2.6.2 出来了,今天将网站程序从2.6升级上来,比较了一下2个版本的代码,发现2.6的版本中的代码还有几个地方出现了
- 目录项目地址安装导入使用1 创建连接2 执行sql语句3 select 方法4 insert_into 方法5 merge_in
- 一、问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;
- 本文将带领大家由浅入深的去窥探一下,这个装饰器到底是何方神圣,看完本篇,装饰器就再也不是难点了.一、什么是装饰器网上有人是这么评价装饰器的,
- 0. Intro在pytorch或者其他深度学习框架中,有许多超参数需要调整,包括learning_rate,training_data_p
- python默认使用的是国外镜像,有时候下载非常慢,最快的办法就是在下载命令中增加国内源:常用的国内源如下:清华大学:https://pyp
- 当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块。可以通过sys.path查看这些路径,比如:>&
- 1.前言数据库的重要性相信大家都有所了解,作为各种数据的电子资料夹,其中可能包含了各种信息,从企业员工信息到网站访问或成交数据无所不包,甚至