Sisteme Multimedia (Severin Bumbaru)

download Sisteme Multimedia (Severin Bumbaru)

If you can't read please download the document

description

Severin Bumbaru Sisteme Multimedia

Transcript of Sisteme Multimedia (Severin Bumbaru)

i\m UvySeverin BUMBARUEste profesor universitar n cadrul Catedrei de Calculatoare i Informatic Aplicat a Universitii "Dunrea de Jos" din Galai.Este conductor de doctorat n domeniul tiina Calculatoarelor.Este titularul disciplinelor: Tehnici de programare, Programare n limbajul Java, Structuri de date i algoritmi.Printre domeniile de interes se numr limbaje de programare orientate obiect, algoritmi i tehnici de programare, inteligena artificial.Ciprian-Daniel NEAGUA absolvit Facultatea de Automatic din cadrul Institutului Politehnic "Gheorghe Asachfdin lai n 1990.Este doctor inginer n tiina Calculatoarelor din septembrie 2000.Este ef de lucrri n cadrul Catedrei de Calculatoare i Informatic Aplicat a Universitii "Dunrea de Jos" din Galai.Este titularul disciplinelor: Sisteme grafice, Multimedia i Hypermedia, Grafic pe calculator.Printre domeniile de interes se numr proiectarea site-urilor web, grafica pe calculator, inteligena artificial, reelele neuro-fuzzy.Ciprian-Daniel NEAGUSeverin BUMBARUSISTEME MULTIMEDIAGRAFICA PE CALCULATORMATRIX RQM BUCURETI 2001MATRIX ROMCP. 16 - 16277500 - BUCURETItel. 01.4113617, fax 01.4114280e-mail: [email protected] 973 - 685 - 315 - 2Sisteme multimedia. Grafic pe calculatorCuvnt nainteSisteme Multimedia. Grafic pe calculator: o introducere concis n universul multimedia, focalizat apoi pe subiectul graficii pe calculator. Definete sugestiv, clar i cu exemple la obiect noiunile de care un utilizator are nevoie pentru a ptrunde n domeniul dinamic al aplicaiilor sistemelor de calcul.Cartea este format din patru pri. Ciprian-Daniel Neagu i Severin Bumbaru ncep prin a defini i caracteriza componentele multimedia, exemplificat i bogat ilustrat. Muli cititori vor fi plcut impresionai de comentariile practice, adugiri care, n doar cteva cuvinte, clarific noiuni tabu", altfel considerate extrem de specializate: multimedia, dispozitive grafice, rezoluie, tehnici de compresie, digital audio, fiiere grafice. Totul prezentat n fraze clare, fr exprimri nclcite. Noiunile introduse sunt urmate de descrieri ale standardelor sau aplicaiilor caracteristice n domeniu. De cele mai multe ori reconsiderate n exemple. Aplicaiile, bine alese, construite n cod Java, fac legtura ntre trei zone altfel considerate eclectice: dispozitivele multimedia, programarea Java i grafica computaional. La sfritul primului capitol, avem ansa de a ne fi construit o opinie unitar despre gama actual de dispozitive multimedia, dar i despre metodele de procesare a sunetelor i imaginii. Aceste informaii ne dau o ans n plus s lum hotrri bine fundamentate n cazul n care am dori, spre exemplu, s alegem singuri un sistem multimedia modern.Trecerea n revist a bibliotecilor Java specializate n prelucrarea grafic este un capitol de referin pentru orice programator care dorete s se specializeze n tehnicile moderne de programare pentru grafica pe calculator. Capitolul al doilea este un tutorial care ne introduce, pas cu pas, n domeniul programrii Java, pentru scrierea aplicaiilor de prelucrare a textului, imaginilor, culorilor i a altor resurse multimedia. Exemplele sunt simple i de efect, atrgnd cititorul s parcurg ct se poate de direct un domeniu att de bogat n nouti i informaii. Aceast caracteristic propune volumul de fa ca o bun alegere att pentru utilizarea n coal, ct i pentru un cititor independent curios i dornic de cunoatere.Aplicaiile Java de anvergur din partea a treia sunt la obiect, propunnd cititorului, prin subiecte i soluii, o viziune asupra cunoscutelor noiuni matematice cu aplicaii n grafica pe calculator. Un capitol n care sunt prezentate noiunile de baz i este introdus vocabularul caracteristic, bogat ilustrat grafic i matematic. Sisteme de coordonate, algoritmi de reprezentare a figurilor geometrice de baz, conversii i relaii matematice sunt introduse clar i exemplificate n Java.Capitolul patru, mult mai dens, este dedicat geometriei computaionale. Conceptele, mai dificile, legate de transformri geometrice, scalari, rotaii, simetrii, transformri afine, transformri compuse 2D i 3D, metodologia reprezentrii pe magicul ecran de calculator a universului virtual 3D, sunt prezentate, definite i exemplificate. Algoritmii propui i demonstreaz utilitatea n exemplele Java, de data aceasta de amploare.Cartea este bogat ilustrat; n plus, putem parcurge o bogat list de aplicaii i coduri surs, ca i de tabele. Una din virtuile majore ale volumului de fa este domeniul extrem de larg abordat i clarificat prin exemple. Este scris folosind un stil vioi, informativ, cu o clar dorin de aplicaie.Rmne doar ntrebarea: Ct de repede i de mult trebuie s scrii pentru a ine pasul cu domeniul exploziv al aplicaiilor multimedia n general, i al graficii n special". Indiferent de rspuns, rmne dorina de a pstra i a puncta istoria, prospt dar att de bogat, a epocii calculatoarelor.Conf. dr. mg. Vasile PaladeComputing Laboratory, Oxford UniversityiiiSisteme multimedia. Grafic pe calculatorINTRODUCEREAstzi, toi suntem familiarizai cu produsele multimedia, cu grafica pe calculator, n sensul c suntem asaltai zilnic de produse digitale la televizor, n filme, n cri, reviste, n magazine sau pe ecranul calculatoarelor. Chiar n aceste condiii, cei mai muli dintre noi cunosc puin despre acest domeniu. Ce sunt aceste produse? Cum pot fi create? Cum pot fi folosite? De ce s le folosim? Chiar i unii specialiti n utilizarea aplicaiilor multimedia nu sunt cteodat capabili s defineasc natura elementelor pe care le folosesc. Spre exemplu, dac ar fi s considerm doar natura elementelor grafice att de des utilizate, de ce redimensionarea unui desen poate conduce la distorsionarea sau degradarea imaginii oferite... sau cum s crem i s manipulm efectele de imagine puse la dispoziie de aplicaiile multimedia contemporane?Acest volum ncearc s rspund unor astfel de ntrebri i s propun cititorului o introducere documentat i exemplificat n acest domeniu, cu scopul de a prezenta noiunile legate de multimedia i grafica pe calculator i de a le folosi efectiv. De aceea, acest demers nu este destinat programatorilor avansai, interesai, spre exemplu, de algoritmi specializai de decodificare a fiierelor GIF, sau de curbele Bezier. Este ns destinat cititorului familiarizat, cu noiuni de baz de tehnologia informaiei i de programare. Informaia pus la dispoziia cititorului este ndreptat spre practic, astfel nct, odat parcurs un capitol, cititorul s poat aplica informaia acumulat. n acest scop, noiunile sunt introduse teoretic (putnd fi aplicate indiferent de mediul de dezvoltare preferat de cititor). n marea majoritate sunt particularizate i exemplificate prin aplicaii Java cu scopul de a oferi finalitate. n acest scop, un capitol este dedicat abordrii graficii pe calculator i tehnicilor multimedia n mediul Java. Astfel, soluiile propuse cititorului sunt aplicabile indiferent de platforma utilizat.Capitolul 1, Sisteme multimedia (Ciprian-Daniel Neagu, pag. 1-54), se refer la prezentarea ansamblului tehnicilor digitale de prelucrare a informaiei, un domeniu dinamic i variat. Sunt explorate componente i concepte multimedia - n particular audio i video - pentru care sunt propuse definiii, clasificri, caracterizri ale dispozitivelor i aplicaiilor. n cazul componentelor grafice, sunt discutate att cele dou modaliti de reprezentare a informaiei - bitmap i vectorial - ct i tehnici de compresie i formate de fiiere. Anumite concepte (rezoluie, tehnici de compresie, codificarea culorii, paleta de culori) sunt exemplificate prin aplicaii Java.Capitolul 2, Introducere n grafica Java (Severin Bumbaru, pag. 55-106), propune o prezentare la obiect a componentelor limbajului Java care permit att scrierea unor aplicaii grafice, ct i publicarea acestora pe Internet, sub form de applet-uri. Fiecare noiune sau clas introdus este exemplificat prin cod Java de dimensiuni reduse i comentat.Capitolul 3, Noiuni matematice folosite n aplicaii de grafic pe calculator(Ciprian-Daniel. Neagu, pag. 107-118), face o introducere a elementelor matematice, n special de geometrie i trigonometrie, necesare n cazul n care dorim s elaborm aplicaii n grafica pe calculator. Noiunile teoretice sunt nsoite de reprezentri grafice i exemplificri dezvoltate n limbajul Java.vCiprian-Daniel NEAGU, Severin BUMBARUCapitolul 4, Transformri geometrice (Ciprian-Daniel Neagu, pag. 119-159), propune att o trecere n revist a noiunilor teoretice, ct i algoritmi i exemple de reprezentare a obiectelor bidimensionale i tridimensionale pe calculator. Transformrile prin care obiectele ajung s fie prelucrate sunt abordate succint i exemplificate prin aplicaii Java.La sfritul lucrrii sunr ataate trei anexe (Ciprian-Daniel Neagu, pag. 160-199), n care sunt completate aplicaiile de amploare prezentate n capitolele anterioare. Coduri surs complete, detalii i actualizri pot fi obinute i de pe pagina web a autorilor (http://www.cs.ugal.ro/dneagu). n final, un index bibliografic este propus cititorului care dorete s ptrund mai adnc n alte capitole specifice ale domeniilor multimedia i graficii pe calculator.Sperm c efortul depus va conduce la posibilitatea unei lecturi utile.Autorii.Sisteme multimedia. Grafic pe calculatorCuprins1.Sisteme multimedia1 1.1.Introducere1 1.2.Termenul Multimedia2

1.2.1.Istoria sistemelor multimedia2 1.2.2.Definiia termenului multimedia31.3.Componentele unui sistem multimedia4 1.3.1.Cerine hardware minime pentru un sistem multimedia4 1.3.2.Dispozitive de intrare pentru sisteme multimedia5 1.3.3.Procesarea sunetului: dispozitive digital audio8 1.3.4.Procesarea imaginilor: dispozitive grafice11 1.3.5.Reprezentarea culorii18 1.3.6.Standarde ale adaptoarelor grafice25 1.3.7.Dispozitive de trasare27 1.3.8.Aplicaii grafice301.4.Formatele fiierelor de grafic32 1.4.1.Modele de reprezentare32 1.4.2.Modul bitmap (hri de bii)32 1.4.3.Compresia imaginii n fiiere bitmap36 1.4.4.Modul vectorial532.Introducere n grafica Java552.1.Interfeele utilizator grafice n Java55 2.1.1.Interfeele grafice AWT55 2.1.2.Interfeele grafice Swing562.2.Componente grafice i containere56 2.2.1.Clasa Component56 2.2.2.Clasa Applet572.3.Culori i fonturi59 2.3.1.Clasa Color59 2.3.2.Clasa Font60

2.4.Desenarea n Java AWT62 2.5.Desenarea folosind contextul grafic dat de clasa Graphics63

2.5.1.Sistemul de coordonate63 2.5.2.Metodele clasei Graphics....,64 2.5.3.Exemple de utilizare a clasei Graphics652.6.Desenarea folosind contextul grafic dat de clasa Graphics2D70 2.6.1.Crearea instanei contextului grafic Graphics2D70 2.6.2.Sistemul de coordonate71 2.6.3.Metodele clasei Graphics2D71 2.6.4.Crearea i utilizarea formelor72 2.6.5.Interfaa Shape73 2.6.6.Caracteristicile formelor primitive73 2.6.7.Forme generale77 2.6.8.Stiluri de linii80 2.6.9.Umplerea formelor83

2.6.10.Transformri ale sistemului de coordonate al contextului grafic87 2.6.11.Decuparea unei zone a desenului92 2.6.12.Transformarea textului n form92 2.6.13.Crearea i compunerea ariilor94

2.7.Programarea orientat pe evenimente96 2.8.Proiectarea unei aplicaii cu interfa utilizator grafic98

