Il filtro Gabor può essere utilizzato per rilevare ammaccature in auto?


16

Sto facendo delle ricerche sui filtri Gabor per rilevare ammaccature in auto. So che i filtri Gabor hanno avuto un uso diffuso per il riconoscimento di schemi, riconoscimento di impronte digitali, ecc.

Ho un'immagine.

Immagine grezza

Usando un po 'di codice dal sito di scambio file di MathWorks, ho ottenuto il seguente output.

Immagine elaborata

che in qualche modo non è l'output che ci si aspetterebbe. Questo non è un buon risultato.

La mia sceneggiatura è la seguente:

I = imread('dent.jpg');
I = rgb2gray(I);
[G, gabout] = gaborfilter1(I, 2, 4, 16, pi/2);
figure
imshow(uint8(gabout));

MODIFICA: Applicazione di un codice diverso alla seguente immagine:

immagine di input

Immagine di output dopo diversi orientamenti del filtro gabor:

inserisci qui la descrizione dell'immagine

come posso isolare questa DENT che viene rilevata correttamente?


1
I = imread ('dent.jpg'); I = rgb2gray (I); [G, gabout] = gaborfilter1 (I, 2,4,16, pi / 2); figura, imshow (uint8 (GInformazioni)); Ho usato i seguenti parametri
vini

Cosa stai chiedendo?
Andrey Rubshtein,

2
Cosa c'è nel filtro Gabor che ti fa pensare che sia adatto a questo problema?
Nzbuu,

È possibile con l'elaborazione delle immagini, lo stile è sempre uniforme e l'ammaccatura non è uniforme, ci saranno poche possibilità che un'ammaccatura che abbia un bordo non uniforme. Potrebbe essere l'analisi del modello del bordo dell'ammaccatura.

Risposte:


21

Questo è un problema estremamente difficile. Facevo parte di un team che ci lavorava da diversi anni e dopo aver sviluppato e supportato altre applicazioni simili per molto tempo, posso dire che il rilevamento delle ammaccature è un problema particolarmente complicato e molto più difficile di quanto sembri inizialmente.

Far funzionare un algoritmo in condizioni di laboratorio o su immagini conosciute è una cosa; lo sviluppo di un sistema accurato e robusto per immagini "naturali" come le auto viste in un parcheggio richiederebbe probabilmente una squadra che lavora per diversi anni. Oltre al problema principale della creazione dell'algoritmo, esistono numerose altre difficoltà ingegneristiche.

Il codice di esempio che hai testato non è un brutto inizio. Se potessi trovare i bordi attorno al lato destro scuro dell'ammaccatura, potresti confrontare la mappa dei bordi della macchina con il ding con una mappa dei bordi di una buona macchina conosciuta ripresa dalla stessa angolazione con la stessa illuminazione. Il controllo dell'illuminazione sarà di grande aiuto.

I problemi da considerare includono:

  1. Illuminazione (molto più difficile di quanto sembrerebbe inizialmente)
  2. Superficie 3D prevista del pannello esterno assemblato (ad es. Da dati CAD)
  3. Criteri che caratterizzano un'ammaccatura: area, profondità, profilo, ecc.
  4. Criteri per falsi negativi e falsi positivi
  5. Mezzi per salvare i dati delle ammaccature e / o mappare le ammaccature su un modello dell'auto (o layout a farfalla)
  6. Metodologia e dispositivo per misurare le caratteristiche "vere" dell'ammaccatura: profondità, area, ecc.
  7. Ampio database di ammaccature da un campionamento casuale di veicoli
  8. Trattare con diversi colori e finiture di vernice

1. Illuminazione Come Martin B ha notato correttamente sopra, l'illuminazione corretta è fondamentale per questo problema. Anche con una buona illuminazione strutturata, avrai grandi difficoltà a rilevare piccole ammaccature vicino a linee caratteristiche, spazi tra pannelli, maniglie e così via.

