2

有不规则的手绘线

我正在做一个需要检测角落的图像处理项目。但是当我尝试使用corner函数检测角时,它会将小位移检测为角,如图所示。角点检测错误

我尝试了从 0 到 0.24 的不同阈值,但无法获得食物结果。

imgskele = bwmorph(imgfill,'thin',Inf);
C = corner(imgspur, 'SensitivityFactor', 0.24);
figure; imshow(imgspur);
hold on;
plot(C(:,1), C(:,2),'bo','MarkerSize',10,'MarkerFaceColor','g');
hold off;

所以我正在考虑调整(重绘)这条线,使其成为连接这些点的直线

编辑1:

以下是完整尺寸的原始图像和输出图像: 在此处输入图像描述

4

1 回答 1

3

您遇到的问题是该corner功能是哈里斯角检测器,它可以找到填充多边形的角。

现在一条线可以用一个非常细的多边形来近似,当然在像素化时,但这并不完美,正如您在这里注意到的那样。

一种更稳健的方法是使用霍夫变换之类的方法来查找图像中的线特征。这些线会有交叉点,其中一些大约是您想要的拐角。其他的是假交叉点,因为霍夫变换假设线而不是线段。你需要对你接受的和拒绝的进行一些试验。在你不再称它为拐角之前,拐角可以有多圆?

于 2016-04-07T10:59:30.230 回答