Elaborazione video con MATLAB

Applicazioni, esempi e tecniche

Applicazioni comuni

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 Conference 2017 Australia Dr. Shannon Dundas, NSW Department of Primary Industries

Elaborazione video in MATLAB

MATLAB fornisce strumenti e algoritmi con cui potrai visualizzare, analizzare, leggere e scrivere video. L’elaborazione video può essere utile in applicazioni come:

L’elaborazione video in 4 semplici fasi

L’elaborazione video in MATLAB si suddivide nelle seguenti fasi:

  1. Lettura del video
  2. Visualizzazione del video
  3. Elaborazione del video
  4. 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 video
  • implay: lancio dell’app Video Viewer per la visualizzazione dei video
video-viewer-app

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

current_image = imread('flowers.png');
edge(current_image);

current_image = readFrame(vid);
edge(current_image);

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.

Tecniche avanzate

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.

Maggiori informazioni sull’elaborazione video

Utilizza GPU Coder per generare il codice CUDA da un algoritmo di correzione della nebbia scritto in MATLAB.
Scopri le considerazioni, il workflow e le tecniche per gestire un algoritmo di elaborazione della visione su hardware FPGA.
Scopri come MATLAB affronta le sfide comuni dello sviluppo di sistemi di riconoscimento degli oggetti e scopri nuove funzionalità per il Deep Learning, il Machine Learning e la visione artificiale.