导向滤波python_(三)OpenCV-Python学习—图像平滑

由于种种原因,图像中难免会存在噪声,需要对其去除。噪声可以理解为灰度值的随机变化,即拍照过程中引入的一些不想要的像素点。噪声可分为椒盐噪声,高斯噪声,加性噪声和乘性噪声等,参见:https://zhuanlan.zhihu.com/p/52889476

噪声主要通过平滑进行抑制和去除,包括基于二维离散卷积的高斯平滑,均值平滑,基于统计学的中值平滑,以及能够保持图像边缘的双边滤波,导向滤波算法等。下面介绍其具体使用

1. 二维离散卷积

理解卷积:https://www.zhihu.com/question/22298352/answer/637156871

https://www.zhihu.com/question/22298352/answer/228543288

学习图像平滑前,有必要了解下卷积的知识,看完上述连接,对于图像处理中卷积应该了解几个关键词:卷积核,锚点,步长,内积,卷积模式

卷积核(kernel):用来对图像矩阵进行平滑的矩阵,也称为过滤器(filter)

锚点:卷积核和图像矩阵重叠,进行内积运算后,锚点位置的像素点会被计算值取代。一般选取奇数卷积核,其中心点作为锚点

步长:卷积核沿着图像矩阵每次移动的长度

内积:卷积核和图像矩阵对应像素点相乘,然后相加得到一个总和,如下图所示。(不要和矩阵乘法混淆)

卷积模式:卷积有三种模式,FULL, SAME,VALID,实际使用注意区分使用的那种模式。(参考:https://zhuanlan.zhihu.com/p/62760780)

Full:全卷积,full模式的意思是,从filter和image刚相交开始做卷积,白色部分为填0,橙色部分为image, 蓝色部分为filter,filter的运动范围如图所示。

Same卷积:当filter的锚点(K)与image的边角重合时,开始做卷积运算,可见filter的运动范围比full模式小了一圈,same mode为full mode 的子集,即full mode的卷积结果包括same mode。

valid卷积:当filter全部在image里面的时候,进行卷积运算,可见filter的移动范围较same更小了,同样valid mode为same mode的子集。valid mode的卷积计算,填充边界中的像素值不会参与计算,即无效的填充边界不影响卷积,所以称为valid mode。

python的scipy包中提供了convolve2d()函数来实现卷积运算,其参数如下:

fromscipy import signal

signal.convolve2d(src,kernel,mode,boundary,fillvalue)

src: 输入的图像矩阵,只支持单通的(即二维矩阵)

kernel:卷积核

mode:卷积类型:full, same, valid

boundary:边界填充方式:fill,wrap, symm

fillvalue: 当boundary为fill时,边界填充的值,默认为0

opencv中提供了flip()函数翻转卷积核,filter2D进行same 卷积, 其参数如下:

dst =cv2.flip(src,flipCode)

src: 输入矩阵

flipCode:0表示沿着x轴翻转,1表示沿着y轴翻转,-1表示分别沿着x轴,y轴翻转

dst:输出矩阵(和src的shape一样)

cv2.filter2D(src,dst,ddepth,kernel,anchor=(-1,-1),delta=0,borderType=cv2.BORDER_DEFAULT)

src: 输入图像对象矩阵

dst:输出图像矩阵

ddepth:输出矩阵的数值类型

kernel:卷积核

anchor:卷积核锚点,默认(-1,-1)表示卷积核的中心位置

delat:卷积完后相加的常数

borderType:填充边界类型

2 图像平滑

2.1 高斯平滑

高斯平滑即采用高斯卷积核对图像矩阵进行卷积操作。高斯卷积核是一个近似服从高斯分布的矩阵,随着距离中心点的距离增加,其值变小。这样进行平滑处理时,图像矩阵中锚点处像素值权重大,边缘处像素值权重小,下为一个3*3的高斯卷积核:

opencv中提供了GaussianBlur()函数来进行高斯平滑,其对应参数如下:

dst =cv2.GaussianBlur(src,ksize,sigmaX,sigm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值