2.8.1.Clasele Frame i JFrame99 2.8.2.Alegerea componentelor atomice101 2.8.3.Folosirea containerelor auxiliare104 2.8.4.Adugarea componentelor la fereastra principal1063.Noiuni matematice folosite n aplicaii de grafic pe calculator107 3.1.Sisteme de coordonate. Coordonate carteziene107 3.2.Coordonate polare107L Ciprian-Daniel NEAGU, Severin BUMBARU 3.3.Conversia ntre sistemele de coordonate carteziene i polare (n spaiul bidimensional, 2D)'.108 3.4.Linii...109

3.4.1.Ecuaia parametric a unei drepte109 3.4.2.Ecuaia parametric a unei drepte ntr-un sistem cartezian 3D109 3.4.3.Algoritm de determinare a distanei dintre un punct i o dreapt ntr-un sistem cartezian de coordonate 2D110 3.4.4.Determinarea interseciei a dou drepte111 3.4.5.Algoritm de determinare a apartenenei unui punct de pe o linie dat la un segment dat111

3.5.Seciuni conice111 3.6.Cercul1123.7.Poligoane1163.7.1. Convexitatea i concavitatea poligoanelor,1163.8.Plane117 3.8.1.Algoritm de caracterizare a unui vector normal la plan....117 3.8.2.Intersecii118 3.8.3.Poziii relative la un plan dat118 3.8.4.Semiplane1184.Transformri geometrice1194.1.Transformri bidimensionale (2D)119 4.1.1.Translaia119 4.1.2.Scalarea122 4.1.3.Rotaia1224.2.Transformri afine. Transformri compuse129 4.2.1.Transformarea de rotaie130 4.2.2.nclinarea fa de o ax131 4.2.3.Scalarea dup o ax131 4.2.4.Reflexia131 4.2.5.Cazuri particulare137 4.2.6.Transformri afine inverse138

4.3.Sisteme carteziene de referin138 4.4.Transformri tridimensionale141

4.4.1.Translaia. Rotaia. Simetrii. nclinri141 4.4.2.Proiecii147 4.4.3.Transformri proiective151 4.4.4.Structuri de date pentru reprezentarea obiectelor n spaiul tridimensional153 4.4.5.Concluzii privind procesarea obiectelor n spaiul tridimensional154

