diff --git a/tex/figures/smrl.eps b/tex/figures/smrl.eps new file mode 100644 index 0000000..1a5240d --- /dev/null +++ b/tex/figures/smrl.eps @@ -0,0 +1,1039 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (MATLAB, The Mathworks, Inc. Version 9.2.0.538062 \(R2017a\). Operating System: Linux) +%%Title: /home/chris/Storage/christina/Desktop/THMMY/????????/Project/authMultimediaAssignment2018/tex/figures/smrl.eps +%%CreationDate: 2019-02-17T21:52:33 +%%Pages: (atend) +%%BoundingBox: 0 0 426 319 +%%LanguageLevel: 3 +%%EndComments +%%BeginProlog +%%BeginResource: procset (Apache XML Graphics Std ProcSet) 1.2 0 +%%Version: 1.2 0 +%%Copyright: (Copyright 2001-2003,2010 The Apache Software Foundation. License terms: http://www.apache.org/licenses/LICENSE-2.0) +/bd{bind def}bind def +/ld{load def}bd +/GR/grestore ld +/M/moveto ld +/LJ/setlinejoin ld +/C/curveto ld +/f/fill ld +/LW/setlinewidth ld +/GC/setgray ld +/t/show ld +/N/newpath ld +/CT/concat ld +/cp/closepath ld +/S/stroke ld +/L/lineto ld +/CC/setcmykcolor ld +/A/ashow ld +/GS/gsave ld +/RC/setrgbcolor ld +/RM/rmoveto ld +/ML/setmiterlimit ld +/re {4 2 roll M +1 index 0 rlineto +0 exch rlineto +neg 0 rlineto +cp } bd +/_ctm matrix def +/_tm matrix def +/BT { _ctm currentmatrix pop matrix _tm copy pop 0 0 moveto } bd +/ET { _ctm setmatrix } bd +/iTm { _ctm setmatrix _tm concat } bd +/Tm { _tm astore pop iTm 0 0 moveto } bd +/ux 0.0 def +/uy 0.0 def +/F { + /Tp exch def + /Tf exch def + Tf findfont Tp scalefont setfont + /cf Tf def /cs Tp def +} bd +/ULS {currentpoint /uy exch def /ux exch def} bd +/ULE { + /Tcx currentpoint pop def + gsave + newpath + cf findfont cs scalefont dup + /FontMatrix get 0 get /Ts exch def /FontInfo get dup + /UnderlinePosition get Ts mul /To exch def + /UnderlineThickness get Ts mul /Tt exch def + ux uy To add moveto Tcx uy To add lineto + Tt setlinewidth stroke + grestore +} bd +/OLE { + /Tcx currentpoint pop def + gsave + newpath + cf findfont cs scalefont dup + /FontMatrix get 0 get /Ts exch def /FontInfo get dup + /UnderlinePosition get Ts mul /To exch def + /UnderlineThickness get Ts mul /Tt exch def + ux uy To add cs add moveto Tcx uy To add cs add lineto + Tt setlinewidth stroke + grestore +} bd +/SOE { + /Tcx currentpoint pop def + gsave + newpath + cf findfont cs scalefont dup + /FontMatrix get 0 get /Ts exch def /FontInfo get dup + /UnderlinePosition get Ts mul /To exch def + /UnderlineThickness get Ts mul /Tt exch def + ux uy To add cs 10 mul 26 idiv add moveto Tcx uy To add cs 10 mul 26 idiv add lineto + Tt setlinewidth stroke + grestore +} bd +/QT { +/Y22 exch store +/X22 exch store +/Y21 exch store +/X21 exch store +currentpoint +/Y21 load 2 mul add 3 div exch +/X21 load 2 mul add 3 div exch +/X21 load 2 mul /X22 load add 3 div +/Y21 load 2 mul /Y22 load add 3 div +/X22 load /Y22 load curveto +} bd +/SSPD { +dup length /d exch dict def +{ +/v exch def +/k exch def +currentpagedevice k known { +/cpdv currentpagedevice k get def +v cpdv ne { +/upd false def +/nullv v type /nulltype eq def +/nullcpdv cpdv type /nulltype eq def +nullv nullcpdv or +{ +/upd true def +} { +/sametype v type cpdv type eq def +sametype { +v type /arraytype eq { +/vlen v length def +/cpdvlen cpdv length def +vlen cpdvlen eq { +0 1 vlen 1 sub { +/i exch def +/obj v i get def +/cpdobj cpdv i get def +obj cpdobj ne { +/upd true def +exit +} if +} for +} { +/upd true def +} ifelse +} { +v type /dicttype eq { +v { +/dv exch def +/dk exch def +/cpddv cpdv dk get def +dv cpddv ne { +/upd true def +exit +} if +} forall +} { +/upd true def +} ifelse +} ifelse +} if +} ifelse +upd true eq { +d k v put +} if +} if +} if +} forall +d length 0 gt { +d setpagedevice +} if +} bd +/RE { % /NewFontName [NewEncodingArray] /FontName RE - + findfont dup length dict begin + { + 1 index /FID ne + {def} {pop pop} ifelse + } forall + /Encoding exch def + /FontName 1 index def + currentdict definefont pop + end +} bind def +%%EndResource +%%BeginResource: procset (Apache XML Graphics EPS ProcSet) 1.0 0 +%%Version: 1.0 0 +%%Copyright: (Copyright 2002-2003 The Apache Software Foundation. License terms: http://www.apache.org/licenses/LICENSE-2.0) +/BeginEPSF { %def +/b4_Inc_state save def % Save state for cleanup +/dict_count countdictstack def % Count objects on dict stack +/op_count count 1 sub def % Count objects on operand stack +userdict begin % Push userdict on dict stack +/showpage { } def % Redefine showpage, { } = null proc +0 setgray 0 setlinecap % Prepare graphics state +1 setlinewidth 0 setlinejoin +10 setmiterlimit [ ] 0 setdash newpath +/languagelevel where % If level not equal to 1 then +{pop languagelevel % set strokeadjust and +1 ne % overprint to their defaults. +{false setstrokeadjust false setoverprint +} if +} if +} bd +/EndEPSF { %def +count op_count sub {pop} repeat % Clean up stacks +countdictstack dict_count sub {end} repeat +b4_Inc_state restore +} bd +%%EndResource +%FOPBeginFontDict +%%IncludeResource: font Courier-Bold +%%IncludeResource: font Helvetica +%%IncludeResource: font Courier-BoldOblique +%%IncludeResource: font Courier-Oblique +%%IncludeResource: font Times-Roman +%%IncludeResource: font Helvetica-BoldOblique +%%IncludeResource: font Helvetica-Bold +%%IncludeResource: font Helvetica-Oblique +%%IncludeResource: font Times-BoldItalic +%%IncludeResource: font Courier +%%IncludeResource: font Times-Italic +%%IncludeResource: font Times-Bold +%%IncludeResource: font Symbol +%%IncludeResource: font ZapfDingbats +%FOPEndFontDict +%%BeginResource: encoding WinAnsiEncoding +/WinAnsiEncoding [ +/.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl +/numbersign /dollar /percent /ampersand /quotesingle +/parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one +/two /three /four /five /six +/seven /eight /nine /colon /semicolon +/less /equal /greater /question /at +/A /B /C /D /E +/F /G /H /I /J +/K /L /M /N /O +/P /Q /R /S /T +/U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum +/underscore /quoteleft /a /b /c +/d /e /f /g /h +/i /j /k /l /m +/n /o /p /q /r +/s /t /u /v /w +/x /y /z /braceleft /bar +/braceright /asciitilde /bullet /Euro /bullet +/quotesinglbase /florin /quotedblbase /ellipsis /dagger +/daggerdbl /circumflex /perthousand /Scaron /guilsinglleft +/OE /bullet /Zcaron /bullet /bullet +/quoteleft /quoteright /quotedblleft /quotedblright /bullet +/endash /emdash /asciitilde /trademark /scaron +/guilsinglright /oe /bullet /zcaron /Ydieresis +/space /exclamdown /cent /sterling /currency +/yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /sfthyphen /registered +/macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /middot /cedilla +/onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex +/Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave +/Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis +/multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave +/aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex +/edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex +/otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn +/ydieresis +] def +%%EndResource +%FOPBeginFontReencode +/Courier-Bold findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Courier-Bold exch definefont pop +/Helvetica findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Helvetica exch definefont pop +/Courier-BoldOblique findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Courier-BoldOblique exch definefont pop +/Courier-Oblique findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Courier-Oblique exch definefont pop +/Times-Roman findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Times-Roman exch definefont pop +/Helvetica-BoldOblique findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Helvetica-BoldOblique exch definefont pop +/Helvetica-Bold findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Helvetica-Bold exch definefont pop +/Helvetica-Oblique findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Helvetica-Oblique exch definefont pop +/Times-BoldItalic findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Times-BoldItalic exch definefont pop +/Courier findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Courier exch definefont pop +/Times-Italic findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Times-Italic exch definefont pop +/Times-Bold findfont +dup length dict begin + {1 index /FID ne {def} {pop pop} ifelse} forall + /Encoding WinAnsiEncoding def + currentdict +end +/Times-Bold exch definefont pop +%FOPEndFontReencode +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 426 319 +%%BeginPageSetup +[1 0 0 -1 0 319] CT +%%EndPageSetup +GS +[0.75 0 0 0.75 0 0.25] CT +1 GC +N +0 0 568 425 re +f +GR +GS +[0.75 0 0 0.75 0 0.25] CT +1 GC +N +0 0 568 425 re +f +GR +GS +[0.75 0 0 0.75 0 0.25] CT +1 GC +N +74 378 M +514 378 L +514 32 L +74 32 L +cp +f +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 378 M +514 378 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 32 M +514 32 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 378 M +74 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +136.857 378 M +136.857 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +199.714 378 M +199.714 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +262.571 378 M +262.571 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +325.429 378 M +325.429 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +388.286 378 M +388.286 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +451.143 378 M +451.143 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 378 M +514 373.6 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 32 M +74 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +136.857 32 M +136.857 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +199.714 32 M +199.714 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +262.571 32 M +262.571 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +325.429 32 M +325.429 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +388.286 32 M +388.286 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +451.143 32 M +451.143 36.4 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 32 M +514 36.4 L +S +GR +GS +[0.75 0 0 0.75 55.5 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-4.5 13 moveto +1 -1 scale +(0) t +GR +GR +GS +[0.75 0 0 0.75 102.64286 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(10) t +GR +GR +GS +[0.75 0 0 0.75 149.78571 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(20) t +GR +GR +GS +[0.75 0 0 0.75 196.92858 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(30) t +GR +GR +GS +[0.75 0 0 0.75 244.07142 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(40) t +GR +GR +GS +[0.75 0 0 0.75 291.21428 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(50) t +GR +GR +GS +[0.75 0 0 0.75 338.35714 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(60) t +GR +GR +GS +[0.75 0 0 0.75 385.5 287.75001] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-8.5 13 moveto +1 -1 scale +(70) t +GR +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 378 M +74 32 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 378 M +514 32 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 378 M +78.4 378 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 328.571 M +78.4 328.571 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 279.143 M +78.4 279.143 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 229.714 M +78.4 229.714 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 180.286 M +78.4 180.286 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 130.857 M +78.4 130.857 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 81.429 M +78.4 81.429 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +74 32 M +78.4 32 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 378 M +509.6 378 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 328.571 M +509.6 328.571 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 279.143 M +509.6 279.143 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 229.714 M +509.6 229.714 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 180.286 M +509.6 180.286 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 130.857 M +509.6 130.857 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 81.429 M +509.6 81.429 L +S +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0.149 GC +2 setlinecap +1 LJ +0.667 LW +N +514 32 M +509.6 32 L +S +GR +GS +[0.75 0 0 0.75 51.5 283.75] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-9 4.5 moveto +1 -1 scale +(0) t +GR +GR +GS +[0.75 0 0 0.75 51.5 246.67858] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-9 4.5 moveto +1 -1 scale +(2) t +GR +GR +GS +[0.75 0 0 0.75 51.5 209.60714] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-9 4.5 moveto +1 -1 scale +(4) t +GR +GR +GS +[0.75 0 0 0.75 51.5 172.53571] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-9 4.5 moveto +1 -1 scale +(6) t +GR +GR +GS +[0.75 0 0 0.75 51.5 135.46429] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-9 4.5 moveto +1 -1 scale +(8) t +GR +GR +GS +[0.75 0 0 0.75 51.5 98.39286] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-17 4.5 moveto +1 -1 scale +(10) t +GR +GR +GS +[0.75 0 0 0.75 51.5 61.32143] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-17 4.5 moveto +1 -1 scale +(12) t +GR +GR +GS +[0.75 0 0 0.75 51.5 24.25] CT +0.149 GC +/Helvetica 13.333 F +GS +[1 0 0 1 0 0] CT +-17 4.5 moveto +1 -1 scale +(14) t +GR +GR +GS +[0.75 0 0 0.75 0 0.25] CT +0 0.447 0.741 RC +1 LJ +0.667 LW +N +80.286 293.604 M +86.571 261.261 L +92.857 265.134 L +99.143 246.6 L +105.429 44.588 L +111.714 290.264 L +118 330.104 L +124.286 281.652 L +130.571 272.285 L +136.857 298.72 L +143.143 227.309 L +149.429 369.128 L +155.714 356.055 L +162 236.973 L +168.286 308.15 L +174.571 311.411 L +180.857 281.224 L +187.143 271.149 L +193.429 348.732 L +199.714 292.017 L +206 283.242 L +212.286 256.125 L +218.571 264.453 L +224.857 329.278 L +231.143 242.339 L +237.429 335.871 L +243.714 293.456 L +250 282.236 L +256.286 272.983 L +262.571 292.922 L +268.857 263.69 L +275.143 335.477 L +281.429 234.74 L +287.714 298.338 L +294 337.962 L +300.286 268.631 L +306.571 304.068 L +312.857 255.373 L +319.143 306.697 L +325.429 227.882 L +331.714 322.077 L +338 279.76 L +344.286 294.683 L +350.571 271.146 L +356.857 313.041 L +363.143 265.605 L +369.429 285.479 L +375.714 290.946 L +382 223.626 L +388.286 315.247 L +394.571 293.291 L +400.857 242.776 L +407.143 308.886 L +413.429 278.745 L +419.714 296.069 L +426 290.621 L +432.286 237.44 L +438.571 298.084 L +444.857 292.148 L +451.143 314.999 L +457.429 278.741 L +463.714 269.439 L +470 300.239 L +476.286 245.71 L +482.571 213.333 L +488.857 267.147 L +495.143 331.809 L +501.429 347.774 L +507.714 377.972 L +S +GR +%%Trailer +%%Pages: 1 +%%EOF diff --git a/tex/main.aux b/tex/main.aux index 710b3f1..8a7959e 100644 --- a/tex/main.aux +++ b/tex/main.aux @@ -23,41 +23,43 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}\textit {function} frameT = iFilterbank(frameF, frameType, winType)}{3}{subsection.2.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.4}\textit {function} AACSeq1 = AACoder1(fNameIn)}{3}{subsection.2.4}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5}\textit {function} x = iAACoder1(AACSeq1, fNameOut)}{3}{subsection.2.5}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.6}\textit {function} SNR = demoAAC1(fNameIn, fNameOut)}{4}{subsection.2.6}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6}\textit {function} SNR = demoAAC1(fNameIn, fNameOut)}{3}{subsection.2.6}} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Το frame στο πεδίο του χρόνου πριν τροφοδοτηθεί σε συναρτήσεις\relax }}{4}{figure.caption.2}} \@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Μετάβαση στο πεδίο της συχνότητας με την συνάρτηση filterbank, συντελεστές MDCT \relax }}{4}{figure.caption.3}} \@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Η επιστροφή στο πεδίου του χρόνου μέσω της συνάρτησης iFilterbank\relax }}{4}{figure.caption.4}} -\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Κοινό διάγραμμα αρχικού σήματος με το σήμα εξόδου της iFilterbank\relax }}{5}{figure.caption.5}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Κοινό διάγραμμα αρχικού σήματος με το σήμα εξόδου της iFilterbank\relax }}{4}{figure.caption.5}} \providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} -\newlabel{ref:1}{{4}{5}{Κοινό διάγραμμα αρχικού σήματος με το σήμα εξόδου της iFilterbank\relax }{figure.caption.5}{}} +\newlabel{ref:1}{{4}{4}{Κοινό διάγραμμα αρχικού σήματος με το σήμα εξόδου της iFilterbank\relax }{figure.caption.5}{}} \@writefile{toc}{\contentsline {section}{\numberline {3}2o Επίπεδο}{5}{section.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.1}\textit {function} [frameFout, TNScoeffs] = TNS(frameFin, frameType)}{5}{subsection.3.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2}\textit {function} frameFout = iTNS(frameFin, frameType, TNScoeffs)}{5}{subsection.3.2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}\textit {function} AACSeq2 = AACoder2(fNameIn)}{6}{subsection.3.3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}\textit {function} x = iAACoder2(AACSeq2, fNameOut)}{6}{subsection.3.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}\textit {function} AACSeq2 = AACoder2(fNameIn)}{5}{subsection.3.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}\textit {function} x = iAACoder2(AACSeq2, fNameOut)}{5}{subsection.3.4}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5}\textit {function} SNR = demoAAC2(fNameIn, fNameOut)}{6}{subsection.3.5}} \@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Κοινό διάγραμμα αρχικού σήματος με το σήμα εξόδου της iAACoder2\relax }}{6}{figure.caption.6}} \newlabel{ref:2}{{5}{6}{Κοινό διάγραμμα αρχικού σήματος με το σήμα εξόδου της iAACoder2\relax }{figure.caption.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4}3ο Επίπεδο}{7}{section.4}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}\textit {function} SMR = psycho(frameT, frameType, frameTprev1, frameTprev2) }{7}{subsection.4.1}} +\@writefile{toc}{\contentsline {section}{\numberline {4}3ο Επίπεδο}{6}{section.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}\textit {function} SMR = psycho(frameT, frameType, frameTprev1, frameTprev2) }{6}{subsection.4.1}} \@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Κατώφλι ακουστότητας για το αριστερό κανάλι του 2ου frame\relax }}{7}{figure.caption.7}} \newlabel{ref:6}{{6}{7}{Κατώφλι ακουστότητας για το αριστερό κανάλι του 2ου frame\relax }{figure.caption.7}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Signal to Mask Ratio για το αριστερό κανάλι του 2ου frame\relax }}{7}{figure.caption.8}} +\newlabel{ref:10}{{7}{7}{Signal to Mask Ratio για το αριστερό κανάλι του 2ου frame\relax }{figure.caption.8}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}\textit {function} [S, sfc, G] = AACquantizer(frameF, frameType, SMR)}{7}{subsection.4.2}} -\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Συντελεστές MDCT πριν τον κβαντισμό\relax }}{8}{figure.caption.8}} -\newlabel{ref:3}{{7}{8}{Συντελεστές MDCT πριν τον κβαντισμό\relax }{figure.caption.8}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Επίπεδα κβαντισμού\relax }}{8}{figure.caption.9}} -\newlabel{ref:4}{{8}{8}{Επίπεδα κβαντισμού\relax }{figure.caption.9}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Κβαντισμένοι συντελεστές\relax }}{8}{figure.caption.10}} -\newlabel{ref:5}{{9}{8}{Κβαντισμένοι συντελεστές\relax }{figure.caption.10}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Συντελεστές MDCT πριν τον κβαντισμό\relax }}{8}{figure.caption.9}} +\newlabel{ref:3}{{8}{8}{Συντελεστές MDCT πριν τον κβαντισμό\relax }{figure.caption.9}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Επίπεδα κβαντισμού\relax }}{8}{figure.caption.10}} +\newlabel{ref:4}{{9}{8}{Επίπεδα κβαντισμού\relax }{figure.caption.10}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Κβαντισμένοι συντελεστές\relax }}{8}{figure.caption.11}} +\newlabel{ref:5}{{10}{8}{Κβαντισμένοι συντελεστές\relax }{figure.caption.11}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.3}\textit {function} frameF = iAACquantizer(S, sfc, G, frameType)}{8}{subsection.4.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.4}\textit {function} [huffSec, huffCodebook] = encodeHuff(coeffSec, huffLUT, forcedCodebook)}{9}{subsection.4.4}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.5}\textit {function} decCoeffs = decodeHuff(huffSec, huffCodebook, huffLUT)}{9}{subsection.4.5}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.6}\textit {function} AACSeq3 = AACoder3(fNameIn, fnameAACoded)}{9}{subsection.4.6}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.7}\textit {function} x = iAACoder3(AACSeq3, fNameOut)}{9}{subsection.4.7}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.8}\textit {function} [SNR, bitrate, compression] = demoAAC3(fNameIn, fNameOut, frameAACoded)}{9}{subsection.4.8}} -\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Αρχικό (μαύρο) και αποκωδικοποιημένο (κόκκινο) σήμα\relax }}{10}{figure.caption.12}} -\newlabel{ref:7}{{10}{10}{Αρχικό (μαύρο) και αποκωδικοποιημένο (κόκκινο) σήμα\relax }{figure.caption.12}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Διαφορά σημάτων σε κάθε δείγμα\relax }}{10}{figure.caption.13}} -\newlabel{ref:8}{{11}{10}{Διαφορά σημάτων σε κάθε δείγμα\relax }{figure.caption.13}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Απόλυτη διαφορά σημάτων\relax }}{11}{figure.caption.14}} -\newlabel{ref:9}{{12}{11}{Απόλυτη διαφορά σημάτων\relax }{figure.caption.14}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Αρχικό (μαύρο) και αποκωδικοποιημένο (κόκκινο) σήμα\relax }}{10}{figure.caption.13}} +\newlabel{ref:7}{{11}{10}{Αρχικό (μαύρο) και αποκωδικοποιημένο (κόκκινο) σήμα\relax }{figure.caption.13}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Διαφορά σημάτων σε κάθε δείγμα\relax }}{10}{figure.caption.14}} +\newlabel{ref:8}{{12}{10}{Διαφορά σημάτων σε κάθε δείγμα\relax }{figure.caption.14}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Απόλυτη διαφορά σημάτων\relax }}{11}{figure.caption.15}} +\newlabel{ref:9}{{13}{11}{Απόλυτη διαφορά σημάτων\relax }{figure.caption.15}{}} diff --git a/tex/main.log b/tex/main.log index 5939257..4ae5b67 100644 --- a/tex/main.log +++ b/tex/main.log @@ -1,4 +1,4 @@ -This is XeTeX, Version 3.14159265-2.6-0.99998 (TeX Live 2017/Debian) (preloaded format=xelatex 2018.11.1) 17 FEB 2019 21:00 +This is XeTeX, Version 3.14159265-2.6-0.99998 (TeX Live 2017/Debian) (preloaded format=xelatex 2018.11.1) 17 FEB 2019 21:58 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -763,7 +763,11 @@ LaTeX Info: Redefining \rmfamily on input line 23. ................................................. LaTeX Info: Redefining \ttfamily on input line 24. Package hyperref Info: Option `colorlinks' set `true' on input line 39. - (./main.aux) + (./main.aux + +LaTeX Warning: Label `ref:9' multiply defined. + +) \openout1 = `main.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 42. @@ -918,9 +922,10 @@ File: se-ascii-print.def 2016/05/16 v1.11 stringenc: Printable ASCII characters ) [1 -] [2] [3] +] [2] File: figures/frame_2_original.eps Graphic file (type eps) + [3] File: figures/frame_2_left_filtered.eps Graphic file (type eps) File: figures/frame_2_left_iFiltered.eps Graphic file (type eps) @@ -929,7 +934,7 @@ File: figures/frame_2_comparison_filtered_and_ifiltered.eps Graphic file (type eps) [4] -Overfull \hbox (4.94525pt too wide) in paragraph at lines 155--157 +Overfull \hbox (4.94525pt too wide) in paragraph at lines 158--160 \TU/Lato(0)/m/n/10.95 με την ενέργεια της μπάντας στην οποία ανήκουν. Με την βο ήθεια της συνάρτησης lpc του MATLAB, [] @@ -937,9 +942,11 @@ Overfull \hbox (4.94525pt too wide) in paragraph at lines 155--157 [5] File: figures/frame_2_comparison_iTNS.eps Graphic file (type eps) - [6] File: figures/psycho_thres_frame2_right.eps Graphic file (type eps) + [6] +File: figures/smrl.eps Graphic file (type eps) + File: figures/frame_2_mdct_coef_before.eps Graphic file (type eps) [7] @@ -948,38 +955,42 @@ File: figures/quant_levels.eps Graphic file (type eps) File: figures/frame_2_SL.eps Graphic file (type eps) [8] -Overfull \hbox (20.04814pt too wide) in paragraph at lines 282--282 +Overfull \hbox (20.04814pt too wide) in paragraph at lines 294--294 []\TU/Lato(0)/bx/it/12 function \TU/Lato(0)/bx/n/12 [SNR, bitrate, compression] = demoAAC3(fNameIn, fNameOut, frameAACoded) [] LaTeX Warning: No positions in optional float specifier. - Default added (so using `tbp') on input line 289. + Default added (so using `tbp') on input line 301. -[9] File: figures/decoded_encoded.eps Graphic file (type eps) +[9] File: figures/difference.eps Graphic file (type eps) File: figures/bar_abs_dif.eps Graphic file (type eps) [10] -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 329. +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 341. [11] -Package atveryend Info: Empty hook `AfterLastShipout' on input line 329. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 341. (./main.aux) -Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 329. -Package atveryend Info: Empty hook `AtEndAfterFileList' on input line 329. -Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 329. +Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 341. +Package atveryend Info: Empty hook `AtEndAfterFileList' on input line 341. + + +LaTeX Warning: There were multiply-defined labels. + +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 341. ) Here is how much of TeX's memory you used: - 20870 strings out of 493007 - 394285 string characters out of 6136719 - 498564 words of memory out of 5000000 - 24683 multiletter control sequences out of 15000+600000 + 20864 strings out of 493007 + 394202 string characters out of 6136719 + 497564 words of memory out of 5000000 + 24676 multiletter control sequences out of 15000+600000 536860 words of font info for 71 fonts, out of 8000000 for 9000 1348 hyphenation exceptions out of 8191 - 39i,11n,65p,10407b,336s stack positions out of 5000i,500n,10000p,200000b,80000s + 39i,11n,65p,10407b,357s stack positions out of 5000i,500n,10000p,200000b,80000s Output written on main.pdf (11 pages). diff --git a/tex/main.pdf b/tex/main.pdf index 6b61324..d5c3ef6 100644 Binary files a/tex/main.pdf and b/tex/main.pdf differ diff --git a/tex/main.synctex.gz b/tex/main.synctex.gz index ccb45e7..6762061 100644 Binary files a/tex/main.synctex.gz and b/tex/main.synctex.gz differ diff --git a/tex/main.tex b/tex/main.tex index 833ca5e..cdae21d 100644 --- a/tex/main.tex +++ b/tex/main.tex @@ -26,7 +26,7 @@ \title{Συστήματα Πολυμέσων και Εικονική Πραγματικότητα\\ Εργασία 2018-2019} \author{Χριστίνα Θεοδωρίδου - 8055\\ - Aποστόλης Φανάκης- αεμ} + Aποστόλης Φανάκης- 8261} \date{\today} \pagestyle{fancy} @@ -46,7 +46,7 @@ \newpage \section{Εισαγωγή} - Στην εργασία αυτή παρουσιάζεται μια απλοποιημένη εκδοχή του κωδικοποιητή και αποκωδικοποιητή AAC. Στην παρούσα αναφορά, περιγράφεται ο τρόπος υλοποίησης των βαθμίδων στο MATLAB και ο τρόπος χρήσης των συναρτήσεων από τις οποίες αποτελούνται, μαζί με κάποια ενδεικτικά αποτελέσματα. + Στην εργασία αυτή παρουσιάζεται μια απλοποιημένη εκδοχή του κωδικοποιητή και αποκωδικοποιητή AAC. Στην παρούσα αναφορά, περιγράφεται ο τρόπος υλοποίησης των βαθμίδων στο MATLAB και ο τρόπος χρήσης των συναρτήσεων από τις οποίες αποτελούνται, μαζί με κάποια ενδεικτικά αποτελέσματα. Το αρχείο που χρησιμοποιήθηκε για τα πειράματα είναι το δοσμένο 'LicorDeCalandraca.wav', το οποίο είναι δειγματοληπτημένο στα 48KHz και έχει 2 κανάλια. Τέλος, κατά την εκτέλεση των προγραμμάτων χρησιμοποιούνται οι συναρτήσεις mdct4 και imdct4 οι οποίες έχουν ληφθεί από προτεινόμενη ιστοσελίδα. \footnote{http://www.ee.columbia.edu/\~marios/mdct/mdct\_giraffe.html} \section{1o Επίπεδο} @@ -56,26 +56,29 @@ Η πρώτη συνάρτηση που υλοποιήθηκε αφορά την βαθμίδα Sequence Segmentation Control, και σκοπός της είναι να καθορίσει τον τύπο ενός frame. Το πρώτο όρισμά της είναι ένας πίνακας 2048x2 , που περιέχει 2 κανάλια ήχου στο χρόνο, του frame του οποίου τον τύπο θέλουμε να διαπιστώσουμε. Αντίστοιχα, το δεύτερο όρισμα περιέχει τα κανάλια του του αμέσως επόμενου frame ενώ το τρίτο, αφορά τον τύπο του αμέσως προηγούμενου frame, ο οποίος μπορεί να πάρει 1 από τις αλφαριθμητικές τιμές "OLS" (ONLY\_LONG\_SEQUENCE), "LSS" (LONG\_START\_SEQUENCE), "ESH" (EIGHT\_SHORT\_SEQUENCE) και "LPS" (LONG\_STOP\_SEQUENCE) , ανάλογα το περιεχόμενο του. - Για να αποφανθούμε για τον τύπο του frame, εξετάζεται το αμέσως επόμενο frame, δηλαδή το frame $i+1$. Τα βήματα που ακολουθούνται είναι τα εξής: -\begin{enumerate} - \item Τα δείγματά του, παιρνούν από το υψιπερατό φίλτρο - $ H(z) = \frac{0.7548 - 0.7548z^{-1}}{1- 0.5095z^{-1}}$, με την βοήθεια της συνάρτησης filter. - \item Για κάθε μία από τις 8 υποπεριοχές του (subframes), υπολογίζεται η ενέργειά τους $s_{l}^{2}$, $(l = 0,..,7)$ , δηλαδή το άθροισμα των τετραγώνων των δειγμάτων τους, και αποθηκεύεται στο energyEstimations. - \item Υπολογίζονται τα attack values $ds_{l}^{2} = \frac{s_{l}^{2}}{(1/l) \cdot \Sigma_{k=0}^{l-1} s_{k}^{2}}$ και αποθηκεύονται στο energyRatios. - \item Το frame $i+1$ θα είναι "ESH" εάν ισχύουν ταυτόχρονα: - \begin{itemize} - \item $s_{l}^{2} > 10^{-3}$ - \item $ds_{l}^{2} > 10$ - \end{itemize} -\end{enumerate} - - Ανάλογα με την ισχύ ή όχι των παραπάνω συνθηκών και δεδομένου του τύπου του προηγούμενου frame, είναι δυνατή η απόφαση του τύπου του frame i, με τη λογική που παρουσιάζεται στο πρότυπο και την εκφώνηση της εργασίας. Για αυτό τον λόγο, στη συνέχεια, συγκρίνονται οι τύποι του επόμενου και του προηγούμενου frame και λαμβάνεται η απόφαση για τον τύπου του κάθε καναλιού. Για την απόφαση του τύπου ολόκληρου του frame, είναι απαραίτητος ο συνδυασμός των αποφάσεων των τύπων των δύο καναλιών σύμφωνα και πάλι με δοθείσα λογική. + +Tα frame τα οποία είναι στατικά χαρακτηρίζονται ως 'OLS' ενώ τα frames με διακυμάνσεις ως 'ESH'. Τα μεταβατικά παράθυρα μεταξύ αυτών των κύριων κατηγοριών είναι τα 'LSS' και 'LPS'. Ο τρόπος με τον οποίον γίνεται η κατηγοριοποίηση περιγράφεται αναλυτικά στο πρότυπο του AAC. Γενικά, με τα βήματα που ακολουθούνται εξάγεται αρχικά ένα συμπέρασμα για κάθε κανάλι ξεχωριστά και έπειτα με μια συνδυαστική λογική που επίσης περιγράφεται στο πρότυπο, γίνεται ο συνδυασμός των αποφάσεων για να προκύψει ο τελικός τύπος του παραθύρου. + +% εξετάζεται το αμέσως επόμενο frame, δηλαδή το frame $i+1$. Τα βήματα που ακολουθούνται είναι τα εξής: +% \begin{enumerate} +% \item Τα δείγματά του, παιρνούν από το υψιπερατό φίλτρο +% $ H(z) = \frac{0.7548 - 0.7548z^{-1}}{1- 0.5095z^{-1}}$, με την βοήθεια της συνάρτησης filter. +% \item Για κάθε μία από τις 8 υποπεριοχές του (subframes), υπολογίζεται η ενέργειά τους $s_{l}^{2}$, $(l = 0,..,7)$ , δηλαδή το άθροισμα των τετραγώνων των δειγμάτων τους, και αποθηκεύεται στο energyEstimations. +% \item Υπολογίζονται τα attack values $ds_{l}^{2} = \frac{s_{l}^{2}}{(1/l) \cdot \Sigma_{k=0}^{l-1} s_{k}^{2}}$ και αποθηκεύονται στο energyRatios. +% \item Το frame $i+1$ θα είναι "ESH" εάν ισχύουν ταυτόχρονα: +% \begin{itemize} +% \item $s_{l}^{2} > 10^{-3}$ +% \item $ds_{l}^{2} > 10$ +% \end{itemize} +% \end{enumerate} + +% Ανάλογα με την ισχύ ή όχι των παραπάνω συνθηκών και δεδομένου του τύπου του προηγούμενου frame, είναι δυνατή η απόφαση του τύπου του frame i, με τη λογική που παρουσιάζεται στο πρότυπο και την εκφώνηση της εργασίας. Για αυτό τον λόγο, στη συνέχεια, συγκρίνονται οι τύποι του επόμενου και του προηγούμενου frame και λαμβάνεται η απόφαση για τον τύπου του κάθε καναλιού. Για την απόφαση του τύπου ολόκληρου του frame, είναι απαραίτητος ο συνδυασμός των αποφάσεων των τύπων των δύο καναλιών σύμφωνα και πάλι με δοθείσα λογική. \subsection{\textit{function} frameF = filterbank(frameT, frameType, winType)} Η συνάρτηση αυτή αφορά την βαθμίδα filterbank και έχει ως ορίσματα ένα frame ήχου 2048x2, τον τύπο του καθώς και τον τύπο παραθύρου που θα χρησιμοποηθεί. Η δε έξοδός του, είναι η αναπαράσταση του ίδιου του frame στο πεδίο της συχνότητας, σε όρους MDCT. Στην περίπτωση που το frame είναι τύπου "ESH", η συνάρτηση θα επιστρέφει 8 υποπίνακες 128x2 με τους συντελεστές του MDCT, έναν για κάθε subframe ενώ σε άλλη περίπτωση, θα επιστρέφει έναν πίνακα 1024x2. - Για να γίνει η μετάβαση αυτή ακολουθείται η διαδικασία που περιγράφεται στο πρότυπο. Αρχικά, στην υλοποιημένη συνάρτηση, δημιουργούνται οι τύποι των παραθύρων "KBD"και "SIN" που θα χρησιμοποιηθούν αργότερα, σε εκδοχές short και long για subframes και frames μήκους 256 και 2048 αντίστοιχα. Στη συνέχεια, σύμφωνα με το frameType και winType που δίνονται, εφαρμόζεται στο frameT το κατάλληλο παράθυρο, με τον τρόπο που υποδεικνύεται στην εκφώνηση και καλείται η συνάρτηση mdct4 \footnote{http://www.ee.columbia.edu/\~marios/mdct/mdct\_giraffe.html} έτσι ώστε να ληφθούν οι συντελεστές MDCT. + Για να γίνει η μετάβαση αυτή ακολουθείται η διαδικασία που περιγράφεται στο πρότυπο. Αρχικά, στην υλοποιημένη συνάρτηση, δημιουργούνται οι τύποι των παραθύρων "KBD"και "SIN" που θα χρησιμοποιηθούν αργότερα, σε εκδοχές short και long για subframes και frames μήκους 256 και 2048 αντίστοιχα. Στη συνέχεια, σύμφωνα με το frameType και winType που δίνονται, εφαρμόζεται στο frameT το κατάλληλο παράθυρο, με τον τρόπο που υποδεικνύεται στην εκφώνηση και καλείται η συνάρτηση mdct4 έτσι ώστε να ληφθούν οι συντελεστές MDCT. Στην περίπτωση που ο τύπος του frame είναι "ESH", πρώτα το χωρίζουμε σε 8 subframes και έπειτα εφαρμόζουμε την παραθυροποίηση και τον mdct. @@ -107,7 +110,7 @@ Στην συνάρτηση αυτή, επιδεικνύεται η λειτουργία του κωδικοποιητή και του αποκωδικοποιητή και επιστρέφεται ο σηματοθορυβικός λόγος των εξόδων τους. Δέχεται ως ορίσματα το path του αρχείου που επιθυμούμε να κωδικοποιήσουμε και το όνομα που θα του δοθεί μετά την αποκωδικοποίηση. Για την εύρεση του σηματοθορυβικού λόγου χρησιμοποιείται η συνάρτηση του MATLAB snr. -Παρακάτω φαίνεται η λειτουργία των παραπάνω συναρτήσεων στο 2ο frame του δείγματος ήχου "LicorDeCalandraca.wav" που δίνεται. Ο λόγος του SNR είναι 301.6522 dB. +Παρακάτω φαίνεται η λειτουργία των παραπάνω συναρτήσεων στο 2ο frame του κομματιού. Ο λόγος του SNR είναι 301.6522 dB. \begin{figure}[H] @@ -198,8 +201,10 @@ H συνάρτηση αυτή επιδεικνύει την κωδικοποίη Υλοποιεί την βαθμίδα του ψυχοακουστικού μοντέλου για ένα κανάλι. Δέχεται ως είσοδο το frame στο πεδίο του χρόνου, τον τύπο του και τα 2 προηγούμενα του frames στο ίδιο κανάλι. Σαν έξοδο επιστρέφει τον λόγο σήματος προς μάσκα (Signal to Mask Ratio - SMR). +Ακολουθώντας την διαδικασία που περιγράφεται στο πρότυπο, βρίσκουμε το κατώφλι ακουστότητας που φαίνεται στο \ref{ref:9} ενώ στο \ref{ref:10} φαίνεται το SMR. + -Πρώτα αρχικοποιήσαμε τους πίνακες TNS από το πρότυπο και στη συνέχεια υπολογίσαμε όλα τα πιθανά αποτελέσματα της spreading \textit{function} και το παράθυρο Hann, τόσο για long όσο και για short frames. Στη συνέχεια, πολλαπλασιάστηκε το κατάλληλο παράθυρο στο frame i, i-1, i-2 και υπολογίστηκε ο FFT , το πλάτος και η φάση για κάθε ένα από αυτά τα frames. Έπειτα, γίνεται πρόβλεψη για το πλάτος και την φάση του frame, όπως υποδεικνύεται στην εκφώνηση και υπολογίζεται η προβλεψιμότητα του. Υπολογίζοντας την ενέργεια και τη βεβαρυμένη προβλεψιμότητα για κάθε μπάντα μπορούμε να τις συνδυάσουμε με την spreading \textit{function} και να κανονικοποιήσουμε το αποτέλεσμα ώστε να εξάγουμε από αυτό τον δείκτη τονικότητας. Βρίσκουμε το SNR, το μετατρέπουμε σε λόγο ενέργειας, όπως υποδεικνύεται, και υπολογίζουμε το κατώφλι ενέργειας. Τέλος, υπολογίζουμε το επίπεδο θορύβου σε κάθε μπάντα και το SMR. +% Πρώτα αρχικοποιήσαμε τους πίνακες TNS από το πρότυπο και στη συνέχεια υπολογίσαμε όλα τα πιθανά αποτελέσματα της spreading function και το παράθυρο Hann, τόσο για long όσο και για short frames. Στη συνέχεια, πολλαπλασιάστηκε το κατάλληλο παράθυρο στο frame i, i-1, i-2 και υπολογίστηκε ο FFT , το πλάτος και η φάση για κάθε ένα από αυτά τα frames. Έπειτα, γίνεται πρόβλεψη για το πλάτος και την φάση του frame, όπως υποδεικνύεται στην εκφώνηση και υπολογίζεται η προβλεψιμότητα του. Υπολογίζοντας την ενέργεια και τη βεβαρυμένη προβλεψιμότητα για κάθε μπάντα μπορούμε να τις συνδυάσουμε με την spreading function και να κανονικοποιήσουμε το αποτέλεσμα ώστε να εξάγουμε από αυτό τον δείκτη τονικότητας. Βρίσκουμε το SNR, το μετατρέπουμε σε λόγο ενέργειας, όπως υποδεικνύεται, και υπολογίζουμε το κατώφλι ενέργειας. Τέλος, υπολογίζουμε το επίπεδο θορύβου σε κάθε μπάντα και το SMR. \begin{figure}[H] \centering @@ -209,12 +214,22 @@ H συνάρτηση αυτή επιδεικνύει την κωδικοποίη \end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.95\columnwidth,height=6cm]{figures/smrl.eps} + \caption{Signal to Mask Ratio για το αριστερό κανάλι του 2ου frame} + \label{ref:10} +\end{figure} + + + \subsection{\textit{function} [S, sfc, G] = AACquantizer(frameF, frameType, SMR)} Υπολογίζει εσωτερικά το κατώφλι ακουστότητας T(b) και υλοποιεί τη βαθμίδα του κβαντιστή για κάθε κανάλι. Δέχεται ως εισόδους το frame στο πεδίο της συχνότητας σε όρους συντελεστών MDCT, τον τύπο του και το υπολογισμένο SMR. Σαν έξοδο επιστρέφει τον πίνακα s που περιέχει τα σύμβολα κβάντισης των συντελεστών ΜDCT του frame, τον πίνακα sfc με τις τιμές των Scalefactor για κάθε Scalefactor band και το G που είναι το global gain του frame. -Βρίσκουμε αρχικά το κατώφλι ακουστότητας και έπειτα ακολουθώντας τα βήματα που υποδεικνύονται, αρχικά υπολογίζεται μια τιμή του συντελεστή Scalefactor Gain και υπολογίζεται το σφάλμα. Στη συνέχεια αυξάνεται σταδιακά ο συντελεστής και υπολογίζεται και πάλι το σφάλμα μέχρι να φτάσουμε το κατώφλι ακουστότητας. +% Βρίσκουμε αρχικά το κατώφλι ακουστότητας και έπειτα ακολουθώντας τα βήματα που υποδεικνύονται, αρχικά υπολογίζεται μια τιμή του συντελεστή Scalefactor Gain και υπολογίζεται το σφάλμα. Στη συνέχεια αυξάνεται σταδιακά ο συντελεστής και υπολογίζεται και πάλι το σφάλμα μέχρι να φτάσουμε το κατώφλι ακουστότητας. Η συνάρτηση παίρνει ως είσοδο τους συντελεστές MDCT που φαίνονται στο \ref{ref:3} \begin{figure}[H] @@ -266,13 +281,10 @@ H συνάρτηση αυτή επιδεικνύει την κωδικοποίη \subsection{\textit{function} AACSeq3 = AACoder3(fNameIn, fnameAACoded)} -Υλοποιεί έναν κωδικοποιητή ο οποίος δέχεται σαν είσοδο το path του αρχείου το οποίο πρόκειται να κωδικοποιηθεί και το path του .mat αρχείου που πρόκειται να εγγραφεί μετά την κωδικοποίηση. Ως έξοδο, επιστρέφει ένα struct το οποίο περιέχει για κάθε frame, όπως και πριν τον τύπο του και το παράθυρο που χρησιμοποιήθηκε,ενώ για κάθε κανάλι επιστρέφει τους κβαντισμένους συντελεστές TNS, τα κατώφλια ακουστότητας λόγω του ψυχοακουστικού μοντέλου, τα κβαντισμένα global gains, τους κωδικοποιημένους με Huffman κβαντισμένους συντελεστές MDCT και scalefactors και το Huffman codebook. +Υλοποιεί έναν κωδικοποιητή ο οποίος δέχεται σαν είσοδο το path του αρχείου το οποίο πρόκειται να κωδικοποιηθεί και το path του .mat αρχείου που πρόκειται να εγγραφεί μετά την κωδικοποίηση. Ως έξοδο, επιστρέφει ένα struct με διάσταση k x 1, όπου k, ο αριθμός των frames του αρχείου, το οποίο περιέχει για κάθε frame, όπως και πριν τον τύπο του και το παράθυρο που χρησιμοποιήθηκε,ενώ για κάθε κανάλι επιστρέφει τους κβαντισμένους συντελεστές TNS, τα κατώφλια ακουστότητας λόγω του ψυχοακουστικού μοντέλου, τα κβαντισμένα global gains, τους κωδικοποιημένους με Huffman κβαντισμένους συντελεστές MDCT και scalefactors και το Huffman codebook. Φορτώνει αρχικά τους πίνακες TNS, διαβάζει το αρχείο προς κωδικοποίηση και αφού το χωρίσει σε frames χρησιμοποεί στη συνέχεια τις συναρτήσεις SSC, filterbank, TNS, psycho, AACquantizer και encodeHuff για να το κωδικοποίησει. Τα αποτελέσματα φαίνονται παρακάτω: - -<< ΓΡΑΦΗΜΑ >> - \subsection{\textit{function} x = iAACoder3(AACSeq3, fNameOut)} Υλοποιεί τον αντίστοιχο αποκωδικοποιητή. Δέχεται ως εισόδους, το struct που προκύπτει από τον κωδικοποιητή AACoder3 και το όνομα μαζί με το path που πρόκειται να πάρει το αποκωδικοποιημένο αρχείο ενώ ως έξοδο επιστρέφει έναν πίνακα με το αποκωδικοποιημένο σήμα. Για την υλοποίηση του χρησιμοποιούνται οι συναρτήσεις decodeHuff, iAACquantizer, iTNS και iFilterbank. @@ -289,7 +301,7 @@ H συνάρτηση αυτή επιδεικνύει την κωδικοποίη \begin{table}[] \centering \begin{tabular}{ll} -\textbf{SNR} & 5.1821 \\ +\textbf{SNR} & 5.1821 dB \\ \textbf{bitrate} & 3.1937e+05 \\ \textbf{compression} & 4.8094 \end{tabular} diff --git a/tex/main.toc b/tex/main.toc index 0f47ba7..06f3f47 100644 --- a/tex/main.toc +++ b/tex/main.toc @@ -5,15 +5,15 @@ \contentsline {subsection}{\numberline {2.3}\textit {function} frameT = iFilterbank(frameF, frameType, winType)}{3}{subsection.2.3} \contentsline {subsection}{\numberline {2.4}\textit {function} AACSeq1 = AACoder1(fNameIn)}{3}{subsection.2.4} \contentsline {subsection}{\numberline {2.5}\textit {function} x = iAACoder1(AACSeq1, fNameOut)}{3}{subsection.2.5} -\contentsline {subsection}{\numberline {2.6}\textit {function} SNR = demoAAC1(fNameIn, fNameOut)}{4}{subsection.2.6} +\contentsline {subsection}{\numberline {2.6}\textit {function} SNR = demoAAC1(fNameIn, fNameOut)}{3}{subsection.2.6} \contentsline {section}{\numberline {3}2o Επίπεδο}{5}{section.3} \contentsline {subsection}{\numberline {3.1}\textit {function} [frameFout, TNScoeffs] = TNS(frameFin, frameType)}{5}{subsection.3.1} \contentsline {subsection}{\numberline {3.2}\textit {function} frameFout = iTNS(frameFin, frameType, TNScoeffs)}{5}{subsection.3.2} -\contentsline {subsection}{\numberline {3.3}\textit {function} AACSeq2 = AACoder2(fNameIn)}{6}{subsection.3.3} -\contentsline {subsection}{\numberline {3.4}\textit {function} x = iAACoder2(AACSeq2, fNameOut)}{6}{subsection.3.4} +\contentsline {subsection}{\numberline {3.3}\textit {function} AACSeq2 = AACoder2(fNameIn)}{5}{subsection.3.3} +\contentsline {subsection}{\numberline {3.4}\textit {function} x = iAACoder2(AACSeq2, fNameOut)}{5}{subsection.3.4} \contentsline {subsection}{\numberline {3.5}\textit {function} SNR = demoAAC2(fNameIn, fNameOut)}{6}{subsection.3.5} -\contentsline {section}{\numberline {4}3ο Επίπεδο}{7}{section.4} -\contentsline {subsection}{\numberline {4.1}\textit {function} SMR = psycho(frameT, frameType, frameTprev1, frameTprev2) }{7}{subsection.4.1} +\contentsline {section}{\numberline {4}3ο Επίπεδο}{6}{section.4} +\contentsline {subsection}{\numberline {4.1}\textit {function} SMR = psycho(frameT, frameType, frameTprev1, frameTprev2) }{6}{subsection.4.1} \contentsline {subsection}{\numberline {4.2}\textit {function} [S, sfc, G] = AACquantizer(frameF, frameType, SMR)}{7}{subsection.4.2} \contentsline {subsection}{\numberline {4.3}\textit {function} frameF = iAACquantizer(S, sfc, G, frameType)}{8}{subsection.4.3} \contentsline {subsection}{\numberline {4.4}\textit {function} [huffSec, huffCodebook] = encodeHuff(coeffSec, huffLUT, forcedCodebook)}{9}{subsection.4.4}