OpenCV(python)一键入门--第九篇(快速边缘滤波&自定义滤波)
【摘要】 快速边缘滤波&自定义滤波
1:快速的图像边缘滤波算法
因为高斯双边,mean shift主要使用的五维向量计算
其计算量较大、运行速度慢,无法实时完成图像边缘保留滤波。
“快速的图像边缘滤波”适合实时图像边缘保留滤波。
通过等价变换到低纬度的空间
实现数据降维与快速计算
import cv2 as cv
import numpy as np
src = cv.imread("ma.jpg")
cv.imshow("input", src)
h, w = src.shape[:2]
dst = cv.edgePreservingFilter(src, sigma_s=100, sigma_r=0.4, flags=cv.RECURS_FILTER)
#dst = cv.edgePreservingFilter( src[, dst[, flags[, sigma_s[, sigma_r]]]])
#sigma_s的取值范围为0~200, sigma_r的取值范围为0~1
#当sigma_s取值不变时,sigma_r越大,图像滤波效果越明显
#当sigma_r取值不变时,窗口sigma_s越大,图像模糊效果越明显
#当sgma_r取值很小时,窗口sigma_s无论取何值,图像双边滤波效果都差
cv.imshow("dst",dst)
cv.waitKey(0)
cv.destroyAllWindows()
效果如下:
2:自定义滤波器
也就是自定义卷积核实现自定义滤波
import cv2 as cv
import numpy as np
#自定义滤波器
src = cv.imread("ma.jpg")
cv.imshow("input", src)
#以下是三种效果较好的自定义滤波器
#分别实现 均值模糊 锐化 梯度
blur_op = np.ones([5, 5], dtype=np.float32)/25.
shape_op = np.array([[0, -1, 0],
[-1, 5, -1],
[0, -1, 0]], np.float32)
grad_op = np.array([[1, 0],
[0, -1]], dtype=np.float32)
dst1 = cv.filter2D(src, -1, blur_op)
dst2 = cv.filter2D(src, -1, shape_op)
dst3 = cv.filter2D(src, cv.CV_32F, grad_op) #图像 深度 自定义卷积核
dst3 = cv.convertScaleAbs(dst3)#将结果转为字节类型
cv.imshow("blur 5x5", dst1);
cv.imshow("shape 3x3", dst2);
cv.imshow("gradient 2x2", dst3);
cv.waitKey(0)
cv.destroyAllWindows()
函数原型:
dst=cv.filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) #函数原型
ddepth | 目标图像的所需深度 |
kernel | 卷积核(或相当于相关核),单通道浮点矩阵;如果要将不同的内核应用于不同的通道,请使用拆分将图像拆分为单独的颜色平面,然后单独处理它们。 |
anchor | 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中;默认值(-1,-1)表示锚位于内核中心。 |
detal | 在将它们存储在dst中之前,将可选值添加到已过滤的像素中。类似于偏置。 |
borderType | 像素外推法,参见BorderTypes |
其中ddepth包含有关图像中存储的数据类型的信息,可以是unsigned char(CV_8U),signed char(CV_8S),unsigned short(CV_16U)……
Input depth | Output depth (ddepth) |
---|---|
CV_8U | -1/CV_16S/CV_32F/CV_64F |
CV_16U/CV_16S | -1/CV_32F/CV_64F |
CV_32F | -1/CV_32F/CV_64F |
CV_64F | -1/CV_64F |
当ddepth=-1时,表示输出图像与原图像有相同的深度。
效果如下:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)