OpenCV 八领域断点检测+断点缺陷修补

针对图像处理中的边缘断点问题,本文介绍了使用OpenCV进行八领域端点检测和断点缺陷修补的方法。通过计算端点周围像素的和,判断是否存在端点,并利用距离阈值判断两个端点是否需要连接。尽管实际应用效果不尽如人意,但为改进图像处理算法提供了思路。参考多个资源进行了实践和学习。
摘要由CSDN通过智能技术生成

在图像Canny边缘检测、形态学操作后还是存在边缘上的断点。
本文理论来自链接1,代码从链接2链接3修改来的。

八领域做个简单的记录。

0 (x, y + 1) 0
(x - 1, y) P(x, y) (x +1, y)
0 (x, y - 1) 0
表1
表1为四领域
(x - 1,y + 1) 0 (x + 1, y + 1)
0 P(x, y) 0
(x - 1,y - 1) 0 (x + 1,y - 1)
表2
表2为D领域

八领域 = 四领域 + D领域

P9 P2 P3
P8 p1 p4
P7 p6 P5

p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 == 1表示该点为端点.

Alt
图片来自链接1

断点修补的方法时判断两个端点的距离是否小于一个阈值,如果小于该阈值则将两个端点连接。
代码:

int main()
{
   
	Mat src = imread("lena.bmp", 0);
	imshow("src", src);
	Canny(src, src, 60, 120);
	imshow("canny", src);

	Mat dst;
	vector<Point>P;
	P = breakImage(src, dst, 10);
	imshow("dst", dst); 
	
	int nsize = P.size();
	Mat temp = Mat::zeros(dst.size
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值