Segmentazione di materiale semitrasparente, ad es. Vetro


11

Sono totalmente bloccato su un problema relativo alla segmentazione di oggetti vetrosi. Ho bisogno di ottenere l'oggetto il più preciso possibile. I miei approcci erano diversi. All'inizio ho provato a rimuovere lo sfondo, in modo che rimanessero solo alcuni contorni nitidi. Ma questo funziona solo per oggetti che hanno spigoli / gradienti taglienti. Altrimenti viene rimosso anche l'oggetto stesso. Ho pubblicato due immagini diverse.

immagine 1 immagine 2

Ho cercato di rimuovere lo sfondo tramite operazioni morfologiche, come la dilatazione in scala di grigi e un divario su di esso. ma non ha aiutato molto. dopo di ciò, ho provato un k-mean con k = 3 per separare lo sfondo modificato dai valori grigio e nero del vetro. In alcuni casi ciò non ha avuto successo, ma non è complessivamente / in media. Ho anche cercato di effettuare un rilevamento intelligente del bordo con un filtro blured complessivo, ma che porta a risultati più deboli sotto forma di contorni aperti, molto rumore, ecc. Pp.

Canny con risultati soglia automatici:

testimg = imread('http://i.imgur.com/huQVt.png');  
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);

Lo stesso vale per la seconda immagine.

uscita intelligente n. 1 uscita intelligente n. 2

Come puoi vedere, c'è molto rumore all'interno e all'esterno e bordi raddoppiati dal bordo del vetro. Anche ci sono spazi vuoti nei bordi.

Quindi, ho bisogno dei tuoi consigli per ottenere un approccio generale per affrontare questo problema dei materiali semitrasparenti, non solo per queste due immagini.

1) Altre idee per rimuovere lo sfondo senza danneggiare l'oggetto?

2) Altri metodi di segmentazione per separare l'oggetto dallo sfondo?

Se è possibile, quindi con Matlab, IPT o suggerimenti statistici sulla casella degli strumenti. Anche altri suggerimenti sono i benvenuti!

Grazie per la risposta in anticipo. Cordiali saluti


Lo sfondo è sempre identico?
endolith

quasi, differisce un po 'in più scuro / più luminoso.
mchlfchr,

1
Sottraendo ben lo sfondo da ogni immagine sarebbe un inizio, il che rende più uniforme: imgur.com/9WhcB
endolith

1
Cosa intendi? Hai una foto dello sfondo senza vetro?
endolith

1
@DennisJaheruddin So che un bordo NON è una linea nera. Un fronte è definito come un cambiamento di intensità / frequenza, il che significa che i suoi valori di grigio cambiano più o meno rapidamente. Tuttavia, come si può vedere dal contesto, il metodo Canny non sarà l'arma preferita qui, a causa dello sfondo otterrò molto rumore (con Canny). E non riesco a prevedere la soglia / sigma automatici. Quindi ho bisogno di un metodo che elimini lo sfondo, ma non l'oggetto stesso.
mchlfchr,

Risposte:


3

Perché non usare semplicemente un filer high pass 2D FFT (guassiano)?

L'ho fatto molto velocemente usando MATLAB

Shard n. 1 con FFT passa alto:

http://i47.tinypic.com/rbjxnd.jpg

La stessa cosa si fa al n. 2.

Shard n. 2 utilizzando FFT passa alto:

http://i45.tinypic.com/209kms0.jpg

Come puoi vedere, lo sfondo e l'area del vetro vengono cancellati e vengono tracciati solo i bordi. Non ci ho passato molto tempo, ma è possibile limitare l'output filtrato HP per avere bordi più nitidi o spingere l'HP tagliato più in alto.

Sono più i risultati che stai cercando di ottenere?


1

Questo non è un tentativo di rispondere all'intera domanda, ma ho un'idea di "pulizia dell'immagine" .

Hai detto di aver già tentato operazioni morfologiche , e questa è una variante dell'idea, si spera un aggiornamento.

Questo articolo: A. Vichik, R. Keshet, D. Malah: la morfologia auto-doppia su semilattici e applicazioni sugli alberi propone un modo per migliorare gli operatori morfologici classici in modo da aggiungere loro proprietà più desiderabili.

L'articolo suggerisce di scegliere una rappresentazione gerarchica di un'immagine secondo le proprietà desiderabili, e quindi propone un metodo per definire operatori come erosione, dilatazione, apertura, cappello a cilindro su quella rappresentazione . Con le loro stesse parole:

Abbiamo presentato un quadro generale per la produzione di nuovi operatori morfologici (...)

Ho spiegato queste strutture gerarchiche a forma di albero nella seconda parte di questa risposta ( approcci semantici ) , a cui è possibile aggiungere Extrema-Watershed Tree menzionato nell'articolo che ho collegato qui (e ancora) .

È un aggiornamento a (citando gli autori) "morfologia matematica in scala di grigi tradizionale" perché le operazioni mantengono le proprietà desiderabili delle rappresentazioni . Ad esempio, se la tua rappresentazione gerarchica è auto-duplice, i tuoi operatori saranno davvero auto-dual (ad es. Confronta con quasi -stesso-doppio apertura-chiusura per ricostruzione che non è realmente auto-doppio).

L'articolo collegato presenta anche alcuni risultati per filtrare il rumore : puoi confrontare i loro risultati dall'articolo (e dalla Tesi a cui fa riferimento l'articolo) con ciò di cui hai bisogno (almeno visivamente) e vedere se funzionerebbe per te prima di iniziare codificare.

Quindi, mentre la scelta dell'albero della rappresentazione più semplice (max- / min-) produrrà esattamente le operazioni classiche, la scelta di un albero dual-dual che meglio si adatta alle tue esigenze potrebbe darti un approccio abbastanza robusto.

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.