5.Anexa I: sursele aplicaiei RGB (capitolul I)160 6.Anexa II: sursele aplicaiilor privind transformrile 2D (capitolul IV)171 7.Anexa III: sursele aplicaiilor privind transformrile 3D (capitolul IV)182 8.BIBLIOGRAFIE'.199Sisteme multimedia. Grafic pe calculatorIndexul figurilorFigura 1-1. Dispozitive alternative de introducere a informaiei multimedia: (a) mouse; (b) trackball; (c) track ball incorporat (sisteme portabile); (d) touch pad5Figura 1-2. Dispozitive alternative de introducere a informaiei multimedia: (a) light pen; (b)joystick; (c) scanner7Figura 1-3. Aplicaia Macromedia Soundedit: lista de opiuni de meniu Effects, fereastraprincipal i fereastra de control9Figura 1-4. Fereastra Cubase Transport Bar-emuleaz o interfa Tape Recorder10Figura 1-5. Fereastra Cubase Arrange pentru aranjamente muzicale10Figura 1-6. Fereastra Cubase Audio Editing cu lista de funcii Edit10Figura 1-7. Cubase Score Notation Sheets Editing11Figura 1-8. Configuraia unui sistem de afiare a imaginii: (a) arhitectura standard; (b)arhitectur cu accelerator grafic12Figura 1-9. Rezoluia i dependena de numrul de bii pe pixel, culoare i dimensiune: (a)imagine colorat, rezoluie mare, 8b culoare; (b) imagine colorat, rezoluie mic, 4bculoare; (c) imagine gri, rezoluie medie, 8b nuane de gri; (d) imagine alb/negru,rezoluie mic, 1b culoare13Figura 1-10. Arhitectura acceleratorului grafic18Figura 1-11. Cubul culorilor: (a) codificarea RGB n domeniul [0,1]; (b) codificarea CMY ndomeniul [0,1]20Figura 1-12. Applet RGB pentru exemplificarea modelului RGB de codificare a culorilor20Figura 1-13. Tehnologia de transmitere a semnalului de imprimare ctre dispozitivul deimprimare pentru imprimante (a) laser; (b) LED28Figura 1-14. Tehnologii de imprimare cu cerneal: (a) imprimare piezoelectric; (b) imprimaretermic:29Figura 1-15. Rularea i stabilirea caracteristicilor unui fiier GIF animat folosind aplicaia MSGIF Animator33Figura 1-16. Modelul zigzag aplicat unui fiier JPG34Figura 1-17. Algoritmul Shannon-Fano aplicat irului ABCDE37Figura 1-18. Algoritmul Huffman aplicat irului ABCDE38Figura 1-19. Un arbore Huffman38Figura 1-20. Arborele Huffman dup o schimbare de nod (A incrementat de dou ori)39Figura 1-21. Arborele Huffman dup o nou schimbare de nod (A reincrementat)39Figura 1-22. Un exemplu de imagine supus codificrii DE41Figura 1-23. Codorul DPCM42Figura 1-24. O seciune din harta de bii pentru modelul de codificare DPCM42Figura 1-25. Decodor DPCM43Figura 1-26. Codor DM43Figura 1-27. Applet-ul Compress pentru exemplificarea a cinci algoritmi de compresie ainformaiei grafice: DPCM, Delta, RLE, Zero supression si Huffman46Figura 2-1. Vizualizarea appletului Exemplul67Figura 2-2. Vizualizarea appletului Exemplu268Figura 2-3. Vizualizarea appletului Exemplu370Figura 2-4. Aspectul formelor primitive rectangulare74Figura 2-5. Forme primitive rectangulare n Java2D75Figura 2-6. O curb patratic i cele trei puncte caracteristice76Figura 2-7. Dou curbe cubice: cu punct de inflexiune (stnga) i fr (dreapta). B i C suntpunctele de control76Figura 2-8. Situaie n care curba cubic se autointersecteaz77Figura 2-9. Forme realizate folosind clasa GeneralPath80Figura 2-10. Capete i mbinri de linii81Figura 2-11. Diferite stiluri de linii82Figura 2-12. Umplerea figurilor cu culoare uniform, cu gradient aciclic i cu gradient ciclic. ..84Figura 2-13. Un dreptunghi i o elips umplute cu textur85Figura 2-14. O figur obinut prin rotaie87Figura 2-15. Translaii i schimbri de scar89Figura 2-16. nclinarea axelor de coordonate: nainte (linii subiri) i dup transformare (liniigroase)90IXCiprian-Daniel NEAGU, Severin BUMBARUFigura 2-17. Efectul nclinrii axelor: forma iniial (stnga) i cea obinut dup transformare(dreapta)90Figura 2-18. Un exemplu de text transformat ntr-o form93Figura 2-19. Compunerea ariilor: a - reuniune (add), b - diferen (subtract), c -intersecie(intersect), d - sau exclusiv (exclusiveOr)95Figura 2-20. Transmiterea evenimentelor de la surse la asculttori97Figura 2-21. Fereastra principal a unei aplicaii, realizat prin extinderea clasei Frame. 1 -pictograma; 2 - bara de titlu; 3 - buton de minimizare; 4 - buton demaximizare/restaurare; 5 - buton de nchidere; 6 - bordura; 7 - cmpul ferestrei99Figura 2-22. Ierarhia claselor de butoane102Figura 3-1. Sistem de coordonate carteziene 2D107Figura 3-2. Sistem de coordonate polare 2D107Figura 3-3. Determinarea coordonatelor carteziene ale unui punct caracterizat prin coordonatepolare108Figura 3-4. mprirea unei grile bidimensionale n cadrane i octante108Figura 3-5. Caracterizarea unei linii ntr-un sistem cartezian 2D109Figura 3-6. Distana dintre dou puncte ntr-un sistem de coordonate carteziene 2D110Figura 3-7. Distana dintre un punct i o dreapt ntr-un sistem cartezian de coordonate 2D.110Figura 3-8. Intersecia unui con cu un plan:(a) cerc; (b) elips; (c) parabol; (d) hiperbol. ...112 Figura 3-9. Descrierea cercului cu centrul n originea unui sistem de coordonate: (a)carteziene; (b) polare112Figura 3-10. Trasarea sectoarelor de cerc n coordonate carteziene113Figura 3-11. Polilinii: (a) polilinie inchis; (b) polilinie simpl116Figura 3-12. Tipuri de poligon: (a) convex; (b) concav; (c) poligon ce se autointersecteaz. .117Figura 4-1. Translaia unui obiect bidimensional119Figura 4-2. Applet-ul Translation: un exemplu de translaie a dou puncte n sistemul decoordonate 2D: (a) modul 0 - translaie; (b) modul 1 - modificarea vectorului detranslaie120Figura 4-3. Rotaia unui obiect fa de originea sistemului de coordonate122Figura 4-4. Applet-ul Rotation: un exemplu de rotaie a obiectelor n sistemul de coordonate2D123Figura 4-5. Combinaii afine129Figura 4-6. Scalarea dup o ax: (a) figura iniial; (b) figura scalat dup axa Y; (c) figurascalat dup axa X131Figura 4-7. Applet-ul Reflection: un exemplu de rotaie a obiectelor n sistemul de coordonate2D132Figura 4-8. Caracterizarea unei ferestre de vizualizare in WCS139Figura 4-9. Transferul unei imagini din coordonate WCS n coordonate DCS140Figura 4-10. Un caz particular de transfer din WCS n DCS140Figura 4-11. Rezultatul applet-ului Rotation: (a,b) secvene de rotaie 3D; (c,d) obiectul scalat3D i rotit 3D142Figura 4-12. Proiecie perspectiv a segmentului relativ la centrul de proiecie147Figura 4-13. Proiecie paralel a segmentului relativ la direcia de proiecie147Figura 4-14. Proiecii perspective148Figura 4-15. Suprafaa de trasare pentru proiecia: (a) oblic; (b) izometric150Figura 4-16. Proiecie perspectiv avnd centrul de proiecie n originea sistemului decoordonate151Figura 4-17. Proiecie perspectiv avnd planul de proiecie xOy151Figura 4-18. Cubul unitate153Figura 4-19. Transformri 3D cu surs de lumin aplicate unui cub155Figura 4-20. Transformri 3D cu surs de lumin aplicate unei piramide155Figura 4-21. Transformri 3D cu surs de lumin aplicate unei prisme155Indexul tabelelorTabelul 1-1 Criteriul de alegere: rata de remprosptarea imaginii26Tabelul 1-2. Criteriul de alegere: memoria video26Tabelul 1-3. Principalele formate de fiiere bitmap32Tabelul 1-4. Structura formatului bitmap pentru sistemele Windows35Tabelul 1-5. Algoritmul Shannon-Fano aplicat irului ABCDE37Sisteme multimedia. Grafic pe calculatorTabelul 1-6. Algoritmul Huffman aplicat irului ABCDE37Tabelul 1-7. Exemplu de aplicare a algoritmului de compresie LZW40Tabelul 1-8. Exemplu de aplicare a algoritmului de decompresie LZW41Tabelul 1-9. Definiia codurilor escape pentru compresie 4b RLE45Tabelul 1-10. Exemple de secvene codificate 4b RLE45Tabelul 1-11. Exemple de secvene codificate 8b RLE45Tabelul 1-12. Principalele formate de fiiere vectoriale54Indexul aplicaiilorAppiet 1-1. Imageres.java14Appiet 1-2. Aplicaia RGB: rgbChooser.java21Appiet 1-3. Compress.java: exemplificarea a cinci algoritmi de compresie a informaiei grafice:DPCM, Delta, RLE, Zero supression si Huffman46Appiet 2-1. CeFonturi.java: numele fonturilor disponibile pe sistemul gazd61Appiet 2-2. Exemplul java: un exemplu de suprafa de desen65Appiet 2-3. Exemplu2.java: exemplificarea influenei modificrii opacitii culorii67Appiet 2-4. Exemplu3.java: afiarea imaginilor importate68Appiet 2-5. FormeRectang.java: desenarea i umplerea formelor primitive75Appiet 2-6. Curbalnscrisa.java: utilizarea clasei GeneralPath78Appiet 2-7. StiluriLinii.java: stiluri de linii utilizate pentru trasare82Appiet 2-8. Umplere.java: Umplerea figurilor folosind culoare uniform i gradient84Appiet 2-9. Textura.java: exemplificarea tehnicilor de obinere i utilizare a texturii86Appiet 2-10. Rotiri.java: rotirea unei figuri n jurul unui punct fix88Appiet 2-11. Scara.java: schimbri de scar i translaii89Appiet 2-12. Inclinare.java: efectul nclinrii axelor asupra unei forme geometrice90Appiet 2-13. TextForma.java: transformarea unui ir de caractere ntr-o form.93Appiet 2-14. AriiCompuse.java: operaii de compunere a dou cercuri95Appiet 2-15. OAplicatie.java: fereastra principal a unei aplicaii,.99Appiet 3-1. ArcTest.java: trasarea sectoarelor de cerc n coordonate carteziene113Appiet 4-1. Clasa Translation (fiierul Translation.java) pentru implementarea moduritor decontrol al caracteristicilor de translaie 2D120Appiet 4-2. Clasa RotationD (fiierul RotationD.java) pentru implementarea modurilor decontrol al caracteristicilor de rotaie 2D124Appiet 4-3. Clasa ReflectionD (fiierul ReflectionD.java) pentru implementarea modurilor decontrol al caracteristicilor de reflexie 2D133Appiet 4-4. Rotation.java: scalari i rotaii 3Dale unui obiect143Appiet 4-5. ViewFrame.java: obiect 3D n micare, sub o surs de lumin156Appiet 5-1. Fiierul finalColor.java: aplicaia RGB160Appiet 5-2. Fiierul axis.java: aplicaia RGB161Appiet 5-3. Fiierul Chooser.java: aplicaia RGB163Appiet 5-4. Fiierul ColorSplatch.java: aplicaia RGB163Appiet 5-5. Fiierul matcher.java: aplicaia RGB163Appiet 5-6. Fiierul matchHolder.java: aplicaia RGB166Appiet 5-7. Fiierul NoFlickerAppIet.java: aplicaia RGB167Appiet 5-8. Fiierul picker.java: aplicaia RGB167Appiet 5-9. Fiierul urILabel.java: aplicaia RGB...170Appiet 6-1. Fiierul Translation.java: aplicaia Transformations171Appiet 6-2. Fiierul MyMath.java: aplicaia Transformations178Appiet 6-3. Fiierul Picture.java: aplicaia Transformations179Appiet 7-1. Fiierul Face.java: aplicaia ViewFrame183Appiet 7-2. Fiierul FileFormatException.java: aplicaia ViewFrame183Appiet 7-3. Fiierul Line.java: aplicaia ViewFrame183Appiet 7-4. Fiierul Matrix.java: aplicaia ViewFrame183Appiet 7-5. Fiierul Object3D.java:aplicaia ViewFrame186Appiet 7-6. Fiierul SurfaceFrame.java: aplicaia ViewFrame189Appiet 7-7. Fiierul Vector java: aplicaia ViewFrame197Appiet 7-8. Fiierul Vertex.java: aplicaia ViewFrame1981. SISTEME MULTIMEDIA1.1. IntroducereAprute n anii '80, calculatoarele personale (Personal Computers, PC) au cunoscut o dezvoltare deosebit att n ceea ce privete partea hardware ct i n programe (software). De la nceput s-a constatat c prezentarea grafic a rezultatelor programelor prezint avantaje: nelegere rapid, form atractiv de prezentare, personalizarea interfeei. Aceasta a condus la creterea eforturilor pentru realizarea i dezvoltarea adaptoarelor grafice i a dispozitivelor periferice grafice. Din punct de vedere tradiional, PC-urile erau folosite pentru gestionarea textelor i cifrelor. Odat cu dezvoltarea erei informaionale, sunt capabile s combine sunete, secvene video, imagini grafice, animaie provenite de pe CD-ROM, magnetoscop, camer video, DVD, microfon etc. Astzi, PC-urile sunt dotate cu plci sonore i cititoare CD-ROM/ DVD pentru difuzarea sunetelor, muzicii, imaginilor, exploatrii marilor baze de date (enciclopedii, bnci de date incluznd fotografii pentru CAD, secvene audio i video pentru publicistic sau reclam).Deoarece performanele aplicaiilor grafice (vitez, rezoluie, numr de culori) sunt strns legate de performanele sistemului folosit precum i a dispozitivelor periferice, vom prezenta att o trecere n revist a noiunilor de multimedia hardware (echipamente i arhitecturi multimedia, n special dispozitivele de vizualizare i interaciune grafic), ct i a informaiilor legate de software multimedia (formate de fiiere folosite n grafic, programare i aplicaii grafice, biblioteci grafice specializate). Multe dintre caracteristicile multimedia vor fi exemplificate n continuare prin mini-aplicaii Java (applet-uri).Sistemele multimedia n general, componenta grafic pe calculator n special, au cunoscut practic o extindere exhaustiv a domeniilor de aplicaie. Putem enumera: -educaie (la distan): informaia vizual reprezint peste 75% din informaia procesat de creier, cu un impact deosebit asupra persoanei receptoare; -cercetare tiinific: simulri i reprezentarea datelor experimentale; -inginerie: aplicaii CAD (Computer Aided Design - proiectare asistat de calculator), CAM (Computer Aided Manufacturing - fabricaie asistat de calculator), CAE (Computer Aided Engineering - inginerie asistat de calculator), comanda i urmrirea proceselor automate; -cartografie, metrolologie i prospectarea resurselor folosind GIS (Geographic Information Systems); -economie i conducere economic; -simulatoare (pilotare) pentru antrenarea piloilor n aeronautic, dar i n colile de oferi; -art vizual, comer i reclam, jocuri video.Tendinele de dezvoltare sunt axate pe integrarea tratrii imaginii i sunetului n produsele software (ajungnd pn la proiectata "excludere" a dispozitivelor tradiionale de intrare: tastatur i mouse), utilizarea extensiv a CD-ROM i1Ciprian-Daniel NEAGU, Severin BUMBARUDVD, dezvoltarea aplicaiilor pentru videoconferinte. Toate acestea au devenit posibile datorit impunerii standardelor pentru comunicaii i comprimarea datelor, integrrii funciilor audio i video n procesoare, serviciilor de telecomunicaii prin satelit i cablu i a dezvoltrii autostrzilor informaionale.1.2. Termenul Multimedia7.2.1 Istoria sistemelor multimediaDin punct de vedere istoric, ziarele pot fi considerate primele medii de comunicare n mas din perioada modern care au folosit (i folosesc) atribute multimedia: text, desene, imagini.n 1895, Gugliemo Marconi a realizat prima transmisie radio la Pontecchio, Italia. Civa ani mai trziu (n 1901), el recepioneaz primele unde radio transmise peste Oceanul Atlantic. Inventat iniial pentru telegraf, radioul a devenit n scurt timp un mijloc major pentru transmisii audio.Televiziunea a fost noul mijloc de comunicare n mas introdus n secolul 20. Aceasta include componenta video (imaginea), revoluionnd universul comunicrilor n mas.O list extrem de srac a evenimentelor caracteristice multimedia n domeniul IT ar putea cuprinde: -1967 - Negroponte formeaz Architecture Machine Group la MIT (Massachusetts Institute of Technology); -1969 - este promovat editorul hypertext propus de Nelson i Van Dam; -anii 1970 - naterea Internet-ului; -1971-E-mail; -1976 - Architecture Machine Group propune n cadrul DARPA (Defense Advanced Research Projects Agency, SUA) proiectul Multiple Media; -1980 - Lippman i Mohl dezvolt la MIT, n cadrul Institute of Technology Media Laboratory, sistemul hypertext Aspen Movie Map, ce incorpoeaz grafic, animaie i video; -1985 - Negroponte i Wiesner deschid Media Lab n cadrul MIT; -1989 - Tim Berners-Lee propune conceptul World Wide Web la CERN (European Council for Nuclear Research); -1990 - Apple Multimedia Laboratory, proaspt deschis, reunete 100 specialiti n multimedia focalizat n educaie, urmnd ca n 1991 s apar sub copyright Apple Multimedia Lab, Visual Almanac i Classroom MM Kiosk; -1992 - primul M-bone audio multicast n Internet; -1993 - University of Illinois National Center for Supercomputing Applications propune browser-ul NCSA Mosaic; -1994 - Jim Clark i Marc Andreesen lanseaz Netscape; -1995 - este lansat mediul JAVA pentru dezvoltarea aplicaiilor independente de platform;1996 - este lansat Microsoft Internet Explorer.2Sisteme multimedia1.2.2. Definiia termenului multimediaEtimologic, cuvntul multimedia este format prin alipirea prefixului muli (mai mult dect unul, mai multe) la media (pluralul! termenului medium - cu sensul de mijloc, intermediar, menire). Prin urmare, o traducere brut este aceea de mijloace multiple.Este necesar de subliniat c termenul media este o form de plural, form utilizat i n alte contexte: massmedia (mijloace de comunicare n mas), communication media (mijloace de comunicare), computer storage media (mijloace de stocare a informaiei procesate de calculator), presentation-media (mijloace de prezentare).n domeniul tehnologiei informaiei (Information Technology, IT), termenul multimedia este focalizat pe metodele de tratare a informaiei: stocare, procesare, producere, distribuire, transmitere, prezentare si percepie.Putem deci propune ca o prim definiie a termenului:Definiia 1: multimedia reprezint existena mai multor intermediari ntre sursa informaiei i destinaia ei.Particulariznd, putem propune:Definiia 2: multimedia reprezint mijloace multiple de stocare, transmitere, prezentare si percepie a informaiei.Deoarece discutm de domeniul IT, ne referim practic la termenul digital multimedia, pentru care este propus definiia:Definiia 3: digital multimedia este domeniul referitor la integrarea (controlat de calculator) a textului, graficii, imaginilor statice i n micare, animaiei, sunetelor, a oricror alte mijloace de reprezentare, stocare, transmitere i procesare digital a informaiei.Din definiie putem evidenia i diferitele tipuri de informaie procesate de sistemele multimedia: text, desene, imagini statice, imagini n micare, animaie, film, sunete. Evident, termenul multimedia se extinde att in categoria captrii informaiei, ct i a tratrii acesteia.Un sistem multimedia poate fi considerat aadar un sistem de calcul care conine dispozitive hardware i este capabil din punct de vedere software s integreze text, grafic, imagini statice i n micare, animaie, sunete, alte mijloace de reprezentare, stocare, transmitere, procesare digital a informaiei.O aplicaie multimedia este definit ca o component software ce se caracterizeaz prin procesarea, stocarea, generarea, manipularea informaiei multimedia (text, grafic, imagini, sunet/audio, animaie, video.n acest context, merit s subliniem c termenul hypertext se refer la informaia digital sub form text care conine legturi ctre alte documente text (cu alte cuvinte, are caracteristici neliniare, spre deosebire de documentele text obinuite, liniare). Extensia natural este adus de termenul hypermedia, care nglobeaz cele dou noiuni definite anterior, hypertext i multimedia.n concluzie, un sistem multimedia este un sistem de calcul care apeleaz un set de tehnologii ce fac posibil existena aplicaiilor de tip multimedia, cum ar fi: grafic PC, imagini i animaie 2D i 3D, video, redarea imaginilor3L Ciprian-Daniel NEAGU, Severin BUMBARUnregistrate i comprimate, aplicaiile legate de sunet (nregistrarea i redarea sunetului, sinteza vorbirii) .a. Alturi de acestea trebuie amintite tehnologii suport pentru multimedia, cum ar fi CD-ROM/DVD, reele locale i tehnologii de comprimare/ decomprimare a datelor. Acest domeniu se dezvolt odat cu creterea performanelor sistemelor de calcul de a prelucra n timp real fluxul de date din astfel de aplicaii.1.3. Componentele unui sistem multimedia1.3.1. Cerine hardware minime pentru un sistem multimediaSistemele multimedia se caracterizeaz prin faptul c sunt sisteme de calcul ce integreaz dispozitive multimedia, proceseaz informaie reprezentat digital i folosesc interfee multimedia interactive. n consecin, sistemele multimedia trebuie s dovedeasc o mare putere de procesare (pentru a putea prelucra n timp real cantiti mari de informaie digital), s se bazeze pe un sistem de operare compatibil multimedia (pentru interpretarea informaiei multimedia prin compresie/decompresie n timp real, transfer direct pe disc, scheduling, l/O streaming), s aib l/O eficiente i rapide (pentru nregistrri i redri n timp real), capacitate de stocare i memorare mare (evident, n termeni relativi, spre exemplu peste 50 -100 GB spaiu de stocare i peste 50 -100 MB memorie, memorie cache suficient), acces la reele de date (inclusiv Internet), instrumente software dedicate, user-friendly, pentru manipularea informaiei multimedia, proiectarea, dezvoltarea i furnizarea acesteia.Pentru o relativ standardizare au fost propuse normele Multimedia Personal Computer (MPC) Marketing Council, MPC2, care se dovedesc din ce n ce mai depite pentru a defini un sistem multimedia: un procesor cel puin 66MHz 486DX2, 8MB memorie RAM: i 540MB hard drive, CD-ROM double-speed cu timp de acces cel mult 280ms, o plac de sunet16-bit i un video adapter care suport culori minim reprezentate n 16-bit.Un sistem multimedia poate cuprinde: -dispozitive de achiziie (camer video, Video Recorder, microfon, tastatur, mouse, tablet grafic, dispozitive de intrare 3D, senzori tactili, dispozitive de intrare Virtual Reality, dispozitive de digitizare); -dispozitive de stocare a informaiei multimedia (Hard disk-uri, CD-ROM, Jaz/Zip drives, DVD etc); -dispozitive de conectare la reele de calculatoare (Ethernet, Token Ring, FDDI, ATM, Intranets, Internets); -sisteme de calcul (sisteme Multimedia Desktop, Workstations, hardware MPEGA/IDEO/DSP); -dispozitive de ieire/ afiare (cti CD-quality, digital High Definition TeleVision HDTV, Super Video Graphics Adapter SVGA, monitor Hi-Res, imprimant color, fax incorporat etc).n general, tehnologia multimedia lucreaz cu volum mare de date. Prin urmare, ca mediu ideal de stocare n acest domeniu s-a impus de la nceput CD-ROM (vezi specificaiile MPC2) cu capacitatea de peste 600MB. n urma evoluiei tehnologiilor n domeniul stocrii optice (laser) a informaiilor au aprut abordri noi. Este cazul DVD (Digital Versatile Disc), cu capaciti de4Sisteme multimedia4GB sau 8GB (dar standardele nu sunt nc unitare i acceptate de toi productorii). Diferena notabil adus de DVD fa de CD se refer la capacitatea de stocare, mrit semnificativ att prin faptul c pot folosi pentru scriere ambele fee ale discului, ct i prin posibilitatea de nregistrare a informaiei pe dou nivele de adncime, ceea ce dubleaz capacitatea iniial de stocare.n ce privete comunicarea ntre sisteme multimedia, s-a pus problema transmisiilor digitale pentru utilizatorii obinuii. Astzi, acestea se realizeaz n mod curent cu echipamente numite MODEM-uri (Modulation - DEModulation) care folosesc tehnica digital pentru transmiterea datelor pe liniile de comunicaie obinuite (analogice). Datorit faptului c reelele telefonice curente (numite i reele comutate) limiteaz viteza de transfer a datelor la valori care nu fac posibil transmisii multimedia de calitate, atenia s-a ndreptat spre echipamente cu fibre optice, satelii sau reele locale rapide (care permit un flux crescut de date).Tendinele n domeniul multimedia includ World Wide Web MBone (Multicast Backbone, echivalent radioului i televiziunii convenionale, dar transmise prin Internet), tehnologiile de integrare i implementare a cerinelor multimedia. Carrier, Switching, protocoale, aplicaii, algoritmi de codificare/compresie, baze de date). Se sper c viitorul va aparine autostrzilor multimedia, pe care vor fi vehiculate filme sau muzic la cerere.1.3.2. Dispozitive de intrare pentru sisteme multimediaDispozitivele de comunicare cu calculatorul au evoluat i s-au specializat odat cu creterea complexitii aplicaiilor multimedia. Unui sistem modern i se pot ataa diferite dispozitive de intrare. n principiu, se consider c orice dispozitiv de introducere date, altul dect tastatura, face parte din categoria dispozitivelor alternative de intrare.Mouse (figura 1-1 a) este un dispozitiv introdus de Xerox Corporation i rspndit pe desk-top computers de Apple Computer. Este o cutie mic din plastic dotat cu dou sau trei butoane identificate prin L(left), R(right) i/sau M(middle). Butoanele pot fi apsate independent n timp ce mouse-ul este deplasat pe o suprafa plan (mouse-pad). Prin intermediul unei aplicaii driver, deplasarea se traduce prin asocierea pe ecranul monitorului a unui indicator (avnd forma dictat de programul ce sesizeaz driver-ul mouse). Starea butoanelor este controlat de minim 70 ori/sec.

