十三、边缘提取

图像边缘:找到像素值差异比较大的地方
1. 对图像进行一阶求导(即Sobel),最大变化处的绝对值最大值
2. 对图像进行二阶求导(即laplance),最大变化处的值为零

算子

1. Sobel算子
原理:权重的差异扩大了差异(当kernal覆盖的区域的像素值一样时,kernel覆盖的像素卷积和为0(即锚点的值为0);当差异很小时,卷积和很小;当差异很大时,卷积和绝对值很大。)
	a. X 方向梯度(3行3列:[-1,0,1, -2,0,2, -1,0,1]),由于kernel的中间一列为0,竖直方向的差异没有影响
	Mat kernel_x = (Mat_<int>(3, 3) << -1, 0, 1, -2,0,2,-1,0,1);
	b. Y 方向梯度(3行3列: [-1,-2,-1, 0,0,0, 1,2,1])
	Mat kernel_y = (Mat_<int>(3, 3) << -1, -2, -1, 0,0,0, 1,2,1);
	c. 获取边缘
	X方向梯度和Y方向梯度求平方,再开方(G=sqrt(x*x+y*y),可用近似值:G=|x|+|y|加快运算速度)
	d. 过滤,梯度大于阈值的保留
2. Scharr算子([3,0,3, -10 ,0,10, -3,0,3])
Sobel的改进,更大的权重产生更大的差异
3. 拉普拉斯算子(3行3列: [0,-1,0, -1,4,-1, 0,-1,0])
原理:比较锚点和周围点
Mat kernel_y = (Mat_<int>(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);
4. robert算子 [1,0,0,-1] ,[0,1,-1,0] 
5. canny边缘检测
原理:
	a. 高斯模糊
	b. 灰度图像
	c. 计算梯度
	d. 非最大信号抑制
	e. 高低阈值输出图像(T1, T2为阈值,凡是高于T2的都保留,凡是小于T1都丢弃,从高于T2的像素出发,凡是大于T1而且相互连接的,都保留。最终得到一个输出二值图像,推荐的高低阈值比值为 T2: T1 = 3:1/2:1其中T2为高阈值,T1为低阈值)

Sobel

void Sobel( InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT );
src:图像
dst:目标图像
ddepth:目标图像深度
dx:x方向差分阶数(为1时表示获取x方向梯度)
dy:y方向差分阶数(为1时表示获取y方向梯度)
ksize:算子大小
scale:缩放
delta:可选增量(偏移量)
borderType:边界模式

Scharr

void Scharr( InputArray src, OutputArray dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT );
src:图像
dst:目标图像
ddepth:目标图像深度
dx:x方向差分阶数(为1时表示获取x方向梯度)
dy:y方向差分阶数(为1时表示获取y方向梯度)
ksize:算子大小
scale:缩放
delta:可选增量(偏移量)
borderType:边界模式

Laplacian

void Laplacian( InputArray src, OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borderType = BORDER_DEFAULT );
src:图像
dst:目标图像
ddepth:目标图像深度
ksize:算子大小
scale:缩放
delta:可选增量(偏移量)
borderType:边界模式

Canny

void Canny( InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize = 3, bool gradient = false );
image:图像
edges:目标图像
threshold1:低阈值
threshold2:高阈值
apertureSize:算子大小
L2gradient:是否归一化

元素值转为uint8

void convertScaleAbs(InputArray src, OutputArray dst, double alpha = 1, double beta = 0);
src:图像
dst:目标图像
alpha:比例缩放
beta:可选增量(偏移量)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值