Ecco un semplice processo:
- Assegna misurazioni di trama a ciascuna regione dell'immagine.
- Utilizzare un algoritmo di etichettatura / connettività di regione (o algoritmo di espansione di regione) per unire regioni adiacenti con la stessa misura di trama.
- Implementa un semplice algoritmo che segue i bordi per tracciare il contorno di ogni regione.
Le misure della trama di Law sono una tecnica più vecchia ma ancora utile per determinare la trama in un'immagine e possono essere sufficienti per distinguere la trama A dalla trama B in tutta l'immagine. Vedi la sezione "Misure energetiche per la struttura delle leggi" nell'articolo di Wikipedia:
http://en.wikipedia.org/wiki/Image_texture
Come primo passo, calcola tutte le misure di trama e determina quale misura particolare (es. Bordo o spot) ti consente di distinguere una trama dall'altra più facilmente. (Se pubblichi alcune immagini, potrei aiutarti a identificare un indicatore di trama.)
Se hai solo due trame, A e B, puoi trattarle come primo piano e sfondo e funzionerà un algoritmo di etichettatura della regione standard. Per facilitare la visualizzazione di ciò che sta accadendo nell'elaborazione, è possibile generare una nuova immagine assegnando i tex A (elementi texture, piccoli pezzi di texture) al colore bianco e B tex al colore nero. Gli algoritmi di etichettatura e / o di contorno della regione troverebbero quindi le regioni bianche e nere collegate. La funzione findContours () in OpenCV funzionerà bene.
http://en.wikipedia.org/wiki/Connected-component_labeling
Lo stesso articolo di Wikipedia include sia l'algoritmo multipass tradizionale sia un algoritmo single-pass. Non ho implementato l'algoritmo single-pass qui descritto, ma ho lavorato con l'algoritmo single-pass descritto nel documento "Un algoritmo di etichettatura dei componenti usando la tecnica di tracciamento dei contorni" di Chen e Chang. L'articolo di Chen e Chang descrive anche un algoritmo standard che segue i contorni che può essere implementato rapidamente.
Se hai più di due trame, potresti usare uno spartiacque o un algoritmo di spostamento medio per raggruppare le regioni insieme dopo aver rimappato le trame ai colori. Sebbene questo rimappatura dalla trama al colore non sia necessario, semplifica il debug e la comprensione del processo.