(a)(b)(c)(d)Figura 1-1. Dispozitive alternative de introducere a informaiei multimedia. (a) mouse; (b) track ball; (c) track ball incorporat (sisteme portabile); (d)touch pad. 5Ciprian-Daniel NEAGU, Severin BUMBARUUtilizarea aplicaiilor grafice este un non-sens fr existena unui dispozitiv compatibil mouse pentru acionarea pictogramelor disponibile. Poate fi conectat prin dou tipuri de conectori: PS/2 (rotund), respectiv priza serie COM father cu 9 ace, sau poate fi fr cablu (cordless mouse). Ultimul tip comunic prin intermediul undelor radio sau infraroii. Din punctul de vedere al digitizrii deplasrii, poate fi de tip mecanic (o bil de cauciuc, aflat n partea inferioar, transfer deplasarea ctre poteniometre (X,Y)), optomecanic (deplasarea mingii este detectat prin senzori optici) i optic (fr componente mecanice, bila de cauciuc este nlocuit cu un dispozitiv optic de citire a unor linii aflate pe un pad de construcie special).Track ball (figura 1-1b) este un dispozitiv de intrare similar ca i comportament i construcie mouse-ului, cu singura deosebire c mecanismul de micare se bazeaz pe acionarea direct, cu mna, a bilei de cauciuc (n unele cazuri este incorporat direct n tastatur. Variantele au fost implementate iniial pe sisteme Macintosh i, datorit economiei de spaiu, sunt preferate pe sistemele portabile (figura 1-1c).Touch pad (figura 1-1 d) este o suprafa mic, sensibil la atingere i presiune (pentru direcie i sens), folosit ca alternativ la track ball pe sisteme portabile.Tableta digitizoare este un dispozitiv de intrare ce const dintr-un stilou (numit i puck) i un pad (de fapt o tablet electronic). Imaginile desenate pe pad sunt convertite n cod procesat i afiat pe ecran. Este livrat cu instrumente software specifice prin care tableta electronic devine foaia de desen de pe ecran iar stiloul (ce poate servi i la alegerea liniilor, caracterelor i culorilor), devine o pensul sau un creion de haurare. Poate fi insoit de o folie transparent de plastic ce se suprapune peste pad astfel nct pe tablet se pot aeza desene sau fotografii care s fie reproduse prin trasare pe ecran. Difer de mouse prin faptul c toate deplasrile sunt relative la poziia curent a cursorului. Variantele actuale furnizeaz i un mod emulat mouse, n care stiloul acioneaz ca un mouse.Touch screen este un dispozitiv de intrare care permite alegerea comenzilor ctre calculator prin simpla atingere a ecranului. Introdus odat cu Hewlett Packard HP-150, lucreaz pe principiul emiterii unei reele de raze infraroii n vecintatea ecranului. Dac reeaua este ntrerupt ntr-un punct, se genereaz o valoare unic a poziiei, ce se transmite calculatorului. Aceasta nseamn c poziionarea ctre un command box aflat n colul stnga-jos al ecranului (originea sistemului de coordonate al reelei) conduce la ntreruperea reelei la coordonatele (0,0).Creionul optic (light pen, figura 1-2a) este o combinaie ntre touch screen i tableta digitizoare, prin care pad-ul optic devine touch screen iar activrile coordonatelor de ecran (spre exemplu, selectarea unor obiecte) i, implicit, apelul funciilor pictogramelor, sunt realizate prin transformarea stiloului n creion optic. Monitorul are incorporat un detector sensibil la lumin care s permit selectarea poziiilor de pe ecran.6Sisteme multimedia

(a)(b)(c)Figura 1-2. Dispozitive alternative de introducere a informaiei multimedia: (a) light pen; (b) joystick; (c) scanner.Joystick (figura 1-2b) este un dispozitiv de intrare folosit n special n aciuni de control de timp real pe ecran. Majoritatea acestora lucreaz n modul similar tastelor autorepetitive de pe tastatur. Manipulatorul (stick) este acionat ca un simplu mecanism bazat pe nchiderea unuia din cele patru circuite (N,S,E,V). Informaia este interpretat n mod uzual ca un cod caracter specific i calculatorul execut instruciunea prin apelul unei anumite funcii componente a programului de interaciune grafic (spre exemplu, deplasarea unui obiect ntr-o anumit direcie). La un moment dat, un singur buton este acionat (dar i joystick-ul este n acelai timp poziionat n spaiu). Poate avea i dou butoane numite triggers. Este utilizat n simulatoare (inclusiv jocuri), n sisteme CAD/CAM, n general n programe interactive de poziionare a cursorului pe ecran sau generarea n timp real pe ecran a imaginilor grafice.Scanner (figura 1-2c) este un dispozitiv destinat prelurii imaginilor de pe fotografii. Imaginile, rasterizate la o rezoluie care depinde de calitatea scannerului, sunt introduse n fiiere ce pot fi apoi prelucrate de diverse aplicaii multimedia. Imaginile obinute pot fi transferate pe ecran sau la imprimant. Marea majoritate a scanner-elor au o rezoluie de 300 dpi, diferena ntre ele fiind dat de viteza de parcurgere a imaginii. O pagin 27x20 cm este parcurs, n medie, n 30 secunde.Constructiv, scanner-ele prezint dou modele. Scanner-ul cu pad fix i cititor mobil este similar ca form mouse-ului (figura 1-2c), practic, dar cu probleme la digitizarea imaginii. Calitatea imaginii preluate depinde de pstrarea constant a vitezei de parcurgere, dependent de micarea minii, existnd posibilitatea "alunecrii" unor poriuni ale imaginii. Scanner-ul cu cititor fix i pad mobil are viteza de citire constant, dar este o idee ceva mai rigid n manipulare.Scanner-ele sunt nsoite de programe de recunoatere a caracterelor digitizate obinute din prelucrarea imaginilor text i de convertire a acestora n fiiere document (bazate pe tehnici OCR - Optical Character Recognition).7Ciprian-Daniel NEAGU, Severin BUMBARU1.3.3. Procesarea sunetului: dispozitive digital audioDup cum se tie, sunetul reprezint o oscilaie care variaz continuu n amplitudine - ceea ce determin nivelul sonor - sau n frecven - ceea ce determin tonul sunetului. Sunetul n general, muzica n special, sunt procesate pe sisteme multimedia pa baza dispozitivelor de achiziie, a dispozitivelor de redare, a dispozitivului de procesare digital a sunetului (placa de sunet) i, nu n ultimul rnd, a aplicaiilor dedicate pentru procesarea sunetelor.Placa de sunet (sound crd) este actorul principal, dispozitiv care permite nu numai intermedierea dar preia o mare parte din efortul de codificare/ compresie pentru a permite sistemului multimedia s lucreze n timp real. Caracteristici: reprezentarea sunetului pe minim 16b, procesarea sunetului n banda 44 MHz, raportul semnal/zgomot trebuie s fie inferior cititorului CD-ROM). Pentru gama de jocuri pe calculator (i nu numai) s-a impus condiia compatibilitii cu standardul Sound Blaster. Este util n aplicaii de convertirea sunetului nregistrat n format digital/analog, sonorizarea sistemului multimedia (asocierea unor secvene de sunete evenimentelor sistem), montaje audio (realizarea mixajelor i a efectelor speciale), includerea efectelor sonore n jocuri pe calculator i pagini web, sinteza vocal.Prima plac de sunet a fost creat de firma CREATIVE LABS fiind cunoscut i cu numele de SoundBlaster. Pe o plac de sunet observm un bloc MIXER care poate accepta intrri analogice de la microfon, linie audio sau difuzor PC i care pot fi controlate individual. n plus, blocul MIDI (Musical Instrument Digital Interface) primete comenzi pentru selectarea unor instrumente sau efecte audio.Odat ce sunetul a fost convertit n form digital, poate fi prelucrat pentru a crea efecte ca reverberaii, ecouri, distorsiuni controlate etc. Calculele necesare acestora sunt realizate de procesoare specializate numite DSP (Digital Signal Processing) Tot acestea pot asigura i sinteza sunetului sau a muzicii precum i funciile de comprimare i decomprimare. Cercetrile fcute n domeniul sintezei sunetelor au permis generarea acestora din nsumarea mai multor semnale sinusoidale cu frecvene diferite. Un capitol special din matematic se ocup cu analiza armonic a semnalelor. Folosind rezultatele acestor analize, s-a reuit sinteza sunetului prin modularea de frecven (Frequency Mode, FM).n scopul asigurrii suportului pentru ca sistemele multimedia, instrumentele muzicale, sintetizatoarele s poat transfera date referitoare la sunete, a fost implemetat un set de reguli numit MIDI (Musical Instrument Digital Interface). MIDI permite muzicienilor s foloseasc un sistem de calcul pentru a realiza, nregistra i edita muzic. O plac de sunet comptibil MIDI este o garanie c sistemul de calcul multimedia utilizat poate genera sunetele regsite, spre exemplu, n jocurile pe calculator, digital CD-ROM, i pachetele de promovare/ prezentare multimedia.Pentru ca sunetul s poat fi preluat de placa de sunet, n cazul n care se doresc nregistrri personalizate, se poate utiliza microfonul ca dispozitiv de intrare ctre placa de sunet. Utilizarea microfonului permite inserarea secvenelor sonore n fiiere, precum i nregistrarea vocii i inserarea adnotrilor vocale n cadrul documentului.8Sisteme multimediaInstrumentele compatibile MIDI (claviaturi, sintetizatoare) permit, cu condiia asigurrii compatibilitii de plac, compunerea melodiilor (nregistrare, acompaniament/ baterie pe mai multe canale), editarea partiturilor (afiarea notelor pe portativ cu semnele muzicale specifice).n ceea ce privete aplicaiile de prelucrare a sunetului n format digital, acestea pot fi privite att din punctul de vedere al fabricrii sunetului, ct i al utilizrii acestuia. Din ultima categorie pot fi amintite plug-ins, aplicaii speciale care permit audierea documentelor hypermedia cu informaie sonor nglobat (spre exemplu, aplicaiile real-player, audio-player etc). Pentru prelucrarea sunetului, aplicaiile proceseaz informaia digital, acionnd asupra unei game variate de parametri ai sunetului, salvai n diferite formate de fiiere.Data audio este caracterizat de parametri ca: frecvena (spre exemplu, frecvena telefonic standard, 8000 Hz, sau frecvena uzual pentru nregistrrile CD-ROM, 44100 Hz), numrul de bii folosii pentru codificare (spre exemplu, 8 sau 16) i numrul de canale (1 pentru mono, 2 pentru stereo etc). Informaia despre sunet este salvat n fiiere care stocheaz nu numai cantitativ parametrii sunetului, dar realizeaz diferite prelucrri (n general algoritmi de compresie).Printre tipurile de fiiere de sunet mai cunoscute pot fi enumerate: .wav, WAVE (proprietar Microsoft i IBM, include ca parametri frecvena, numrul de canale, limea de band, alte informaii), .voc (proprietar Soundblaster, include frecvena, 8b/ 1 canal, compresie prin tergerea sunetului alb), .aif(f), AIFF (proprietar Apple, SGI, include ca parametri frecvena, numrul de canale, limea de band, alte informaii), .au sau .snd (proprietar NeXT, Sun, include ca parametri frecvena, numrul de canale, codificare, ir info).Pentru prima categorie de aplicaii de prelucrare a sunetului, un exemplu este Macromedia Soundedit (figura 1-3).

