我正在处理一个需要检测角落的图像处理项目。但是当我尝试使用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:
答案 0 :(得分:3)
你遇到的问题是corner
函数是Harris角点检测器,它找到了填充多边形的一角。
现在一条线可以用非常薄的多边形来近似,当然是在像素化时,但是这并不像你在这里注意到的那样完美。
更健壮的方法是使用类似Hough变换的方法来查找图像中的线要素。这些线将有交叉点,其中一些大约是您想要的角落。其他是伪交叉,因为霍夫变换假设线而不是线段。您需要尝试一下您接受的内容和拒绝的内容。角落是多么圆润,在你不再称它为角落之前?