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

Detect correct number of CORNER coordinates from a Polygon image in MATLAB

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

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

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

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

示例图片:-

八边形:

五角大楼:

有一个名为 corner 的函数在输入参数正确的情况下运行良好。

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

clear
clc

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

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

坐标作为 N x 2 矩阵存储在 Ca 中。这里 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

输出:

耶!