共计 1784 个字符,预计需要花费 5 分钟才能阅读完成。
本篇内容介绍了“Python OpenCV 边缘滤波保留怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
函数原型介绍高斯双边滤波
双边滤波函数原型如下:
dst = cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace[, dst[, borderType]])
参数说明:
src:输入图像;
d:过滤过程中每个像素邻域的直径范围。如果不是正数,则函数会从参数 sigmaSpace 计算该值;
sigmaColor:颜色空间过滤器的 sigma 值,参数的值越大,表明该像素邻域内有越宽广的颜色会被混合到一起,产生较大的半等色区域;
sigmaSpace:坐标空间中滤波器的 sigma 值,如果该值较大,则意味着越远的像素将相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当 d 0 时,d 指定了邻域大小且与 sigmaSpace 无关,否则 d 正比于 sigmaSpace。
dst:和源图象相同大小、相同格式的输出图象;
一般将 sigmaSpace 设置大一些,sigmaColor 设置小一些,最终呈现的效果较好。
优缺点:
双边滤波,可很好的保存图像边缘细节,并且过滤掉低频分量的噪音,但是双边滤波效率不是很高,花费时间比其他滤波器较长。
测试代码如下,先掌握函数基本使用再说。
import cv2 as cvimport numpy as np# 双边滤波 def bilater(image):# 第三个参数大一点(color),第四个小一点(space)dst = cv.bilateralFilter(image, 0, 100, 15)cv.namedWindow(dst)cv.imshow(dst , dst)src = cv.imread(./123.jpg)cv.namedWindow(src)cv.imshow(src , src)bilater(src)cv.waitKey(0)cv.destroyAllWindows()
均值迁移滤波
均值迁移算法是一种通用的聚类算法,它的基本原理是:
对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为中心继续执行上述迭代过程,直至最终收敛。(没看太明白,大概了解一下即可)
函数原型如下:
dst = cv2.pyrMeanShiftFiltering(src, sp, sr[, dst[, maxLevel[, termcrit]]])
参数说明:
src:输入图像,8 位 3 通道图像;
sp:迁移物理空间半径大小;
sr:迁移色彩空间半径大小;
dst:可选参数,和源图象相同大小、相同格式的输出图象;
maxLevel:可选参数,金字塔的最大层数;
termcrit:可选参数,迁移迭代终止条件,可以设置为迭代次数满足终止,迭代目标与中心点偏差满足终止,或者两者的结合。
所有参数中,sp 与 sr 必选,二者设置的值越大,对图像色彩的平滑效果越明显,同时函数耗时越多。
测试代码如下:
import cv2 as cvimport numpy as np# 双边滤波 def bilater(image):# 第三个参数大一点(color),第四个小一点(space)dst = cv.bilateralFilter(image, 0, 100, 15)cv.namedWindow(dst)cv.imshow(dst , dst)# 均值迁移滤波 def pyrmeanshift(src):dst = cv.pyrMeanShiftFiltering(src, 10, 50)cv.imshow(dst , dst)src = cv.imread(./123.jpg)cv.namedWindow(src)cv.imshow(src , src)pyrmeanshift(src)cv.waitKey(0)cv.destroyAllWindows()
“Python OpenCV 边缘滤波保留怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!