# HG changeset patch # User Alessio Caiazza # Date 1210593380 -7200 # Node ID e288919dcef906357b392d8e2343fa15d3105f6f # Parent 87a7b0e52f4e7f887216b671946b9097cc593afb Aggiunti i grafici alla relazione. diff -r 87a7b0e52f4e7f887216b671946b9097cc593afb -r e288919dcef906357b392d8e2343fa15d3105f6f docs/relazione/relazione.tex --- a/docs/relazione/relazione.tex Sun Apr 27 20:55:58 2008 +0200 +++ b/docs/relazione/relazione.tex Mon May 12 13:56:20 2008 +0200 @@ -5,6 +5,7 @@ \usepackage{pdfsync} \usepackage{moreverb} \usepackage{listings} +\usepackage{graphicx} \author{Alessio Caiazza, Cosimo Cecchi} \title{CaptureMJPEG: a MotionJPEG library for Procesing} \frenchspacing @@ -30,8 +31,35 @@ \label{sec:introduzione} %Cosa è stato fatto, come e con quali obiettivi %Presentazione del progetto e del sito + + +\section{Manuale} +\label{sec:manuale} +Guida all'installazione ed utilizzo di CaptureMJPEG +\subsection{Installazione} +\label{sec:installazione} +%scopiazzare dal sito e tradurre in italiano +Per prima cosa scaricare l'ultima versione di CaptureMJPG dal sito +ufficiale http://capturemjpeg.lilik.it .\\ +Una volta ottenuto l'archivio decomprimerlo all'interno della +sottocartella \texttt{contributed} del proprio sketchbook, su Linux +solitamente è \texttt{$\sim$/sketchbook}, su Mac OS X e Windows +è la cartella \texttt{Processing} all'interno dei propri documenti.\\ +Qualora la sottocartella \texttt{contributed} non esistesse è +necessario crearla.\\ +A questo punto riavviare Processing. +\subsection{Guida all'utilizzo} +\label{sec:guida} +%inserire un po' di esempi e spiegare le funzioni utilizzabili + + + \section{Analisi} \label{sec:analisi} + +\subsection{Comparazione dell'algoritmo blur fra CaptureMJPEG e Capture} +\label{sec:comparazione} + %Studio della libreria eseguito con il codice di prova L'analisi è stata svolta applicando un filtro \texttt{blur} allo stream ottenuto con CaptureMJPEG e con la videocamera locale @@ -40,7 +68,7 @@ I sorgenti utilizzati sono quelli in \reffigura{fig:micc_blur} per CaptureMJPEG e in \reffigura{fig:capture_blur} per Capture. Sono stati misurati l'utilizzo di memoria e di CPU al variare delle -dimensioni del filmato e del framerate richiesto allo sketch. +dimensioni del filmato e del framerate richiesto allo sketch.\\ \begin{figure} \centering \lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/micc_blur.pde} @@ -53,19 +81,55 @@ \caption{Sorgente di test Capture} \label{fig:capture_blur} \end{figure} +L'analisi ha riportato un utilizzo di memoria minore per la libreria +CaptureMJPEG, 30MB contro 40MB per il filmato a risoluzione 320x240 e +50MB contro 60MB per il filmato a risoluzione 640x480.\\ -%qui andrebbero messi i risultati +\begin{figure} + \centering + \includegraphics[scale=0.9]{scilab/isto_blur_640.png} + \caption{Analisi algoritmo blur 640x480} + \label{fig:blur_640} +\end{figure} +\begin{figure} + \centering + \includegraphics[scale=0.9]{scilab/isto_blur_320.png} + \caption{Analisi algoritmo blur 320x240} + \label{fig:blur_320} +\end{figure} -\section{Manuale} -\label{sec:manuale} -Guida all'installazione ed utilizzo di CaptureMJPEG -\subsection{Installazione} -\label{sec:installazione} -%scopiazzare dal sito e tradurre in italiano -\subsection{Guida all'utilizzo} -\label{sec:guida} -%inserire un po' di esempi e spiegare le funzioni utilizzabili +L'utilizzo di CPU è riportato in \reffigura{fig:blur_640} e in +\reffigura{fig:blur_320}. +L'algoritmo applicato allo stream di risoluzione 320x240 mostra un +utilizzo di CPU più pesante da parte di CaptureMJPEG in media del +11.7\% mentre con lo stream a risoluzione 640x480 l'utilizzo è più +pesante da parte della libreria Capture, con un distacco fisso del +5\%.\\ +Si deve considerare inoltre il fatto che CaptureMJPEG utilizza +connessioni HTTP remote mentre Capture utilizza il bus USB ad alta +velocità del sistema locale.\\ +I test sono stati eseguiti su un iMac con la seguente configurazione: +\begin{tabbing} + \textbf{sistema operativo} \= Mac OS X 10.4.11 \kill + + \textbf{processore} \>Intel Core Duo 2GHz (32 bit, dual core)\\ + \textbf{memoria RAM} \> 1GB a 667MHz \\ + \textbf{sistema operativo} \> Mac OS X 10.4.11 \\ + \textbf{processing} \> 0135 beta \\ +\end{tabbing} + +\subsection{Impressioni qualitative} +\label{sec:impressioni} + +%andrebbe scritto in italiano! :P +Le modalità callback si presta bene per la realizzazione di sketch con +funzionalità di monitoring, mentre se si richiede di processare i +frame acquisiti si consiglia l'utilizzo della modalità senza callback +se si preferisce diminuire il delay perdendo frame di immagine, se +è più importante processare tutti i frame, anche acquisendo un +notevole ritardo rispetto alla scena ripresa, allora utilizzare la +modalità con callback. \section{Sviluppo} \label{sec:sviluppo} diff -r 87a7b0e52f4e7f887216b671946b9097cc593afb -r e288919dcef906357b392d8e2343fa15d3105f6f docs/relazione/scilab/esempio_istogramma.sce --- a/docs/relazione/scilab/esempio_istogramma.sce Sun Apr 27 20:55:58 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -// Istogramma prestazioni -//clf(); -scf(0); -xtitle('Analisi video 640x480','FPS', 'CPU usage %') -x=['8' '10' '20']'; y=[60 70;69 45;80 90]; - -bar(y); -a=gca(); -a.data_bounds(4)=100; -a.x_ticks.labels = x; -legend(['CaptureMJPEG';'Capture'],4); -xs2eps(0,'istogramma') diff -r 87a7b0e52f4e7f887216b671946b9097cc593afb -r e288919dcef906357b392d8e2343fa15d3105f6f docs/relazione/scilab/isto_blur_320.png Binary file docs/relazione/scilab/isto_blur_320.png has changed diff -r 87a7b0e52f4e7f887216b671946b9097cc593afb -r e288919dcef906357b392d8e2343fa15d3105f6f docs/relazione/scilab/isto_blur_640.png Binary file docs/relazione/scilab/isto_blur_640.png has changed diff -r 87a7b0e52f4e7f887216b671946b9097cc593afb -r e288919dcef906357b392d8e2343fa15d3105f6f docs/relazione/scilab/istogrammi.sce --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/relazione/scilab/istogrammi.sce Mon May 12 13:56:20 2008 +0200 @@ -0,0 +1,93 @@ +// Istogramma prestazioni +//clf(); + +//dati di raffronto: +// +//parametri: +//algoritmo blur +// +//dimensione 320x240 +//frame rate 20 +//utilizzo CPU: 60% capturemjpeg in remoto su micc, con utilizzo memoria 30mb reali +// 40% classe capture qt4java, con utilizzo di memoria 40mb reali +// +//dimensione 640x480 +//frame rate 20 +//utilizzo CPU: 85% capturemjpeg in remoto su micc, con utilizzo memoria 50mb reali +// 90% classe capture qt4java, con utilizzo di memoria 60mb reali +// +// +//con dimensione 320x240 +// +//frameRate (10) +//40% capturemjpeg +//35% qt4java +// +//frameRate (5) +//30% capturemjpeg +//20% qt4java +// +//con dimensione 640x480 +//framerate (5) +//60% capturemjpeg +//65% qt4java +// +//framerate (10) +//85% capturemjpeg +//90% qt4java +// +// +//algoritmo histogram +//dimensione 320x240 +//frame rate 20 +//utilizzo CPU: 80% capturemjpeg in remoto su micc, con utilizzo memoria 30mb reali +// 20% classe capture qt4java, con utilizzo di memoria 40mb reali +// +//dimensione 640x480 +//frame rate 20 +//utilizzo CPU: 90% capturemjpeg in remoto su micc, con utilizzo memori 40mb reali +// 70% classe capture qt4java, con utilizzo di memoria 50mb reali +// +//con dimensione 640x480 +//frameRate (10) +//90% capturemjpeg +//60% qt4java +// +//frameRate (5) +//80% capturemjpeg +//35% qt4java +// +// +clf(1); scf(1); +xtitle('Analisi blur 640x480','FPS', 'Utilizzo CPU %') +x=['5' '10' '20']'; y=[60 65;85 90;85 90]; + +bar(y); +a=gca(); +a.data_bounds(4)=100; +a.x_ticks.labels = x; +legend(['CaptureMJPEG';'Capture'],4); +xs2eps(1,'isto_blur_640') + +clf(2); scf(2); +xtitle('Analisi blur 320x240','FPS', 'Utilizzo CPU %') +y=[30 20;40 35;60 40]; + +bar(y); +a=gca(); +a.data_bounds(4)=100; +a.x_ticks.labels = x; +legend(['CaptureMJPEG';'Capture'],4); +xs2eps(2,'isto_blur_320') + +clf(3); scf(3); +xtitle('Analisi histogram 640x480','FPS', 'Utilizzo CPU %') +y=[80 35;90 60;90 70]; + +bar(y); +a=gca(); +a.data_bounds(4)=100; +a.x_ticks.labels = x; +legend(['CaptureMJPEG';'Capture'],4); +xs2eps(3,'isto_histo_640') +