在MATLAB中从多边形图像中检测正确的CORNER坐标数

时间:2015-03-18 13:16:12

标签: matlab image-processing polygon edge-detection corner-detection

我有许多多边形图像,如六边形,五边形,任何四边形等。我需要概括检测技术以检测角坐标的RIGHT数。不应生成额外的坐标。

例如: - 代码应该只检测4个四边形,3个检测三角形,5个检测五边形等等。

我使用HARRIS角点检测通过指定角点数来检测右角,但我不能对具有不同边数的图像使用相同的代码。

使用相同代码的原因是我正在尝试批量处理图像 - >检测角落并打印它们......我无法更改每个图像的代码。

示例图片: -

八角形:

enter image description here

五角大楼:

enter image description here

1 个答案:

答案 0 :(得分:4)

在给定正确的输入参数的情况下,有一个名为corner的函数可以很好地工作。

例如,设置适当的QualityLevel会给出准确的结果:

clear
clc

A = imread('Octagon.jpg');
A_gray = rgb2gray(A);

figure;
Ca = corner(A_gray,'QualityLevel',.2)

坐标ar存储在Ca中作为N x 2矩阵。这里N = 8。

imshow(A)

hold on

scatter(Ca(:,1),Ca(:,2),80,'filled','k')
hold off

B = imread('Pentagon.jpg');
B_gray = rgb2gray(B);

figure;
Cb = corner(B_gray,'QualityLevel',.2)

imshow(B)

hold on

scatter(Cb(:,1),Cb(:,2),80,'filled','k')
hold off

输出:

enter image description here

enter image description here

耶!