1

J'ai un certain nombre d'images polygonales comme un hexagone, un pentagone, un quadrilatère, etc. J'ai besoin de généraliser la technique de détection pour détecter le nombre de coordonnées de DROIT. Aucune coordonnée supplémentaire ne devrait être générée.Détecter un nombre correct de coordonnées CORNER à partir d'une image Polygone dans MATLAB

pour par exemple: - le code doit détecter seulement 4 pour un quadrilatère, 3 pour triangle, 5 pour pentagone et ainsi de suite ..

I utilisé détection d'angle HARRIS pour détecter les coins droits en spécifiant le numéro de la valeur des coins mais je ne peux pas utiliser le même code pour une image avec un nombre différent d'arêtes.

Raison de l'utilisation du même code est que je suis en train de traiter l'image en bloc -> Détecter les coins et les imprimer ... je ne peux pas changer le code pour chaque image.

Images d'exemple: -

Octagon:

enter image description here

Pentagone:

enter image description here

Répondre

4

Il est une fonction appelée corner qui fonctionne très bien étant donné les bons paramètres d'entrée.

Par exemple la fixation d'un QualityLevel approprié donne des résultats précis:

clear 
clc 

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

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

Les coordonnées ar stockées dans Ca comme N x 2 matrice. Ici 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 

Sorties:

enter image description here

et

enter image description here

Yay!