站点图标 AI技术聚合

Opencv之图像滤波:1.图像卷积(cv2.filter2D)

        写这些博客主要是记录自己学习Opencv的过程,也希望能帮助到大家。

        

        在OpenCV中,允许用户自定义卷积核实现卷积操作,使用自定义卷积核实现卷积操作的函数是cv2.filter2D(),其语法格式为:

        dst=cv2.filter2D(src,ddepth,kernel,anchor,delta,borderType)

         式中:

         ● dst是返回值,表示进行方框滤波后得到的处理结果。

         ● src 是需要处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F或者CV_64F中的一 种。

        ● ddepth是处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度。

        ● kernel是卷积核,是一个单通道的数组。如果想在处理彩色图像时,让每个通道使用不同的核,则必须将彩色图像分解后使用不同的核完成操作。

        ● anchor 是锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心点位 置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。

        ● delta 是修正值,它是可选项。如果该值存在,会在基础滤波的结果上加上该值作 为最终的滤波处理结果。

        ● borderType是边界样式,该值决定了以何种情况处理边界,通常使用默认值即可。

        在一般情况下,使用cv.filter2D()时,对于参数锚点anchor,修正值delta,边界样式borderType,直接采用其默认值即可。

        因此,cv.filter2D()的常用形式为:

        dst=cv2.filter2D(src,ddepth,kernel)

        例:

        

import cv2  as cv
import numpy as np

def cv_show(name, img):
    cv.imshow(name, img)
    cv.waitKey(0)
    cv.destroyAllWindows()


# 卷积操作
src = np.array([[1,2,3,4,5],
                [6,7,8,9,10],
                [11,12,13,14,15],
                [16,17,18,19,20],
                [21,22,23,24,25]],dtype='float32')
kernel1 = np.ones((3,3), dtype='float32')/9
result = cv.filter2D(src, -1,kernel=kernel1)

print('卷积前矩阵为:\n {}'.format(src))
print('卷积后矩阵为:\n {}'.format(result))


# 与图像做卷积操作
img = cv.imread('D:\\dlam.jpg')
if img is None:
    print('Failed to read the imagine')
kernel2 = np.ones((7,7), dtype='float32')/49
result2 = cv.filter2D(img, -1,kernel=kernel2)

cv_show('哆啦A梦',img)
cv_show('reslut', result2)

结果如下:

卷积前矩阵为:
 [[ 1.  2.  3.  4.  5.]
 [ 6.  7.  8.  9. 10.]
 [11. 12. 13. 14. 15.]
 [16. 17. 18. 19. 20.]
 [21. 22. 23. 24. 25.]]
卷积后矩阵为:
 [[ 5.         5.3333335  6.3333335  7.333333   7.666667 ]
 [ 6.666667   7.         8.         9.         9.333333 ]
 [11.666668  12.        13.        13.999999  14.333334 ]
 [16.666666  17.        17.999998  19.        19.333332 ]
 [18.333334  18.666666  19.666668  20.666668  21.       ]]

可以明显的看出图像变模糊了

文章出处登录后可见!

已经登录?立即刷新
退出移动版