Rilevamento di cerchi (ellissi) nella nuvola di punti 2D


14

Dato un insieme di punti (2D) vale a dire, nuvola di punti (PC), la questione è di una robust, accuratee computing-friendlymetodo per trovare cerchi (o ellissi in versione avanzata).

L'idea intuitiva è quella di utilizzare la ricerca della forza bruta su tutti i punti possibili (come al centro) {infinito!} E sui raggi (di nuovo infinito!). Questo è estremamente lento e inefficiente.

Come mostrato di seguito, ogni cerchio montato verrà classificato in base al numero di punti ( nn) posizionati sulla circonferenza del cerchio in una distanza inferiore a una soglia ( t). Quindi c'è derrda presentare una distanza media.

In forma avanzata sono interessanti le ellissi.

Qualche idea, brain-storming, esperienze, commenti? inserisci qui la descrizione dell'immagine


Buona domanda. Quale programma hai usato per generare quel diagramma?
Jason R,

@JasonR Come sempre, Python + MatPlotLib .
Sviluppatore

Risposte:


14

La migliore idea che cerca esattamente di risolvere questo problema è Hough Transform .

Fondamentalmente, il segnale nello spazio hough sarà r, x, ycoordinato. Qui r sta per raggio e x,ysta per centro. Ogni punto può appartenere a uno o più cerchi. Quindi nell'aereo di Hough attraversa tutti i possibili cerchi in cui questo punto potrebbe appartenere e fai solo un +1. Questa non è una ricerca, solo una raccolta.

Ora, se esiste un cerchio reale, molti punti verranno aggiunti e il punteggio di tale r, x, ysarà molto più alto di tutti gli altri. Selezionando un punto del genere, potrai scegliere i cerchi giusti.

Ecco una carta classica nel lontano 1971 (prima che io nascessi!) Che ha inventato questo concetto.

  1. UTILIZZO DELLA TRASFORMAZIONE HOUGH PER RILEVARE LINEE E CURVE IN FOTO Di: Richard O. Duda, rapporto tecnico di Peter E. Hart Tech Intelligent Intelligent Cente, aprile 1971.

Per Tutorial suggerirei i riferimenti seguenti:

  1. HIPR2 -Link
  2. Amos storkey
  3. Riferimento IDL

In particolare per il rilevamento del cerchio, è possibile fare riferimento a questo di seguito:

  1. AI Shack
  2. Rapporto tecnico dal Chicago Univ.
  3. Dispense del Rochester Institute

Questi metodi sono molto efficienti e molto intuitivi.


1
Posso garantire gli articoli AI Shack, aiutano davvero a capire la matematica più rigorosa che leggerai altrove.
Ivo Flipse,

1
Buona risposta. Conosco già Hough Transform (HT). Quello che ho usato era per il rilevamento di linee. C'è stato un po 'di difficoltà nel determinare i segmenti di linea. È stato raccomandato quindi di utilizzare Probabilistic Hough Transform (PHT). Non ho avuto la chiara idea dell'estensione. Ho pensato che potrebbe essere così complesso per i circoli o apparire altre difficoltà. Per quanto riguarda le mie esperienze, HT è buono ma non perfetto. È anche mia preoccupazione come estendere HT al 3D. Proverò a rivedere i link forniti. La tua risposta è abbastanza buona per essere candidato come risposta.
Sviluppatore

AI Shack e Tech Report dai link Chicaco sono morti
Mehdi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.