图像模糊处理(七)

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

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

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

一 调用函数实现模糊

 代码

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 

原文地址:https://www.cnblogs.com/angle6-liu/p/10658550.html