Le applicazioni video sono accomunate da alcuni problemi che impongono una funzionalità di analisi ed elaborazione flessibile. Grazie ai prodotti MATLAB e Simulink, potrai sviluppare soluzioni per comuni problemi di elaborazione video, come la stabilizzazione, la mosaicatura, il rilevamento dei target e il tracciamento.
Tracciamento di oggetti
Il tracciamento di oggetti è essenziale per molte applicazioni che comprendono l’evitamento di pedoni, sorveglianza e sicurezza, e la realtà aumentata. In questo esempio, si esegue il tracciamento di una pallina usando il filtraggio Kalman.
Rilevazione e conteggio di oggetti
L’elaborazione video può essere utilizzata per rilevare e contare oggetti in movimento in sequenze video. In questo case study, degli scienziati in Australia stanno utilizzando un filmato per stimare la popolazione selvatica di uccelli acquatici.
MATLAB fornisce strumenti e algoritmi con cui potrai visualizzare, analizzare, leggere e scrivere video. L’elaborazione video può essere utile in applicazioni come:
- Riconoscimento di oggetti con il deep learning
- Stima del movimento come il flusso ottico
- Rilevazione e tracciamento di volti
L’elaborazione video in 4 semplici fasi
L’elaborazione video in MATLAB si suddivide nelle seguenti fasi:
- Lettura del video
- Visualizzazione del video
- Elaborazione del video
- Scrittura del video
Fase 1. Lettura del video
Puoi leggere i video dai file o direttamente dalla videocamera.
Un unico comando MATLAB ti permette di leggere video da un file:
>> vid = VideoReader('filename.avi')
MATLAB supporta le webcam per l’elaborazione video, mentre Image Acquisition Toolbox permette l’acquisizione live da molte videocamere industriali e scientifiche.
MATLAB ti permette di leggere file video usando svariati codec tra cui i codec specifici dei sistemi operativi per Microsoft® Windows®, Mac e Linux®.
Fase 2. Visualizzazione del video
Esistono due metodi per visualizzare un video in MATLAB:
deployableVideoPlayer
: visualizzazione efficace di una serie di frame videoimplay
: lancio dell’app Video Viewer per la visualizzazione dei video
App Video Viewer, che permette di guardare sequenze di immagini, video o filmati MATLAB. L’app consente di avviare, interrompere e guardare video a varie velocità, oltre che di passare direttamente alla sezione desiderata.
Fase 3. Elaborazione del video
Un video è una sequenza di frame video singoli, o immagini. Ciò significa che un algoritmo progettato per eseguire il riconoscimento dei contorni su un’immagine può essere rapidamente convertito per eseguire il riconoscimento dei contorni su un video.
Lettura di un’immagine singola |
Lettura di un frame di immagine da video |
---|---|
|
|
L’elaborazione video può essere molto semplice, come quando si usa il riconoscimento dei contorni, o decisamente più complessa, come quando gli algoritmi di tracciamento devono tener conto della posizione di un oggetto nei frame precedenti.
Per maggiori informazioni sull’elaborazione video avanzata, consulta gli esempi relativi a:
Fase 4. Scrittura del video
Dopo l’elaborazione, potrai riscrivere ciascun frame di un video in un file. Puoi creare un file video con la funzione:
>> vid_w = VideoWriter('newfile.avi'); >> open(vid_w)
La variabile vid_w
può accumulare nuovi frame per creare un video.
Esempio MATLAB completo
Mettendo insieme tutti i vari componenti, analizziamo un esempio completo per scoprire quali sono le fasi di lettura, visualizzazione, elaborazione e scrittura di un video:
%% Read and process a video into MATLAB % Setup: create Video Reader and Writer videoFileReader = VideoReader('tilted_face.avi'); myVideo = VideoWriter('myFile.avi'); % Setup: create deployable video player and face detector depVideoPlayer = vision.DeployableVideoPlayer; faceDetector = vision.CascadeObjectDetector(); open(myVideo); %% Detect faces in each frame while hasFrame(videoFileReader) % read video frame videoFrame = readFrame(videoFileReader); % process frame bbox = faceDetector(videoFrame); videoFrame = insertShape(videoFrame, 'Rectangle', bbox); % Display video frame to screen depVideoPlayer(videoFrame); % Write frame to final video file writeVideo(myVideo, videoFrame); pause(1/videoFileReader.FrameRate); end close(myVideo)
Puoi scaricare questo codice su MATLAB Central.
Algoritmi di elaborazione video per la visione artificiale
Gli algoritmi MATLAB che usano la correlazione temporale per l’elaborazione video si basano sul concetto di “stato”, ovvero sull’idea che l’algoritmo lavori su un determinato frame video ma usi anche i frame precedenti per determinare l’output. Questo è fondamentale per gli algoritmi di tracciamento degli oggetti, che si basano sulle informazioni precedenti per informare le azioni future. Un esempio comune di tracciamento è l’algoritmo KLT, che traccia i singoli punti in un oggetto per tenere traccia della sua posizione.
Gli sviluppatori di algoritmi di elaborazione video possono usare anche gli algoritmi specifici per la visione in Computer Vision System Toolbox. Gli algoritmi ti permettono di leggere e visualizzare video in alta risoluzione in modo rapido ed efficiente in termini di memoria. Il toolbox comprende anche algoritmi per l’elaborazione di nuvole di punti 3D, la visione stereo, la rilevazione, il tracciamento e il riconoscimento oggetti, e altre applicazioni.