Sunteți pe pagina 1din 13

UNIVERSITATEA POLITEHNICA BUCURETI

FACULTATEA DE AUTOMATIC I CALCULATOARE


MASTER GRAFIC, MULTIMEDIA I REALITATE VIRTUAL





TDMRC - ARTICOL

Refacerea imaginilor dupa o succesiune 2:1
downsampling - upsampling






Coordonator
prof. dr. ing. Costin Boiangiu
Studeni
Calofir Emil
Dan Radu Ionu
Lionte Vlad





BUCURETI, 2014
2

Abstract

Streaming-ul video a parcurs un drum lung din zilele de nceput, anii 90, pn n prezent.
n 2012, oamenii vizualizau peste 4 miliarde de videoclipuri pe zi pe YouTube, potrivit Reuters
1
.
Transmiterea de informaie video ctre reele instabile devine o problem, iar noi metode sunt
create pentru a ntmpina astfel de situaii. Aceast lucrare prezint o astfel de metod care ofer
utilizatorului care nu dispune de o conexiune de internet stabil, o experien de streaming
plcut i continu.
Introducere

Proiectul de fa i propune s eficientizeze trimitirea imaginilor ntr-o reea instabil,
astfel nct la receptor acestea se pot recompune avnd o calitate ct mai bun.
Trimiterea pachetelor de date ale imaginii s-a realizat prin implementarea transformrilor
de upsampling i downsampling asupra imaginilor.
Lucrarea este compus din dou subsisteme: client i server. ntre acestea putem lega
orice tip de conexiune; testele fiind fcute n modul local cu un nivel de laten reglabil. Astfel,
testm factorii perturbatori care genereaz zgomote i delay-uri n trimiterea pachetelor de date.
n prima parte a lucrrii prezentm principalele proiecte pe care le-am studiat din acest
domeniu.
A doua parte cuprinde ce ne-am propus, calea ce s-a dorit a fi dezvoltat, descrierea
sistemul nostru i implementarea algoritmilor.
n ultima parte a proiectului, prezentm rezultatele experimentale, evalurile de
performan i testele de calitate.
Stadiul actual

Downsampling-ul unor imagini compresate n domeniul discret se poate observa n [1].
Tehnica se compune din doi pai: mai nti imaginea este trecut printr-un filtru antialiasing, iar
apoi este sub-samplat cu un factor arbitrar pentru fiecare dimensiune. n cazul imaginilor
compresate discret
2
, ele trebuie s fie aduse n domeniul spaial prin inversa DCT i apoi s fie
trecute prin procedurile de filtrare.

1
http://www.reuters.com/article/2012/01/23/us-google-youtube-idUSTRE80M0TS20120123
2
Prin transformata discret - DCT (n englez: discrete cosine transformation)
3

O abordare direct ar fi s lucrm n domeniul compresrii, unde ambele operaii de
filtrare i downsampling sunt combinate n domeniul DCT. Acest lucru este realizabil prin tierea
coeficienilor DCT pentru frecvene nalte i folosind inversa DCT cu un numr semnificativ mai
mic de coeficieni pentru a reconstrui imaginea de rezoluie redus. De exemplu, unul poate
folosi coeficieni 4x4 din 8x8 si s aplice transformata invers DCT asupra acestor coeficieni
pentru a reduce rezoluia de 2 ori pentru fiecare dimensiune. S-a observat c aceast abordare,
numit i frequency masking
3
, nu duce la mbuntiri semnificative a compresiei i are nevoie ca
encodorii i decodorii s poat accepta DCT 4x4 i tramsformate inverse DCT 8x8. De
asemenea, are nevoie ca schemele de codare s fie optimizate pentru cazul 4x4. Mai mult, metoda
produce blocaje i distorsiuni datorit aproximrilor foarte proaste care apar n urma descrcrii
coeficienilor de ordin mare [2].
Rezultatele experimentale din [1] se pot vedea n Tabelul 1, iar metodele folosite n
experimente se observ n figura 1.

Figura 1 - Tehnici de down-sampling ale imaginilor compresate prezentate sub forma bloc
4

