资讯专栏INFORMATION COLUMN

学习笔记-使用Python对含有椒盐噪声的图像进行均值滤波,高斯滤波和中值滤波

Clect / 2369人阅读

摘要:我是分界线第一个参量为输入的图片,第二个是噪声占图片像素的百分比计算椒盐噪声点数量参数参数必须是整数函数返回值是参数和参数之间的任意整数生成随机位置浅度复制,复制的数不会随着被复制数的嵌套序列的元素的改变而改变从到图像长度之间的一个随机

import cv2 as cvfrom pylab import *from scipy import ndimageimport matplotlib.pyplot as pltimport random# .......................................................................................# ..................................我是分界线.............................................# .......................................................................................def pepper_and_salt(img,percentage):                 # 第一个参量为输入的图片,第二个是噪声占图片像素的百分比    num = int(percentage*img.shape[0]*img.shape[1])  # 计算椒盐噪声点数量    random.randint(0, img.shape[0])                  # 参数1、参数2必须是整数函数;返回值是参数1和参数2之间的任意整数生成随机位置    img2 = img.copy()                                # 浅度复制,复制的数不会随着被复制数的嵌套序列的元素的改变而改变;    for i in range(num):        X=random.randint(0,img2.shape[0]-1)          # 从0到图像长度之间的一个随机整数,因为是闭区间所以-1        Y=random.randint(0,img2.shape[1]-1)        if random.randint(0,1) ==0:                  # 黑白色概率55开            img2[X,Y] = (255,255,255)                # 白色        else:            img2[X,Y] =(0,0,0)                       # 黑色    return img2# ..................................我是分界线.............................................if __name__ == "__main__":    #对自备图片进行均值滤波       plt.ion()       # 读取图片       img = cv.imread("g07.tif")   # pycharm文件和图片在同一个文件夹里,故可直接写图片名称来表示路径       # 加入噪音       img = pepper_and_salt(img, 0.01)       source = cv.cvtColor(img, cv.COLOR_BGR2RGB)  # 颜色空间转换函数       # 均值滤波       result = cv.blur(source, (5, 5))             # 以周围5x5的像素值为依据进行滤波,越大越模糊       # 显示图形       titles = ["Source Image", "Blur Image"]       images = [source, result]       for i in range(2):          # 将两个图合并为一个图输出        plt.subplot(1, 2, i + 1)   # plt.subplot(i,j,n)形式,其中ij是行列数,n是第几个图        plt.imshow(images[i])      # 对图像进行处理,并显示其格式,        plt.title(titles[i])       # 设置图像标题        plt.xticks([]), plt.yticks([])       plt.show()                 # plt.show则是将plt.imshow处理后的函数显示出来       plt.pause(3)               # 该句显示图片3秒       plt.close()                # 清空窗口       # 高斯模糊模板与均值模板比较       kernel_3X3 = np.array([    # 产生二维数组       [1/16, 2/16, 1/16],       [2/16, 4/16, 2/16],       [1/16, 2/16, 1/16],       ])       gray = cv.cvtColor(source, cv.COLOR_BGR2GRAY)  # 将彩色图片变为灰度图       out = cv.GaussianBlur(gray, (3, 3), 1.3)       # cv库自带的高斯模糊——3X3模板 标准差为 1.3       cv.imshow("GaussianBlur", out)                 # 高斯模糊处理后的图片显示       kernel_3X3 = kernel_3X3/kernel_3X3.sum()       # .sum()是对序列进行求和,在这里这段代码无意义       k = ndimage.convolve(gray, kernel_3X3, mode="constant", cval=0.0)         # 卷积       # ndimage.convolve()第一个参数表示输入的一维数组,第二个参数是输入的二维数组       # mode="reflect"(默认值),外部值会反映在输入的边以填充缺失值。       # mode="constant", cval=0.0表示边界补0;mode="constant", cval=1.0表示边界补1       cv.imshow("Blur", k)                 # 图片显示       cv.waitKey(5000)       cv.destroyAllWindows()       #添加椒盐噪声       img = cv.imread("g07.tif")       img1 = pepper_and_salt(img, 0.05)      # 百分之5的椒盐噪音       img_median = cv.medianBlur(img1, 3)    # 中值滤波       htitch = np.hstack((img1, img_median)) # 将添加噪声的图和中值滤波后的图合并到一起显示       cv.imshow("pepper_and_salt", htitch)       cv.waitKey(5000)       cv.destroyAllWindows()

二、图象平滑

1,对自备图片(封面图图)进行均值滤波(自选模板大小)

2,对自备图片利用二维高斯模板,对其进行加权平滑滤波,并比较其效果;二维高斯模板为:

 3,对自备图像之一添加椒盐噪声,再进行中值滤波;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/120024.html

相关文章

  • 图像增强——空间域滤波

    摘要:能够有效去除椒盐噪声黑白点叠加在图像上去除噪声的同时,比较好地保留边缘空间域锐化滤波器高通滤波器锐化处理的主要目的是为了突出图像的边缘信息,增强图像的轮廓特征,以便于人眼的观察和机器的识别。 ...

    Cheriselalala 评论0 收藏1
  • opencv python 图像平滑/2D卷积/图像平滑/平均值法/高斯模糊/中值模糊/双边滤波

    摘要:卷积与一维信号一样,图像也可以使用各种低通滤波器,高通滤波器等进行滤波有助于消除噪声,模糊图像等滤波器有助于找到边缘图片将内核与图像进行卷积应用对图像进行平均过滤。它只取内核区域下所有像素的平均值并替换中心元素。 Smoothing Images 1 2D卷积 与一维信号一样,图像也可以使用各种低通滤波器(LPF),高通滤波器(HPF)等进行滤波.LPF有助于消除噪声,模糊图像等.H...

    Little_XM 评论0 收藏0
  • Programming Computer Vision with Python学习笔记六)

    摘要:由所有边缘增强像素组成的新图像,称为边缘增强图像。交叉算子上述使用差分方法得出亮度变化梯度其实就是一阶微分的近似值。 边缘检测(edge detection)是最重要的图像处理技术之一,图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性,为后续图像理解方法提供了基础。 边缘检测方法 从视觉上看,图像中的边缘处亮度较周围强,比如对一垂直方向的边缘,...

    MageekChiu 评论0 收藏0
  • OpenCV-Python计算机视觉函数

    摘要:如果不设置这个,图片只会一瞬间显示,就消失了。括号里面也可以设置显示时长。 目录 1、概述 2、OpenCV基础 读取图片 imread 调整显示窗口大小 resizeWindow 调整图像尺寸大小 resize 色彩空间进行转换 cvtColor 绘制线段 line 绘制矩形框 recta...

    levius 评论0 收藏0
  • Programming Computer Vision with Python学习笔记八)

    摘要:简称库是从扩展下来的,提供了更丰富的图像处理函数,去噪函数除了还有算法,比如边缘检测还有以前简单提过的算子滤波器。下面我用看具体的例子,将和高斯平滑进行对比效果对比如下明显感觉使用的效果要比高斯平滑好很多。 图像去噪(Image Denoising)的过程就是将噪点从图像中去除的同时尽可能的保留原图像的细节和结构。这里讲的去噪跟前面笔记提过的去噪不一样,这里是指高级去噪技术,前面提过的...

    FleyX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<