Thursday 3 August 2017

Python Mobile Media Immagine


Ciao, questo sta per essere un articolo molto semplice, ma lo troverete molto utile. Si tratta di sfondo di estrazione da un video. Supponiamo che si sono date il video di filmati di traffico, potrebbe essere qualche cosa come questa. Traffico in India. e ti viene chiesto di trovare uno sfondo approssimativa. O qualcosa di simile. l'estrazione di sfondo viene importante nel monitoraggio oggetto. Se si dispone già di una immagine dello sfondo nuda, allora è semplice. Ma in molti casi, non dovrete una tale immagine e quindi, si dovrà crearne uno. Ecco dove esecuzione media viene in aiuto. (Ho pensato a questo quando un ragazzo ha fatto una domanda in SOF. Link) La funzione che usiamo qui per trovare Running Average è cv2.accumulateWeighted (). Per esempio, se stiamo guardando un video, continuiamo a nutrire ogni fotogramma a questa funzione, e la funzione di continuare a trovare le medie di tutti i frame alimentati ad esso secondo la relazione di seguito: src è nulla la nostra immagine fonte, ma. Può essere in scala di grigi o colore dell'immagine e sia a 8 bit o virgola mobile a 32-bit. DST è l'immagine di uscita o l'accumulatore con stessi canali quell'immagine fonte di, ed è a 32-bit o in virgola mobile a 64 bit. Inoltre, dovremmo dichiarare in primo luogo ad un valore che verrà preso come valore iniziale. alpha è il peso dell'immagine in ingresso. Secondo Docs, alfa regola la velocità di aggiornamento (la velocità con l'accumulatore 8220forgets8221 sulle immagini precedenti). In parole semplici, se alfa è un valore più alto, immagine media cerca di cogliere i cambiamenti anche molto veloci e brevi nei dati. Se si tratta di valore più basso, medio diventa lenta e considerare abituato cambiamenti veloci nelle immagini in ingresso. Spiegherò un po 'con l'aiuto di immagini a fine articolo. Nel codice di cui sopra, ho impostato due medie, uno con valore alfa più alto e un altro con valore alfa più basso in modo da poter comprendere effetto di alfa. In un primo momento entrambi sono impostati al telaio della cattura iniziale. E in loop che vengono aggiornati. È possibile vedere alcuni risultati nel link SOF ho già previsti. (I fornire tali risultati qui, è possibile controllare il valore del codice e alpha lì): Ho usato la mia webcam e salvato cornice originale e media in esecuzione in un determinato istante. Questo è un fotogramma di un video traffico tipica presa da una telecamera fissa. Come si può vedere, una macchina sta andando sulla strada, e la persona sta cercando di attraversare la strada in un particolare istante di tempo. Ma vedere la media in esecuzione in quel momento. Non vi è nessuna persona e auto in questa immagine (in realtà è lì, avere uno sguardo da vicino, poi si vedrà, e la persona è più chiaro di auto, dal momento che auto si muove molto velocemente e in tutta l'immagine, non ha molto effetto sui media, ma persona è lì per un lungo periodo di tempo, dal momento che è lento e si muove dall'altra parte della strada.) Ora abbiamo bisogno di vedere l'effetto di alfa su questi images. Hmmm, sembra che questo quoteasy a implementquot funzione è in realtà abbastanza facile per avere sbagliato e ha favorito una buona discussione sulla efficienza della memoria. I39m felice di avere troppo grosso se questo significa sapere che something39s stato fatto a destra. ndash Richard 20 settembre 14 a 19:23 NumPys mancanza di una particolare funzione specifica per dominio è forse dovuta alla disciplina core team e la fedeltà al NumPys prima direttiva: fornire un tipo di matrice N-dimensionale. così come le funzioni per la creazione, e l'indicizzazione questi array. Come molti obiettivi fondamentali, questo non è piccolo, e NumPy lo fa brillantemente. Il (molto) più grande SciPy contiene una molto più grande collezione di librerie specifici del dominio (denominati sottopacchetti di sviluppatori SciPy) - per esempio, l'ottimizzazione numerica (optimize), il segnale processsing (segnale), e calcolo integrale (integrazione). La mia ipotesi è che la funzione siete dopo è in almeno uno dei sottopacchetti SciPy (scipy. signal forse), tuttavia, vorrei guardare prima nella collezione di scikits SciPy. identificare la scikit rilevanti (s) e cercare la funzione di interesse lì. Scikits sono sviluppati in modo indipendente pacchetti basati su NumPySciPy e diretto ad una particolare disciplina tecnica (ad es scikits-immagine. Scikits-imparare ecc.) Molti di questi erano (in particolare, il OpenOpt impressionante per l'ottimizzazione numerica) sono stati molto apprezzato, lungo progetti maturi prima di scegliere di risiedere sotto la relativamente nuova scikits rubrica. La homepage Scikits voluto sopra elenca circa 30 tali scikits. anche se almeno alcuni di quelli non più in fase di sviluppo attivo sono. A seguito di questo consiglio che porterebbe a scikits-timeseries tuttavia, che il pacchetto non è più in fase di sviluppo attivo In effetti è, Panda è diventata, per quanto ne so, il fatto NumPy a base di libreria di serie temporali. Panda ha diverse funzioni che possono essere utilizzate per calcolare una media mobile il più semplice di questi è probabilmente rollingmean. che si usa in questo modo: Ora, basta chiamare la funzione rollingmean passando l'oggetto Series e una dimensione della finestra. che nel mio esempio qui sotto è di 10 giorni. verificare che ha funzionato - ad es. valori confrontati 10 - 15 nella serie originale contro la nuova serie lisciato con rotolamento significare la funzione di rollingmean, insieme a circa una decina di altre funzioni sono informalmente raggruppate nella documentazione Panda sotto la rubrica in movimento le funzioni della finestra di un secondo, gruppo correlato di funzioni in Pandas si riferisce a funzioni in modo esponenziale ponderate (ad es EWMA. che calcola in modo esponenziale media mobile ponderata). Il fatto che questo secondo gruppo non è incluso nel primo (funzioni finestra mobile) è forse perché le trasformazioni in modo esponenziale ponderate dont contare su una lunghezza fissa windowSmoothing Immagini La spiegazione di seguito appartiene al libro Computer Vision: algoritmi e applicazioni da Richard Szeliski e per LearningOpenCV Smoothing. anche chiamato sfocatura. è un'operazione di elaborazione delle immagini semplice e di uso frequente. Ci sono molte ragioni per lisciare. In questo tutorial ci concentreremo sulla levigatura al fine di ridurre il rumore (altri usi saranno visibili nei seguenti esercitazioni). Per eseguire un'operazione di levigatura applicheremo un filtro per la nostra immagine. Il tipo più comune di filtri sono lineari. in cui un valore pixel8217s uscita (cioè) è determinato come somma pesata dei valori dei pixel di ingresso (cioè): Aiuta a visualizzare un filtro come una finestra di coefficienti scorrevoli attraverso l'immagine. Ci sono molti tipi di filtri, qui citeremo i più utilizzati: normalizzato scatola filtro Questo filtro è il più semplice di tutti Ogni pixel di uscita è la media dei suoi vicini del kernel (tutti contribuiscono con pesi uguali) Il kernel è qui sotto: gaussiana Filtrare Probabilmente il filtro più utile (anche se non il più veloce). filtro gaussiano è fatto convolvendo ciascun punto della matrice di ingresso con un kernel gaussiano e quindi sommando tutti per produrre la matrice di output. Giusto per rendere l'immagine più chiara, ricordano come un kernel 1D gaussiana assomigliano Supponendo che un'immagine è 1D, si può notare che il pixel si trova nel mezzo sarebbe il più grande peso. Il peso dei suoi vicini diminuisce all'aumentare della distanza spaziale tra loro e gli aumenti pixel centrale. Ricordare che una gaussiana 2D può essere rappresentato come: filtro mediano Il filtro mediano scorrere ogni elemento del segnale (in questo caso l'immagine) e sostituire ogni pixel con la mediana dei suoi pixel adiacenti (situato in una zona quadrato intorno al pixel valutato ). Filtro bilaterale Finora, abbiamo spiegato alcuni filtri che obiettivo principale è quello di smussare un'immagine in ingresso. Tuttavia, a volte i filtri non solo dissolvono il rumore, ma anche appianare i bordi. Per evitare questo (in certa misura almeno), si può usare un filtro bilaterale. In modo analogo al filtro gaussiano, il filtro bilaterale considera anche i pixel vicini con pesi assegnati a ciascuna di esse. Questi pesi sono due componenti, il primo dei quali è la stessa ponderazione utilizzato dal filtro gaussiano. Il secondo componente tiene conto della differenza di intensità tra i pixel adiacenti e quella valutata. Per una spiegazione più dettagliata è possibile controllare questo link Cosa fa questo programma fa carica un'immagine Si applica 4 diversi tipi di filtri (spiegato in teoria) e mostrare al filtrato le immagini in sequenza Spiegazione Let8217s controllare le funzioni OpenCV che coinvolgono solo la procedura di smoothing, dal momento che la resto è già noto da ora. Normalizzato Filtro di blocco: OpenCV offre la funzione di sfocatura da eseguire levigatura con questo filtro. Specifichiamo 4 argomenti (maggiori dettagli, controllare il riferimento): src. Fonte immagine dst. immagine Destinazione Dimensioni (w, h). Definisce le dimensioni del kernel da utilizzare (di pixel di larghezza we altezza h pixel) Point (-1, -1). Indica dove il punto di ancoraggio (il pixel analizzato) si trova rispetto alla zona. Se vi è un valore negativo, allora il centro del kernel è considerato il punto di ancoraggio. E 'eseguita dalla funzione GaussianBlur: Qui usiamo 4 argomenti (maggiori dettagli, controllare il riferimento OpenCV):

No comments:

Post a Comment