5

sceneCome trovare questo tipo di geometria nelle immagini

Supponiamo che io sono l'immagine di una scena come illustrato sopra. Una sorta di polo con un blob su di esso accanto a oggetti possibilmente simili senza blob. Come posso trovare il blob contrassegnato dal cerchio rosso (un'immagine binaria che indica quali pixel appartengono al blob).

Si noti che il polo insieme al blob può essere ruotato arbitrariamente e che anche le dimensioni possono variare.

+0

se quelle due sono le uniche figure che possono apparire nell'immagine, allora è una ricerca attraverso l'array di pixel per i bordi curvi. Hai abbastanza da calcolare il centro del cerchio nel momento in cui hai trovato un confine simile. – ashley

+0

e come si potrebbe raggiungere questo? – Leo

risposta

1

Puoi provare a farlo in meno di 4 passaggi?

  1. rilevamento Circle come: writing robust (color and size invariant) circle detection with opencv (based on Hough transform or other features)
  2. Linea di rilevamento, come: Finding location of rectangles in an image with OpenCV
  3. Identificare posizione rettangolo combinando linee vicine (per ogni segmento di linea si ha la posizione del punto di inizio e di fine, si sa anche la direzione di ogni segmento di linea. In modo che tu possa capire se due segmenti di linea di collegamento (i cui estremi sono vicini) sono ortogonali. Il tuo obiettivo è trovare 3 segmenti per ciascun rettangolo.)

  4. Controllare la posizione relativa di ciascun cerchio e rettangolo per vedere se una coppia può formare la forma knob.

1

Un approccio potrebbe essere l'utilizzo di Viola-Jones object detection framework.

Sebbene il framework sia utilizzato principalmente per il rilevamento di volti, in realtà è progettato per oggetti generici che si alimentano all'algoritmo.


L'algoritmo di idea di base è quello di alimentare i campioni di "oggetto buono" (quello che stai cercando) e "oggetti cattivi" ad un algoritmo di apprendimento automatico - che genera modelli dalle immagini come le sue caratteristiche.

Durante la classificazione - utilizzando una finestra scorrevole, l'algoritmo cerca una "corrispondenza" all'oggetto (il classificatore ha restituito una risposta positiva).


L'algoritmo utilizza supervised learning e quindi richiede una serie di esempi etichettato (quelli positivi e negativi)

+0

Grazie, ma preferirei una soluzione più semplice. Questo è un po 'intensivo dal punto di vista computazionale (nonostante sia in tempo reale). Inoltre, ho davvero un buon priore di quello che sembra il "blob", quindi preparare un set etichettato sembra un po 'inutile. Speravo di trovare qualcosa come una tecnica di corrispondenza geometrica iterativa. – Leo

0

Sono sicuro che ci sia qualche algoritmo boundary-map di elaborazione delle immagini per fare questo.

Altrimenti, ecco una soluzione rapida: scegliere un pixel al centro della "zona non scoperta" , che inizialmente è l'intera immagine. traccia le linee orizzontale e verticale in 4 direzioni ciascuna che termina ai bordi della zona e trova il valore da 0 a 1 o viceversa.

Tracciare ciascun valore di tale interruttore e completare il contorno di ogni figura (Passaggio A). Fai lo stesso per le zone che ancora non sono state scoperte: inizia da qualche centro e scava attraverso le linee che collegano il centro al bordo dell'immagine o ad un pixel al confine di una zona conosciuta.

Nello Step-A, è anche possibile verificare se il contorno tracciato è una linea o una curva. Ogni volta che si tratta di una curva, sono necessari solo due punti: punti ad una certa distanza l'uno dall'altro per l'accuratezza del calcolo.

Le linee perpendicolari a questi due punti di tangenza si intersecano al centro del cerchio rosso nella figura.

0

È possibile segmentare l'immagine. Quindi usa solo i pixel nei segmenti per contribuire a una trasformazione Hough per trovare i cerchi. Quindi ci saranno solo segmenti con cerchi al loro interno. È possibile utilizzare una trasformazione di hough modificata per trovare i rettangoli. La combinazione "rettangolo" e quadrato "migliore" sarà la tua partita. Questo è molto intuitivo dal punto di vista computazionale.

Un altro approccio, se si dispone già di queste immagini binarie, è quello di trasformarsi in un campione (ad esempio 256 bin) prendendo la distanza dal centroide rispetto alla distanza percorsa lungo il bordo.Se si inizia nel punto più lontano dal centroide si ha un paravento robusto abbastanza rotazionale.

Problemi correlati