这篇文章跟大家分析一下“如何进行Python OpenCV图像模糊处理分析”。内容详细易懂,对“如何进行Python OpenCV图像模糊处理分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“如何进行Python OpenCV图像模糊处理分析”的知识吧。
其实我们平时在深度学习中所说的卷积操作,在 opencv 中也可以进行,或者说是类似操作。那么它是什么操作呢?它就是图像的模糊(滤波)处理。
使用 opencv 中的cv2.blur(src, ksize)
函数。其参数说明是:
src
: 原图像ksize
: 模糊核大小
原理:它只取内核区域下所有像素的平均值并替换中心元素。3x3 标准化的盒式过滤器如下所示:
特征:核中区域贡献率相同。作用:对于椒盐噪声的滤除效果比较好。
# -*-coding:utf-8-*- """ File Name: image_deeplearning.py Program IDE: PyCharm Date: 2021/10/17 Create File By Author: Hong """ import cv2 as cv def image_blur(image_path: str): """ 图像卷积操作:设置卷积核大小,步距 :param image_path: :return: """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) # 模糊操作(类似卷积),第二个参数ksize是设置模糊内核大小 result = cv.blur(img, (5, 5)) cv.imshow('result', result) cv.waitKey(0) cv.destroyAllWindows() if __name__ == '__main__': path = 'images/2.png' image_blur(path)
结果展示:
高斯滤波使用的是cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)
函数。
说明:sigmaX
,sigmaY
分别表示 X,Y 方向的标准偏差。如果仅指定了sigmaX
,则sigmaY
与sigmaX
相同;如果两者都为零,则根据内核大小计算它们。
特征:核中区域贡献率与距离区域中心成正比,权重与高斯分布相关。
作用:高斯模糊在从图像中去除高斯噪声方面非常有效。
def image_conv(image_path: str): """ 高斯模糊 :param image_path: :return: """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('img', img) # 高斯卷积(高斯滤波), 可以设置ksize,必须为奇数,不为0时,后面的步骤不起作用;也可以设置成(0,0),然后通过sigmaX和sigmaY计算标准偏差 result = cv.GaussianBlur(img, (0, 0), 15) cv.imshow('result', result) cv.waitKey(0) cv.destroyAllWindows() if __name__ == '__main__': path = 'images/2.png' image_conv(path)
结果展示:
双边滤波(模糊)使用的是cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)
函数。
说明:d
为邻域直径,sigmaColor
为空间高斯函数标准差,参数越大,临近像素将会在越远的地方越小。
sigmaSpace
灰度值相似性高斯函数标准差,参数越大,那些颜色足够相近的的颜色的影响越大。
双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。
特征:处理耗时。作用:在滤波的同时能保证一定的边缘信息。
# 边缘保留滤波器——高斯双边模糊 def image_bifilter(image_path: str): """ 高斯双边模糊 :param image_path: 图片文件 :return: 无返回值 """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) # 第三个参数是设置色彩、第四个参数是设置图像坐标 result = cv.bilateralFilter(img, 0, 50, 10) cv.imshow('result', result) cv.waitKey(0) cv.destroyAllWindows() if __name__ == '__main__': path = 'images/2.png' image_bifilter(path)
结果展示:
关于如何进行Python OpenCV图像模糊处理分析就分享到这里啦,希望上述内容能够让大家有所提升。如果想要学习更多知识,请大家多多留意小编的更新。谢谢大家关注一下亿速云网站!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。