简体   繁体   中英

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

I have a number of polygon images like a hexagon, a pentagon, any quadrilateral etc.. i need to generalize the detection technique to detect the RIGHT number of Corner coordinates.. no extra coordinates should be generated.

for eg:- the code should detect only 4 for a quadrilateral, 3 for triangle, 5 for pentagon and so on..

I used HARRIS corner detection to detect right corners by specifying the number of corners value but i cant use the same code for an image with different number of edges.

Reason for using the same code is i am trying to bulk process image -> Detect corners and print them... i cant change the code for each image.

Sample Images:-

Octagon:

在此处输入图片说明

Pentagon:

在此处输入图片说明

There is a function called corner that works very well given the right input parameters.

For instance setting an appropriate QualityLevel give accurate results:

clear
clc

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

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

The coordinates ar stored in Ca as a N x 2 matrix. Here 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

Outputs:

在此处输入图片说明

and

在此处输入图片说明

Yay!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM