L4 Tecniche di Background Subtraction Corso di Visione Artificiale Ing. Luca Mazzei Background Subtraction Insieme di tecniche per separare in un’immagine lo sfondo dagli oggetti interessanti Sfondo, Background: parte statica Foreground: parte di interesse AA 2009/2010 Visione Artificiale 2 Background subtraction input image blob image background image AA 2009/2010 Visione Artificiale 3 Background Subtraction Scenario: camera fissa Foreground = Frame – Background Necessario impostare il metodo di estrazione del background e del foreground Operazioni sui pixel AA 2009/2010 Visione Artificiale 4 Problematiche Cambiamenti illuminazione Graduali (ombre sole su strada) – Improvvise (nuvole) – Cambiamenti da movimento Oscillazioni camera – Oggetti nel bg con movimenti (fronde, onde) – Cambiamenti nella geometria – AA 2009/2010 Oggetti, auto parcheggiate … Visione Artificiale 5 Foreground La parte in movimento dell’immagine Regione di interesse Bounding bounding box, blob, cluster, ellissi, centroidi – baricentri geometici Bounding Box AA 2009/2010 Blob Visione Artificiale Cluster 6 Foreground Blob Ellissoide Bounding Box Baricentro Centro di massa Input image AA 2009/2010 Visione Artificiale 7 Blob extraction Considerare una classe per i blob con oggetti membri: Bounding box rettangolare Ellissoide Centroide Blob con i punti appartenenti AA 2009/2010 Visione Artificiale 8 Metodi base Differenza di frame Media Running Average Istogrammi Selectivity AA 2009/2010 Visione Artificiale 9 Differenza di frame Sfondo stimato è il frame precedente Funziona solo sotto certe condizioni di velocità e frame rate Molto dipendente dalla soglia Th | framei framei 1 | Th AA 2009/2010 Visione Artificiale 10 Media (Average o Median) Si calcola la media, o la mediana, degli ultimi n frame Richiesta di memoria alta n size ( frame) Si può ottimizzare a 2 size ( frame) Il calcolo va fatto per ogni pixel del frame AA 2009/2010 Visione Artificiale 11 Running Average Ho una media pesata dei pixel Alpha, learning rate tipicamente 0.05 Poca occupazione di memoria, veloce Bi 1 Fi (1 ) Bi AA 2009/2010 Visione Artificiale 12 Istogrammi Calcoli istogrammi del valore rgb di ogni pixel nel tempo Utile per calcolare una soglia Se ho piu’ picchi non funziona AA 2009/2010 Visione Artificiale 13 Selectivity Utile se ho oggetti in movimento Classifica foreground e background per aggiornamento background formula Fi ( x, y ) (1 ) Bi ( x, y ), seFi ( x, y ) Bg Bi 1 ( x, y ) Bi ( x, y ), seFi ( x, y ) Fg AA 2009/2010 Visione Artificiale 14 Limiti dei metodi base Si basano solo sulla storia di un pixel singolo Non utilizzano informazioni spaziali Difficile settare e trovare la soglia AA 2009/2010 Visione Artificiale 15 Metodi avanzati Incrementano le prestazioni dei metodi base Coinvolgono informazioni spaziali Utilizzano considerazioni statistiche AA 2009/2010 Visione Artificiale 16 Metodi avanzati (solo nomi) Running gaussian average Mixture of gaussian Kernel density estimator Mean shift based estimator Eigenbackgrounds AA 2009/2010 Visione Artificiale 17 Assegnamento Realizzare un’applicazione in GOLD che mostri i metodi base di background subtraction, con alcune statistiche. Nome applicazione: Matricola_Cognome Le statistiche si possono ottenere con i cronometri ed il profiler AA 2009/2010 Visione Artificiale 18 Assegnamento Input Filmato camera fissa colori ambiente stradale outdoor (Controllo Traffico) Filmato camera fissa zenitale colori indoor (Controllo Accesso Laboratorio) AA 2009/2010 I filmati si trovano nella cartella in cui si dovrà caricare l’assegnamento Visione Artificiale 19 Assegnamento Output Immagine di input Immagine background Immagine foreground con blob, bounding box Immagine di output con blob e bounding box Statistiche sui tempi di calcolo (timer nel profiler di GOLD) AA 2009/2010 Visione Artificiale 20 Assegnamento Labeling per blob e differenza dall’esercitazione precedente (flood fill) Possibilità di scegliere output, le soglie, eventualmente anche tipologia background da calcolare Scelta del tipo di foreground da visualizzare in output Progettare il codice modularmente Provare ad utilizzare file .ini dell’applicazione AA 2009/2010 Visione Artificiale 21