La voce di Wikipedia per l'illuminazione strutturata è un po 'sottile, ma è un inizio per comprendere il principio: http://en.wikipedia.org/wiki/Structured_light

Le strisce chiare possono essere utilizzate per rilevare in-dings (ammaccature) e out-dings (brufoli). Per vedere un ding, avrai bisogno di un movimento relativo tra la sorgente luminosa e l'auto. O la luce + la telecamera si muovono insieme rispetto all'auto, oppure l'auto passa oltre la luce + la telecamera.

Sebbene gli in-out e gli out-out abbiano aspetti caratteristici se visti sul bordo di una striscia luminosa, la rilevabilità di una data ammaccatura dipende dalla dimensione e dalla profondità dell'ammaccatura rispetto alla larghezza della striscia luminosa. La curvatura di un'auto è complessa, quindi è abbastanza difficile presentare una striscia di luce coerente a una fotocamera. Man mano che la striscia di luce si sposta attraverso la carrozzeria, la curvatura e persino l'intensità della striscia di luce varieranno.

Una soluzione parziale è quella di garantire che la videocamera e la striscia luminosa siano sempre ad un angolo coerente rispetto alla normale (la perpendicolare 3D) della porzione della superficie da ispezionare. In pratica, sarebbe necessario un robot per spostare la telecamera in modo accurato rispetto alla superficie del corpo. Lo spostamento accurato del robot richiede la conoscenza della posa (posizione e angoli 3D) della carrozzeria, che costituisce di per sé un brutto problema.

Per qualsiasi ispezione per applicazioni automobilistiche, è necessario controllare completamente l'illuminazione. Ciò significa non solo posizionare le luci di tua scelta in luoghi noti, ma anche bloccare tutte le altre luci. Ciò significherà un recinto abbastanza grande. Poiché i pannelli dell'auto sono curvati verso l'esterno (quasi come una superficie sferica), rifletteranno la luce proveniente da fonti che li circondano. Per semplificare notevolmente questo problema, è possibile utilizzare una barra fluorescente ad alta frequenza all'interno di un involucro avvolto in velluto nero. Abbastanza spesso è necessario andare fino a questo punto per le applicazioni di ispezione.

2. Superficie 3D La superficie esterna di un'auto è composta da curve complesse. Per sapere se un punto sospetto è un ding, devi confrontare quel punto con le caratteristiche note dell'auto. Ciò significa che dovresti abbinare l'immagine 2D da una fotocamera a un modello 3D visualizzato con una certa angolazione. Questo non è un problema risolto rapidamente, ed è abbastanza difficile fare bene che alcune aziende si specializzino in esso.

3. Caratterizzazione dei difetti Per ricerche accademiche o test di laboratorio può essere sufficiente sviluppare un algoritmo che mostri promessa o migliori un metodo esistente. Per risolvere correttamente questo problema per un reale uso commerciale o industriale, è necessario disporre di una specifica altamente dettagliata per le dimensioni delle ammaccature che si desidera rilevare.

Quando abbiamo affrontato questo problema, non c'erano standard industriali o nazionali ragionevoli per ammaccature (deformazioni 3D). Cioè, non esisteva una tecnica concordata per caratterizzare un'ammaccatura per area, profondità e forma. Abbiamo appena avuto campioni che gli esperti del settore hanno concordato che erano cattivi, non troppo cattivi e marginali in termini di gravità. Anche definire la "profondità" di un ding è complicato, dal momento che un ding è un rientro 3D (in genere) di una superficie 3D che curva verso l'esterno.

Le ammaccature più grandi sono più facili da rilevare, ma sono anche meno comuni. Un lavoratore automobilistico esperto può scansionare rapidamente una carrozzeria - molto più rapidamente di un osservatore non addestrato - e trovare rapidamente dighe superficiali delle dimensioni del tuo mignolo. Per giustificare il costo di un sistema automatizzato, probabilmente dovresti abbinare l'abilità di un osservatore esperto.

