2009-12-10 10 views
9

Qualcuno sa di un algoritmo che può restituire fuzzy vero/falso a se un'immagine ha sfocatura di movimento/movimento della fotocamera in un'immagine?Esiste un algoritmo o una libreria in grado di rilevare il mosso delle immagini?

Idealmente sarebbe particolare per motion blur, poiché molte delle immagini nel set potrebbero avere uno sfondo sfocato (Bokeh).

Una preferenza di lingua sarebbe C, Perl, Shell Utility o Python, ma sono aperto a qualsiasi cosa realmente.

Con la mia attuale conoscenza della matematica/di programmazione, non credo Ho davvero una speranza di scrivere un tale algoritmo, utilizzando solo uno che prende alcuni parametri ...

+0

Se possibile, contrassegnare alcune risposte come accettate. Al momento non è chiaro se siano adatti allo scopo o no. –

risposta

4

Il Discrete wavelet transform è uno strumento utile in tale rilevamento. Here è un documento della Carnegie Mellon School of Computer Science sulla rilevazione e quantificazione della sfocatura nelle immagini utilizzando il DWT. Per una decisione binaria, si imposta l'importo su un livello desiderato e su tutto ciò che è sfocato.

+0

Questo è utile, ma la carta dice esplicitamente "È efficace sia per sfocatura sfocata che per sfocatura movimento lineare", il che significa che non è molto utile per rilevare il motion blur in particolare ... –

+1

@JoshBleecherSnyder Out-of -la sfocatura messa a fuoco non è direzionale, mentre la sfocatura del movimento lineare è. È possibile eseguire un'analisi componente principale per ottenere gli autovalori dei vettori di direzione dei punti di bordo caratteristici della sfocatura e valutare la forza di quella predominante. Se è oltre una certa soglia, puoi concludere che la sfocatura è direzionale, quindi il motion blur lineare. – luvieere

+0

grazie, questo aiuta. –

2

Ci sono diversi modi per farlo , forse uno dei guru delle immagini qui ha una risposta molto migliore. Comunque ...

Il mio primo scatto sarebbe avere un'analisi di frequenza dell'immagine (leggi: 2d trasformata di Fourier). Quindi definire una soglia per le alte frequenze (cioè, cambiamenti veloci da un pixel al successivo) per vero/falso. Motion blur filtra le alte frequenze. Il tuo chilometraggio può variare, ad es. un'immagine completamente nera non avrà alte frequenze anche se non è sfocata. A seconda dell'obiettivo e dell'apertura utilizzati, alcune parti dell'immagine potrebbero risultare sfocate perché sono sullo sfondo. Non penso che ci sia una soluzione valida per tutti.

+0

Come distinguere tra sfocatura del bokeh e sfocatura di movimento? –

0

È inoltre possibile utilizzare l'algoritmo Richardson-Lucy. Viene utilizzato principalmente per la de-convoluzione cieca, ma come sai che è il motion blur che devi rimuovere, gli algoritmi RL dovrebbero impiegare un minor numero di iterazioni per calcolare una ricostruzione praticabile.

Problemi correlati