Sto lavorando, usando framework OpenCV/C++, su un programma che conta fondamentalmente oggetti ellitici che possono sovrapporsi.Come filtrare i contorni fatti di cerchi sovrapposti in OpenCV
Dopo soglia l'immagine e trovare i contorni di tutti gli oggetti
Il mio prossimo passo prevede escluso oggetto che non sono fatti di sovrapposizione ellissi (io segmento i rimanenti in seguito).
I fine-up con oggetti come questi:
In questa immagine esempio, tutti gli oggetti destra sono negative, mentre quelle in sinistra sono validi.
Il mio filtro corrente esclude l'oggetto principalmente sul terreno del loro isoperimetric quotient. Tuttavia, poiché ho oggetti con dimensioni e rumore diversi, non sono sempre soddisfatto di questo approccio.
Idealmente, mi piacerebbe avere una metrica aggiuntiva per aumentare l'efficienza del mio filtro corrente.
Poiché devo ripetere questa analisi su molti contorni, non dovrebbe essere costoso.
ho pensato approcci come:
- Qualcosa basato su un istogramma del valore dell'angolo tra tutti triplette di punti successivi del contorno?
- Adattare matematicamente una "poly-ellipse" (non avrei idea di come farlo)?
- Abbinare catene freeman?
Ma sono convinto di aver perso qualcosa di ovvio che è più efficiente e meno disordinato. Avete suggerimenti, Grazie :),
EDIT: Come Regis giustamente suggerito, qualsiasi forma potrebbe infatti essere fatto di un numero sufficiente di cerchi. Pertanto, al fine di rendere il mio problema risolvibile, vorrei aggiungere le seguenti ipotesi:
- Non più di 16 ellissi/oggetto.
- Le ellissi non possono essere piatto: asse maggiore/asse minore < 3.
- Da un oggetto, l'area della grande ellisse sull'area del più piccolo deve essere inferiore a 10.
Rispetto a te, proverò a capirlo. Hai qualche link con cui potrei iniziare? –