4. Criteri per errori di rilevamento All'inizio è necessario impostare criteri per falsi negativi e falsi positivi accettabili. Anche se stai solo studiando questo problema come progetto di ricerca e sviluppo e non intendi sviluppare un prodotto, prova a definire i criteri di rilevamento.

falso negativo: ammaccatura presente, ma non rilevata falso positivo: area intatta identificata come ammaccatura

Di solito c'è un compromesso: aumenta la sensibilità e troverai più dings (diminuisci falsi negativi), ma troverai anche più dings che non ci sono (aumenta i falsi positivi). È abbastanza facile convincersi che un algoritmo funziona meglio di quanto non faccia realmente: il nostro naturale pregiudizio è notare i difetti rilevati dall'algoritmo e spiegare quelli che non ha rilevato. Effettuare test ciechi e automatizzati. Se possibile, chiedi a qualcun altro di misurare i dings e assegnare la gravità in modo da non sapere quali sono le vere misurazioni.

5. Salvare i dati e / o mapparli Un'ammaccatura è caratterizzata dalla sua gravità e dalla sua posizione sulla carrozzeria. Per conoscere la sua posizione, è necessario risolvere il problema di corrispondenza da 2D a 3D sopra menzionato.

6. Determinazione della forma "vera" delle ammaccature Le ammaccature sono difficili da misurare. Un'ammaccatura affilata e un'ammaccatura arrotondata della stessa superficie e profondità appariranno diverse. Misurare le ammaccature con mezzi meccanici porta a giudizi soggettivi ed è anche abbastanza noioso usare misuratori di profondità, righelli, ecc., Quando probabilmente dovrai misurare dozzine se non di più.

Questo è uno dei problemi ingegneristici più difficili da risolvere per qualsiasi progetto di rilevamento dei difetti per la produzione: come si misura un difetto e lo caratterizza? se esiste uno standard per farlo, lo standard è ben correlato a qualcosa che il sistema di ispezione misura? se il sistema di ispezione non trova una risposta "dovrebbe" aver trovato, di chi è la colpa?

Detto questo, se un sistema di ispezione funziona abbastanza bene per un campione di difetti noti, gli utenti possono eventualmente fidarsi di esso e il sistema stesso diventa lo standard per la definizione della gravità del difetto.

7. Ampio database di ammaccature Idealmente si dovrebbero avere centinaia se non migliaia di immagini di esempio di ammaccature di gravità diversa in posizioni diverse su veicoli di produttori difficili. Se sei interessato a trovare ammaccature causate da incidenti durante il processo di assemblaggio, potrebbe richiedere molto tempo per raccogliere quel tipo di dati. Le ammaccature causate durante il processo di assemblaggio non sono comuni.

Se sei interessato solo a trovare ammaccature causate da incidenti o danni ambientali, allora è una questione diversa. I tipi di ammaccature saranno diversi da quelli causati da urti accidentali all'interno di un impianto di assemblaggio automatico.

8. Trattare con diversi colori di vernice È vero che i rilevatori di bordi possono essere ragionevolmente robusti nel rilevare bordi in immagini con diversi livelli di contrasto, ma può essere abbastanza scoraggiante vedere cosa significano realmente "diversi livelli di contrasto" per le diverse vernici e finiture automobilistiche . Una striscia di luce che sembra grande su una macchina nera lucida potrebbe essere difficilmente rilevabile su una macchina bianca con vernice vecchia.

La maggior parte delle telecamere ha una gamma dinamica relativamente limitata, quindi è difficile ottenere un buon contrasto sia per le superfici nere lucide che per quelle opache bianche. È molto probabile che dovrai controllare automaticamente l'intensità dell'illuminazione. Anche questo è difficile.


non c'è un database di immagini che potrei ottenere su ammaccature? e brillante risposta che non ho mai saputo così tanto ...
vini