Tabelul 1 - Rezultate experimentale down-sampling imagini compresate [1]
Imaginea Metoda (a) Metoda (b) Metoda (c)
Lenna
(256x256)
23.3 dB
8.8 KB
32.42 dB
36.7 KB
27.14 dB
12 KB
peppers
(256x256)
23.57 dB
9.2 KB
31.97 dB
36.3 KB
27.58 dB
12 KB
sailboat
(256x256)
21.59 dB
11.2 KB
31.56 dB
42.2 KB
25.54 dB
15.7 KB

3
Mascarea frecvenei
4
TDM - Transform Domain Manipulation
4

foreman
(88x72)
22.89 dB
1.3 KB
32.82 dB
4.3 KB
26.67 dB
1.7 KB
news
(88x72)
16.18 dB
1.2 KB
27.29 dB
3.9 KB
20.87 dB
1.7 KB
target
(256x256)
18.57 dB
8.5 KB
23.21 dB
33.6 KB
23.96 dB
12.2 KB
hotel
(360x288)
19.57 dB
16.6 KB
29.85 dB
60.6 KB
24.02 dB
23.1 KB

n [3] se prezint un sistem de reconstrucie al imaginilor, unde fiecare component are un
pachet - un set unic de filtre upsampling - downsampling - care este folosit pentru a construi
recursiv o piramid. Algoritmul de construcie al piramidei este bazat pe operaii downsampling
succesive urmate de operaii de upsampling i de encodare a rezidurilor.
Implementarea sistemului

Principalul motiv pentru folosirea unei operaii de downsampling este de a reduce
cantitatea de date. S presupunem c avem un semnal audio cu o frecven de 44.1 kHz, iar
algoritmul de prelucrare semnale audio poate folosi doar semnale la 22.05 kHz. Ca urmare, vom
reduce numrul de eantioane din semnalul iniial. Putem aplica acest principiu pentru orice tip
de semnal, doar pentru c avem mai mult informaie, nu este obligatoriu c vom avea nevoie de
toat.
Operatori pentru downsampling
1. Decanting
- asigur eliminarea efectului de aliasing;
- poate fi aplicat secvenial asupra tuturor axelor.


Figura 2 - Decanting downsampling




5

2. Interpolarea biliniar
- calcularea intensitii medii a pixelilor vecini.

, 1,
1 , 1 1, 1
(1 ) I
(1 ) I
j i j i j
j i j i j
a I
a I




, calcuarea valorii medii pe axa x


, 1
(1 ) a
k l j j
I a

, calcularea valorii medii pe axa y
- necesit operate suplimentar de finisare pentru eliminarea efectului de aliasing

Figura 3 - Operaie de downsampling biliniar
Prin efectuarea de operaii de upsampling, de regul, se dorete a se genera informaii
suplimentare. De exemplu: pentru o imagine se genereaz pixeli intermediari. Desigur, alt motiv
pentru upsampling este de a amesteca 2 semnale care au fost eantionate la frecvene diferite.
Operatori de upsampling
1. Decanting


Figura 4 - Decanting upsampling






6

2. Interpolare biliniar

Figura 5 - Upsampling bilinar
n implementarea prezentat n acest articol vom folosi operatorul de interpolare biliniar
pentru downsamling, respectiv upsampling.
Proiectul de fa a fost implementat folosind mediul de dezvoltare Microsoft Visual
Studio 2010, limbajul Visual C#. Pentru manipularea imaginilor am integrat biblioteca EmguCV
5

Interfaa grafic cu utilizatorul pentru subsistemul server, este prezentat n figura 6:

Figura 6 - Interfaa grafic cu utilizatorul pentru subsistemul server
Unde:
A: textbox-ul unde utilizatorul i introduce adresa IP a serverului (default este localhost);
B: textbox-ul unde utilizatorul introduce port-ul deschis pentru acceptarea pachetelor de la
client;
C: simulatorul latenei de reea, are un pas de incrementare de 2.5 %;

5
http://www.emgu.com/wiki/index.php/Main_Page
7

