• 图像模糊处理(七)


      卷积:对于某一位置的像素,通过算法把他附近的所有的像素点的值联合起来,重新设置这个像素的大小。

      图像模糊处理的其他的方法:均值,中值,就是取周围所有的像素的均值,中值来设置这个像素的大小。

      (关于边界问题:补零,边界赋值,块赋值,镜像复制等方法)

    一 调用函数实现模糊

     代码

    import cv2 as cv
    
    def mohu_image(src):
        #均值模糊
        src2=cv.blur(src,(5,5))
        cv.imshow('junzhimohu',src2)
    
        # 中值模糊
        src2=cv.medianBlur(src,5)
        cv.imshow('mediamohu',src2)
    
        # 高斯模糊
        src2 = cv.GaussianBlur(src, (5,5),2)
        cv.imshow('gaosimohu', src2)
    
        # 双边滤波
        src2=cv.bilateralFilter(src,5,5,2)
        cv.imshow('shuangbian',src2)
    
    src=cv.imread('./girl.jpg')
    cv.imshow('before',src)
    mohu_image(src)
    cv.waitKey(0)
    cv.destroyAllWindows()

    效果展示

     

    1 均值模糊函数blur()

    blur(src,ksize,dst=None, anchor=None, borderType=None)

    函数有5个参数,但最后三个均为none,所以也就2个参数

    • src:要处理的图像原图
    • ksize:周围关联的像素的范围,代码中的(5,5),就是计算这些范围内的均值来确定中心位置的大小.

    2.中值模糊函数medianBlur()

    medianBlur(src, ksize, dst=None)

     

       ksize与blur()函数不同,不是矩阵,而是一个数字,例如为5,就表示了5*5的方阵

    3.高斯平滑函数GaussianBlur()

    GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)
    • src:要处理的图像原图
    • ksize:周围关联的像素的范围,代码中的(5,5),就是计算这些范围内的均值来确定中心位置的大小.
    • sigmaX:标准差

    4.双边滤波函数bilateralFilter()

    bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
    • d:邻域直径
    • sigmaColor:颜色标准差
    • sigmaSpace:空间标准差

    二 自定义模糊

    代码

    import cv2 as cv
    import numpy as np
    
    # 自定义模糊
    def zi_image(src):
        #自定义模糊
        kernel=np.ones((2,2),np.uint8)
        src2=cv.filter2D(src,-1,kernel)
        cv.imshow('define_mohu',src2)
        #自定义锐化
        kernel2= np.array([[0,-1,0],[-1,5,-1],[0,-1,0]], np.float32)
        src2=cv.filter2D(src,-1,kernel2)
        cv.imshow('define_yuehua',src2)
    
    src=cv.imread('./girl.jpg')
    cv.imshow('before',src)
    zi_image(src)
    cv.waitKey(0)
    cv.destroyAllWindows()

     

     

    cv.Filter2D对图像做卷积

    cvFilter2D(  const CvArr* src, #输入图像
                 CvArr* ddepth,  #深度,输入值为-1时,目标图像和原图像深度保持一致
                 const CvMat* kernel, #卷积核
                 CvPoint anchor=cvPoint(-1,-1) ); #核的锚点
    • kernel 

      卷积核,单通道浮点矩阵.如果想要应用不同的核于不同的通道,先用cv.split函数函数分解图像到单个色彩通道上,然后单独处理.

      #修改kernel矩阵可以实现不同的模糊.

    • anchor

      核德锚点表示一个被滤波的点在核内的位置.锚点应该处于核内部.默认(-1,-1)表示锚点的中心.

    卷积模板及程序实例

    http://blog.sina.com.cn/s/blog_6ac784290101e47s.html 

  • 相关阅读:
    【Python入门自学笔记专辑】——面向对象编程-实例方法11.3.6
    最简单的轮播广告(原生JS)
    (转)JavaScript一:为什么学习JavaScript?
    JAVASCRIPT中经典面试题
    使用AngularJS实现简单:全选和取消全选功能
    canvas绘制经典折线图(一)
    前端总结
    PHP如何连接MySQL数据库
    PHP预定义变量
    PHP语法
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/10658550.html
Copyright © 2020-2023  润新知