九、滤波

图像滤波

尽量保留图像细节特征的条件下对目标图像的噪声进行抑制(即去除图像中一些不重要的细节)

实现方式:模板卷积

1. 卷积算子计算是线性(线性滤波)
2. kernel本质是固定大小的矩阵数组,其中心点称为锚点
3. 卷积过程:模板从左到右,从上到下,移动,把kernel覆盖的像素和kernel对应位置的值相乘再求和(包括锚点),赋值给锚点
步骤:
	a. 将模板在图中沿一定方向逐点移动,并将模板中心与图中某个像素位置重合;
	b. 将模板上系数与模板下对应像素相乘;
	c. 将所有乘积相加;
	d. 将和(模板的输出响应)赋给图中对应模板中心位置的像素。
注意:
宽高必须是奇数(即有中心像素),宽高可以不一致(即有模糊的方向)
4. 卷积越大,图像越模糊
5. 图像外围的边缘像素没办法卷积,需要扩充图像边界(邻近插值)

边缘处理

卷积的边界:边缘像素没有和锚点重合,当kernal为3x3,则边缘有1个像素没处理,当kernal为5x5,则边缘有2个像素没处理。因此在卷积处理前增加边缘像素,卷积处理后去掉边缘像素。
copyMakeBorder(src, dst, top, bottom, left, right, borderType, color);
src:图像
dst:目标图像
top:上边缘填充长度
bottom:下边缘填充长度
left:左边缘填充长度
right:右边缘填充长度
borderType:边界填充类型(BORDER_DEFAULT 默认,BORDER_CONSTANT 指定像素值,BORDER_REPLICATE 用已知边缘像素值,BORDER_WRAP 用另一边的边缘像素值)
color:填充颜色

掩膜

void filter2D( InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType = BORDER_DEFAULT );
src:图像
ds:目标图像
ddepth:图像深度(8/32),为-1时,目标图像和原图像深度保持一致
kernel:模板
anchor:锚点位置,Point(-1,-1)时为中心像素
delta:在储存目标图像前可选的添加到像素的值
borderType:边界填充类型

均值滤波

原理:模板的权重都是1,将模板覆盖的像素求均值替换掉模板中心的像素值。
void blur( InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT );
src:图像
ds:目标图像
ksize:模板宽/高
anchor:锚点位置
borderType:边界填充类型

中值滤波

原理:将模板覆盖的像素排序找出中值(这样去掉了最小值,最大值,抑制椒盐噪声)
void medianBlur( InputArray src, OutputArray dst, int ksize );
src:图像
dst:目标图像
ksize:模板宽/高

高斯滤波

原理:以模板的中心位置为高斯函数坐标原点进行取样,越靠近模板中心权重越大
void GaussianBlur( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, int borderType = BORDER_DEFAULT );
src:图像
dst:目标图像
ksize:模板宽/高
sigmaX:高斯核函数在X方向的的标准偏差
sigmaY:高斯核函数在Y方向的的标准偏差
borderType:边界填充类型

高斯双边滤波

原理:高斯双边滤波保留了边缘,避免了图像轮廓失真。保留差异的部分,滤波值比较大的部分,值比较小的部分。均值滤波丢失了边缘像素,高斯滤波部分克服了该缺陷。
void bilateralFilter( InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaSpace, int borderType = BORDER_DEFAULT );
src:图像
dst:目标图像
d:计算半径
sigmaColor:颜色空间过滤器的sigma值
sigmaSpac:坐标空间中滤波器的sigma值
borderType:边界填充类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值