D: flag boolean pentru streaming-ul de date adaptiv, unde true = ON, false = OFF;
E: trimite ctre client stream-ul video preluat de la camera web.
La apsarea butonului Send Video Stream, se deschide un thread pentru conexiunea
socket (IP-ul este preluat din textbox-ul A, iar port-ul din textbox-ul B).
byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(ip), port);

client = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);

Capturarea fiecrui frame de la camera web se face prin metoda EmguCV capture(). Ct
timp thread-ul este activ se execut iteraiile de downsampling i upsampling ale fiecrei imagini.
Iteraia 1
Imaginea original este captura de la webcam. Se encodeaz ca bitmap prin funcia
ToBitmap(). Imaginea downsampled are dimensiunile imaginii originale njumtite
(original.Width / 2, respectiv original.Height / 2), iar imaginea bitmap upsampled se
compune din imaginea downsampled avnd dimensiunile imaginii originale
(downsampled.Width * 2, respectiv downsampled.Height * 2). n final, imaginea cu
detaliile iteraiei 1 se compune apelnd metoda imgSub(original, upsampled):
private Bitmap imgSub(Bitmap bmp1, Bitmap bmp2)
{
Bitmap res = new Bitmap(bmp1.Width, bmp1.Height);

Emgu.CV.Image<Rgb, Byte> img1 = new Image<Rgb, byte>(bmp1);
Emgu.CV.Image<Rgb, Byte> img2 = new Image<Rgb, byte>(bmp2);

Emgu.CV.Image<Rgb, Byte> img3 = img1.Sub(img2);
res = img3.ToBitmap();

return res;
}

Iteraia 2
Imaginea original are dimensiunile njumtite ale capturii webcam-ului. La fel ca la
iteraia 1, se encodeaz ca bitmap. Imaginea downsampled are dimensiunile imaginii
originale njumtite (original.Width / 2, respectiv original.Height / 2, acest lucru
nseamn c este de 4 ori mai mic dect imaginea preluat de la webcam). Imaginea
upsampled se compune la fel ca la iteraia 1, iar detaliile imaginii iteraiei 2 se compune
prin metoda imgSub.
Iteraia 3
Se procedeaz la fel, rezultnd imaginea downsampled de 8 ori mai mic dect
imaginea original capturat de camera web.

n final, n funcie de parametrii setai de laten reea i streaming adaptiv, se trimit
imaginiile de detalii clientului pentru a fi ulterior procesate:
8

while (true)
{
sendImage(downsampled,0);
if (timeIsUp && adaptiveStreaming)
break;

sendImage(details3,0);
if (timeIsUp && adaptiveStreaming)
break;

sendImage(details2,0);
if (timeIsUp && adaptiveStreaming)
break;

sendImage(details1,0);
break;
}
sendImage(endframe,0);

Sfritul frame-ului este marcat de trimiterea unui bitmap de 1x1.
Pentru a avea o calitate ct mai bun a detaliilor se aplic algoritmul de compresie
Huffman
6
.
Subsistemul client este prezentat n figura 7:

Figura 7 - Interfaa grafic cu utilizatorul pentru subsistemul client

6
Data Compression using Huffman based LZW Encoding Technique - Md. Rubaiyat Hasan. International Journal of
Scientific & Engineering Research, Volume 2, Issue 11, November-2011 1 ISSN 2229-5518

9

Unde:
A: demareaz start-ul imaginilor de la webcam;
B: imaginea final rezultat din compunerea detaliilor primite de la server, care sunt
compresate Huffman;
C: filtrele pe care utilizatorul le poate aplica imaginii: blur, median, gaussian, bilateral,
binarizarea imaginii i detecia contururilor.
Aciunea declanat de apsarea butonului Start Video deschide socketul pentru
ascultarea pachetelor primite de la server.
Socket client = newsock.Accept();
IPEndPoint newclient = (IPEndPoint)client.RemoteEndPoint;

