Segmentare le pillole dallo sfondo


9

Di recente ho iniziato con l'elaborazione delle immagini e ho seguito un corso correlato alla scuola di specializzazione. Ma ho già un progetto da fare senza troppe informazioni sull'argomento, tuttavia ho fatto progressi costanti. Sto cercando di segmentare le pillole dai rispettivi sfondi. Per le immagini con sfondi contrastanti, sono stato in grado di segmentare le pillole usando il metodo di Otsu. Per quanto riguarda le immagini con sfondi simili, il metodo di Otsu non funziona del tutto. Ho letto alcuni articoli per quanto riguarda la segmentazione, ma la maggior parte degli articoli che ho letto utilizza un valore di soglia manuale in base al tipo di immagine. È possibile rilevare il valore di soglia corretto e mettere automaticamente in soglia un'immagine e utilizzare tecniche come la coltivazione di semi o il clustering per segmentare l'immagine?

Lo spazio colore che sto usando è L a b *, quindi ti sarei grato se potessi consigliare lo spazio colore appropriato che dovrei usare anch'io.

Le immagini in questione:

originale 1

inserisci qui la descrizione dell'immagine

risultato 1

inserisci qui la descrizione dell'immagine

originale 2

inserisci qui la descrizione dell'immagine

risultato 2

inserisci qui la descrizione dell'immagine

originale 3

inserisci qui la descrizione dell'immagine

risultato 3

inserisci qui la descrizione dell'immagine


7
Potresti caricare un'immagine per favore? Che dire della soglia adattativa?
Quentin Geissmann,

3
Che dire di livelli di set di livelli e contorni attivi? Puoi segmentare le pillole dallo sfondo non solo in base al valore di intensità (soglia), ma in base alla trama dell'oggetto. Lo spazio colore utilizzato è solo un sistema di coordinate per i colori: utilizzare uno che distingue meglio i colori nell'immagine per motivi di segmentazione. Ad esempio, se le immagini sono in tonalità viola, è possibile utilizzare la conversione in scala di grigi con maggiore peso sui componenti rosso e blu.
Libor,


Quentin: Non ho abbastanza reputazione per caricare le foto.
GamingX

@Syed Caricali in qualche luogo pubblico e aggiungi i link alla domanda, se lo desideri.
Maurits,

Risposte:


2

Se si desidera utilizzare l'approccio con soglia, è necessario utilizzare un metodo di soglia adattivo se ci sono grandi variazioni di illuminazione come nella terza immagine di esempio ( domanda dsp qui ).

Inoltre, dovresti sperimentare gli spazi colore, è facile: lo script per scomporre l'immagine in diversi spazi colore non dovrebbe essere più lungo di poche righe e molti visualizzatori di immagini hanno questa opzione disponibile. Il migliore dovrebbe essere facile da determinare solo visivamente. Se vuoi leggere su colorspace, c'è un'altra buona domanda dsp qui .

Infine, potresti voler provare un approccio diverso. Un'idea sarebbe quella di fare una segmentazione non perfetta, quindi un rilevamento dei bordi , e infine usare qualcosa come la trasformazione di Hough per i cerchi che funziona bene anche sugli archi dei cerchi (incompleti). (questa idea è ovviamente applicabile solo alle pillole rotonde)


Quale sarebbe una buona idea per una segmentazione non perfetta?
GamingX,

@Syed Sembra OpenCV Canny (rilevamento dei bordi) e persino Hough lavora su immagini grigie (non è necessario eseguire la soglia), quindi è possibile saltare tutti i passaggi di soglia insieme. La soglia - segmentazione dipende molto dalle immagini. Ma una risposta semplice sarebbe: scusa, non lo so. Penso che un metodo non adattivo sarebbe sufficiente, ma non potrei suggerirne uno specifico poiché non lo faccio da un po '. Fai solo una piccola ricerca sui semplici metodi di segmentazione;)
penelope,

2

Le trasformazioni di Circle dalla libreria OpenCV sono adatte per questa applicazione. Dovrai eseguire un certo numero di raggi, ma la migliore risposta hough ti darà i confini e i centri delle pillole. Nota che dovresti usare trasformazioni hough generalizzate per trovare pillole non circolari. Funzionerà anche se le pillole hanno occluso o mancano dei bordi.

La soglia potrebbe essere una cattiva soluzione a questo perché nel campo potresti cadere in situazioni in cui nessuna soglia separerà la pillola dallo sfondo, motivo per cui un algoritmo che dipende dalle posizioni relative dei gruppi di bordi è superiore.


1

Per risolvere questo problema devi separare sfondo e primo piano. Questa è la soluzione, ti propongo:

1) converti l'immagine da Rgb in scala di grigi; Otterrai un'immagine che chiamiamo I1;

2) applicare un filtro morfologico, l'erosione utilizzando un ampio raggio, eventualmente più volte ==> è necessario cancellare la pillola per erosione e ottenere solo lo sfondo; Otterrai una nuova immagine I2;

3) sottrae I2a I1, si ottiene il primo piano ad esempio la pillola;

4) applica un altro filtro morfologico per riempire eventuali buchi nella pillola che hai ottenuto;

5) applicare un filtro morfologico, erosione, piccolo raggio per rimuovere qualsiasi pixel isolato.

Questo metodo non richiede alcuna soglia, rilevamento della forma, segmentazione del colore o altro.

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.