open cv常见算子与自定义线性滤波

卷积和卷积如何工作,这个是知道的,卷积的作用就是模糊图像
提取边缘,锐化图像。常见的卷积核(算子)有robert算子,
sobel算子,拉普拉斯算子,前两个算子是分x方向和y方向的,
而拉普拉斯算子是提取整体图像的边缘。

提取边缘时,sobel比robert算子效果好,自定义线性滤波器用的API
是filter2D(src,dst,图像深度8或32,卷积核模板,锚点)

卷积概念

●卷积是图像处理中一个操作 ,是Kermel(卷积核)在图像的每个像素
上的操作。

●Kermel(卷积核)本质 上是一个固定大小的巨阵数组,其中心点称为锚
点(anchorpoint)

卷积如何工作

●把kernel卷积核放到像素数组之 上,求锚点周围覆盖的像索乘
积之和(包括锚点) ,用来替换锚点覆盖下像素点值
称为卷积处理

从左到右 从上到下

8 6 6
2 8 6
2 2 8
处理之前的像素值

设置的卷积和大小为

1 1 1
1 1 1
1 1 1

根据公式计算 sum=8x1+6x1+6x1+2x1+8x1+6x1+2x1+2x1+8x1
锚点 8 的替换值为 sum/(m*n) 卷积乘积和除以数组的大(宽高) =48/9=5.3;


卷积也称为 算子

常见算子

Robert算子(2x2) 梯度算子

X方向           Y方向   

+1 0 0 +1
0 -1 -1 0

Sobel算子(3x3)

水平方向(左右差异化) 上下方向

-1 0 1 -1 -2 -1
-2 0 2 0 0 0
-1 0 1 1 2 1


拉普拉斯算子(3x3)

拉普拉斯算子得到的是整个的算子 全局算子 不区分XY方向
0 -1 0
-1 4 -1
0 -1 0

用来寻找轮廓 寻找图像的边缘


自定义卷积模糊(线性滤波)

filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta);

Matst, 输入图像
Matdst,模糊图像
int depth, 图像深度32/8
Matkernel, 卷积核模板
Point anchor, 锚点位置
double delta 计算出来的像素delta

其中kernel是可以自定义的卷积核

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <math.h>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值