2
Non sono sicuro che esista un database del genere perché gran parte delle informazioni sono di proprietà. I produttori di automobili non vogliono necessariamente trasmettere al mondo le dimensioni e i tipi di difetti che vedono nella produzione. Detto questo, senza un robusto sistema di misurazione le statistiche possono essere basate sull'ispezione visiva umana nell'impianto, che può essere basata sul campionamento o su segnalazioni di danni da parte di concessionari di automobili. Un'auto che è stata ammaccata prima di arrivare a una concessionaria può essere invenduta, il che significa perdita di denaro e spreco di risorse.
Ripensare il

1
Le officine di riparazione dentale utilizzano strisce chiare, sebbene la loro configurazione sia più adatta all'ispezione umana che all'ispezione automatizzata: exceldent.wordpress.com/tag/door-ding-repair ncfixadent.com/services/paintless-dent-repair-pdr Per un sistema automatizzato , si desidera bloccare tutta la luce estranea, compresi i riflessi dell'alloggiamento di illuminazione stesso. Inoltre, è necessario impostare la messa a fuoco della fotocamera in modo da raggiungere un equilibrio tra la messa a fuoco della sorgente luminosa in modo che i bordi siano nitidi e la messa a fuoco della superficie del veicolo per vedere le caratteristiche del veicolo.
Ripensare il

Ehi, ripensandoci, in questo momento sto solo formulando una soluzione per lo stesso, c'è comunque di ottenere alcune foto di ammaccature e graffi, ecc. Che mi aiuterebbero nella mia ricerca, per favore, aiutatemi!
vini

1
Raccogliere immagini di ammaccature e graffi può essere difficile. È probabile che ci vorrà un po 'di lavoro per le gambe. Non ci sono molte foto adatte online. Potresti chiamare un negozio di riparazioni auto e chiedere se puoi scattare foto dei veicoli che hanno; in cambio, potresti fare acquisti nei tuoi rapporti. Chiedi ad amici e colleghi se puoi scattare foto delle loro auto: porta con te una luce fluorescente portatile per l'illuminazione. Il telefono Acamera andrebbe bene. La cosa migliore sarebbe quella di ottenere pannelli ammaccati e indentati da una discarica. È meglio avere i propri campioni dall'inizio in modo da poter modificare l'illuminazione, ecc.
Rethunk

9

Un filtro Gabor è solo il primo dei numerosi passaggi che potresti utilizzare per un'attività di rilevamento di tali difetti. Inoltre, tieni presente che hai utilizzato solo un orientamento e una scala specifici del filtro Gabor: in genere utilizzeresti un'intera gamma di orientamenti e scale.

Un quadro molto approssimativo di un semplice approccio di rilevamento dei difetti che utilizza i filtri Gabor potrebbe essere il seguente:

  • Applica il filtro Gabor a diversi orientamenti e scale
  • Applicare un classificatore (addestrato su dati di allenamento adeguati) per classificare ciascun pixel come "difetto" o "non difetto"
  • Rilevamenti aggregati da pixel vicini per assicurarsi che ogni difetto venga rilevato una sola volta ed eliminare rilevamenti spuri

Un punto che non è in questo elenco ma che in genere è molto importante è l'acquisizione delle immagini. Il modo in cui illumini l'oggetto e posiziona le telecamere ha un'enorme influenza su quanto sarà facile rilevare i difetti nelle immagini risultanti. L'immagine di esempio sembra utilizzare l'illuminazione ambientale presente in quel momento - molto probabilmente non è ottimale.

Come ho detto, questo è solo un profilo molto approssimativo. L'ispezione automatica è un campo ampio e richiede molta esperienza per farlo bene.


0

No, non può. L'elaborazione delle immagini non è magica, è necessario fornire ulteriori informazioni. Senza una certa idea di come dovrebbe apparire la macchina, in che modo il computer dovrebbe distinguere un'ammaccatura dallo stile del corpo previsto?


1
so che non è magico e le immagini che ho ottenuto da Google ... ecco perché volevo un input su come avrei affrontato questo problema ... usare semplicemente questo filtro non è sufficiente ...
vini

Voglio votare questo, ma non è una vera risposta. Dovrebbe essere un commento.
endolith,
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.