Insert Modify

Figura 1-3. Aplicaia Macromedia Soundedit: lista de opiuni de meniu Effects, fereastra principal i fereastra de control.O categorie de aplicaii specializate, adresate muzicienilor, permit nu numai prelucrarea benzii sonore, dar i prelucrarea secvenelor i notaiilor mizicale. n general, acestea suport standardul MIDI, furnizeaz diferite tipuri de9Ciprian-Daniel NEAGU, Severin BUMBARUinterfee (staff, piano roii, lista evenimentelor), chiar i un pian virtual, pot insera fiiere WAV i comenzi de sistem (animaie i video) n nregistrri.

Figura 1-4. Fereastra Cubase Transport Bar- emuleaz o interfa TapeRecorder.U Anan.,11- -LH-niu.all.niai-t.miti. . BB

Figura 1-5. Fereastra Cubase Arrange pentru aranjamente muzicale.Un exemplu de astfel de aplicaie de aranjament muzical este Cubase, care beneficiaz de o interfa intuitiv pentru aranjamente i interpretri muzicale (figurile 1-4 i 1-5), ca i o palet larg de instrumente de editare, printre care prelucrarea parametrilor sunetului (figura 1-6) i editarea partiturilor muzicale (figura 1-7).

10Figura 1-6. Fereastra Cubase Audio Editing cu lista de funcii Edit.Sisteme multimedia

Figura 1-7. Cubase Score Notation Sheets Editing.1.3.4. Procesarea imaginilor: dispozitive graficeOdat cu inventarea filmului, fiecare consumator de imagine a devenit atras de abilitatea de a putea participa sau crea o replic virtual a lumii reale. Astzi, filmul, televiziunea i video sunt rspndite peste tot n lume. n consecin, consumatorul de imagine a nceput s considere multimedia, componenta vizual n special (receptor video), ca o prezen subneleas n cadrul sistemului multimedia.Prelucrarea semnalelor video preluate de camere digitale sau semnalul TV urmeaz aceleai principii ca i cele de prelucrare a sunetului, dar la o alt scar. Semnalul video transformat n semnal digital poate fi comprimat pentru ca s ocupe un spaiu mai mic la stocare sau n procesul de transmitere. La redare se apeleaz procesele inverse.n plus, apar unele elemente noi, specifice informaiei vizuale. Astfel, s-au proiectat metode specifice de comprimare care in cont de faptul c imaginea, de la un cadru la altul, se schimb foarte puin, transmindu-se eventual numai schimbrile survenite, pstrnd ca baz un cadru iniial. Este vorba de rezultatul aplicrii metodelor cunoscute sub numele de MPEG, pe baza plcilor de decompresie video, pentru micorarea efortului de calcul al sistemului multimedia. Pentru imagini statice sunt cunoscute fiierele cu extensia JPG, ce provin din folosirea metodei JPEG de comprimare a imaginilor (detalii despre formatele fiierelor grafice vor fi date n seciunile urmtoare). Astfel de operaii sunt realizate de plci de achiziie video, respectiv de decompresie video. Achiziia video realizeaz digitizarea semnalelor video de la magnetoscop/camera video i are ca rezultat montarea prezentrilor video i a filmelor prin tratarea secvenelor video. Sateliii de comunicaii destinai transmisiilor TV digitale folosesc tehnici proprii semnalelor digitale pentru codare i compresie.11Ciprian-Daniel NEAGU, Severin BUMBARU53Imaginile afiate pe ecranul unui monitor ("raster images") folosesc o suprafa dreptunghiular de celule luminoase numite pixeli (denumire provenind de la o prescurtare a expresiei "picture elements"). Aceste imagini se mai numesc i hri de pixeli. Cel mai simplu exemplu de astfel de imagine este o suprafa format din pixeli de culoare alb i neagr (pentru care sunt necesare doar valorile binare 0 i 1 pentru codificare). Aceast imagine este numit hart de bii {bitmap). Prin extensie, imaginile afiate de calculator n nuane de gri vor reprezenta pixelii prin atribuirea unei valori din intervalul 0-255 (cu alte cuvinte, 256 nuane de gri de la negru la alb, reprezentate pe 8 bii). n practic exist mai multe posibiliti de codificare a imaginilor colorate. Le vom discuta i exemplifica n seciunile urmtoare. Pixelul este caracterizat de dimensiune i de distana dintre punctele adiacente. Dimensiunea pixelului este dat de diametrul punctului luminos i depinde de caracteristici tehnice (fascicolul focalizat al tunului de electroni, calitatea ecranului i a substanelor fotoluminiscente folosite). Distana dintre dou puncte luminoase adiacente trebuie s fie mai mic dect diametrul pixelului.Evoluia dispozitivelor grafice de afiare nu este la fel de spectaculoas ca a procesoarelor, neputnd viza miniaturizarea. Cum imaginea se adreseaz ochiului uman, productorii sunt obligai s respecte limitrile fiziologice ale acestuia. Cele mai folosite sunt cele avnd diagonala de 14", 15", 17", 21". Dispozitivele grafice de afiare (numite i "raster display") constau dintr-o suprafa bi-dimensional format din pixeli. Tehnologic, sunt uzuale dou tipuri de dispozitive de afiare: video display i display cu cristale lichide.

IO DeviccS/ System bus

CPU 1/0 Devices

1 j% System bus

SystemMemory Display Pivecssor\

r_

12 Figura 1-8 Configuraia unui sistem de afiare a imaginii: (a) arhitectura standard; (b) arhitectur cu accelerator grafic.Sisteme multimediaVideo display este un ecran cu o pelicul foto-luminiscent pe baz de fosfor, care permite fiecrui pixel al su s fie luminos doar cnd este lovit de un fascicol de electroni. Un pixel poate, prin urmare, s fie luminos (alb) sau nu (negru). Nivelul de intensitate poate fi modificat pentru a obine diferite nuane de gri. Deoarece pelicula fosforescent i pierde luminozitatea, imaginea trebuie rescanat repetat, cu o frecven de cel puin 60 ori pe secund.

AM^lOl*)AppW