Se aloc un obiect de tipul MemoryStream care conine secvenele de octei ce compun
imaginiile transmise de la server. Mai departe, se interpreteaz iteraiile 1 - 3, astfel nct dup
compunerea unei imagini de detaliu se testeaz dac s-a primit bitmap-ul de sfrit frame. n
cazul n care imaginile au fost compresate Huffman la server, acestea se decodific nainte de
afiare.
Filtrele sunt aplicate imaginilor de detaliu, ele fiind stocate n memorie sub forma unei
structuri de variabile booleene. La alegerea unui filtru de ctre utilizator, se fac verificri n timp
real n thread-ul pentru ascultarea pachetelor. De exemplu, dac s-a selectat filtrul de
smoothGaussian, imaginea de detaliu primit este trecut prin acest filtru i apoi afiat. Se
utilizeaz funcia filterBitmap:
private Bitmap filterBitmap(Image image)
{
Bitmap res = (Bitmap)image;
Emgu.CV.Image<Rgb, Byte> imgOriginal = new Image<Rgb, byte>(res);

...

if (filters.smoothGaussian)
{
imgOriginal = imgOriginal.SmoothGaussian(25);
}


res = imgOriginal.ToBitmap();
return res;
}







10

Rezultate experimentale

n cadrul experimentelor am folosit o camer web A4Tech PK-760E
7
ce are o rezoluie
senzor de 0.3 MP
8
, o rezoluie foto de 5 MP i o rezoluie video de 2560 x 2048. Modul de
conectare cu calculatorul se face prin USB. De asemenea, am folosit un desktop PC dotat cu un
procesor Intel Core2 Duo E8400 3 GHz, plac video HIS ATI Radeon HD4870 512MB DDR5
256-bit i 4GB RAM DDR2. Testele au fost fcute n reeaua local i simulnd o laten din ce
n ce mai mare.
Primul scenariu de test l-am fcut pentru a evalua performanele cadrelor transmise pe
secund (FPS) n cazul aplicrii algoritmului Huffman. Rezultatele se pot vedea n graficul din
figura 8:

Figura 8 - Performane n termeni FPS cu i fr compresie Huffman
Se observ c cele mai bune performane le-am avut atunci cnd nu exist laten n reea
(0 %), unde am obinut o medie de aproximativ 38 fps n transmiterea secvenelor de imagini
bitmap avnd compresie Huffman, respectiv 29 fps fr compresie.
Putem concluziona c s-a observat o cretere a cadrelor pe secund cu aproximativ 30%
n cazul aplicrii algoritmului Huffman asupa imaginilor de detaliu.
Al doilea scenariu de test l-am fcut prin obinerea unei evaluri subiective ale
performanei de recompunere ale imaginii finale la receptor. Am obinut evaluarea unui grup de 5
persoane (3 biei i 2 fete) cu vrste cuprinse ntre 24-26 de ani, asupra calitii imaginii finale.

7
http://www.emag.ro/camera-web-a4tech-pk-760e/pd/EL812BBBM/
8
MP abr. mega pixeli
11

Fiecare subiect a trebuit s dea o not de la 1 la 10 asupra calitii a 3 secvene video
rulnd ntre 20 i 30 de secunde cu factori perturbatori de la un nivel sczut la unul accentuat.
Rezultatele experimentale se pot vedea n tabelul 2:
Tabelul 2 - Evaluarea calitii imaginiilor finale de la receptor
Subiect Clip
Durat clip
(secunde)
Nivel perturbaii /
micare camer
Not subiect
Subiect #1
(biat)
Clip #1 30 sczut 10
Clip #2 25 mediu 10
Clip #3 20 ridicat 9
Subiect #2
(fat)
Clip #1 30 sczut 9
Clip #2 25 mediu 8
Clip #3 20 ridicat 8
Subiect #3
(fat)
Clip #1 30 sczut 10
Clip #2 25 mediu 10
Clip #3 20 ridicat 9
Subiect #4
(biat)
Clip #1 30 sczut 10
Clip #2 25 mediu 10
Clip #3 20 ridicat 10
Subiect #5
(biat)
Clip #1 30 sczut 9
Clip #2 25 mediu 8
Clip #3 20 ridicat 8