MODREZOLUIEBrTSfPIXELMODREZOLUTEBrTS/PNEL( Colorat* 1405x300!9 a( ColoratC 400x300r eT GnC 1B0X140r 4C Grir 160x140S 4

C 8070r 1

,log2 , unde: Pi-pi este probabilitatea ca simbolul Si s apar n irul S;1-log2 reprezint cantitatea de informaie coninut de Si, spre exemplu,Pi numrul de bii necesari pentru codificarea lui Sj.3fiSisteme multimediaAlgoritmul Shannon-FanoEste o abordare a codificrii unui ir. S presupunem c avem urmtoarea densitate de caractere ntr-un ir: A(15), B(7), C(6), D(6), E(5) (tabelul 1-5).Folosind o abordare top-down (figura 1-17), se parcurg urmtorii pai: 1.Sortarea simbolurilor dup frecvena de apariie (pi), de exemplu: ABCDE. 2.mprirea recursiv n dou pri cu aproximativ acelai numr de apariii.

Simbol Apariiilog(1/p)CodSubtotal (# bii)A 151.380030B 72.480114C 62.701012D 62.7011018E 52.9611115TOTAL (#bii):

89Tabelul 1-5. Algoritmul Shannon-Fano aplicat irului ABCDE.

Figura 1-17. Algoritmul Shannon-Fano aplicat irului ABCDE. Algoritmul HuffmanAlgoritmul Huffman este o abordare bottom-up a codificrii unui ir:#1. Iniializare: adaug toate nodurile n lista OPEN, pstrat ordonat (spre exemplu, ABCDE, v. tabelul 1-6);#2. Repet pn cnd lista OPEN mai are doar un nod:#2.1 Alege din OPEN dou noduri avnd cele mai mici frecvene/probabiliti i creaz un nod printe al lor;#2.2 Atribuie suma frecvenelor/probabilitilor descendenilor nodului printe;#2.1 Atribuie codurile 0/1 celor dou ramuri ale arborelui i terge nodul descendent din OPEN (v figura 1-18).

Simbol Apariiilog(1/p)CodSubtotal (# bii)A 151.38015B 72.4810021C 62.7010118D 62.7011018E 52.9611115TOTAL (#bii):

87Tabelul 1-6. Algoritmul Huffman aplicat irului ABCDE.37Ciprian-Daniel NEAGU, Severin BUMBARU

B(7)C(6) D(6)E(5)Figura 1-18. Algoritmul Huffman aplicat irului ABCDE.Pentru exemplul de mai sus:H(S)=(15x1.38+7x2.48+6x2.7+6x2.7+5x2.96)/39=85.26/39=2.19.Numrul de bii necesari pentru codificarea Huffman este: 87/39=2.23.Astfel, algoritmul Huffman transform simboluri de lungime fix n simboluri de lungime variabil, ajungnd la rezultate optime doar dac probabilitile de apariie a simbolurilor sunt puteri ale lui 2.Codificarea Huffman adaptivAlgoritmii anteriori necesit date statistice (care, de obicei, nu sunt disponibile, n cazul secvenelor audio sau video n timp real), iar n cazurile n care datele sunt disponibile, procesul de calcul este laborios, mai ales pentru noduri (secvene) cu comportare similar (spre exemplu, prezena mpreun a literelor "gh"). Din aceste motive, n practic se prefer algoritmii adaptivi.n cazul algoritmului adaptiv de codificare Huffman, ideea este comun majoritii algoritmilor de compresie adaptiv. Condiia este ca att codorul, ct i decodorul, s foloseasc exact aceleai rutine de iniializare Initialize_model () i actualizare a modelului updatemodel ().9.W=17

38 l.W=l 2.W=2 3.W=2 4.W=2Figura 1-19. Un arbore Huffman.

Sisteme multimedia9. W=19DB CAl.W=2 2.W=2 3.W=2 4.W=3Figura 1-20. Arborele Huffman dup o schimbare de nod (A incrementatde dou ori).9.W=21DBl.W=22.W=2Figura 1-21. Arborele Huffman dup o nou schimbare de nod (A reincrementat).Rutina update_model realizeaz incrementarea contorului i actualizarea arborelui Huffman. n timpul actualizrilor, arborele Huffman trebuie s respecte (figura 1-19) condiiile de definire (spre exemplu, nodurile, interne sau frunze, s fie aranjate n ordinea cresctoare a ponderilor), mutarea unui nod implicnd mutarea cu tot cu sub-arborele descendent (figura 1-20). Arborele Huffman poate arta total diferit dup o schimbare de nod: spre exemplu, n al treilea arbore, nodul A (figura 1-21) devine nodul 5 i este codificat cu 2 bii.ENCODERDECODERInitialize_model ();Initialize_model () ;while((c=getc(input))!=eof) while((c=decode(input))!=eof){{encode(c,output);pute(c,output);update_model(c);update_model(c) ;}}Prin urmare, algoritmii adaptivi beneficiaz de avantajul de a nu necesita estimarea a priori a probabilitilor, fiind folositori n aplicaiile practice.39Ciprian-Daniel NEAGU, Severin BUMBARUAlgoritmul Lempel-Ziv-Welchn cazul codificrii unei colecii extrem de mari de iruri, este folosit soluia propus de Ziv i Lempel n 1977, mbuntit de Terry Welch n 1984, sub numele de LZW compression:w = NIL;while (read a character k) {if wk exists in the dictionaryw = wk ; else add wk to the dictionary; output the code for w; w = k; } Exemplu: dac irul de intrare este "AWEDAWEAWEEAWEBAWET", secvena de procesare este descris n tabelul 1-7:

wkieireaindexsimbolNILA

AwA256aWwEW257WEEDE258EDDAD259DAAw

AWE256260AWEEAE261EAAw

AWE

AWEE260262AWEEEA

EAw261263EAWWE

WEB257264WEBBAB265BAAW

AWE

AWET260266AWETTEOFT

Tabelul 1-7. Exemplu de aplicare a algoritmului de compresie LZW.Un ir de intrare compus din 19 simboluri a fost codificat prin reducere la o ieire compus din 7 simboluri plus 5 coduri (tabelul 1-7). Fiecare cod sau simbol necesit 9 bii. n mod uzual, compresia nu funcioneaz pentru un numr mic de octei citii la intrare.Algoritmul LZW pentru decompresie:read character k;output k;w = k;while ( read a character k ){ /* k: caracter/cod*/entry = dictionary entry for k;output entry;add w + entry [0] to dictionary;40Sisteme multimediaw = entry; } Continund exemplul anterior (tabelul 1-8), irul de intrare este acum: "AWEDEBT".

wkieireaindexsimbol

AA

Aww256AWwEE257WEEDD258EDD

AW259DA

EE260AWEE

AWE261EA

EA262AWEE

WE263EAW

BB264WEBB

AWE265BA

TT266AWETTabelul 1-8. Exemplu de aplicare a algoritmului de decompresie LZW.Codificarea prin diferene (DE)Metoda DE (Differential Encoding) se bazeaz pe existena pixelilor vecini cu valori foarte apropiate, astfel nct anumite diferene s fie considerate neglijabile. Este, deci, o metod care conduce la compresia sursei, deci la pierderi de informaii. Se aplic irurilor de forma: S-i, S2, ..., Sn, cu valori diferite de zero dar care nu difer prea mult ntre ele. Se aplic o secven de calculare a diferenei fa de valoarea anterioar: Si, S2-S1,...,Sn-sn-i-

0 00000 255 250 253 2510 255 251 254 2550 0000Figura 1-22. Un exemplu de imagine supus codificrii DE.Fie imaginea prezentat n figura 1-22. Se pot calcula diferene att ntre pixelii vecini ct i ntre grupuri de pixeli (n general grupuri de 8x8). Secvena comprimat va fi: M5, 0, 255, -5, 3, -2, 0, 255, -4, 3, 1, M5, unde irurile de zero pot fi comprimate prin ali algoritmi (RLE).Codificarea DPCMMetoda de compresie DPCM (Differential Puise Code Modulation) este una din metodele simple i rapide de compresie a hrilor de bii, imagini rasterizate pentru care fiecare pixel va fi reprezentat pe 8b, fr ns s fie transmis nsi valoarea pixelului. Codificatorul face o predicie a valorii probabile a pixelului, bazndu-se pe valorile pixelilor prelucrai anterior. Eroarea prediciei dintre valoarea preconizat a pixelului i actuala valoare este cifra cuantificat i transmis.41Ciprian-Daniel NEAGU, Severin BUMBARUMetoda are o rat bun de comprimare datorit faptului c multe imagini conin o cantitate semnificativ de redundan spaial, pixelii vecini tinznd s aib valori apropiate, astfel nct eroarea de predicie s fie mic. Metoda este utilizat i pentru compresiile video, n care pixelii de pe aceleai poziii dovedesc corelaie temporal (i modific lent valoarea n timp pentru aceiai pixeli n cadre consecutive). Acest tip de compresii poate fi mbuntit prin folosirea codurilor de lungime variabil. Eficiena algoritmului depinde de acurateea prediciei. Cea mai simpl variant predictiv este valoarea ultimului pixel transmis (o combinaie cu algoritmul DE), dar aceasta conduce la o rat slab de compresie. O valoare mai bun se obine prin media valorilor pixelilor vecini, predicia fiind cu att mai bun cu ct blocul de pixeli considerat este mai mare.K>x, +)e cuantific atore

codor (entropie)e ) >

1 +

predictorc b a Figura 1-23. Codorul DPCM. linia- direcia deoixelul Figura 1-24. O seciune din harta de bii pentru modelul de codificareDPCM.'Pentru codorul din figura 1-23, s analizm varianta prediciei valorii pixelului curent (figura 1-24) pe baza valorilor pixelilor vecini cei mai apropiai:(1-6)xs = a. (1-7) xs = zia + z2b + z3c.Pentru exemplul dat, xs este valoarea pixelului curent (a n figura 1-24), xssecalculeaz ca o expresie liniar (ponderat) a p pixeli anteriori pixelului curent (n cazul nostru, doi pixeli, b i c), e este imaginea derivat obinut ca diferena dintre pixelul nurs-if ji r;i*siii anteriori. n procesuJ de predicie, imaginea original este pierdut, n timpul procesrii putnd avea acces doa. la valoarea calculat, x's, a pixelului curent.Eroarea de predicie poate fi (opional) cuantificat i utilizat n calculul entropiei codorului. Practic, eroarea este mic (datorit unei bune corelri spaiale).n figurile 1-23 i 1-25, care prezint arhitectura unui codor, respectiv decodor DPCM, sunt folosite urmtoarele simboluri:42Sisteme multimediaxs. semnalul eantionat de intrare;e: diferena dintre valoarea curent i valoarea calculat;e': eroare cuantificat de predicie;xs; valoarea prediciei;xs: valoarea reieit din calcul a semnalului eantionat;ec: valoarea erorii dup codificarea DPCM (aceeai cu valoarea de intrare pentru decodorul DPCM).z-i, z2, z3: coeficieni de ponderare.decodor (entropie) OpredictorFigura 1-25. Decodor DPCM.Decodorul realizeaz operaia:(1-8) curent {predictor) + e.Utilizarea proprietilor predictor/imagine are un efect semnificativ n creterea eficienei ratei de compresie. Expresia predictor poate fi modificat adaptiv pentru a mbunti rezultatele compresiei. Compresia obinut pentru acest algoritm este ntre 4 i 8 ori pentru o imagine de calitate medie.Algoritmul modulare DeltaAlgoritmul modulare Delta (Delta modulation, DM) este o particularizare a algoritmului DPCM, pentru care pasul de predicie este de 1 bit. Acest tip de modulare este aplicat n principiu pentru undele sonore, ieirea DM fiind 0 pentru pante negative, respectiv 1 pentru pante pozitive ale undei de intrare. Prin urmare, algoritmul DE codific semnul derivatei semnalului (direcia amplitudinii semnalului) i nu valoarea diferenei (ca n vzul DPCM). Schema bloc a modulatorului DM este prezentat n figura 1-26.^6

R

integrator

S"

ecuantific ator

*" "x "' 'Jw

wsir pulsFigura 1-26. Codor DM. 43Ciprian-Daniel NEAGU, Severin BUMBARUSemnalul de intrare x0 este comparat cu ieirea integratoare R; semnalul delta e (diferena dintre semnalul de intrare i semnalul puls) este transmis la cuantificator, care genereaz ieirea n funcie de diferena dintre acestea. Dac diferena este pozitiv, ieirea este un impuls pozitiv; dac ieirea este negativ, cuantificatorul genereaz un semnal negativ. Semnalul de ieire transmite un feed-back ctre intrare pentru o nou comparaie, rezultatul fiind un aa numit semnal delta care este din nou cuantificat. Prin urmare, semnalul de ieire conine informaii despre semnul schimbrilor semnalului cu o perioad de eantionare n urm.Codificarea RLEMetoda de codificare RLE (Run-Length Encoding) este o metod de compresie ce se bazeaz pe identificarea prezenei subirurilor cu aceeai form (numite run). Fiecare secven de valori ce se repet este nlocuit cu numrul apariiilor i forma subirului. Pentru a fi productiv, aceast metod se aplic pe acele tipuri de fiiere care conin n numr mare secvene consecutive ale aceluiai model: fiiere text care conin spaii pentru identarea sau formatarea paragrafelor, tabelelor sau diagramelor, semnale digitizate (care conin iruri neschimbate de semnale). Un exemplu de astfel de semnal digitizat este cazul imaginilor monocrome sau color, inclusiv a celor generate pe calculator (n special pentru zonele de fundal).RLE este o metod de compresie prin pierderea informaiei, nu conduce la rezultate foarte bune, dar este uor de implementat i rapid.Exemplu: -irul de intrare: RTAAAASDEEEEE -dup compresia RLE: R T *4A S D *5E -reprezint un caracter de control pentru semnalizarea secvenei repetitive (run).Procesul de codificare se realizeaz efectiv dac n irul de intrare exist secvene repetate de patru sau mai multe caractere, deoarece algoritmul RLE folosete minim trei caractere (dou caractere repetate conduc la mrirea irului de ieire, iar trei caractere conduc la un rezultat neutru). Procesul de decodare: dac nu exist caractere de control, irul este copiat, iar dac este identificat un astfel de caracter, atunci este ndeprtat i secvena ce urmeaz este copiat de numrul de ori semnalizat.Exist diferite scheme de compresie RLE, implementarea acestora depinznd n mare msur de tipul de date supuse codificrii. Spre exemplu, standardul Windows propune dou variante, pentru compresia imaginilor bitmap caracterizate de adncimea de culoare n 4b i 8b.Compresia 4b RLE consider secvena de ieire ca fiind format din doi octei: primul (dac nu este zero) determin numrul de pixeli care vor fi desenai. Al doilea specific dou culori: primii patru bii codific prima culoare, urmtorii patru reprezint a doua culoare (tabelul 1-10). Prin urmare, la decomprimarea imaginii, pixelii de pe poziiile impare vor avea culoarea dat de primul cod de 4b, iar pixelii de poziie impar vor fi colorai cu al doilea cod. Dac primul octet este zero, atunci al doilea octet va fi un cod escape (tabelul 1-9).44Sisteme multimediaAl doilea octetdefinete 0End-of-line. 1End-of-RLE (bitmap). 2Urmtorii doi octei reprezint deplasarea pe direciile x i y (x - dreapta, y - sus). Pixelii peste care se sare au culoarea zero.>=3La decompresie, urmtorii 4 bii sunt copiai.Tabelul 1-9. Definiia codurilor escape pentru compresie 4b RLE.

irul comprimatInformaia expandat06 5252 52 5208 1B1B1B 1B1B00 06 83 14 3483 14 3400 02 09 06Mut 9 poziii la dreapta i 6 deasupra.00 00End-of -line.04 2222 2200 01End-of-RLE (bitmap).Tabelul 1-10. Exemple de secvene codificate 4b RLE.Compresia 8b RLE consider secvena de compresie format tot din 2 octei: primul octet (dac este nenul) reprezint numrul de pixeli consecutivi de aceeai culoare, specificat de al doilea octet (tabelul 1-11). Similar variantei anterioare, dac primul octet este zero, atunci al doilea octet definete un cod escape. Codurile escape 0, 1, 2 au aceeai semnificaie ca n tabelul 1-9; dac valoarea codului escape >=3, atunci la decompresie, urmtorii >=3 vor fi copiai din fiierul comprimat.

irul comprimatInformaia expandat06 5252 52 52 52 52 5208 1B1B1B1B1B1B 1B1B1B00 03 83 14 3483 14 3400 02 09 06Mut 9 poziii la dreapta i 6 deasupra.00 00End-of -line.04 2A2A 2A 2A 2A00 01End-of-RLE (bitmap).Tabelul 1-11. Exemple de secvene codificate 8b RLE.Vom exemplifica modelele de compresie a informaiei grafice prin applet-ul Compress. Acesta prezint, n afara interfeei caracteristice, algoritmii de codificare a informaiei de intrare (ir numeric n baza 10) pentru modelele: DPCM, Delta, RLE, Zero supression si Huffman.45Ciprian-Daniel NEAGU, Severin BUMBARUKS Appiet Viewer: Compress.class AB\.\n\x\AppietExemplificarea tehnicilor de compresieIntroducei o secvena numericapentru evidenierea tehnicilor decompresie...Sir de intrare:|1110000111 000011100001 CodificaMetoda:DPCM Delta ModulationRun LengthZero SuppressionHuffman Sir de ieire:100-1000100-1000100-10001100-1000100-1000100-100011110F41110F41110F41111F4111F4111F411110000111000011100001

Hei: DPCM Delta IRun Length; Zero SuppressionHuffman

Run-length encodinga- suprimarea secvenelor repetate

- si folosirea unor coduri escape

JjjfButonul Run Length help apsat.Figura 1-27. Appiet-ul Compress pentru exemplificarea a cinci algoritmi de compresie a informaiei grafice: DPCM, Delta, RLE, Zero supression siHuffman.Appiet 1-3. Compress.java: exemplificarea a cinci algoritmi de compresie a informaiei grafice: DPCM, Delta, RLE, Zero supression si Huffman./* *Compression applets: Compress.java*/ *Modificat si adaptat: 2001 Dan Neagu *Copyright (c) 1996 Bart Verhoeven and the K.U. Leuven, All Rights Reserved.*/import java.io.*; import java.appiet.*;46Sisteme multimediaimport j ava.awt.*; import java.util.*;public class Compress extends java.applet.Applet {PrettyPanel invoer, uitvoer, help;Button encode, dpcm, delta, run, zero, huffman;TextArea helpArea;TextField encodeField, dpctnField, deltaField, runField, zeroField, huffmanField; public void init() {String s;setLayout(new BorderLayout() ) ;Panel p = new Panel (); p.setLayout(new GridLayout(3,1));invoer = new PrettyPanel(true); invoer.setLayout(new BorderLayout());Panel invoerP = new Panel(); invoerP.setLayout(new GridLayout(6,1));Labei 10 = new Labei("Exemplificarea tehnicilor de compresie",Labei.CENTER);10.setFont(new Font("TimesRoman",Font.BOLD,20));invoerP.add(10);invoerP.add(new Labei("Introducei o secvena numerica",Labei.CENTER)) ;invoerP.add(new Labei("pentru evidenierea tehnicilor de",Labei.CENTER));invoerP.add(new Labei("compresie...",Labei.CENTER));Labei 11 = new LabelC'Sir de intrare :", Labei. CENTER) ,-11.setFont(new Font("TimesRoman",Font.BOLD,14));invoerP.add(11);encode = new Button ("Codifica") ,-encodeField = new TextField(20);Panel pp = new Panel();pp.add(encodeField);pp.add(encode);invoerP.add(pp);invoer.add("Center",invoerP);p.add(invoer);uitvoer = new PrettyPanel(true);uitvoer.setLayout(new BorderLayout());Panel uitvoerP = new Panel () ,-uitvoerP.setLayout(new GridLayout(6,2));Labei uitvoerLO = new Labei("Metoda: ",Labei.CENTER);uitvoerLO.setFont(new Font("TimesRoman",Font.BOLD,14));uitvoerP.add(uitvoerLO) ;Labei uitvoerLl = new Labei("Sir de ieire: ",Labei.CENTER);uitvoerLl.setFont(new Font("TimesRoman",Font.BOLD,14));uitvoerP.add(uitvoerLl);uitvoerP.add(new Labei("DPCM",Labei.CENTER));dpcmField = new TextField(20);47Ciprian-Daniel NEAGU, Severin BUMBARUdpcmField.setEditable(false);uitvoerP.add(dpcmField);uitvoerP.add(new Labei("Delta Modulation",Labei.CENTER));deltaField = new TextField(20);deltaField.setEditable(false);uitvoerP.add(deltaField);uitvoerP.add(new Labei("Run Length",Labei.CENTER));runField = new TextField(20);runField.setEditable (false) ;uitvoerP.add(runField);uitvoerP.add(new Labei("Zero Suppression",Labei.CENTER));zeroField = new TextField(20);zeroField.setEditable(false);uitvoerP.add(zeroField);uitvoerP.add(new Labei("Huffman",Labei.CENTER));huffmanField = new TextField(20) ,huffmanField.setEditable (false);uitvoerP.add(huffmanField);uitvoer.add("Center",uitvoerP);p.add(uitvoer);help = new PrettyPanel(true);help.setLayout(new BorderLayout0 ) ;Panel helpP = new Panel();helpP.setLayout(new BorderLayout 0) ;Panel ppp = new Panel();Labei helpL = new Labei("Help: ",Labei.CENTER);helpL.setFont(new Font("TimesRoman",Font.BOLD, 14) ) ;ppp.add(helpL);dpcm = new Button("DPCM");ppp.add(dpcm);delta = new Button("Delta");ppp.add(delta);run = new Button("Run Length");ppp.add(run);zero = new Button ("Zero Suppression") ,-ppp.add(zero); huffman = new Button("Huffman");ppp.add(huffman);helpP.add("North",ppp);helpArea = new TextAreaO;helpArea.setEditable(false);helpP.add("Center",helpArea);help.add("Center",helpP);p.add(help);add("Center",p);}public boolean action(Event ev, Object ob) { if (ev.target == encode) {getAppletContext().showStatus("Buton ed codificare apsat.") ;48Sisteme multimediaString string = encodeField.getText();if ( (string. trimO . length () ! = 0)&&containsNoSpaces(string.trim())&&isDigital(string.trim ())) { dpcmField.setText(differentialPulseCodeModulation(string) )deltaField.setText(deltaModulation(string)); runField.setText(runLengthEncoding(string,'F')); zeroField.setText(zeroSuppression(string,'F'));huffmanField.setText(huffmanEncoding(string) );} else{dpcmField.setText(""); deltaField.setText(""); runField.setText(""); zeroField.setText(""); huffmanField.setText("");getAppletContext().showStatus("Secvena de intrare trebuie sa fie numerica...");}return true;}else if (ev.target == dpcm) {getAppletContext().showStatus("Butonul DPCM help apsat. ") ,-String string = "Differential Puise Code Modulation\n\n";string += "- Differential/Predictive Encoding\n\n";string += "";helpArea.setText(string),-return true; } else if (ev.target == delta) {getAppletContext().showStatus("Butonul Delta modulation help apsat.");String string = "Delta Modulation\n\n";string += "- Differential/Predictive Encoding\n\n";string += "- Un caz particular DPCM\n\n";helpArea.setText(string);return true; } else if (ev.target == run) {getAppletContext().showStatus("Butonul Run Length help apsat.");String string = "Run-length encoding\n\n";string += "- suprimarea secvenelor repetate\n\n";string += "- si folosirea unor coduri escape\n\n";helpArea.setText(string);return true;49Ciprian-Daniel NEAGU, Severin BUMBARU} else if (ev.target == zero) {getAppletContext().showStatus("Butonul Zero Length help apsat."),-String string = "Zero Suppression\n\n";string += "- Suprimarea secvenelor repetate de zero\n\n";helpArea.setText(string);return true; } else if (ev.target == huffman) {getAppletContext().showStatus("Butonul Huffman help apsat.");String string = "Huffman Encoding\n\n" ;string += "- Statistical Encoding\n\n";string += "- algoritm bazat pe arbori si variante adaptive\n\n";helpArea.setText(string);return true; } return false;}private String differentialPulseCodeModulation(String to_compress) { String compressed = to_compress.substring(0,1); int reference=Character.digit(to_compress.charAt(0),10); for (int j = l;j < to_compress.length();j++) { int i = Character.digit(to_compress.charAt(j),10); reference = Character.digit(to_compress.charAt(j-1),10); compressed += String.valueOf(i - reference);}return compressed;}private String deltaModulation(String to_compress) { String compressed = to_compress . substring (0 ,1) ,-int reference=Character.digit(to_compress.charAt(0),10); for (int j = l;j < to_compress.length();j++) {int i = Character.digit(to_compress.charAt(j),10);reference = Character.digit(to_compress.charAt(j-1),10);if (reference > i) compressed += "-1";if (reference == i) compressed += "0";if (reference < i) compressed += "1";}return compressed;}private String runLengthEncoding(String to_compress, charflag) {String compressed = new String (); int i = 0;while (i < to_compress.length()) { char c = to_compress.charAt(i); int j = count(to_compress,c, i) ;if (j >= 4) {compressed = compressed + c + flag + j;} else (compressed += to_compress.substring(i,i+j);}50Sisteme multimediai = i + j ;}return compressed;}private int count(String to_compress, char character, intindex) {int i = index;int counter = 0;while (i < to_compress.length() ) {if (to_compress.charAt(i) == character) { counter++; i + +; } else {i = to_compress.length();}}return counter;}private String zeroSuppression(String to_compress, charflag) {String compressed = new String (); int i = 0;while (i < to_compress.length()) { char c = to_compress.charAt(i); if (c == '0') {int j = count(to_compress,c,i); compressed = compressed + flag + j ; i = i + j ; } else {compressed = compressed + c; i++; } } return compressed;}public String huffmanEncoding(String to_compress) { String compressed = new String O; int number = 10;int[] counter = new int[number]; int[] ordered = {0,1,2,3,4,5,6,7,8,9}; for (int i = 0;i < to_compress.length();i++) { counter[Character.digit(to_compress.charAt(i),10)] + = 1;} for (int i = 0;i < number;i++) {int index = greatest(ordered,i,counter); int temp = ordered[i]; ordered[i] = ordered[index]; ordered[index] = temp;}for (int i = 0;i < number;i++) { counter[ordered[i]] = i ;}for (int i = 0;i < to_compress.length();i++) {51Ciprian-Daniel NEAGU, Severin BUMBARUcompressed+=Integer.toString(counter[Character.digit(to_co mpress.charAt(i) ,10) ] ) ;}return compressed;}private int greatest(int[] ordered, int index, int[]counter) {int great = ordered[index]; int great_index = index;for (int i = (index+l);i < ordered.length;i++) { if (counter[ordered [i]] > counter[great]) { great = ordered[i]; great_index = i; } } return great_index;}public boolean containsNoSpaces(String to_compress) {if (to_compress.indexOf(' ') != -1) {return false;}else return true;}public boolean isDigital(String to_compress) {char[] array = to_compress.toCharArray();for (int i=0;i < array.length;i++) {if (iCharacter.isDigit(array[i])) return false;}return true;}class PrettyPanel extends Panel { Insets cqlnset; boolean highlight; boolean threeD; public PrettyPanel() {cqlnset = new Insets(7,7,7,7); highlight = false; threeD = false;}public PrettyPanel(boolean threeD) {highlight = false;this.threeD = threeD;if (threeD) cqlnset = new Insets(10,10,10,10);else cqlnset = new Insets(7,7,7,7) ;}public void setHighlight(boolean on) {this.highlight=on;}public Insets insets() {return cqlnset;}public void paint(Graphics g) {Dimension d = size();Color bg = getBackground();if (threeD) g.setColor(bg);52Sisteme multimediaelseif (highlight) g.setColor(Color.red) ; else g.setColor(Color.blue); if (threeD) {g.draw3DRect(0,0,d.width - l,d.height - l,true); g.draw3DRect(3,3,d.width - 7,d.height - 7,false); } else g.drawRect(2, 2, d.width - 4, d.height - 4); } }1.4.4. Modul vectorialImaginile vectoriale sunt stocate sub form de primitive grafice sau de curbe Bezier. Desenul este considerat un vector. Fiecare obiect grafic este creat pornind de la o definire geometric a formelor componente, crora le sunt alocate atribute (culoare, grosime .a.).Aplicaiile grafice vectoriale creaz obiecte sau forme definite prin formule matematice, conducnd la obiecte prezentate prin curbe mai netede dect n abordarea bitmap, n cazul n care se folosesc efecte de scal. Spre deosebire de modul bitmap, un desen vectorial nu este legat de rezoluie, adaptndu-se rezoluiei perifericului de ieire. n plus, stocheaz imagini n fiiere mai puin voluminoase i le manevreaz mai uor dect modul bitmap datorit descrierii matematice a imaginilor. Modul vectorial este folosit n aplicaii de design, arhitectur, reclam.Spre deosebire de aplicaiile de desenare (paint programs), programele care utilizeaz imagini n format vectorial se numesc aplicaii de trasare (draw programs). Informaiile comune fiierelor grafice mod vectorial i bitmap sunt: rezoluia original, dimensiunea imaginii, indicaii despre paleta de culori, parametrii algoritmului de comprimare (care reprezint n acelai timp obstacole n efortul de standardizare a formatelor grafice).Majoritatea sistemelor grafice sofisticate (inclusiv sisteme CAD i aplicaii de animaie) folosesc grafica vectorial. n plus, multe tipuri de imprimante (spre exemplu imprimantele PostScript) folosesc grafica vectorial n timpul procesrii. Caracterele (fonts) sunt reprezentate vectorial pentru a putea fi reprezentate unitar fr s depind de dimensiune. Datorit soluiei de reprezentare, se mai numesc i vector fonts, caractere scalabile, sau orientate obiect.Principalele formate de fiiere vectoriale sunt comparate n tabelul 1-12.PostScript: limbaj de descriere a paginii care descompune imaginea unei pagini prin coordonate absolute, independente de caracterele fizice ale perifericului. Este un standard de imprimare prezent pe diferite sisteme de operare (MS DOSWindows, Mac, OS/2, UNIX) i o gam larg de imprimante.EPS (Encapsulated PostScript) definete formatul rezultat din combinarea codului PostScript ca o resurs (Pict pentru Mac, Tiff pentru PC) corespunztoare descrierii imaginii de pe ecran. La importul unui desen EPS n blocul imagine al unui software de punere n pagin, acesta este de fapt resursa (Pict sau Tiff) care se afieaz pe ecran, permind vizualizarea i poziionarea precis pe monitor. n momentul imprimrii se folosete fiierul53Ciprian-Daniel NEAGU, Severin BUMBARUPostScript. Unele programe creaz fiiere EPS fr preview. n acest caz, cadrul destinat pentru recepia imaginii rmne vid la import, dar rezultatul imprimrii este corect.DCS (DeskTop Color Separation) este o extensie a fiierului EPS pentru schimbul unei imagini pentru care s-a realizat deja separarea culorii (productor: Quark). Se compune din cinci fiiere: unul pe baz de rezoluie Pict pentru plasarea n Xpress, i patru fiiere de rezoluie ridicat reprezentnd patru culori de imprimat ce sunt trimise automat la imprimant n momentul imprimrii.DXF (Drawing eXchange Format) este formatul de schimb creat de Autodesk n cadrul software-ului AutoCad. A devenit standard prin generalizarea utilizrii.CDR (CorelDRAW!) este formatul nativ de prelucrare i reprezentare vectorial creat de Corel Corporation n cadrul software-ului CorelDRAW!CGM (Computer Graphic MetaFile) reprezint formatul de fiier standard recunoscut de trei organisme de normalizare/standardizare (ISO, ANSI, AFNOR) ce permite schimb de desene vectoriale ntre aplicaii grafice. Este un format folosit n extensia pentru programele de desen vectorial.GEM (Graphics Environment Manager) este o interfa grafic utilizator dezvoltat de Digital Research pentru PC-urile fabricate de firma Atari, ca i o interfa pentru unele programe DOS. Ca i interfeele Macintosh i Microsoft Windows, GEM furnizeaz un mediu bazat pe ferestre pentru aplicaiile n lucru. n cadrul sistemului grafic dezvoltat, GEM este i formatul fiierului grafic vectorial de reprezentare a informaiei n mediul grafic GEM.WMF (Windows MetaFile) este formatul compatibil CGM propriu aplicaiilor executate sub MS Windows.

FORMAT.CDR.CGM.DXF.EPS.GEM.WMFDOMENIUL DE APLICAIEilustraiischimburi de fiiereschimburi de fiiere desenPAOilustraiischimburi de fiiereEXEMPLU COMPARATIV AL MRIMII FIIERELOR58 KB31 KB382 KB907 KB36 KB42 KBPRIMITIVE GRAFICEDADADADADADAATRIBUTE DE LINIEDADADADADADACURBE BEZIERDANU,NUDADANUIMAGINI BITMAPDADANUDADADAOBIECTE 3D-NUDANUNUNUCOTARI-NUDANUNUNUTabelul 1-12. Principalele formate de fiiere vectoriale.542. INTRODUCERE N GRAFICA JAVA2.1. Interfeele utilizator grafice n JavaInterfaa utilizator grafic (engl: GUI - Graphical User Interface) este o interfa om-main care permite comunicarea omului cu calculatorul prin intermediul unor obiecte grafice, afiate pe ecran. Toi utilizatorii de calculatoare sunt familiarizai in prezent cu interfeele grafice care conin ferestre, butoane, casete de validare, liste, meniuri, cmpuri de text etc. Cele mai rspndite sunt cele din categoriile Windows (ale firmei Microsoft) i X-Window (pentru diferite platforme Unix sau Linux). Cele mai multe componente ale acestor interfee au reprezentri grafice predefinite. Unele din acestea pot servi, ns, i drept suport pentru reprezentri grafice programate n programele de aplicaie.Programatorii n limbajul Java dispun de dou familii de pachete de clase pentru realizarea interfeelor utilizator grafice, prezente n Java API {Application Programming Interface - interfaa pentru programarea de aplicaii): AWT i Swing.2.1.1. Interfeele grafice AWTJava AWT (Abstract Windowing Toolkit - setul de creare a ferestrelor abstracte) este constituit din pachetele java.awt, java.awt.event, java.awt.color, java.awt.font, java.awt.geom i altele. Tot aici se poate ncadra i pachetul java.applet, destinat realizrii de appleturi.Ideea de baz care a stat la realizarea AWT este c, ntruct limbajul Java trebuie s fie independent de platforma pe care se execut programul, iar mijloacele concrete prin care se realizeaz reprezentrile grafice difer de la o platform la alta, programatorul n Java trebuie s creeze n aplicaiile sale nite "ferestre abstracte", n care plaseaz nite "obiecte abstracte" asupra crora va aciona utilizatorul n timpul executrii programului. Aspectul grafic al jingstQr objfctf ahfttrarfe este dependent de platforma. De exemplu, un buton, o list sau o caset de validare vor avea alt aspect pe ecran dac programul este executat sub Windows, dect atunci cnd este executat sub Linux sau sub alt sistem de operare. n schimb, pentru programator i pentru utilizator este eseniala funcionalitatea obiectului grafic respectiv. De exemplu, pe orice platforma, butonul este un obiect grafic care emite un semnal (mai exact genereaz un anumit eveniment) atunci cnd este apsat cu mouse-ul. Funcionalitatea obiectelor grafice din AWT este aceeai pe toate.platformele.Principalul avantaj al AWT este c utilizeaz pentru reprezentarea pe ecran i manipularea obiectelor interfeei grafice resursele proprii ale platformei pe care se execut programul. n consecin, timpul de calcul necesar pentru aceste operaii la executarea programului este mic, fiind optimizat de ctre realizatorii sistemului de operare al platformei pe care se lucreaz. Pe de alta parte, programatorul n limbajul Java nu trebuie s cunoasc particularitile programrii interfeelor grafice pe diferitele platforme, ntruct el lucreaz numai cu clasele de obiecte abstracte oferite de pachetele din Java AWT.Principalul dezavantaj al AWT este c autorii lui au fost nevoii s ia n consideraie numai acele clase de obiecte grafice, care exist ntr-o form sau alta pe toate platformele. Aceasta a fcut ca numrul de clase de obiecte55Ciprian-Daniel NEAGU, Severin BUMBARUgrafice din Java AWT s fie destul de restrns, renunndu-se la funcionalitile specifice numai anumitor platforme.2.1.2. Interfeele grafice SwingPentru a se realiza interfee grafice mai bogate i mai diversificate dect cele posibile n AWT, a fost creat o familie de pachete de clase cunoscut sub numele de Swing. Din aceasta familie fac parte pachetele javax.swing, javax.swing.event i altele. Remarcm c Swing nu nlocuiete, ci completeaz AWT cu noi pachete de clase. Multe din clasele AWT sunt necesare i atunci cnd se lucreaz n Swing.Obiectele grafice din Swing au nu numai aceeai funcionalitate, ci i acelai aspect pe orice platforma. Mai mult, acest aspect poate fi ales de programator dintre mai multe variante posibile. Pentru a se realiza acest obiectiv, autorii Swing au renunat la ideea de a folosi pentru reprezentrile grafice metodele native de pe platformele pe care se execut aplicaia. Toate obiectele grafice din Swing sunt reprezentate pe ecran i manipulate prin metode scrise n limbajul Java. Aceasta confer interfeei grafice independen total fa de platform i posibilitatea diversificrii claselor de obiecte folosite, dar preul pltit este creterea complexitii programelor i a timpului de calcul.2.2. Componente grafice i containereInterfeele grafice Java (att AWT, ct i Swing) se bazeaz pe conceptul de component grafic. Se numete component grafic un obiect care are o reprezentare pe ecran i care poate interaciona cu utilizatorul. Orice component ocup pe ecran o arie de form dreptunghiular, cu baza orizontal. Este posibil ca unele componente s acopere total sau parial alte componente.2.2.1. Clasa Componentn limbajul Java, componentele grafice sunt instane ale unor clase. Aceste clase formeaz o ierarhie, care are ca rdcina clasa Component din pachetul java.awt. Aceasta este o clasa abstract, care ofer metodele care sunt prezente n toate clasele de componente. Numrul acestor metode este mare (peste 120) i sunt descrise in documentaia Java API, astfel c vom prezenta aici numai pe cele necesare n acest capitol:public void setvisible (boolean b) - afieaz componenta pe ecran, dac argumentul b este true, sau o ascunde dac acesta este false;public void setBackground(Color c)- seteaz culoarea de fond a componentei;public void setForeground (Color c) - seteaz culoarea de prim plan a componentei (culoarea textului);public void setFont (Font f) - seteaz fontul (forma caracterelor folosite n component);public void setLocation(int x, int y) - deplaseaz componenta ntr-o nou poziie, astfel nct colul din stnga-sus al acesteia s fie situat n punctul de coordonate (x,y);56Introducere n grafica Javapublic void setSize(int width, int height) - Stabilete dimensiunile componentei, respectiv limea i inlimea acesteia;public void paint (Graphics g) - traseaz pe aceast component un desen, folosind contextul grafic g. Conceptul de context grafic va fi tratat intr-o seciune special a acestui capitol. Metoda paint () nu este invocat direct de ctre programator, ci indirect, prin intermediul metodei repaint O ;public void update (Graphics g) - actualizeaz desenul de pe component, folosind contextul grafic g; este invocat de metodarepaint () ;public void repaint () - invoc metoda update ().Componentele grafice pot fi componente atomice sau containere. Se numesc containere acele componente, care pot conine alte componente. Remarcm c, ntruct i containerul este o component, un container poate conine alte containere.In Java AWT i Swing, clasele de containere formeaz o ierarhie, a crei rdcin este clasa Container, care extinde clasa Component i se gsete, de asemenea, n pachetul java.awt.Cele mai frecvent utilizate clase de containere sunt: -n AWT clasele Frame, Appiet, Panel i Dialog; -n Swing clasele JFrame, JAppIet, JPanel i JDialog.Fereastra principal a oricrei aplicaii trebuie s aparin uneia din clasele Frame sau JFrame, dup cum se lucreaz cu componente AWT, respectiv Swing sau trebuie s fie o subcla