Subiecii au vizionat sevene video mai nti normale, fr aplicarea operaiilor de
upsampling - downsampling. Acest lucru a fost necesar pentru ca ei s se poat obinui cu
webcam-ul i pentru a obine un punctaj ct mai relevamt pentru evaluarea algoritmilor. Se
observ c avem un scor de 9.2 / 10 n cazul n care avem un nivel mediu de perturbaie al
camerei web i un scor de 8.8 / 10 n condiii ridicate de micare al camerei.
12

Ultimul scenariu de test l-am fcut prin aplicarea filtrelor asupra imaginiilor de detaliu la
decodor. Scopul acestui test a fost de a obine o cretere a calitii imaginii finale prin aplicarea
unui filtru de imagine. Cele mai bune rezultate le-am avut cu un filtru Gaussian:.


Figura 9 - n stnga: imagine din secvena video fr filtru, n dreapta: captur cu filtru Gaussian
Concluzii

Am prezentat o implementare a tehnicilor de downsampling - upsampling care ofer
oricrui utilizator o experien plcut i continu a secvenelor video transmise printr-o reea
instabil.
De asemenea, am reuit s eficientizm algoritmii de calcul astfel nct am obinut o
imagine final la decodor de o calitate foarte bun.
Compresia Huffman vine n sprijinul nostru pentru a crete viteza de transmitere a
secvenelor de imagine, astfel am mrit numrul de cadre transmise pe secund cu 30%.
Propuneri pentru viitor

n viitor, dorim s folosim algoritmi de Super-Resolution dup aplicarea operaiei de
upsampling, pentru a mbunti i mai mult calitatea imaginii.
Mai mult, vrem s oferim o variant a sistemului pentru aplicaii mobile.


13

Referine

[1] Downsampling of compressed images in the DCT domain - A. N. Skodras, C. A.
Christopoulos - Electronics Laboratory, University of Patras, GR-26110 Patras, Greece;
Computer Technology Institute, PO box 1122, GR-26110 Patras, Greece; Ericsson
Telecom AB, Compression Lab, TN/ETX/PN/XML, S-126 25 Stockholm, Sweden.
[2] MPEG Video Compositing in the Compressed Domain - Y. Noguchi, D. G.
Messerschmitt and S.-F. Chang - Proc. IEEE ISCAS-96, 1996.
[3] 2:1 Upsampling-downsampling image reconstruction system - Mihai Cristian
TNASE, Mihai ZAHARESCU, Associate Professor PhD Eng. Ion BUCUR -
Department of Computer Science and Engineering, Faculty of Automatic Control and
Computers Science University Politehnica of Bucharest, Splaiul Independenei 313,
Bucharest, 060042, Romania.
[4] Fast Algorithm for Computing Discrete Cosine Transform - C. W. Kok. IEEE Trans
on Signal Processing, Vol. 45, No. 3, pp. 757-760, Mar. 1997.
[5] Image and Video Compression Standards: Algorithms and Architectures - V.
Bhaskaran and K. Konstantinides - Second Edition, Kluwer Academic Publishers, 1997.
[6] Image Super-Resolution by Vectorizing Edges - Chia-Jung Hung, Chun-Kai Huang,
Bing-Yu Chen, National Taiwan University, 1999.
[7] Local Thresholding Image Binarization using Variable-Window Standard
Deviation Response - Costin-Anton Boiangiu, Alexandra Olteanu, Alexandru Victor
Stefanescu, Daniel Rosner, Alexandru Ionut Egner - Proceedings of the 21st
International DAAAM Symposium, 20-23 October 2010, Zadar, Croatia, pp. 133-134.
[8] Downsampling dependent upsampling of images - Tamas Frajka, Kenneth Zeger -
University of California, San Diego, Department of Electrical and Computer
Engineering, 9500 Gilman Dr, MC0407, La Jolla, CA 92093-0407, USA - 2 October
2003.
[9] Mastering OpenCV with Practical Computer Vision Projects - Daniel Llis Baggio,
Shervin Emami, David Milln Escriv, Khvedchenia Ievgen, Naureen Mahmood, Jasonl
Saragih, Roy Shilkrot. ISBN-10: 1849517827 - 3 Decembrie 2012.

S-ar putea să vă placă și