Logoinsertie via transcodering voor gecomprimeerde H.264/AVC-videostromen

Maat: px
Weergave met pagina beginnen:

Download "Logoinsertie via transcodering voor gecomprimeerde H.264/AVC-videostromen"

Transcriptie

1 Logoinsertie via transcodering voor gecomprimeerde H.264/AVC-videostromen Dieter Vergote Promotoren: prof. dr. ir. Rik Van de Walle, Davy De Schrijver Begeleider: dr. ir. Jan De Cock Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen Academiejaar

2

3 Logoinsertie via transcodering voor gecomprimeerde H.264/AVC-videostromen Dieter Vergote Promotoren: prof. dr. ir. Rik Van de Walle, Davy De Schrijver Begeleider: dr. ir. Jan De Cock Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen Academiejaar

4 i Dankwoord Het uitwerken van een masterproef is geen sinecure. De eerste stap is het kiezen van een onderwerp dat je hopelijk een jaar(tje) met plezier bezighoudt. Daar ben ik zeker in geslaagd. De keuze tussen de meer dan honderd mogelijke onderwerpen was wel niet eenvoudig, maar het werd echter al snel duidelijk dat het een onderwerp zou worden met een visueel resultaat. Eenmaal de keuze gemaakt, moest er na enige tijd natuurlijk gestart worden met de uitwerking van de masterproef en later het schrijven van een boek over de bevindingen. Dat verliep niet altijd zo vlekkeloos, maar ik kon echter steeds rekenen op de kennis, het advies en het enthousiasme van mijn begeleiders en co-promotor. Ik wil daarom de volgende mensen bedanken; Jan De Cock (begeleider MMLab), voor het beschikbaar stellen en uitleggen van de transcodeersoftware en het oplossen van enkele problemen ermee, wat mij ongetwijfeld heel wat moeite gespaard heeft, voor het beschikbaar maken van een performante computer waar ik kon op testen, voor zijn kennis en advies omtrent H.264/AVC, voor het advies i.v.m. de structuur van mijn masterproefboek, voor het regelmatig reserveren van een meeting-room in Gent,...; Davy De Schrijver (co-promotor Cisco Systems), voor het voorstellen van enkele interessante masterproefonderwerpen, voor zijn kennis en advies omtrent MPEG-2 en H.264/AVC, voor het leveren van documenten, videostromen en simulatorsoftware, voor het geven van constructieve feedback op mijn werk, voor het regelmatig reserveren van een meeting-room in de Cisco-afdeling in Kortrijk,...; Stijn Notebaert (officieuze begeleider MMLab), voor zijn enthousiasme en tijd om wat vragen te beantwoorden, voor het constructief meewerken aan de meetings, voor het meehelpen zoeken naar een geschikte titel voor deze masterproef,... Ik wil Stijn via deze weg ook proficiat wensen met zijn titel als doctor. Op praktisch vlak wil ik ook Jan en Stijn bedanken om mij regelmatig af te halen en terug af te zetten aan het station van Kortrijk wanneer er een meeting was bij Cisco. Zonder jullie was dat een heel stuk lastiger geweest! Vervolgens wil ik al mijn vrienden en medestudenten bedanken die mij in de afgelopen

5 ii jaren op allerlei vlakken bijgestaan hebben, zowel technisch als sociaal. We hebben een leuke tijd gehad en ik hoop jullie nog regelmatig terug te zien! Ten slotte wil ik zeker ook mijn familie bedanken. Zij hebben mij alle kansen gegeven om de studie Burgerlijk Ingenieur (tegenwoordig: Master in de ingenieurswetenschappen) aan te vatten en binnenkort te voltooien. Alhoewel de resultaten soms tegenvielen of op zich lieten wachten, zijn ze in mij blijven geloven. Mijn ouders, broer en hond zijn er al die jaren voor mij geweest, elk op hun eigen manier. Ik kan niet in woorden uitdrukken hoe dankbaar ik ben voor hun steun en de mogelijkheden die ze mij gegeven hebben! Dieter Vergote Gent, mei 2010

6 iii Toelating tot bruikleen De auteur geeft de toelating deze masterproef voor consultatie beschikbaar te stellen en delen van de masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze masterproef. Dieter Vergote, mei 2010

7 Logoinsertie via transcodering voor gecomprimeerde H.264/AVC-videostromen door Dieter Vergote Promotoren: prof. dr. ir. Rik Van de Walle, dr. Davy De Schrijver Begeleider: dr. ir. Jan De Cock Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen Universiteit Gent Academiejaar Samenvatting In deze masterproef worden technieken uitgewerkt om logo s zo efficiënt mogelijk te inserteren in gecomprimeerde H.264/AVC-videostromen. De efficiëntie wordt uitgedrukt in kwaliteit (PSNR), bitsnelheid (Mbps) en rekentijd (seconden). Dit onderwerp vormt een uitdaging omdat de recente H.264/AVC-standaard heel wat ingewikkelder is dan de minder recente, maar veelgebruikte MPEG-2 Video-standaard. De logoinsertie gebeurt via een transcodeermethode in het pixeldomein. De methode bestaat eruit om aangetaste gebieden te onderscheiden en deze op een gepaste manier aan te pakken. Technieken die als nuttig naar voren komen, zijn het aanpassen van bewegingsvectoren voor logogebieden en temporeel aangetaste gebieden, de verdere verfijning van die bewegingsvectoren, het aanpassen van intragecodeerde logomacroblokken in P- en B-beelden en het verwijderen van kleine chromacoëfficiënten. Als laatste wordt een totaaloplossing voorgesteld als combinatie van de uitgewerkte technieken. Trefwoorden Logoinsertie, transcoderen, gecomprimeerde video, H.264/AVC

8 Logo insertion using transcoding for compressed H.264/AVC video Dieter Vergote Supervisor(s): Rik Van de Walle, Davy De Schrijver, Jan De Cock Abstract This paper discusses methods for allowing efficient insertion of logos in compressed H.264/AVC video. This is particularly more challenging than logo insertion in MPEG-2 video because of the increased complexity of the H.264/AVC standard. The methods are implemented in a pixel domain transcoder platform. It is shown that the combination of all methods has good quality, should have lower complexity than the cascaded method, but has a sometimes significant bitrate increase. Keywords logo insertion, transcoding, compressed video, H.264/AVC I. INTRODUCTION For some time now, MPEG-2 Video [1] has been the default video compression standard used for the distribution of digital media. A common practice of media distributors is the insertion of logos in the distributed video streams. A logo is a rectangular shaped image which can be translucently added to a video sequence using an opacity value α (0 < α 1). In addition, if the logo doesn t cover the whole rectangle shape, then an alphamap can be used which indicates the opacity value for each pixel of image. Logos are added to a picture of a video sequence with the following formula P (x, y) = α(x, y) L(x, y) + (1 α(x, y)) P (x, y) with P the original picture, L the logo, P the modified picture and α the opacity value at pixel position (x, y). The cascaded method is a simple method of inserting a logo into a compressed video, which comprises decoding the video, inserting the logo and re-encoding the resulting stream. The main disadvantage of this method is the high computational load. The main advantage is that the resulting bitrate is minimal since the optimal modes and motion vectors are determined. To lower the computational load, transcoding methods are used, which integrate the decoder and encoder so that the encoder can reuse information from the input stream. Several transcoding methods have been proposed for MPEG-2 Video [2], [3], [4]. Their objective is to keep the computational load and the bitrate as low as possible, while maintaining the quality. Transcoding methods can be subdivided into two categories: methods that insert the logo in the pixel domain and methods that insert the logo in the DCT-domain. Both have their advantages and disadvantages. Recently a new video compression standard, H.264/AVC [5], was developed. H.264/AVC achieves better video compression compared to MPEG-2 Video, about two times better, but at the cost of a significantly increased complexity. It has been shown R. Van de Walle is head of the Multimedia Lab (MMLab) research group of the Department of Electronics and Information Systems, Ghent University (UGent), Belgium. rik.vandewalle@ugent.be. J. De Cock is senior researcher at MMLab. jan.decock@ugent.be. D. De Schrijver is R&D employee at Cisco Systems, Inc. ddeschri@cisco.com. [6] and [7] that transcoding methods in the pixel domain are most appropriate for H.264/AVC. The discussed pixel domain methods in this paper will try to achieve the best possible performance, but there will always be a trade-off between computational load, bitrate and quality. Though this is work in progress, a full solution is presented as combination of the discussed methods. This paper is further organized as follows. Section II introduces the proposed methods, Section III evaluates the results and Section IV states a conclusion. II. METHODS FOR LOGO INSERTION The affected areas that are distinguished and might need to be taken care of, are shown in Fig. 1. The logo area (LA) and partially affected areas (PA) contain macroblocks or submacroblocks with logo pixels. The spatially affected area (SA) contains blocks that use logo pixels for their spatial prediction. The temporally affected area in 1 st order (TA1) contain blocks that have a motion vector pointing to a reference block that overlaps with the logo area. The temporally affected area in 2 nd order (TA2) contain blocks that have a reference block that overlaps with SA or TA1. Fig. 1. Distinguished affected areas. A. Retaining original coding parameters A first, straightforward method is retaining all coding parameters (intra modes, motion vectors, macorblock subdivision, etc.) and only recalculating the residual data for all blocks. This method is a first good step for logos that are very transparent or have a structure where each macroblock only contains a few or no logo pixels. This is because the original content of the video is more dominant than the logo within the affected areas. For less transparent logos that (almost) fill their whole rectangular area, the logo is much more dominant and using the original coding parameters is much worse.

9 B. Changing motion vectors For less transparent logos, blocks in LA and possibly PA will be best predicted from the same blocks in the reference picture(s). The motion vectors for these blocks is therefor changed to zero. For blocks in TA1, the original motion vector also leads to high prediction errors. The motion vector of these blocks will be refined using motion estimation. When using a search window centered on the original motion vector, a large part of the considered prediction candidates will have a more or less substantial part of logo pixels. Therefor, the motion vector of blocks in TA1 is first set to zero and is then further refined in a window centered around the zero motion vector. C. Changing intra coded logo blocks in P/B pictures It happens that intra coding is the best mode for some blocks in P- and B-pictures in the original stream, but this is mostly not the case if such a block contains logo pixels after the insertion of a logo. Therefor intra coded logo blocks in P- and B-pictures are changed to resp. P- and B-blocks. Because the logo area mostly has a low prediction error, such blocks have a high probability to become skipped blocks, which have a very low cost. D. Removing small chroma AC-coefficients Due to the recalculation of all residual data, inter coded blocks that were originally skipped and that are not affected, could now have small residual coefficients. This makes it impossible to code those blocks as skipped again. To solve this, small chroma AC-coefficients are removed from blocks after transformation and quatisation. This results in more skipped blocks and thus a reduced bitrate, while maintaining the visual quality. III. EXPERIMENTAL RESULTS The methods presented in Section II are combined into a full solution or transcoding method. The transcoding method is evaluated for multiple video sequences and logo configurations. This section only discusses the results of two sequences (Bus and Mobile) and one logo configuration. The sequences have a size of and respectively 150 and 300 frames; the logo has a size of and is inserted in the upper right corner, aligned at macroblock boundaries. Two methods are used for evaluating the objective quality. The first ( inter ) calculates the PSNR between the result and the decoded input stream after logo insertion. The second evaluation method ( casc ) calculates the PSNR of both the result of the full solution and the cascaded method with the original uncompressed stream and compares those two values. The resulting bitrate is compared to the bitrate of the original input stream ( orig ) and of the resulting stream from the cascaded method ( casc ). The computational load (execution time) is evaluated versus method II-A. The experimental results for the full solution are given in Table I. The quality compared to inter is in all cases reasonably high. For some sequences, like Mobile, the method of removing small chroma coefficients introduces a significant drop in PSNR inter (-2 db), but also reduces the bitrate vs casc with about 3%, while the visual quality remains unchanged. Meanwhile, changing the motion vectors for LA, PA and TA1 has a positive effect on the quality. A search window of was Table I Experimental results for the full solution. Bus Mobile PSNR vs inter (db) 45,51 43,38 PSNR vs casc (db) +0,68 +0,03 Bitrate vs orig +8,81% +1,31% Bitrate vs casc +13,69% +10,38% time +41,93% +42,39% used for refining the motion vectors of TA1 blocks. In total, there is a quality increase of more than 0.50 db over the cascaded method, for most sequences. The Mobile sequence is an exception here though. The bitrate compared to the original input stream increases for most sequences and logo configurations. For an opaque logo aligned with macroblock boundaries, the increase is mostly limited to 10%. The bitrate compared to the cascaded method is always slightly to moderatly higher because of the optimal recalculation of all coding parameters in the cascaded method. The execution time ( time) is significantly increased versus method II-A. The major reason for this is the use of full search for refining motion vectors. The computational load can be significantly reduced if a faster search algoritm is used, with comparable results. Compared to the cascaded method, this method should have a much smaller computational load because motion estimation is performed only for a small number of blocks. This however was not verified. IV. CONCLUSION While still work in progress, some methods for efficiently inserting logos have been presented and evaluated. A full solution was then proposed as a combination of the presented methods. It has been shown that the full solution has superior quality over the cascaded method, should have a lower computational load, but can have a significantly increased bitrate. ACKNOWLEDGMENTS I want to thank Jan De Cock, Davy De Schrijver and Stijn Notebaert for their advise, support and enthousiasm. REFERENCES [1] Generic Coding of Moving Pictures and Associated Audio Information - Part 2: Video, ITU-T Recommendation H.262 and ISO/IEC (MPEG-2), ITU-T and ISO/IEC JTC 1, [2] Krit Panusopone, Xuemin Chen, and Fan Ling, Logo insertion in MPEG transcoder, in Proceedings of IEEE International Conference on Acoustics, Speech and Signal Processing 2001 (ICASSP 2001), 2001, vol. 2, pp [3] Yu Liu, Guiling Li, Qiang Tang, and Guo JiChang, DCT domain logo insertion of MPEG-2 transcoding, in Proceedings of Canadian Conference on Electrical and Computer Engineering 2003 (IEEE CCECE), 2003, vol. 2, pp [4] Davy De Schrijver, Joris Lammers, Gert Willems, and Peter Vos, Simulator for inserting logos into MPEG-2 coded video streams, [5] Information technology Coding of audio-visual objects Part 10: Advanced Video Coding, ITU-T Recommendation H.264 and ISO/IEC AVC, Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG, [6] Di Xu and Panos Nasiopoulos, Logo insertion transcoding for H.264/AVC compressed video, in Proceedings of the International Conference on Image Processing, ICIP 2009, 2009, pp [7] Chih-Hung Li, Chung-Neng Wang, and Tihao Chiang, A multiple-window video embedding transcoder based on H.264/AVC standard, EURASIP Journal on Advances in Signal Processing, 2007.

10 vii Inhoudsopgave Dankwoord i Toelating tot bruikleen iii Overzicht iv Extended abstract v Inhoudsopgave vii Lijst van figuren ix Lijst van tabellen xii Lijst van acroniemen xiv 1 Inleiding Situatieschets Logoinsertie Videocodering Logoinsertie in gecomprimeerde video Objectieve kwaliteitsmaat (PSNR) MPEG-2 Video Beschrijving van MPEG-2 Video Logoinsertie in MPEG-2 Video H.264/AVC Profielen en levels Macroblokken en slices Interlaced en progressive video Temporele predictie Spatiale predictie Deblocking Transformatie Quantisatie Zig-zagscan Entropiecodering

11 viii 4 Logoinsertie in H.264/AVC Extra complexiteit t.o.v. MPEG Logoinsertie in het transformatiedomein Logoinsertie in het pixeldomein Uitwerking van transcodeertechnieken Methode en Resultaten Evaluatiemethode Testomgeving Resultaten Niet uitgewerkte technieken Conclusie Samenvatting van de resultaten Uitbreidingen en toekomstperspectieven A Implementatie 94 A.1 Transcodeerplatform A.2 Implementatie van basisklassen A.3 Aanpassingen aan het transcodeerplatform A.4 Het PSNRcalc programma A.5 Het LogoInserter programma Bibliografie 114

12 ix Lijst van figuren 1.1 KMI-logo: eenvoudig statisch logo Één-logo: transparant logo met logomap Fox-logo s en tekstbanner: combinatie van transparant en niet-transparant logo met tekstbanner Algemeen schema van encoder Algemeen schema van decoder Onderbemonstering van chromacomponenten (4:2:0) Opsplitsing van een beeld in twee velden: bovenste of oneven veld en onderste of even veld Onderbemonstering van chromacomponenten (4:2:0) bij interlaced video Het verschil in tijdstip van opname bij progressive en interlaced video Aliasing bij interlaced video Eenvoudige deinterlacing Het zoeken van een gepaste bewegingsvector (bewegingsestimatie) en het gebruik van het referentiemacroblok als voorspelling voor het doelmacroblok (temporele predictie) Buurblokken van macroblok X Beeldtypes I, P en B en hun afhankelijkheden, voorgesteld in volgorde van weergave en in codeer- en verzendvolgorde Transformatie en inverse transformatie voor een 4 4 blok Degradatie van een beeld bij toenemende quantisatie (a) (d) Zig-zagscan voor een 4 4 blok Eenvoudige, naïeve (referentie)methode van logoinsertie Opsplitsing van een beeld in aangetaste gebieden De opbouw van een frame-picture en field-picture Frame predictie voor een P-frame-picture Field predictie voor P-field-pictures Field predictie voor B-field-pictures

13 x 2.5 Field predictie voor een P-frame-picture: opsplitsing van macroblok in de twee velden en voorspelling aan de hand van het vorige veld met dezelfde pariteit predictie voor een P-field-picture: opsplitsing van macroblok in de twee helften Dual-Prime mode voor het bovenste veld en het onderste veld van een macroblok uit een P-picture. mv is de bestaande bewegingsvector, mv calc is de berekende bewegingsvector Bilineaire interpolatie Opsplitsing van een macroblok in 8 8 blokjes Normale en alternatieve zig-zagscan Transcodeerschema van Cisco logoinsertiesimulator Schema voor insertie van logo in DCT-domein Opsplitsing van een intra-macroblok Opsplitsing van een inter-macroblok Beeld met twee macroblokparen Een macroblokpaar opgedeeld voor frame-predictie en voor field-predictie Bepaling van de buren van macroblok X Interpolatie van lumacomponent tot 1 pixel Interpolatie van lumacomponent tot 1 pixel Interpolatie van chromacomponent tot 1 pixel Intramodes voor 4 4 I-blokken Intramodes voor I-blokken Buurblokken A en B waarop de voorspelling van de intramode gebaseerd wordt De randen van luma- en chromablokjes die gefilterd worden Opsplitsing van (de residuen van) intragecodeerde macroblokken bij transformatie Artimetische encodering: opsplitsing van het probabiliteitsinterval Quarter-pixel interpolatie: ontstaan van afhankelijkheid van het logo Transcodeerschema van de techniek voorgesteld in de literatuur Opsplitsing van een beeld in aangetaste gebieden Schema van aangetaste gebieden Gemarkeerde beelden die aangetaste gebieden visueel voorstellen Foreman met foutief voorspelde skipped macroblokken De 2D logaritmische zoekstrategie De gewijzigde 2D logaritmische zoekstrategie tot op pixelniveau

14 xi 5.1 Evaluatiemethode t.o.v. de originele videostroom Evaluatiemethode t.o.v. de gedecodeerde ingangsstroom Evaluatiemethode t.o.v. de speciale referentiestroom Cisco-logo Cisco-logo MMLab-logo Elecard StreamEye: de drie belangrijkste vensters Verschillende markeringen in het videovenster Elecard YUV Viewer: vergelijking van twee videostromen Hoge kost van macroblokken door slechte voorspelling van complexe textuur van logomacroblokken (configuratie 42) bij Mobile-sequentie als bewegingsvector aangepast wordt naar nul Zoektijd voor de verschillende sequenties in functie van de zijde van het zoekvenster (W) Kost van macroblokken in een B-beeld van de Bus-sequentie met logoconfiguratie 11. Het logogebied is met een wit kader omlijnd Kost van macroblokken in een I-beeld van de Foreman-sequentie met logoconfiguratie 11. Het logogebied is met een wit kader omlijnd Kost van macroblokken bij al dan niet opsplitsen van partiële logomacroblokken voor logoconfiguratie 41 en de Bus-sequentie. Het gebied aangeduid met een wit kader is het gebied waar het logo geïnserteerd werd A.1 Hiërarchie van de MMLab-transcoder A.2 Transcodeerschema A.3 Bepalen of twee gebieden overlappen. Er is overlap als zowel x 2 en y 2 in het donkergrijze gebied op de x- en y-as liggen

15 xii Lijst van tabellen 1.1 Significantie van een PSNR-waarde Significantie van een PSNR-stijging of -daling MPEG-2 Profielen MPEG-2 Levels H.264/AVC Profielen H.264/AVC Levels Macrobloktypes voor I-macroblokken Geteste sequenties en hun kenmerken Logoconfiguraties Resultaten t.o.v. de naïeve stroom en de intermediaire stroom bij het behoud van alle codeerparameters Resultaten t.o.v. de naïeve stroom van de aangetaste gebieden bij het behoud van alle codeerparameters Resultaten t.o.v. de intermediaire stroom van de aangetaste gebieden bij het behoud van alle codeerparameters Resultaten t.o.v. de naïeve stroom en de intermediaire stroom bij het aanpassen van de bewegingsvector naar nul Resultaten t.o.v. de naïeve stroom van de aangetaste gebieden bij het aanpassen van de bewegingsvector naar nul Resultaten t.o.v. de intermediaire stroom van de aangetaste gebieden bij het aanpassen van de bewegingsvector naar nul Uitvoertijd voor en na het toevoegen van de detectie van aangetaste gebieden voor logoconfiguratie Resultaten t.o.v. de naïeve stroom bij het verfijnen van de bewegingsvector Resultaten t.o.v. de naïeve stroom van verschillende aangetaste gebieden bij het verfijnen van de bewegingsvector Samenvatting resultaten t.o.v. de naïeve stroom bij het verfijnen van de bewegingsvector

16 xiii 5.14 Relatieve verandering in uitvoertijd voor logoconfiguratie 11 t.o.v. de situatie waarin geen verfijning toegepast wordt Resultaten van het aanpakken van I-logoblokken in P- en B-beelden Verschillende strategieën voor het verwijderen van chromacoëfficiënten Resulaten voor voor het verwijderen van chromacoëfficiënten Resultaten t.o.v. de naïeve en intermediaire stroom voor de verschillende strategieën voor chromacoëfficiënten Relatieve verandering in uitvoertijd voor logoconfiguratie 11 t.o.v. de situatie waarin de bewegingsvectoren aangepast worden naar nul Resultaten t.o.v. de naïeve en intermediaire stroom voor de verschillende transparantiewaardes Resultaten t.o.v. de naïeve en intermediaire stroom voor de voorgestelde oplossing Resultaten t.o.v. de naïeve stroom van de aangetaste gebieden voor de voorgestelde oplossing Resultaten t.o.v. de intermediaire stroom van de aangetaste gebieden voor de voorgestelde oplossing Relatieve verandering in uitvoertijd voor logoconfiguratie 11 t.o.v. de situatie waarin de bewegingsvectoren aangepast worden naar nul

17 xiv Lijst van acroniemen AC-component bps CABAC CAVLC DC-component DCT EAS FRExt HD GSM IDCT ISO ITU ITU-T JVT LG MBAFF Mbps MPEG MSE NAG PAG PAFF PSNR SAD SAG SSD TAG1 TAG2 VCEG component met hogere frequentie van een getransformeerd blok bits per seconde Context-adaptive binary arithmetic coding Context-adaptive variable-length coding component met de laagste frequentie van een getransformeerd blok Discrete Cosine Transform Emergency Alert System Fidelity Range Extensions High Definition Global System for Mobile Communications inverse DCT International Organization for Standardization International Telecommunication Union ITU Telecommunication Standardization Sector Joint Video Team LogoGebied Macroblock Adaptive Field/Frame-(codering) Megabit per seconde (= 10 6 bps) Moving Picture Experts Group Mean Squared Error Niet Aangetast Gebied Partieel Aangetast Gebied Picture Adaptive Field/Frame-(codering) Peak Signal to Noise Ratio Sum of Absolute Differences Spatiaal Aangetast Gebied Sum of Squared Differences Temporeel Aangetast Gebied in 1 e orde Temporeel Aangetast Gebied in 2 e orde Video Coding Experts Group

18 xv VLC XML YCbCr YUV variabele-lengtecodering (Eng: variable-length coding) extensible Markup Language voorstellingswijze voor de kleurcomponenten van een pixel veelgebruikte, maar minder correcte benaming voor YCbCr

19 Hoofdstuk 1. Inleiding 1 Hoofdstuk 1 Inleiding 1.1 Situatieschets Het onderzoeksonderwerp van deze masterproef situeert zich in de wereld van digitale (multi)media, in het bijzonder digitale video. Digitale media is vandaag reeds overal aanwezig, denk maar aan het internet, digitale televisie en mobiele apparaten en wordt in de toekomst nog belangrijker. De distributie van digitale mediastromen, vanaf hier specifiek videostromen, kan via verschillende kanalen gebeuren en de media kan onder verschillende vormen voorkomen. Daarbij ontstaat de vraag om verschillende stromen of kanalen van elkaar te onderscheiden, of juist met elkaar in verband te kunnen brengen, door het invoegen van een logo. Het proces dat een logo in een videostroom inserteert, wordt logoinsertie genoemd. 1.2 Logoinsertie Statische en dynamische logo s In eerste instantie wordt met logo hier een statisch logo bedoeld, wat inhoudt dat een rechthoekige afbeelding wordt ingevoegd op een vaste positie in de videostroom. In deze context is een logo dus niet reeds gecomprimeerd. Een logo is vaak min of meer transparant. De transparantie of opaciteit wordt vastgelegd via een transparantieparameter α. Het versmelten van het logo met het beeld wordt daarom ook wel blending genoemd. Een logo neemt ook niet altijd het volledig rechthoekige gebied van de afbeelding in beslag. Daarom kan een tweede afbeelding gebruikt worden, een logomap, die de gebieden aangeeft die wel of niet tot het eigenlijke logo behoren. Door combinatie van de logomap met de transparantieparameter wordt een alpha-map bekomen, die voor elke pixel in het logo aangeeft hoe transparant die pixel is. Figuur 1.1 en 1.2 tonen telkens een beeld uit een videostroom waarin logo s geïnserteerd zijn.

20 Hoofdstuk 1. Inleiding 2 Figuur 1.1: KMI-logo: logo. eenvoudig statisch Figuur 1.2: Één-logo: transparant logo met logomap. Een verdere uitbreiding op statische logo s zijn dynamische logo s. Bij dynamische logo s verandert de inhoud van het logo met de tijd. Het logo kan dan gezien worden als een minivideostroom. Een speciale klasse van dynamische logo s zijn tekstbanners. Een tekstbanner bestaat uit een min of meer transparante achtergrond, die meestal rechthoekig is en waarin een tekstboodschap beweegt. Tekstbanners worden gebruikt om kijkers extra informatie te geven, bijvoorbeeld beurskoersen, hot-topics, enz., maar ook belangrijke berichten over rampsituaties, e.d. In de Verenigde Staten worden zo n belangrijke berichten verspreid via het Emergency Alert System (EAS) en is een televisiemaatschappij verplicht om deze uit te zenden. Een testvoorbeeld van een tekstbanner, in combinatie met logo s, wordt gegeven in Figuur 1.3. Figuur 1.3: Fox-logo s en tekstbanner: combinatie van transparant en niettransparant logo met tekstbanner. De focus van deze masterproef ligt op de insertie van statische logo s.

21 Hoofdstuk 1. Inleiding 3 Logoinsertie wordt mathematisch voorgesteld via de volgende formule P (x, y) = α L(x, y) + (1 α) P (x, y) (1.1) waarbij P het origineel beeld, L het logo en P het gewijzigd beeld is en α de opaciteit (0 α 1) met α = 0 volledig transparant en α = 1 volledig opaak. Voor een logo met een α-map wordt de formule dan P (x, y) = α(x, y) L(x, y) + (1 α(x, y)) P (x, y). (1.2) Nut van logo s Door het invoegen van een logo kan de herkenbaarheid van een bedrijf of distributiekanaal vergroot of bevestigd worden en wordt het zo van de rest onderscheiden. De aanwezigheid van een logo vormt ook een primitieve manier om de eigendomsrechten van de uitgezonden videostromen te beschermen. Enkele spelers die baat kunnen hebben bij logoinsertie, of het reeds gebruiken, zijn: media- of televisiemaatschappijen zoals VRT, VMMa, RTBF,... [1]; de filmindustrie met hun studio s zoals 20th Century Fox, Paramount Pictures, Universal Studios,... [2]; online video-broadcasting en -streaming diensten zoals YouTube, Yahoo! Video, DailyMotion,... [3]; allerhande bedrijven zoals Coca-Cola, Nike,... met promotievideo s MPEG-2 Video en H.264/AVC Deze masterproef is in samenwerking met Cisco Systems. Cisco is onder andere actief in de televisiewereld en ontwikkelde en implementeerde reeds een methode voor logoinsertie in MPEG-2 gecomprimeerde videostromen. MPEG-2 [4] werd rond 1995 gestandaardiseerd door de Moving Picture Experts Group (MPEG), een werkgroep van de International Organization for Standardization (ISO). MPEG-2 is een verzameling van standaarden voor het comprimeren en distribueren van media en bevat onder andere een deel over videocompressie de MPEG-2 Video -standaard. MPEG-2 Video is reeds geruime tijd een belangrijke standaard voor het comprimeren van digitale videostromen en wordt onder andere gebruikt in de televisie- en filmindustrie. Met de opkomst van High Definition -media (HD) in het begin van de jaren 2000, ontstond de nood voor betere videocompressie. High Definition betekent namelijk grotere resolutie

22 Hoofdstuk 1. Inleiding 4 en/of een hogere beeldkwaliteit, waardoor de te verzenden videostroom groter wordt. Om daarvoor een oplossing te vinden werd een project opgestart om een nieuwe standaard te ontwerpen. Het project werd geleid door het Joint Video Team (JVT), wat een samenwerkingsverband is tussen enerzijds MPEG en de Video Coding Experts Group (VCEG), een werkgroep van de International Telecommunication Union (ITU-T). De naam van de nieuwe standaard is H.264/AVC, of meer volledig H.264/MPEG-4 AVC [5]. De eerste versie van deze standaard werd gepubliceerd in 2003 en is ondertussen al meerdere keren uitgebreid geworden. Deze nieuwe standaard kan tot tweemaal betere compressie halen dan MPEG-2 en wordt daarom meer en meer gebruikt. H.264/AVC zal zo binnenkort de plaats van MPEG-2 innemen als de belangrijkste videocompressiestandaard. De bedoeling van deze masterproef is te onderzoeken welke technieken er kunnen gebruikt worden om op een efficiënte manier een (ongecomprimeerd) logo te inserteren in een gecomprimeerde H.264/AVC videostroom. Vooraleer in te gaan op details van MPEG-2 (Hoofdstuk 2) en H.264/AVC (Hoofdstuk 3 en 4) en reeds bestaande technieken voor beide, wordt een algemene uitleg gegeven over videocodering en technieken voor logoinsertie (Sectie 1.3). 1.3 Videocodering Een videostroom wordt niet als ruwe data (pixelwaardes van beelden) verzonden, maar wordt gecomprimeerd om de vereiste bandbreedte of bitsnelheid (uitgedrukt in bits per seconde) te beperken. Een ruwe videostroom voor standaard tv bevat ongeveer 25 beelden per seconde met een resolutie van pixels en vereist reeds een bandbreedte van 125 Mbps [6]. Het comprimeren van videostromen gebeurt aan de hand van een codeerschema. Zo n codeerschema bestaat enerzijds uit een encoder, die de ruwe data omzet in een gecomprimeerde stroom (encodering), en anderzijds een decoder, die de ruwe videostroom terug reconstrueert uit de gecomprimeerde stroom (decodering). Het schema van een algemene encoder en decoder wordt gegeven in Figuur 1.4 en 1.5. De componenten in deze schema s worden in Sectie besproken Beperken van de te coderen informatie Vooraleer de video gecomprimeerd wordt, kunnen enkele technieken toegepast worden om de hoeveelheid informatie die een encoder moet encoderen al op voorhand te beperken. Onderbemonstering van kleurcomponenten Een eigenschap van het menselijk oog is dat het minder gevoelig is aan veranderingen in de tint van een kleur, dan aan veranderingen in de helderheid van een kleur. Pixels in een

23 Hoofdstuk 1. Inleiding 5... Figuur 1.4: Algemeen schema van encoder.... Figuur 1.5: Algemeen schema van decoder. beeld hebben een bepaalde kleur die voorgesteld kan worden door drie kleurcomponenten die elk 8 bits in beslag nemen. De klassieke voorstellingswijze is RGB, waarbij een pixel een component voor rood (R), groen (G) en blauw (B) heeft. In de mediawereld wordt meestal een andere voorstellingswijze gebruikt omwille van de net genoemde eigenschap: de helderheid is belangrijker dan de tint van een kleur. De veelgebruikte alternatieve voorstelling, YCbCr of YUV [7], bestaat uit een helderheids- of lumacomponent, Y, en twee chromacomponenten, U en V, die de tint van de kleur voorstellen. De waardes van die componenten voor een bepaalde pixel worden de coëfficiënten genoemd.

24 Hoofdstuk 1. Inleiding 6 Om de beperkingen van het menselijk zicht uit te buiten, worden de chromacomponenten vaak onderbemonsterd (Eng.: subsampling), wat inhoudt dat niet voor alle pixels de waarde van die componenten meegegeven wordt. Een veel gebruikte manier van onderbemonstering is 4:2:0, waarbij zowel in horizontale als in verticale richting in het beeld, slechts de helft van de coëfficiënten van elke chromacomponent behouden wordt (Figuur 1.6). Anders gezegd wordt per blokje van 2 2 pixels slechts voor één positie de chromainformatie behouden. Het resultaat van deze onderbemonstering is dat er 50% minder coëfficiënten zijn zodat automatisch de vereiste bandbreedte gehalveerd wordt, en dit terwijl er (bijna) geen visueel verschil optreedt. Aan randen met een overgang tussen twee sterk verschillende kleuren kan het echter wel zichtbaar zijn. Vanaf hier wordt aangenomen dat de 4:2:0 onderbemonstering gebruikt wordt Figuur 1.6: Onderbemonstering van chromacomponenten (4:2:0). Progressive en interlaced video Bij progressive video worden volledige beelden na elkaar verstuurd en bij de weergave worden ze van linksboven naar rechtsonder op een scherm weergegeven. De huidige computerschermen en de moderne (LCD/plasma/LED) tv s werken op deze manier. Interlaced video komt voort uit de televisiewereld en wordt vandaag nog steeds gebruikt. De beeldbuis in een tv scant een beeld lijn per lijn en laat puntjes oplichten op het scherm. Dit moet snel genoeg gebeuren omdat de puntjes na een korte tijd terug uitdoven en daardoor flikkering doen ontstaan. Door technologische beperkingen in de tijd dat de tv ontstond, was de oplossing om niet telkens alle lijnen te scannen, maar slechts de helft [8], [9]. Bij interlaced video wordt een beeld daarom opgesplitst in twee velden. Een eerste veld bevat alle oneven (horizontale) lijnen en een tweede veld bevat alle even (horizontale) lijnen (Figuur 1.7). Het eerste veld wordt het bovenste veld genoemd en heeft een oneven pariteit, het tweede veld wordt het onderste veld genoemd en heeft een even pariteit. Ook

25 Hoofdstuk 1. Inleiding 7 het schema voor onderbemonstering moet daaraan aangepast worden. Elk veld behoudt om de beurt een lijn met chromaposities (Figuur 1.8). Figuur 1.7: Opsplitsing van een beeld in twee velden: bovenste of oneven veld en onderste of even veld. Figuur 1.8: Onderbemonstering van chromacomponenten (4:2:0) bij interlaced video. In plaats van volledige beelden door te zenden en weer te geven aan bijvoorbeeld 25 beelden per seconde (25 Hz), worden de velden achtereenvolgens doorgezonden en weergegeven aan dubbele frequentie, bijvoorbeeld 50 Hz. De bandbreedte verandert daardoor echter niet. Dit lost dan het probleem op van het snel genoeg moeten scannen, doordat de velden snel op elkaar volgen, en het slechts kunnen scannen van een beperkt aantal lijnen, door het opsplitsen van een beeld in twee velden. Ook opnametechnieken werden zo aangepast, zodat telkens slechts één veld per tijdseenheid opgenomen wordt (Figuur 1.9). Velden zijn dan niet langer afkomstig van eenzelfde beeld op een specifiek tijdstip. Voordelen van interlacing zijn de flikkering die vermindert bij tv-schermen, terwijl de bitsnelheid niet verhoogt, of bij eenzelfde weergavefrequentie en bitsnelheid, kan een hogere resolutie worden bereikt ten opzichte van progressive video omdat telkens slechts de helft van de beeldlijnen moeten verstuurd worden. Er zijn echter ook enkele belangrijke nadelen aan interlacing. Een eerste probleem doet zich voor als in het beeld een textuur van horizontale lijnen voorkomt die de verticale resolutie van de scanlijnen nadert. In deze situatie treedt aliasing op, wat tóch tot storende flikkering aanleiding geeft in de gebieden waar de textuur voorkomt. Een voorbeeld van dit

26 Hoofdstuk 1. Inleiding 8 Figuur 1.9: Het verschil in tijdstip van opname bij progressive en interlaced video. soort aliasing wordt gegeven in Figuur Een tweede belangrijk nadeel komt naar voor als interlaced video weergegeven wordt op progressive schermen zoals computerschermen. Er moet namelijk terug een volledig beeld gereconstrueerd worden uit twee velden die op een verschillend tijdstip zijn opgenomen. Dit proces noemt deinterlacing. Twee eenvoudige methodes zijn ofwel het kopiëren van bekende lijnen naar onbekende lijnen er net onder of boven, of wachten tot twee velden ontvangen zijn en dan het beeld opvullen met de overeenkomstige lijnen uit de twee velden. Figuur 1.11 geeft een voorbeeld van eenvoudige deinterlacing. Zoals te zien is, leveren eenvoudige methodes heel slechte resultaten op. Er bestaan dan ook heel wat complexere methodes om betere beelden te verkrijgen. Voor meer informatie over interlaced video, progressive video of deinterlacing wordt verwezen naar onder andere [8], [9], [10], [11]. (a) Progressive beeld. (b) Interlaced beeld, bovenste veld. Figuur 1.10: Aliasing bij interlaced video [9] Temporele predictie (interpredictie) Een videostroom bestaat uit een opeenvolging van beelden. Als de beelden snel genoeg na elkaar worden getoond, neemt een persoon vloeiende beweging waar van objecten in de video. Twee opeenvolgende beelden zullen dus weinig van elkaar verschillen, wat aanleiding geeft tot temporele redundantie als daar geen rekening mee gehouden wordt. Technieken

27 Hoofdstuk 1. Inleiding 9 Figuur 1.11: Eenvoudige deinterlacing [10]. die deze temporele redundantie verminderen, passen temporele predictie toe, wat ook interpredictie wordt genoemd. Een simpele techniek bestaat eruit om het vorige beeld in de videostroom te beschouwen als voorspelling of referentie van het huidig beeld en enkel het verschil tussen de beide beelden, het residu, op te nemen in de gecomprimeerde stroom. Het beeld dat als voorspelling gebruikt wordt, is het referentiebeeld, het huidig beeld is het doelbeeld. Een beeld van een videostroom bevat meestal maar enkele bewegende objecten. In de gebieden waar de bewegende objecten zich bevinden is de voorspelling minder goed omdat het vorig beeld daar sterk kan verschillen van het huidig beeld. Een oplossing daarvoor is de volgende. Eerst wordt het beeld opgedeeld in afzonderlijke gebieden die het volledige beeld opvullen. De opdeling gebeurt meestal aan de hand van vierkante blokken van N N pixels, bijvoorbeeld met N = 16, die macroblokken worden genoemd. Vervolgens wordt voor elk macroblok een bewegingsvector bepaald (Figuur 1.12). Een bewegingsvector (Eng.: motion vector, afgekort mv) geeft aan welk blok van N N pixels er in het referentiebeeld gebruikt wordt als voorspelling van het blok in het doelbeeld. Macroblokken worden zo op een efficiënte manier gecodeerd door enkel het verschil met een goed gekozen blok uit het referentiebeeld het residu of de predictiefout op te nemen in de gecodeerde stroom. Het bepalen van een gepaste bewegingsvector wordt bewegingsestimatie genoemd (Eng.: motion estimation), terwijl het bepalen van de predictie aan de hand van een bewegingsvector, bewegings(gecompenseerde) predictie genoemd wordt (Eng.: motion compensated prediction). Macroblokken die via temporele predictie worden gecodeerd, zijn intergecodeerde macroblokken. Het zoeken naar een gepaste bewegingsvector is de stap die het meeste rekentijd vraagt tijdens de encodering en zelfs beduidend meer rekentijd dan andere stappen. De manier waarop een gepaste bewegingsvector gevonden wordt (de bewegingsestimatie) is de volgende. In het referentiebeeld wordt een zoekvenster bepaald rond de macroblokpo-

28 Hoofdstuk 1. Inleiding 10 Figuur 1.12: Het zoeken van een gepaste bewegingsvector (bewegingsestimatie) en het gebruik van het referentiemacroblok als voorspelling voor het doelmacroblok (temporele predictie). sitie waarvoor een bewegingsvector gezocht wordt (Figuur 1.12). Een zoekstrategie test dan voor verschillende bewegingsvectoren de afwijking van het referentiemacroblok dat correspondeert met de bewegingsvector en het doelmacroblok. Daarbij wordt een maat voor de afwijking tussen referentiemacroblok en doelmacroblok gebruikt, bijvoorbeeld de som van de absolute waardes van de afwijkingen 1 (SAD). Uit alle geteste bewegingsvectoren wordt dan deze genomen die de kleinste predictiefout teweeg brengt. Een simpele, maar kostelijke zoekstrategie is om alle mogelijke bewegingsvectoren in het zoekvenster te beschouwen. Meer geavanceerde zoekstrategieën zullen het aantal te onderzoeken bewegingsvectoren reduceren en kunnen ook rekening houden met bewegingsvectoren van de omliggende macroblokken. De bewegingsestimatie bij de encodering blijft echter een stap die voor veel rekentijd zorgt. Het decoderen van een videostroom gaat dan ook heel wat sneller dan het encoderen ervan. Nu de macroblokken op een efficiënte manier gecodeerd worden, ontstaat er echter een nieuw probleem. Voor elk macroblok moet een bewegingsvector opgenomen worden in de gecodeerde videostroom. De bewegingsvector van een macroblok verschilt meestal weinig van de bewegingsvectoren van omliggende macroblokken, wat terug redundantie introduceert. Om deze redundantie te verminderen, wordt een voorspelling bepaald (mvp) voor de bewegingsvector (mv) van een macroblok en enkel het verschil van de echte bewegingsvector met de voorspelling (mvd = mv mvp) wordt meegegeven in de gecodeerde stroom. Bij de decodering wordt de voorspelling dan opnieuw bepaald en wordt het verschil erbij opgeteld (mvp + mvd = mv). Voor gebieden in een beeld die weinig of niet veranderen over een bepaalde periode in de tijd, komt het vaak voor dat het macroblok zowel in pixel-waardes als in bewegingsvector 1 SAD = Ref(x, y) Doel(x, y) over alle pixels (x, y) van het referentiemacroblok Ref en het doelmacroblok Doel.

29 Hoofdstuk 1. Inleiding 11 perfect voorspeld wordt. In dat geval treedt er dus geen residu op en is het verschil in bewegingsvector gelijk aan nul (mvd = 0). Zo n macroblok wordt een skipped macroblok genoemd en er moet geen data in de gecomprimeerde stroom worden opgenomen voor zo n macroblok. De macroblokken moeten aan de decoder wel gereconstrueerd kunnen worden. De encoder mag bij het encoderen van een macroblok dus enkel informatie gebruiken van reeds geëncodeerde macroblokken, want het is slechts die informatie die ook bij de decoder bekend is. De macroblokken van een beeld worden van linksboven naar rechtsonder overlopen en de voorspelling van een bewegingsvector voor macroblok X, kan dan bepaald worden uit de buurblokken A, B, C en D, zoals aangegeven in Figuur Figuur 1.13: Buurblokken van macroblok X. Om de afwijkingen tussen encoder en decoder te beperken, gebeurt de temporele predictie in de encoder op basis van gereconstrueerde beelden, net zoals ze in de decoder beschikbaar zijn. De encoder bevat dus op zich eigenlijk al een decoder. Deze manier van encodering wordt closed loop encodering genoemd. Indien de temporele predictie gebeurt via de ingangsbeelden, wordt er over open loop encodering gesproken Spatiale predictie (intrapredictie) Een beeld in een videostroom bestaat hoofdzakelijk uit gebieden met een relatief homogene kleur. Een pixel zal dus veelal sterk lijken op pixels in de buurt en macroblokken zullen dan weinig verschillen van macroblokken in de buurt. De pixels van een macroblok worden daarom voorspeld uit pixels van macroblokken in de buurt, zodat enkel het verschil met de voorspelling het residu of de predictiefout in de gecodeerde videostroom meegenomen wordt. De manier waarop de voorspelling gebeurt, wordt vastgelegd in een predictiemode die bepaald moet worden tijdens de encodering van de videostroom. Ook de predictiemodes van buurblokken vertonen sterke gelijkenis. Ze worden dan ook voorspeld uit buurblokken en slechts hun verschil met de echte predictiemode wordt doorgestuurd, net zoals bij de bewegingsvectoren bij temporele predictie (Sectie 1.3.2). Ook hier mag de voorspelling van een macroblok enkel gebaseerd zijn op informatie die zowel bij de encoder als de decoder beschikbaar is. Macroblokken die niet via temporele predictie worden gecodeerd, maar (eventueel) via spatiale predictie worden intragecodeerde macroblokken genoemd.

30 Hoofdstuk 1. Inleiding Beeldtypes Intra- en interpredictie worden niet samen gebruikt voor eenzelfde macroblok. Voor het eerste beeld in de videostroom is het zelfs onmogelijk om temporele predictie te gebruiken. Anderzijds heeft temporele predictie ook enkele nadelen. Als tijdens het verzenden van de gecomprimeerde stroom een fout wordt geïntroduceerd, dan zal deze fout in alle volgende beelden ook voorkomen, want elk beeld wordt temporeel voorspeld uit het vorig beeld. Daarnaast wordt het springen in de videostroom bemoeilijkt doordat alle vorige beelden eerst moeten gedecodeerd worden vooraleer een bepaald beeld weergegeven kan worden. Ook zappen van één videostroom naar een andere is op die manier niet praktisch, want alle videostromen waarnaar gezapt zou kunnen worden, moeten volledig gedecodeerd worden. Daarom wordt meestal na een aantal beelden een beeld ingevoegd waarbij geen temporele predictie wordt gebruikt. Dit type beelden wordt I-beelden (intrabeelden) genoemd en ze zijn niet afhankelijk van andere beelden. I-beelden bestaan enkel uit intragecodeerde macroblokken. Door het niet uitbuiten van de temporele redundantie kan een I-beeld weliswaar minder sterk gecomprimeerd worden, maar het vormt een toegangspunt tot de videostroom. Een tweede type beelden zijn P-beelden (predictief gecodeerde beeld). Deze beelden worden temporeel voorspeld uit een vorig I- of P-beeld en hebben een betere compressie dan I- beelden, maar vragen meer tijd bij de decodering. Macroblokken in een P-beeld hebben één bewegingsvector. Als er echter geen goede bewegingsvector gevonden wordt voor een macroblok, kan ervoor gekozen worden om het macroblok via spatiale predictie te coderen. P-beelden kunnen dus inter- en intragecodeerde macroblokken bevatten. Codeerschema s gebruiken ook een derde type beelden, B-beelden (bi-predictief gecodeerde beelden). Dit type beelden gebruikt tot twee referentiebeelden van het I- of P-type die zowel vroeger of later dan het B-beeld kunnen komen. Een B-beeld kan een nog betere compressie bereiken dan P-beelden, maar vereist nog meer tijd om te decoderen. Een macroblok in een B-beeld heeft één of twee bewegingsvectoren en hebben dus een licht aangepaste predictiemethode. De referentiemacroblokken die met de bewegingsvectoren overeenstemmen worden eerst uitgemiddeld en het resultaat daarvan wordt als predictie gebruikt voor het beschouwde macroblok in het B-beeld. Een voordeel van het gebruik van twee referentiebeelden is dat er rekening wordt gehouden met objecten die zich in een vorig beeld achter een ander object bevinden en pas in een later beeld tevoorschijn komen. Door de uitmiddeling tussen de beide referentiemacroblokken of het gebruik van één bewegingsvector naar het latere referentiebeeld, bereiken B-beelden betere compressie. Als geen goede bewegingsvectoren gevonden worden tijdens de encodering, kan ook hier beslist worden om het macroblok via spatiale predictie te coderen. B-beelden kunnen naast intergecodeerde dus ook intragecodeerde macroblokken bevatten.

31 Hoofdstuk 1. Inleiding 13 Figuur 1.14 geeft een mogelijk schema van de afhankelijkheden tussen verschillende opeenvolgende beelden in een videostroom. Door de manier waarop I-, P- en B-beelden van elkaar afhangen, is het mogelijk dat beelden die in tijd na elkaar komen niet direct na elkaar verzonden worden. Een P-beeld dat als referentie voor vroegere B-beelden wordt gebruikt, moet vóór die B-beelden gecodeerd en verzonden worden. De codeer- en verzendvolgorde van de beelden is bijgevolg niet dezelfde als de volgorde waarin beelden voorkomen in de originele videostroom en weergegeven worden op een scherm. Figuur 1.14: Beeldtypes I, P en B en hun afhankelijkheden, voorgesteld in volgorde van weergave en in codeer- en verzendvolgorde Transformatie Redundantie komt in een videostroom niet enkel voor tussen beelden (Sectie 1.3.2), maar ook binnen eenzelfde beeld. Om de spatiale redundantie binnen een macroblok naar boven te brengen wordt een goedgekozen lineaire transformatie 2 toegepast. De pixelwaardes binnen een macroblok worden door de transformatie omgezet in transformatiecoëfficiënten. De transformatie wordt zo gekozen dat er slechts enkele significante coëfficiënten ontstaan en een meerderheid van minder of niet significante coëfficiënten de energie van het macroblok 3 wordt gecomprimeerd in een klein aantal coëfficiënten (Figuur 1.15). Meestal realiseert de transformatie een frequentieontbinding, waardoor lage frequentiecomponenten linksboven in het blok terecht komen en hoge frequentiecomponenten rechtsonder. Door de spatiale redundantie zijn de lage frequentiecomponenten meestal veel meer significant dan de hoge frequentiecomponenten, omdat de pixels binnen een macroblok meestal weinig 2 Een transformatie is lineair als de transformatie van een lineaire combinatie van macroblokken gelijk is aan dezelfde lineaire combinatie van de getransformeerde macroblokken afzonderlijk. 3 Berekend als p 2 i met p i de pixels uit het macroblok.

32 Hoofdstuk 1. Inleiding 14 van elkaar verschillen. Verder heeft het menselijk oog de eigenschap dat het gevoeliger is voor veranderingen in de gemiddelde kleur van een gebied, die voorgesteld wordt door de laagste frequentiecomponent (de DC-component), en heel wat minder gevoelig voor snel variërende kleurpatronen, die voorgesteld worden door de hogere frequentiecomponenten (de AC-componenten). De decoder gebruikt de inverse transformatie om de transformatiecoëfficiënten terug om te zetten naar pixelwaardes. De transformatie wordt afzonderlijk toegepast op het residu van de drie kleurcomponenten van een macroblok. Figuur 1.15: Transformatie en inverse transformatie voor een 4 4 blok. In theorie is de gebruikte transformatie en inverse transformatie perfect, wat wil zeggen dat de pixelwaardes perfect gereconstrueerd worden. In de praktijk echter zijn de transformatiecoëfficiënten die bekomen worden met sommige transformaties niet-gehele getallen die afgerond worden tot een geheel getal. De praktische implementatie van zo n transformatie realiseert dan niet meer een perfecte transformatie Quantisatie Tot nu toe wordt het residu van een macroblok getransformeerd en zo opgenomen in de gecomprimeerde videostroom. Als er tijdens het verzenden geen fouten optreden, en we veronderstellen dat de transformatie perfect is, dan kan een decoder de videostroom perfect reconstrueren. Deze manier van comprimeren is dus verliesloos. Het menselijk oog kan echter kleine verschillen in kleur niet of moeilijk onderscheiden. Om betere compressie te bekomen wordt daarom verlieshebbende compressie toegepast, waarbij de geïntroduceerde fouten zo klein mogelijk gehouden worden. Bij verlieshebbende compressie worden de transformatiecoëfficiënten verder onderworpen aan een quantisatiestap. De meest significante coëfficiënten worden daarbij zo goed als onveranderd gelaten, terwijl minder significante coëfficiënten worden afgerond of gedeeld door een bepaald getal. Deze stap zorgt voor de meeste winst in bitsnelheid, maar introduceert ook het grootste informatieverlies. Het resultaat van de quantisatie is meestal dat heel wat transformatiecoëfficiënten nul worden. De graad of sterkte van de quantisatie wordt bepaald door een quantisatieparameter. Op Figuur 1.16 is te zien hoe een beeld degradeert door toenemende quantisatiesterkte.

33 Hoofdstuk 1. Inleiding 15 (a) (b) (c) (d) Figuur 1.16: Degradatie van een beeld bij toenemende quantisatie (a) (d) Zig-zagscan en run-lengtecodering Na de quantisatie worden alle coëfficiënten in een rij gezet door het blok op een bepaalde manier te overlopen. De manier waarop dat gebeurt, wordt zig-zagscan genoemd en bestaat eruit om in een diagonale manier het blok te doorlopen (Figuur 1.17). De meest significante coëfficiënten worden op deze manier vooraan in de rij geplaatst. Figuur 1.17: Zig-zagscan voor een 4 4 blok. Na de zig-zagscan wordt run-lengtecodering toegepast. Een vorm van run-lengtecodering is om bij elke coëfficiënt mee te geven hoeveel nulcoëfficiënten er aan voorafgaan. De reeks nulcoëfficiënten op het einde moet dan niet meer gecodeerd worden. Ook als er toch nog een minder significante niet-nulcoëfficiënt optreedt na een reeks nullen, moet niet elke

34 Hoofdstuk 1. Inleiding 16 voorafgaande nulcoëfficiënt opgenomen worden Entropiecodering Videocodeerschema s besluiten met een laatste stap, de entropiecodering, die de rij transformatiecoëfficiënten verder comprimeert op een verliesloze manier. Ook de residuele informatie van bewegingsvectoren en intramodes wordt op een dergelijke manier verder gecomprimeerd. Entropiecodering bestaat eruit om aan veel voorkomende coëfficiënten een korte bitsequentie te geven en aan weinig voorkomende coëfficiënten een lange bitsequentie. 1.4 Logoinsertie in gecomprimeerde video Het invoegen van een logo in een gecomprimeerde videostroom kan niet zonder meer gebeuren. Een eenvoudige, maar naïeve methode bestaat eruit om de videostroom eerst volledig te decoderen, het logo te inserteren in de gereconstrueerde beelden en deze stroom dan opnieuw encoderen (Figuur 1.18). Dit schema wordt meestal als referentie gebruikt bij het evalueren van een nieuwe techniek. Enkele punten die bij de evaluatie van een nieuwe techniek aan bod kunnen komen, zijn kwaliteit, rekentijd en bitsnelheid. + Figuur 1.18: Eenvoudige, naïeve (referentie)methode van logoinsertie. Kwaliteit Een extra decodering en encodering kan extra kwaliteitsverlies introduceren. De kwaliteit wordt meestal uitgedrukt als een PSNR-waarde, wat in Sectie 1.5 besproken wordt. Een eerste reden voor het kwaliteitsverlies zijn de imperfecties bij de transformatie en inverse transformatie, waardoor zelfs macroblokken die niet wijzigen door de aanwezigheid van het logo, toch een licht gewijzigd residu kunnen hebben. Een tweede reden is de herquantisatie die ook aanleiding kan geven tot het niet perfect reconstrueren van een macroblok. Een derde reden, die enkel bij H.264/AVC geldt, is het gebruik van deblocking (Sectie 3.6). Met dit proces worden pixelwaardes aan de rand van een macroblok na reconstructie uitgemiddeld. Door herhaaldelijk toepassen van dat proces zullen de uitgemiddelde pixels steeds vager worden. In het algemeen blijft het kwaliteitsverlies met één extra decodering en encodering nog beperkt. Om het kwaliteitsverlies tegen te gaan kan gezocht worden

35 Hoofdstuk 1. Inleiding 17 naar methodes om enkel het logo te encoderen en dit dan zo te inserteren in de stroom. Een bespreking van zo n techniek volgt in Sectie Rekentijd De extra decodering en encodering introduceert heel wat rekentijd. Dit moet zeker vermeden worden in ware-tijdsystemen waarbij de verwerking van de videostroom slechts een fractie van een seconde mag duren. De grootste reden voor de extra rekentijd is de bewegingsestimatie die tijdens de encodering gebeurt. De gecomprimeerde videostroom bevat eigenlijk al heel wat informatie (residuele informatie) die tijdens de decodering wordt omgezet tot concrete waardes voor bijvoorbeeld bewegingsvectoren. Deze informatie kan hergebruikt worden bij de encodering. Één mogelijkheid is om de bewegingsestimatie enkel uit te voeren voor macroblokken die het logo bevatten. Zo kan dus heel wat rekentijd gespaard worden. Het geheel van een decoder en encoder, waarbij informatie van de decoder doorgegeven wordt naar de encoder, wordt een transcoder genoemd. De naïeve aanpak scoort hier dus heel slecht om de beschikbare informatie niet hergebruikt wordt. Bandbreedte Afhankelijk van het logo en de videostroom, kan het toevoegen van het logo aanleiding geven tot extra bandbreedte ten opzichte van de gecomprimeerde stroom vóór de insertie van het logo. Een kleine verhoging van de bandbreedte (5% à 10%) is meestal aanvaardbaar. Door het toepassen van de naïeve methode, zal echter de bandbreedte meestal dalen. Dat komt omdat voor elk macroblok opnieuw de beste mode gezocht wordt en voor intergecodeerde macroblokken wordt opnieuw de beste bewegingsvector gezocht. Daardoor zal de residuele informatie klein zijn waardoor de bitsnelheid minimaal is Opdeling van een beeld in aangetaste gebieden Zoals blijkt uit de puntjes hierboven is het meestal aan de orde om verschillende gebieden te identificeren in elk beeld van de videostroom en die gebieden dan op een gepaste manier te behandelen. Een beeld wordt meestal opgesplitst in drie gebieden, die in Figuur 1.19 grafisch worden weergegeven. Logogebied Het logogebied is het gebied van macroblokken dat door het logo ingenomen wordt. De residuele informatie voor deze macroblokken moet zo aangepast worden dat het na reconstructie het logo oplevert, in plaats van de pixels uit de originele videostroom. In I-beelden kan een herbepaling van de predictiemode toegepast worden omdat de originele mode in vele gevallen niet de optimale zal zijn voor het logomacroblok dat in de plaats van het originele

36 Hoofdstuk 1. Inleiding 18 Figuur 1.19: Opsplitsing van een beeld in aangetaste gebieden. macroblok komt. Als de predictiemode van een macroblok wijzigt, dan kan de voorspelling van die predictiemode wijzigen voor buurblokken van het betreffende macroblok. Daarom zal de predictiefout op de predictiemode in die buurblokken gecorrigeerd moeten worden. In P- en B-beelden kan het aanpassen van de bewegingsvector in overweging genomen worden. Als het logo weinig tot niet transparant is, dan zal het logomacroblok doorgaans goed voorspeld worden uit hetzelfde macroblok in het referentiebeeld, wat resulteert in een bewegingsvector gelijk aan nul (mv = 0). Bij een sterk transparant logo zal de originele bewegingsvector hoogstwaarschijnlijk een goede keuze zijn. Een bewegingsvector kan ook nog verder verfijnd worden door (een minimale) bewegingsestimatie. Door het wijzigen van de bewegingsvector (mv) van een macroblok kan de voorspelling van de bewegingsvector (mvp) van een buurblok op zijn beurt wijzigen, waardoor de predictiefout op de bewegingsvector (mvd = mv mvp) voor het buurblok aangepast moet worden. Spatiaal aangetast gebied Het spatiaal aangetast gebied bestaat uit de macroblokken die door spatiale predictie van het logo afhangen. Deze macroblokken liggen direct naast (links, rechts en onder) het logo en gebruiken voor hun spatiale predictie pixels uit logomacroblokken. De gewijzigde predictie moet ook hier opgevangen worden door het residu van het spatiaal aangetast macroblok gepast te wijzigen. Temporeel aangetast gebied Het temporeel aangetast gebied bevat macroblokken die door temporele predictie aangetast zijn, met andere woorden de macroblokken waarvan het referentieblok met het logo overlapt. Net zoals bij de andere aangetaste gebieden moet het residu terug herbepaald worden. Verder geldt hier ook dat een aangepaste bewegingsvector in overweging kan genomen worden, net zoals besproken voor het logogebied.

37 Hoofdstuk 1. Inleiding Objectieve kwaliteitsmaat (PSNR) Om de kwaliteit te evalueren van het resultaat na logoinsertie met een bepaalde techniek, is een objectieve kwaliteitsmaat nodig. Een objectieve kwaliteitsmaat levert een concreet getal op die op een ondubbelzinnige wijze bepaald kan worden. In de literatuur wordt daarvoor meestal de Peak Signal to Noise Ratio (PSNR) berekend, uitgedrukt in decibel (db), tussen de gedecodeerde videostroom na het toepassen van de techniek en een referentiestroom waarin het logo geïnserteerd werd. De PSNR geeft de mate weer waarin de originele videostroom aangetast is door fouten die geïntroduceerd zijn. De manier waarop de ruwe referentiestroom bekomen wordt varieert. Één mogelijkheid is om de originele ongecomprimeerde videostroom te nemen, indien die beschikbaar is, met daarin het logo geïnserteerd. Een andere mogelijkheid is om de gecomprimeerde ingangsstroom van de logoinsertie te decoderen en deze stroom, na het inserteren van het logo, als referentie te gebruiken. De berekening van de PSNR voor een volledige videosequentie verloopt in meerdere stappen. Eerst wordt per beeld en per YUV-kleurcomponent de Mean Squared Error (MSE). De MSE geeft de gemiddelde kwadratische afwijking van de kleurcomponent tussen de twee beelden die vergeleken worden. De formule voor het berekenen van de MSE is de volgende MSE C = 1 mn m 1 i=0 n 1 (P C (i, j) R C (i, j)) 2 j=0 met P het beeld uit de resultaatstroom, R het beeld uit de referentiestroom, C de beschouwde kleurcomponent en m n de grootte van de matrix voor kleurcomponent C in het beeld. volgende formule De PSNR voor de beschouwde kleurcomponent wordt dan gegeven door de ( ) MAX 2 P SNR C = 10 log 10 MSE C waarbij M AX = 255, de maximale waarde is die kan voorkomen als pixelwaarde. Hoe hoger de PSNR, hoe kleiner de afwijkingen dus zijn en hoe beter het beeld gelijkt op het originele. Om de gemiddelde PSNR van een beeld dan te berekenen zijn twee manieren gebruikelijk. Een eerste manier weegt de PSNR van de kleurcomponenten met eenzelfde factor. De PSNR van het beeld wordt dan gegeven door P SNR P = P SNR Y + P SNR U + P SNR V 3 (1.3) De tweede manier weegt de PSNR van de kleurcomponent met een factor die afhangt van het aantal pixels die voor die kleurcomponent aanwezig zijn. De formule is P SNR P = 4 P SNR Y + P SNR U + P SNR V 6 (1.4)

38 Hoofdstuk 1. Inleiding 20 Deze manier is correcter omdat er vier maal meer coëfficiënten zijn van de lumacomponent dan van elke chromacomponent afzonderlijk, althans bij 4:2:0 onderbemonstering (Sectie 1.3.1). Nu de PSNR per beeld bepaald is, kan een gemiddelde PSNR voor de volledige sequentie bepaald worden, en eventueel voor de kleurcomponenten afzonderlijk. De PSNR van de volledige sequentie is dan P SNR = 1 n 1 P SNR Pi n voor een sequentie met n beelden, waarbij de PSNR van beeld i gegeven is door P SNR Pi. Om een idee te krijgen over de significantie van een PSNR-waarde zijn in Tabel 1.1 enkele PSNR-waardes opgenomen met hun bijhorende MSE-waarde. De MSE-waarde geeft aan wat de gemiddelde kwadratische fout is voor één pixel van ofwel één bepaalde kleurcomponent ofwel van de drie kleurcomponenten samen. De fout kan klein genoemd worden vanaf 45 db en wordt verwaarloosbaar klein vanaf 55 à 60 db. Een verschil van +1 db in PSNR-waarde resulteert in een daling van de MSE met ongeveer 20%. In Tabel 1.2 zijn enkele PSNR-verschilwaardes opgenomen en hun overeenkomstige procentuele daling in MSE. Een verschil in PSNR wordt significant vanaf P SNR = 0,5 db à 1 db. i=0 Tabel 1.1: Significantie van een PSNR-waarde PSNR MSE 30 65, , , , , , ,07 Tabel 1.2: Significantie van een PSNRstijging of -daling P SNR MSE 0 0% 0,25-6% 0,5-11% 0,75-16% 1-21% 1,5-29% 2-37% 3-50% De PSNR is echter niet zo n goede maat om de kwaliteit van beelden te bepalen. Bij de berekening wordt namelijk geen rekening gehouden met de werking van het menselijk oog. Een scherpe voorgrond op een wazige achtergrond zal bijvoorbeeld veel minder opvallen of als storend aanzien worden, dan een wazige voorgrond op een scherpe achtergrond, terwijl de PSNR ten opzichte van een niet wazige versie van het beeld in beide gevallen ongeveer gelijk zal zijn. Een maat die wel rekening houdt met de eigenschappen van het menselijk visueel systeem is de just-noticable difference -maat (JND) [12]. Toch blijft de PSNR de meest gebruikte objectieve maat omdat ze eenvoudig berekend kan worden en dat het moeilijk is om goede objectieve maten op te stellen die wel op een correcte manier rekening houden met het menselijk visueel systeem.

39 Hoofdstuk 2. MPEG-2 Video 21 Hoofdstuk 2 MPEG-2 Video De MPEG-2 Video-standaard is een belangrijke en populaire standaard om videostromen te encoderen. Het doel van de standaard was om een breed inzetbaar videocodeersysteem te zijn met een focus op digitale tv-uitzendingen. De standaard is ontworpen om gecomprimeerde mediastromen op te leveren met bitsnelheden van 1.5 Mbps tot 30 à 40 Mbps, afhankelijk van parameters zoals resolutie, kwaliteit en aantal beelden per seconde. Met MPEG-2 kan een ruwe videostroom voor standaard tv ( pixels en 25 beelden/s), met goede kwaliteit gecomprimeerd worden tot een stoom met een bandbreedte tussen 3 en 15 Mbps. In vergelijking zou een ongecomprimeerde stroom 125 Mbps vereisen (Sectie 1.3). 2.1 Beschrijving van MPEG-2 Video In deze sectie worden de technieken in meer of minder detail beschreven die gedefinieerd worden in de MPEG-2 standaard. De algemene principes werden reeds beschreven in Sectie 1.3. Voor meer informatie over MPEG-2 Video wordt verwezen naar onder andere [4], [6], [13], [14] en [15] Profielen en levels MPEG-2 Video is breed inzetbaar, maar elke applicatie werkt meestal maar in een beperkt gebied van het domein waarin de standaard inzetbaar is. Er moeten bijvoorbeeld bepaalde voorzorgen genomen worden voor stromen die afgespeeld worden op mobiele apparaten zoals een GSM. Daarom worden verschillende profielen en levels gedefinieerd. Een profiel legt vast welke technieken er gebruikt mogen worden, terwijl een level beperkingen legt op onder andere de resolutie, de beeldsnelheid (Hz) en de bitsnelheid. Enkele voorbeelden van profielen en levels met karakteristieke verschillen worden gegeven in Tabel 2.1 en 2.2.

40 Hoofdstuk 2. MPEG-2 Video 22 Tabel 2.1: MPEG-2 Profielen. Profiel B 1 4:2:2 2 Simple Profile nee nee Main Profile ja nee High Profile ja ja 1 Ondersteuning voor B-beelden. 2 Ondersteuning voor 4:2:2 chroma-onderbemonstering, naast 4:2:0. Level Tabel 2.2: MPEG-2 Levels. Max. resolutie Max. bitsnelheid (Mbps) Low Main High Macroblokken en slices Een beeld wordt opgesplitst in macroblokken van pixels. Macroblokken worden op zich gegroepeerd in slices. Een slice bevat macroblokken die behoren tot éénzelfde rij (horizontale lijn) van een beeld. Slices hebben nog verdere restricties die in de volgende secties aan bod zullen komen Interlaced en progressive video Zowel interlaced als progressive video worden in MPEG-2 ondersteund. Daarom definieert de standaard twee types beelden: een frame-picture dat de scanlijnen van beide velden bevat en dus een volledig beeld vormt en een field-picture dat slechts de scanlijnen van één veld bevat (Figuur 2.1). In een progressive videostroom komen enkel frame-pictures voor. In een interlaced videostroom kunnen frame-pictures en field-pictures door elkaar gebruikt worden, maar een field-picture moet altijd in paren voorkomen (het bovenste veld moet gevolgd worden door het onderste veld, of omgekeerd). De mogelijkheid om per beeld te beslissen of het als field-pictures of als frame-picture gecodeerd wordt, is Picture Adaptive Field/Frame -codering (PAFF) Temporele predictie Door de mogelijkheid om frame-pictures en field-pictures door elkaar te gebruiken, bestaan er meerdere methodes voor temporele predictie van macroblokken, afhankelijk van de frame- of fieldcodering van het beeld waarin het macroblok zich bevindt. De gebruikte methode kan per macroblok afzonderlijk bepaald worden.

41 Hoofdstuk 2. MPEG-2 Video 23 Figuur 2.1: De opbouw van een frame-picture en field-picture. 1. Frame predictie voor frame-pictures. (Figuur 2.2) Macroblokken van uit een frame-picture worden voorspeld aan de hand van andere frame-pictures. Dit is de standaard manier van temporele predictie. Een P- frame-picture gebruikt een vorig I- of P-frame-picture, een B-frame-picture gebruikt een vorig en een volgende I- en/of P-frame-picture. Figuur 2.2: Frame predictie voor een P-frame-picture. 2. Field predictie voor field-pictures. (Figuur 2.3 en 2.4) Macroblokken van uit een field-picture worden voorspeld aan de hand van andere field-pictures. Een P-field-picture gebruikt de twee meest recent gecodeerde field-pictures, een B-field-picture gebruikt de twee field-pictures van zowel het vorige als het volgende I- en/of P-beeld. Figuur 2.3: Field predictie voor P-field-pictures.

42 Hoofdstuk 2. MPEG-2 Video 24 Figuur 2.4: Field predictie voor B-field-pictures. 3. Field predictie voor frame-pictures. (Figuur 2.5) Macroblokken van uit een frame-pictures worden opgesplitst in twee 16 8 macroblokken die elk de lijnen van één veld bevatten. De twee halve macroblokken in een P-frame-picture worden dan voorspeld aan de hand van het field-picture van het vorige I- of P-beeld met dezelfde pariteit (even of oneven). Dus het macroblok met de oneven lijnen gebruikt het oneven veld van het referentie-field-picture en het macroblok met de even lijnen gebruikt het even veld van het referentie-field-picture. Voor de twee halve macroblokken van een B-frame-picture verloopt de voorspelling gelijkaardig, maar dan aan de hand van de field-pictures van zowel het vorige als het volgende I- of P-beeld. Zo krijgt het macroblok dus twee of vier bewegingsvectoren in respectievelijk een P- of B-beeld. Figuur 2.5: Field predictie voor een P-frame-picture: opsplitsing van macroblok in de twee velden en voorspelling aan de hand van het vorige veld met dezelfde pariteit predictie voor field-pictures. (Figuur 2.6) Macroblokken van uit field-pictures worden opgesplitst in 16 8 macroblokken. Het eerste halve macroblok bevat de eerste 8 lijnen, het tweede halve macroblok bevat de volgende 8 lijnen. Voor deze twee macroblokken wordt dan field predictie voor field-pictures gebruikt, maar waarbij de grootte van een macroblok nu 16 8 is. Deze mode kan nuttig zijn als er fijne beweging optreedt.

43 Hoofdstuk 2. MPEG-2 Video 25 { { Figuur 2.6: 16 8 predictie voor een P-field-picture: opsplitsing van macroblok in de twee helften. 5. Dual-Prime predictie voor P-beelden. (Figuur 2.7) Deze mode kan toegepast worden op zowel P-field-pictures als P-frame-pictures. Een eerste bewegingsvector wijst naar het veld met dezelfde pariteit van het vorige I- of P-beeld. Een tweede bewegingsvector wordt uit de eerste berekend en wijst naar het veld met tegengestelde pariteit in het referentiebeeld. De uiteindelijke voorspelling van het macroblok is dan de uitmiddeling van de twee predicties die uit de twee bewegingsvectoren volgen. Figuur 2.7: Dual-Prime mode voor het bovenste veld en het onderste veld van een macroblok uit een P-picture. mv is de bestaande bewegingsvector, mv calc is de berekende bewegingsvector. Bewegingsvectoren in MPEG-2 worden bepaald tot op een halve pixelpositie. Een oneven coördinaat van een bewegingsvector duidt op een halve pixelpositie. De pixelwaardes op een halve pixelpositie worden berekend via bilineaire interpolatie. De formule voor bilineaire interpolatie naar 1 pixel is 2 P (x, y) = x y A + (2 x ) y B x (2 y ) C + (2 x )(2 y ) D

44 Hoofdstuk 2. MPEG-2 Video 26 met x = x x A en y = y y A en A, B, C en D zoals gegeven in Figuur 2.8. Tijdens Figuur 2.8: Bilineaire interpolatie. de encodering en decodering wordt een voorspelling voor de huidige bewegingsvector bijgehouden die gelijk is aan de bewegingsvector van het vorig gecodeerde macroblok. Enkel het verschil van de huidige bewegingsvector en de predictie wordt opgeslagen in de bitstroom. De voorspelling wordt op nul gezet bij het begin van een slice en bij een skipped macroblok (Sectie 1.3.2) in een P-beeld. Dat gebeurt niet bij een skipped macroblok in een B-beeld. De aanwezigheid van een skipped macroblok wordt opgemerkt doordat het macrobloknummer van het volgende gecodeerde macroblok groter is dan het huidige macrobloknummer plus één. Op deze manier kan dus één of meerdere skipped macroblokken na elkaar op een efficiënte manier gecodeerd worden Spatiale predictie MPEG-2 gebruikt geen spatiale predictie. Om spatiale redundantie uit te buiten wordt dus volledig vertrouwd op de lineaire transformatie. De DC-component van een intragecodeerd macroblok een macroblok in een I-beeld na transformatie en quantisatie wordt wel voorspeld aan de hand van de vorig gecodeerde DC-component en enkel het verschil met de voorspelling wordt opgenomen in de gecomprimeerde stroom. De voorspelling wordt gewist bij het begin van een slice Transformatie Als lineaire transformatie wordt de 2D-DCT (Discrete Cosine Transform) gebruikt. Een macroblok wordt vóór transformatie eerst opgesplitst in zes 8 8 blokken, namelijk vier voor de lumacomponent en één blok voor elk van de twee chromacomponenten. In frame-pictures kan dit op twee manieren gebeuren. Enerzijds kunnen de twee velden van elkaar afgesplitst worden zodat de 8 8 blokjes telkens maar de lijnen van één veld bevatten (field-dct). Anderzijds kan het macroblok opgesplitst worden zodat de 8 8 blokjes zich in de vier hoeken van het macroblok bevinden (frame-dct). De twee mogelijke manieren van opsplitsing worden gegeven in Figuur 2.9. De transformatie werkt dan als volgt. Voor elke pixelpositie in het 8 8 blok, wordt een transformatiecoëfficiënt berekend die een bepaalde lineaire combinatie is van alle pixelwaar-

45 Hoofdstuk 2. MPEG-2 Video 27 Figuur 2.9: Opsplitsing van een macroblok in 8 8 blokjes. des. Elke pixelwaarde in de lineaire combinatie wordt vermenigvuldigd met een waarde die afhangt van de pixelpositie en de gekozen basisfuncties voor de transformatie. De DCT gebruikt cosinusbasisfuncties, vandaar de naam. Door de geschikte keuze van de basisfuncties kunnen de transformatiecoëfficiënten, via een inverse transformatie (IDCT), terug omgezet worden in de originele pixelwaardes. Dit is echter het ideale geval. In de praktijk wordt echter afronding toegepast omdat de DCT-coëfficiënten reële getallen zijn en de verkregen pixelwaardes na IDCT ook. Na IDCT zullen dus niet altijd exact de originele pixelwaardes bekomen worden. Dit kan een probleem worden als er meerdere keren na elkaar gedecodeerd en geëncodeerd wordt, zoals besproken in Sectie Quantisatie In MPEG-2 gebeurt de quantisatie in de eerste plaats door het delen 1 van de transformatiecoëfficiënten in een 8 8 blok door de waardes in een quantisatiematrix. Hierbij wordt een onderscheid gemaakt tussen intragecodeerde blokken en intergecodeerde blokken. Daarvoor zijn twee standaardmatrices met quantisatiewaardes gedefinieerd, maar aangepaste matrices kunnen ook meegegeven worden. Voor intragecodeerde blokken worden de quantisatiewaardes (delers voor de transformatiecoëfficiënten) groter naarmate de transformatiecoëfficiënten zelf minder significant worden, dus naar hogere frequenties toe (Sectie 1.3.5). De reden daarvoor is dat de spatiale redundantie voor intrablokken nog niet wordt aangepakt vóór de quantisatie. Het is dus aan de quantisatie om de spatiale redundantie verder uit te buiten door componenten met een hoge spatiale frequentie meer te onderdrukken dan de andere. Voor intergecodeerde blokken zijn de quantisatiewaardes in de standaardmatrix allemaal dezelfde. De reden daarvoor is dat de transformatiecoëfficiënten ontstaan zijn uit de transformatie van residuele informatie, waarbij de spatiale redundantie al verminderd is. 1 De deling is een integer -deling. Het resultaat na een integer-deling is het geheel deel van het resultaat na gewone deling.

46 Hoofdstuk 2. MPEG-2 Video 28 Om de graad van quantisatie te beïnvloeden, wordt er in de bitstroom een quantisatieschaal of quantisatieparameter opgegeven. Alle transformatiecoëfficiënten, behalve de DCcomponent in intrablokken, worden dan nog eens extra gedeeld door deze quantisatieschaal. De quantisatieschaal ligt in het interval [1, 128] Zig-zagscan De lijnen van een macroblok uit een interlaced videostroom (een interlaced macroblok) volgen niet rechtstreeks op elkaar in het volledige beeld omdat de lijn ertussen is weggelaten. De organisatie van significante coëfficiënten in een blok na transformatie is daardoor anders dan normaal. Twee opeenvolgende lijnen in een interlaced macroblok lijken immers minder op elkaar dan in een progressive macroblok. Daarom is er ook een specifieke zig-zagscanmethode voor interlaced macroblokken (Figuur 2.10). (a) Noninterlaced zig-zagscan (b) Interlaced zig-zagscan Figuur 2.10: De normale zig-zagscan voor non-interlaced macroblokken (a) en de alternatieve zig-zagscan voor interlaced macroblokken (b) Entropiecodering De entropiecodering bestaat uit een eenvoudige, tabelgebaseerde variabele lengte codering (VLC). Voor het entropiecoderen van een bepaald element zoals een gequantiseerde transformatiecoëfficiënt of een predictiefout van een bewegingsvector (mvd), worden in MPEG-2 tabellen gedefinieerd die aangeven welke bitsequentie moet gebruikt worden voor een specifieke waarde van het element. Deze tabellen werden opgesteld via statistische analyse van de waardes die frequent of minder frequent voorkomen voor de verschillende elementen.

47 Hoofdstuk 2. MPEG-2 Video Logoinsertie in MPEG-2 Video In deze sectie volgt een beschrijving van de verschillende technieken die in de literatuur te vinden zijn in verband met logoinsertie voor MPEG-2 gecomprimeerde videostromen. Ook wordt de logosimulator van Cisco besproken in Sectie Logoinsertie in het pixeldomein Een eerste categorie van technieken zijn transcodeermethodes, waarbij de gecomprimeerde stroom volledig gedecodeerd wordt, het logo daarna in de gereconstrueerde beelden (het pixeldomein ) geïnserteerd wordt, en de stroom vervolgens terug geëncodeerd wordt, waarbij zoveel mogelijk informatie uit de decoder hergebruikt wordt. Bij deze technieken is er een grote vrijheid om allerhande parameters aan te passen, zoals bewegingsvectoren, macrobloktypes (I, P, B, skipped,...) en de quantisatieschaal. Echter, transcodering kan rekenintensief zijn als bijvoorbeeld voor veel macroblokken de bewegingsvector(en) herbepaald wordt. In [16] wordt een dergelijke transcodeermethode voorgesteld. In eerste instantie wordt alle informatie, inclusief de bewegingsvectoren behouden bij de encodering. Dat leidt tot minder goede resultaten: de bitsnelheid is telkens hoger na transcodering en stijgt verder als het logo minder transparant wordt. Dat komt omdat de bewegingsvectoren binnen het logo en voor temporeel aangetaste macroblokken minder en minder geschikt zijn naarmate de transparantie afneemt, want de originele inhoud wordt dan meer en meer verdrongen door het logo. In een tweede methode wordt dat opgelost door vanaf een bepaalde transparantiewaarde, a = 0, 5 wordt gesuggereerd, niet de originele bewegingsvector te behouden, maar een bewegingsvector mv = 0 en dit voor alle macroblokken die binnen het logo liggen of die temporeel aangetast zijn door het logo. Verder wordt het macrobloktype veranderd naar een P-macroblok voor enerzijds I-macroblokken die binnen het logo vallen en anderzijds B-macroblokken met een gewijzigde bewegingsvector (mv = 0). Het resultaat van deze aanpassingen is dat voor een sterk transparant logo (a < 0, 5) de bitsnelheid lichtjes boven de originele bitsnelheid ligt, maar deze onder de originele bitsnelheid zakt voor minder transparante logo s (a > 0, 5) Logoinsertiesimulator van Cisco De band met Cisco werd reeds aangehaald in Sectie en zoals vermeld is binnen Cisco ook een techniek ontwikkeld voor logoinsertie [17]. Tijdens een onderzoeksfase werd een softwaresimulator ontwikkeld om mogelijke aanpakken te onderzoeken en in een latere fase wordt de techniek dan geïmplementeerd op een Digital Signal Processing-platform (DSP). In de ontwikkelde techniek wordt rekening gehouden met logo s die niet enkel statisch zijn

48 Hoofdstuk 2. MPEG-2 Video 30 maar ook dynamisch, zoals tekstbanners, en zelfs met logo s die eigenlijk op zich minivideostromen zijn. De transcodering gebeurt in een aantal stappen. Enkel de stappen die het meest van toepassing zijn of die enkele problemen aan het licht brengen, zullen verder besproken worden. Figuur 2.11 bevat het deel van het transcodeerschema dat zal besproken worden. Figuur 2.11: Transcodeerschema van Cisco logoinsertiesimulator. In eerste instantie wordt de gecomprimeerde videostroom gedecodeerd om de beelden te reconstrueren. Tijdens het decoderen genereert de decoder een bestand met metadata over de aangetaste macroblokken. Ook wordt een nieuwe gecomprimeerde stroom gegenereerd waarbij de aangetaste macroblokken in aparte slices worden ondergebracht, de reslicete stroom. Daarbij moet rekening gehouden worden met de restricties van slices. Een slice mag bijvoorbeeld niet beginnen of eindigen met een skipped macroblok. Skipped macroblokken aan het begin of einde moeten dus veranderd worden naar een niet skipped macroblok. De voorspelling van de bewegingsvector (mvp) wordt bij het begin van een slice op nul gezet, zodat de predictiefout van de bewegingsvector (mvd) voor het eerste macroblok in de slice opnieuw berekend moet worden. Ook de voorspelling van de DCcomponent van intragecodeerde macroblokken wordt gewist zodat de DC-component van het eerste intragecodeerde macroblok aangepast moet worden. Zo zijn er nog enkele bijkomende moeilijkheden met het invoegen van een slice. Verder vereist het invoegen van slices ook wat extra bandbreedte, terwijl de kwaliteit van de video niet verhoogt. In een tweede stap wordt het logo geïnserteerd in het gedecodeerde beeld. Daarbij kan een transparantiewaarde α meegegeven worden die voor het volledige logo geldt ofwel kan gebruikgemaakt worden van een alpha-map die voor elke logopixel aangeeft hoe transparant de pixel moet zijn. De volgende stap is om het beeld met het logo te encoderen. De encoder gebruikt daarbij de metadata die door de decoder gegenereerd wordt. Voor de niet aangetaste macroblokken wordt alle originele informatie overgenomen, terwijl de bewegingsvectoren voor de aangetaste macroblokken herberekend worden. Tijdens de encodering wordt ook rekening gehouden met twee parameters. Een eerste parameter geeft

49 Hoofdstuk 2. MPEG-2 Video 31 aan of er een vorm van bandbreedtecontrole (Eng.: rate control) moet toegepast worden, en zoja, of dit moet toegepast worden op alle macroblokken of enkel op de aangetaste macroblokken. Bandbreedtecontrole zorgt ervoor dat de bandbreedte-verhoging beperkt blijft en zal in dit geval de gebruikte quantisatieschaal beïnvloeden. Een tweede parameter geeft aan of de verhoging in bitsnelheid van de uiteindelijke stroom beperkt moet worden tot 10% of dat er geen verhoging mag optreden. In een derde, maar optionele stap, wordt de bitinformatie van aangetaste slices gekopieerd van de uitgang van de encoder naar de reslicete stroom die de decoder genereerde. Dat gebeurt door de stitcher. Zo wordt de originele bitstroom behouden voor niet aangetaste slices, terwijl de correcte, aangepaste bitinformatie wordt gebruikt voor de aangetaste slices. Door de moeilijkheden met het invoegen van nieuwe slices en de nadelen in verband met toenemende bandbreedte, kan besloten worden dat dit geen goede optie is en de slices beter behouden worden zoals ze zijn. Ook blijkt dat het genereren van de reslicete stroom en het toepassen van de derde stap, soms afwijkingen in een beeld introduceert, die verder propageren over beelden heen (drift). Daarom zal in het finaal systeem de reslicing niet toegepast worden. In verband met de bandbreedtecontrole wordt geconcludeerd dat een simpele bitsnelheidsbeperking zeer wensbaar is omdat de bitsnelheid anders ongecontroleerd en sterk kan toenemen (tot 130% voor relatief grote dynamische logo s) Logoinsertie in het transformatiedomein Een tweede categorie van methodes voor logoinsertie zijn methodes die in het transformatiedomein werken. De reden om in het transformatiedomein te blijven werken is ten eerste om geen extra fouten te introduceren door een extra transformatie, want de implementatie van DCT en IDCT zijn niet perfect. Ten tweede is het uitvoeren van een DCT en IDCT operatie relatief kostelijk in rekentijd. Methodes in het transformatiedomein gaan te werk zoals weergegeven op het schema in Figuur Eerst wordt de entropiedecodering (D) en inverse quantisatie (Q 1 ) toegepast op de gecomprimeerde videostroom, zodat het getransformeerde residu en de predictiefout op de bewegingsvectoren beschikbaar zijn. Vervolgens wordt bewegingscompensatie uitgevoerd in het DCT-domein (DCT-MC). Dit gebeurt via aangepaste formules van de bewegingscompensatie uit het pixeldomein, maar daar wordt hier niet verder op ingegaan. Het logo wordt vervolgens voorwaarts getransformeerd (DCT). Door de lineaire eigenschap van de transformatie, kan het logo nu in het transformatiedomein gecombineerd worden met de transformatiecoëfficiënten van de originele videostroom via Formule 2.1 met α [0, 1] de opaciteit, L het logo in het pixeldomein, P het beeld in het pixeldomein en DCT de

50 Hoofdstuk 2. MPEG-2 Video 32 Figuur 2.12: Schema voor insertie van logo in DCT-domein DCT-transformatie. DCT (α L + (1 α) P ) = α DCT (L) + (1 α) DCT (P ) (2.1) Een volgende stap is om bewegingsvectoren aan te passen (DCT-ME). In [18] wordt afhankelijk van de transparantie van het logo ofwel de originele bewegingsvector gekozen, ofwel een bewegingsvector gelijk aan nul. Vervolgens wordt terug een DCT-MC stap uitgevoerd om een voorspelling te bepalen in het transformatiedomein. Het residu wordt verder gequantiseerd (Q) en terug entropiegecodeerd (C). De methode uitgewerkt in [18] bereikt een reductie van de uitvoertijd van 40% ten opzichte van insertie in het pixeldomein. Daartegenover staat wel een kleine reductie in PSNR van 0,30 db.

51 Hoofdstuk 3. H.264/AVC 33 Hoofdstuk 3 H.264/AVC Het doel van de H.264/AVC-standaard was om, net zoals bij MPEG-2 Video, een breed inzetbaar videocodeersysteem te ontwikkelen, maar nu met het oog op HD-toepassingen, waaronder het gebruik in digitale tv. H.264/AVC is echter heel breed inzetbaar en kan gebruikt worden voor heel kleine resoluties (128 96) en heel lage bitsnelheiden (64kbps) tot heel grote resoluties ( ) en heel hoge bitsnelheden (960Mbps). In vergelijking met MPEG-2 kan H.264/AVC een videostroom voor standaard tv comprimeren tot 1.5 Mbps, terwijl MPEG-2 voor een vergelijkbare kwaliteit 3 Mbps nodig heeft. Om dergelijke compressie te bereiken, is H.264/AVC op heel wat punten verbeterd ten opzichte van MPEG-2, maar is daardoor ook een heel stuk complexer en rekenintensiever geworden. In Secties worden de technieken binnen H.264/AVC verder besproken. Voor meer informatie over H.264/AVC wordt verwezen naar onder andere [5], [19], [20], [21]. 3.1 Profielen en levels Net zoals MPEG-2, worden ook profielen en levels gedefinieerd om bepaalde types van applicaties op een meer conforme manier te laten werken of om niet altijd alle functionaliteit te moeten implementeren in de encoder en decoder. Enkele voorbeelden met karakteristieke verschillen worden gegeven in Tabel 3.1 en Macroblokken en slices In H.264/AVC is de standaard macroblokgrootte Een macroblok kan echter nog verder opgesplitst worden. Intragecodeerde macroblokken kunnen worden opgedeeld als zestien 4 4 partities, als vier 8 8 partities (in FRExt 1 ) of als één partitie (Figuur 3.1). Voor intergecodeerde macroblokken (in P- of B-beelden) bestaan er heel wat meer 1 Fidelity Range Extensions (FRExt) is een uitbreiding op de eerste versie van de standaard die later werd geïncorporeerd in het High Profile.

52 Hoofdstuk 3. H.264/AVC 34 Tabel 3.1: H.264/AVC Profielen. Profiel B 1 interlacing 2 CABAC 3 T Baseline Profile nee nee nee nee Main Profile ja ja ja nee High Profile ja ja ja ja 1 Ondersteuning voor B-beelden. 2 Ondersteuning voor interlaced video. 3 Ondersteuning voor CABAC, naast CAVLC (Sectie 3.10). 4 Ondersteuning voor 8 8 transformatie, naast 4 4 transformatie. Tabel 3.2: H.264/AVC Levels. Level Max. Max. bitsnelheid (Mbps) resolutie mogelijke opdelingen (Figuur 3.2). Een intergecodeerd macroblok kan in eerste instantie opgedeeld worden als vier 8 8 partities, twee 16 8 of 8 16 partities of als één partitie. In het geval van 8 8 partities kunnen die onafhankelijk van elkaar nog eens verder opgedeeld worden in vier 4 4 subpartities, twee 8 4 of 4 8 subpartities of als 8 8 partitie behouden worden. Figuur 3.1: Opsplitsing van een intra-macroblok. Macroblokken worden gegroepeerd in slices. In tegenstelling tot MPEG-2 kan het aantal macroblokken in een slice variëren van één tot het totaal aantal macroblokken in een beeld. Doorgaans worden alle macroblokken van een beeld in één slice gecodeerd. 3.3 Interlaced en progressive video In H.264/AVC zijn er terug verschillende mogelijkheden om interlaced en progressive video te behandelen. Een veld kan apart gecodeerd worden ( field -codering) of opgenomen worden in een volledig beeld, samen met het andere veld van dat beeld, en dan zo gecodeerd worden ( frame -codering). Deze beslissing kan beeld per beeld gemaakt worden

53 Hoofdstuk 3. H.264/AVC 35 Figuur 3.2: Opsplitsing van een inter-macroblok. (PAFF), maar ook op macroblokniveau, wat dan Macroblock Adaptive Field/Frame - codering noemt (MBAFF). Bij het gebruik van MBAFF in een beeld, worden macroblokken gecodeerd in macroblokparen een paar van twee macroblokken onder elkaar (Figuur 3.3). Per macroblokpaar kan dan beslist worden of het field- of frame-gecodeerd wordt. Bij een field-gecodeerd macroblokpaar bestaat het bovenste macroblok uit de oneven lijnen van het paar en het onderste macroblok bestaat uit de even lijnen. Bij een frame-gecodeerd macroblokpaar bestaat elk macroblok uit de lijnen zoals ze van boven naar onder voorkomen (Figuur 3.4). Figuur 3.3: Beeld met twee macroblokparen. 3.4 Temporele predictie Zoals reeds vermeld is kunnen intergecodeerde macroblokken verder opgesplitst worden in partities en subpartities. Voor elke partitie of subpartitie worden één of twee bewegingsvectoren bepaald. Elke bewegingsvector heeft ook een geassocieerde index die verwijst naar een bepaald referentiebeeld. In de encoder en decoder worden daarvoor twee lijsten bijgehouden die een variabel aantal referentiebeelden bevatten, list0 of L0 en list1 of L1. De referentiebeelden kunnen in weergavevolgorde zowel vóór als na het huidige beeld komen. List0 is zo geordend dat eerst de beelden geïndexeerd worden die vóór het huidige beeld

54 Hoofdstuk 3. H.264/AVC 36 Figuur 3.4: Een macroblokpaar opgedeeld voor frame-predictie en voor fieldpredictie. in weergavevolgorde komen en wel zo dat een grotere index verwijst naar een beeld dat in weergavevolgorde verder van het huidige beeld gelegen is, dus vroeger in de videostroom komt. List1 bevat eerst de referentiebeelden die in weergavevolgorde ná het huidig beeld komen en op een gelijkaardige manier als list0 zijn geordend hoe hoger de list1-index, hoe verder het referentiebeeld van het huidige beeld zit, voor list1 dus hoe later in de videostroom. (Sub)Partities van P-macroblokken hebben één bewegingsvector die verwijst naar een referentiebeeld uit list0. De index van het referentiebeeld, de referentie-index, wordt aangeduid met refidxl0. (Sub)Partities van B-macroblokken hebben één of twee bewegingsvectoren, die kunnen verwijzen naar list0 of list1. B-macroblokken kunnen dus voorspeld worden via twee vorige, twee volgende of één vorig en één volgende referentiebeeld. Verder kan een B-beeld als referentiebeeld ook andere B-beelden gebruiken, maar dit wordt meestal niet toegepast. Skipped macroblokken zijn telkens 16 16, komen voor als P-macroblok of B-macroblok en hebben geen gecodeerde bewegingsvector. (Sub)Partities kunnen niet op zich als skipped gecodeerd worden. De bewegingsvector voor een skipped macroblok wordt gelijk gesteld aan de voorspelde waarde. In B-beelden bestaat er verder nog het B Direct 16x16 -macrobloktype en een gelijkaardig type voor 8 8 partities, namelijk B Direct 8x8. Voor macroblokken of partities van dit type is wel een residu aanwezig in de bitstroom, maar geen bewegingsvector. De bewegingsvector wordt ook hier gelijk gesteld aan de voorspelling. Voor elke bewegingsvector van een (sub)partitie wordt ook een voorspelling (mvp) bepaald aan de hand van omliggende, reeds gecodeerde, macroblokken. Een licht vereenvoudigde versie van het predictieproces voor bewegingsvectoren wordt hier besproken. Voor een macroblokpartitie of -subpartitie X worden eerst de buurpartities of -subpartities bepaald

55 Hoofdstuk 3. H.264/AVC 37 (A, B, C, D). Een mogelijke constellatie wordt gegeven in Figuur 3.5. Als een partitie Figuur 3.5: Bepaling van de buren van macroblok X. niet beschikbaar is, dan wordt de bewegingsvector ervan als nul beschouwd (mv = (0, 0)). Als C niet beschikbaar is, maar D wel, dan wordt D gebruikt in plaats van C. Afhankelijk van het type partitie gebeurt de voorspelling verder als volgt: 16 8 partitie. Voor de bovenste partitie is mvp X = mv B en voor de onderste partitie is mvp X = mv A partitie. Voor de linkse partitie is mvp X = mv A en voor de rechtse partitie is mvp X = mv C. Alle andere types partities. mvp X = mediaan(mv A, mv B, mv C ) Dit proces is echter nog afhankelijk van het al dan niet beschikbaar zijn van buurpartities en hun bewegingsvector(en). Voor skipped macroblokken verloopt het predictieproces voor de bewegingsvector anders. Voor skipped P-macroblokken ( P Skip ) is het predictieproces ruwweg hetzelfde als hierboven beschreven. Voor skipped B-macroblokken ( B Skip ) en B Direct-macroblokken en -partities gebeurt de voorspelling op een andere manier, namelijk door Direct -predictie. Direct-predictie heeft zowel een spatiale als een temporele variant, die beide gebruikmaken van informatie over de bewegingsvector en referentiebeelden van een gecoloceerd macroblok. Hier wordt niet verder ingegaan op de definitie en het bepalen van een gecoloceerd macroblok en het verdere verloop van Direct-predictie omdat dit vrij ingewikkeld is. De voorspelde bewegingsvector bij spatiale Direct-predictie is ofwel gelijk aan nul, ofwel gelijk aan het resultaat van de methode besproken in vorige paragraaf. Bij temporele directpredictie is de voorspelling gelijk aan een geschaalde versie van de list0 bewegingsvector van het gecoloceerd macroblok. Meestal wordt de spatiale variant toegepast. Bewegingsvectoren in H.264/AVC worden tot op 1 pixel (Eng.: quarter-pixel) bepaald voor 4 de lumacomponent. Voor de chromacomponent geeft dat aanleiding tot bewegingsvectoren

56 Hoofdstuk 3. H.264/AVC 38 van 1 pixel. Om pixelwaardes op die subpixelposities te bepalen wordt een interpolatieproces toegepast. Voor de lumacomponent verloopt dat in twee stappen. In een 8 eerste interpolatiestap wordt tot 1 pixelposities geïnterpoleerd via een filter dat tot zes pixelwaardes in de nabijheid gebruikt (Figuur 3.6). Bijvoorbeeld, de lumacomponent 2 voor subpixel b wordt bepaald via interpolatie van pixels E, F, G, H, I en J. Figuur 3.6: Interpolatie van lumacomponent tot 1 2 pixel [20]. Lumawaardes op pixelposities worden aangeduid met een hoofdletter, lumawaardes op pixelposities worden aangeduidt met kleine letters. 1 2 De tweede stap die de 1 pixelwaardes bepaalt, bestaat dan uit een lineaire interpolatie die 4 gebruik maakt van twee buurpixels (Figuur 3.7). Figuur 3.7: Interpolatie van lumacomponent tot 1 4 pixel [20]. Het interpolatieproces voor de chromacomponent is een bilineaire interpolatie die gebruik maakt van de chromacomponenten van de vier omliggende pixelposities (Figuur 3.8). 3.5 Spatiale predictie Intragecodeerde macroblokken kunnen zoals reeds meegegeven op drie verschillende manieren onderverdeeld worden: één blok, vier 8 8 blokken of zestien 4 4 blokken. De lumacomponent van 4 4 blokken en 8 8 blokken kan op negen verschillende manieren (modes) voorspeld worden (Figuur 3.9). De lumacomponent van een macroblok

57 Hoofdstuk 3. H.264/AVC 39 Figuur 3.8: Interpolatie van chromacomponent tot 1 8 pixel [20]. kan op vier verschillende manieren voorspeld worden (Figuur 3.10). De chromacomponent wordt telkens als het volledige 8 8 blok gecodeerd en de voorspelling van het blok kan gebeuren op vier verschillende manieren, gelijkaardig als voor de lumablokken. Figuur 3.9: Intramodes voor 4 4 I-blokken [20]. Figuur 3.10: Intramodes voor I-blokken [20]. De gebruikte intramode voor een blok wordt predictief gecodeerd. Tijdens de encodering of decodering van intragecodeerde macroblokken wordt voor elk blok een voorspelling van de meest mogelijke intra-mode bijgehouden. De voorspelling van de intramode voor blok X, wordt bepaald als het minimum van de intramode van het linker buurblok A en het boven buurblok B die reeds gecodeerd zijn (Figuur 3.11). Als A of B niet beschikbaar is, dan wordt als intramode voor dat blok de DC mode gebruikt.

58 Hoofdstuk 3. H.264/AVC 40 Figuur 3.11: Buurblokken A en B waarop de voorspelling van de intramode gebaseerd wordt. Voor intragecodeerde macroblokken bestaat nog een extra mode die aangeeft dat het macroblok verliesloos gecodeerd wordt. Deze mode noemt I PCM en bestaat er uit om de pixelwaardes zonder transformatie, quantisatie of entropiecodering in de bitstroom op te nemen. 3.6 Deblocking Een proces dat niet opgenomen is in MPEG-2, maar dat wel aanwezig is in het codeerschema van H.264/AVC is deblocking. Deblocking wordt toegepast op een beeld eenmaal alle macroblokken ervan gedecodeerd zijn. Dit gebeurt ook in de encoder. De randen van (macro)blokken worden tijdens deblocking gefilterd (uitgemiddeld) om zo de soms zichtbare blokranden in een videostroom te onderdrukken. Dit komt vooral tot uiting als een sterke quantisatie toegepast wordt om een bitstroom van lage bandbreedte te bekomen. De filtering wordt toegepast op elk 4 4 of 8 8 blok van de macroblokken in een beeld en kan tot drie pixels links en rechts van een blokrand beïnvloeden (Figuur 3.12). Bij de deblocking wordt rekening gehouden met objectranden die in een macroblok kunnen voorkomen. Een objectrand is meestal een sterke rand en deze zal niet gefilterd worden. Zo zullen zichtbare blokranden vervagen, maar blijven objectranden scherp. De filtering is ook sterker bij macroblokranden, dan bij randen van partities die geen macroblokrand zijn. Figuur 3.12: De randen van luma- en chromablokjes die gefilterd worden [20].

59 Hoofdstuk 3. H.264/AVC Transformatie In H.264/AVC zijn meerdere transformaties aanwezig. Ten eerste worden 4 4 lumaen chromablokjes getransformeerd via een DCT-gebaseerde transformatie. Deze DCTtransformatie wijkt af van deze die in MPEG-2 Video gebruikt wordt omdat ze volledig via integer -bewerkingen geïmplementeerd wordt. Daardoor zijn de gereconstrueerde pixelwaardes na inverse transformatie exact gelijk aan de originele pixelwaardes. Voor de chromablokjes worden de DC-coëfficiënten per chromacomponent samengenomen in een 2 2 blokje en wordt een Hadamard-transformatie toegepast. De DC-coëfficiënten van 4 4 lumablokjes in een intragecodeerd macroblok met één partitie worden ook samengenomen (Figuur 3.13). Op het 4 4 blokje dat zo ontstaat wordt verder een 4 4 Hadamard-transformatie toegepast. In High Profile wordt de DCT-gebaseerde transformatie ook gedefinieerd voor 8 8 lumablokjes. Figuur 3.13: Opsplitsing van (de residuen van) intragecodeerde macroblokken bij transformatie [20]. 3.8 Quantisatie De quantisatie is wat complexer dan bij MPEG-2, maar het basisidee is hetzelfde. De transformatiecoëfficiënten worden eerst vermenigvuldigd met een factor die afhangt van de plaats van de coëfficiënt in het blok, wat de significantie weergeeft. Vervolgens wordt het resultaat gedeeld door een quantisatiestap, die een parameter van het quantisatieproces is. Ten slotte wordt het resultaat afgerond naar een geheel getal. De quantisatiestap is een parameter die in de bitstroom opgegeven wordt en die waardes tussen 0,625 en 224 kan aannemen.

60 Hoofdstuk 3. H.264/AVC Zig-zagscan De zig-zagscan is gelijkaardig aan degene die gebruikt wordt in MPEG-2 en hangt dus af van het al dan niet interlaced gecodeerd zijn van een macroblok. De interlaced zig-zagscan is echter niet exact dezelfde als die van MPEG-2. Er zijn zowel scanmethodes gedefinieerd voor 4 4 blokjes en 8 8 blokjes, die toegepast worden als er respectievelijk 4 4 of 8 8 transformatie gebruikt wordt Entropiecodering De entropiecodering in H.264/AVC kan op twee manieren gebeuren. Een eerste manier is CAVLC. Dit is een context-adaptieve (CA) variabele-lengtecodering (VLC). De VLC is tabelgebaseerd. De informatie uit een getransformeerd en gequantiseerd blokje wordt voorgesteld door verschillende elementen, die elk hun eigen tabel of tabellen hebben. Enkele elementen die gecodeerd worden zijn de volgende: het aantal niet-nulcoëfficiënten, de grootte en het teken van de coëfficiënten, het totaal aantal nulcoëfficiënten vóór de laatste niet-nulcoëfficiënt,.... De tabel die voor een bepaald element gebruikt wordt, kan afhangen van de waardes voor dat element die voorkomen in reeds gecodeerde buurblokken (de context). Daarom is de codering dus context-adaptief. Bijvoorbeeld, voor het coderen van het aantal niet-nulcoëfficiënten bestaan er vier verschillende tabellen. De tabel die geselecteerd wordt, hangt af van het aantal niet-nulcoëfficiënten in het buurblok links en boven het huidige blok. De tabel die gebruikt wordt voor de grootte van de coëfficiënten hangt af van de grootte van de laatst gecodeerde coëfficiënt. De tweede entropiecodeermethode is CABAC, wat staat voor context-adaptieve binaire aritmetische codering. In een eerste stap worden de elementen die gecodeerd worden, zoals gequantiseerde transformatiecoëfficiënten, residuele informatie van bewegingsvectoren (mvd),..., omgezet naar een binaire vorm. Deze stap bestaat eigenlijk uit een eenvoudige, tabelgebaseerde variabele lengte codering. Vervolgens wordt aritmetische codering toegepast op de zo verkregen bitstroom (Figuur 3.14). Telkens een bit wordt verwerkt door de aritmetische encoder, wordt een probabiliteitsinterval aangepast aan de hand van de probabiliteit van de bit op dat moment. Initieel start de encoder met het interval [0; 1]. Stel, een eerste bit (0) wordt ingelezen en heeft probabiliteit 0,4. Het interval wordt opgesplitst in [0; 0, 4] en [0, 4; 1] en het onderste interval, dat geassocieerd wordt met 0, wordt behouden. Het interval [0; 1] wordt dus aangepast naar [0; 0, 4]. Als vervolgens een tweede bit (1) wordt ingelezen met probabiliteit 0,5, dan wordt het huidige interval opgesplitst in [0; 0, 4 0, 5] = [0; 0, 2] en [0, 2; 0, 4] en wordt het bovenste interval, dat geassocieerd wordt met een 1-bit behouden. Het nieuwe interval wordt dus [0, 2; 0, 4]. Nadat de bitstroom verwerkt is, is het interval [x; y] geworden. De bitstroom wordt dan ondubbelzinnig voorgesteld door een kommagetal tussen x 0 en y 1. Tijdens het verwerken van de bits

61 Hoofdstuk 3. H.264/AVC 43 wordt een model bijgehouden dat de context modelleert en de probabiliteit van de volgende bitwaarde bepaalt. Het model is onder andere gebaseerd op het aantal 0 en 1-bits die reeds ingelezen zijn en wordt mee aangepast over alle macroblokken van een slice. Bij het begin van een slice wordt het opnieuw geïnitialiseerd. Figuur 3.14: Artimetische encodering: opsplitsing van het probabiliteitsinterval. De aritmetische decoder reconstrueert de bits zoals ze aan de encoder ingelezen worden. De decoder start initieel ook met het [0; 1] probabiliteitsinterval. In elke stap wordt dan de probabiliteit van de 0 en 1-bit bepaald en wordt het interval zo opgesplitst in twee deelintervallen. De gedecodeerde uitgangsbit wordt dan bepaald door na te gaan in welk van de twee intervallen het reële getal ligt dat de encoder gegenereerd heeft.

62 Hoofdstuk 4. Logoinsertie in H.264/AVC 44 Hoofdstuk 4 Logoinsertie in H.264/AVC 4.1 Extra complexiteit t.o.v. MPEG-2 Logoinsertie is een stuk ingewikkelder bij H.264/AVC dan bij MPEG-2 omdat op alle vlakken de complexiteit sterk is toegenomen. Enkele significante verschillen die bijdragen tot de complexiteit zijn: Macroblokpartities en -subpartities. Door de mogelijkheid om macroblokken verder op te splitsen op een heel aantal mogelijke manieren, wordt het behandelen van temporele aangetaste gebieden moeilijker. Daarbij komt ook de complexe voorspelling van de bewegingsvector. Quarter-pixelinterpolatie. Het quarter-pixelinterpolatieproces gebruikt tot zes buurpixels. Een macroblokpartitie die op het eerste zicht niet temporeel aangetast is, kan toch afhankelijk zijn van het logo omdat het referentieblok op een quarterpixelpositie dicht tegen het logo ligt en dat bij het interpolatieproces dus pixels uit het logo gebruikt worden (Figuur 4.1). Figuur 4.1: Quarter-pixel interpolatie: ontstaan van afhankelijkheid van het logo.

63 Hoofdstuk 4. Logoinsertie in H.264/AVC 45 Spatiale predictie. Er moet rekening gehouden worden met logo-afhankelijkheden bij intragecodeerde blokjes die niet overlappen met het logo, maar net naast het logo gelegen zijn. Door de manier waarop hun voorspelling bepaald wordt, kunnen ze tóch afhangen van het logo (Sectie 3.5). Deblocking. Het deblockingproces introduceert ook extra afhankelijkheden omdat randpixels van een macroblok uitgemiddeld worden met pixels buiten het macroblok. Entropiecodering. Heel wat elementen worden tijdens de entropiecodering op één of andere manier voorspeld uit de waardes in reeds gecodeerde buurblokken. Als bepaalde van die elementen wijzigen door het inserteren van een logo, dan moeten de elementen die er van afhankelijk zijn ook aangepast worden. Een voorbeeld bij CAVLC: een 4 4 blokje van transformatiecoëfficiënten wordt aangepast, waardoor onder andere het aantal niet-nulcoëfficiënten wijzigt. Buurblokjes gebruiken echter de waarde van dat element om een tabel te kiezen waarmee het eigen aantal niet-nulcoëfficiënten wordt gecodeerd. Omdat die voorspelling wijzigt, zal de tabel wijzigingen en dus de resulterende bitstring voor dat element. De bitstring moet dus opnieuw bepaald worden voor de buurblokjes die van het gewijzigd blokje afhangen. Een voorbeeld bij CABAC: de bewegingsvector van een blok wordt aangepast. In eerste plaats wijzigt daardoor de voorspelling van de bewegingsvector voor buurblokken en moet de predictiefout in die blokken correct aangepast worden. In tweede plaats wijzigt de predictiefout op de bewegingsvector (mvd). Bij de entropiecodering van die predictiefout wordt gebruikgemaakt van de predictiefout in buurblokjes om een model te kiezen voor de bitprobabiliteiten. Het model zal dus wijzigen, waardoor de bitprobabiliteiten wijzigen. Bij CABAC wordt het model echter steeds verder aangepast over alle macroblokken van een slice, waardoor eigenlijk alle volgende bitsequenties die de entropie-encoder genereert anders zullen zijn. De CABAC-entropiecodering moet dus voor de rest van de slice opnieuw uitgevoerd worden. 4.2 Logoinsertie in het transformatiedomein Zoals reeds aangehaald bij de bespreking van logoinsertie in MPEG-2 video (Sectie 2.2), bestaan er twee categorieën van methodes: methodes in het pixeldomein en methodes in het transformatiedomein. In H.264/AVC zijn methodes in het transformatiedomein minder geschikt of haalbaar door volgende redenen ([22] en [23]): Het behandelen van intragecodeerde macroblokken in het transformatiedomein leidt tot complexe berekeningen die snel een hoge kost met zich meebrengen. De bepaling van de predictie voor een I-blok gebeurt in het pixeldomein aan de hand van pixels uit buurblokken. De transformatie verspreidt echter de informatie van een pixel over ver-

64 Hoofdstuk 4. Logoinsertie in H.264/AVC 46 schillende transformatiecoëfficiënten. De voorspellingsmethode uit het pixeldomein kan dus niet zonder meer overgenomen worden in het transformatiedomein. De voorspelling van intergecodeerde blokken levert een gelijkaardig probleem op zoals bij intragecodeerde blokken. De quarter-pixelinterpolatie gebruikt tot zes buurpixels, zelfs over de rand van een macroblok. De kost om deze pixels te bepalen in het transformatiedomein is heel hoog in vergelijking met de kost in het pixeldomein. Ook het deblocking-filter geeft aanleiding tot extra complexiteit. Om deblocking correct te behandelen zou een implementatie in het transformatiedomein moeten voorzien worden. De kost van (inverse) quantisatie en transformatie is heel laag waardoor het uiteindelijke reconstrueren van de beelden weinig extra rekentijd vraagt. Dit effent het pad verder voor insertie in het pixeldomein. 4.3 Logoinsertie in het pixeldomein In de literatuur is nog weinig gepubliceerd over logoinsertie in H.264/AVC-gecomprimeerde videostromen. In [23] wordt een transcodeermethode in het pixeldomein voorgesteld. Het transcodeerschema wordt gegeven in Figuur 4.2. Figuur 4.2: Transcodeerschema van de techniek voorgesteld in [23]. Het doel van deze methode is om zoveel mogelijk de originele bitstroom te kopiëren. Om dit mogelijk te maken moeten de logo-afhankelijkheden zo snel mogelijk gestopt worden. Ten eerste zijn er de video-afhankelijkheden die optreden in de macroblokken die aangetast zijn door temporele predictie, spatiale predictie, deblocking en quarter-pixelinterpolatie. Ten tweede zijn er de codeerafhankelijkheden die optreden in macroblokken net naast de video-afhankelijkheden. De gecodeerde elementen van deze macroblokken moeten mogelijks aangepast worden doordat de voorspelling ervan gewijzigd kan zijn. Er worden drie gebieden onderscheiden (Figuur 4.3): het logogebied, het aangetast gebied 1 waarin

65 Hoofdstuk 4. Logoinsertie in H.264/AVC 47 video-afhankelijkheden optreden en het aangetast gebied 2 waarin codeerafhankelijkheden optreden. Figuur 4.3: Opsplitsing van een beeld in aangetaste gebieden [23]. Intragecodeerde macroblokken in het aangetast gebied 1 worden verliesloos gecodeerd door de I PCM mode te gebruiken (Sectie 3.5). Daardoor blijven de pixels uit die blokken ongewijzigd en verandert er in het pixeldomein niets voor de niet aangetaste, intragecodeerde blokken. Het gebruik van de I PCM mode heeft echter een hoge kost in bitsnelheid 1 omdat er geen transformatie, quantisatie en entropiecodering wordt uitgevoerd voor deze macroblokken. Voor intergecodeerde macroblokken in het logogebied of het aangetast gebied 1 worden twee bewegingsvectoren onderzocht, namelijk de originele bewegingsvector (mv = mv) en de nul-bewegingsvector (mv = 0). De beste bewegingsvector wordt dan bepaald als de bewegingsvector die de kleinste verandering in het originele residu teweegbrengt. Dat wordt bepaald op de volgende manier. Het logo wordt in de videostroom geïnserteerd via de volgende formule: P (x, y, n) = α L(x, y) + (1 α) P (x, y, n) waarbij α de transparantiefactor is (0 < α 1), met α = 0 volledig transparant, P (x, y, n) de pixel (x, y) voorstelt van het beeld P op tijdseenheid n, L(x, y) de logopixel overeenkomstig met pixel (x, y) in het beeld P en P (x, y, n) de gewijzigde pixel voorstelt na logoinsertie. Het origineel residu R(x, y, n) wordt bekomen door de voorspelling af te trekken van de huidige pixelwaarde op positie (x, y): R(x, y, n) = P (x, y, n) P (x, y, n ) met P (x, y, n ) de pixel die de voorspelling vormt voor P (x, y, n). Voor aangetaste macroblokken zijn dan drie mogelijke situaties: 1. Het macroblok is een logomacroblok en wordt uit een niet-logomacroblok voorspeld bits voor één I PCM-macroblok met 4:2:0 chroma-onderbemonstering

66 Hoofdstuk 4. Logoinsertie in H.264/AVC Het macroblok is een logomacroblok en wordt uit een logomacroblok voorspeld. 3. Het macroblok is een niet-logomacroblok en wordt uit een logomacroblok voorspeld. Voor een blok in situatie 1, wordt het nieuwe residu gegeven door R (x, y, n) = P (x, y, n) P (x, y, n ) = R(x, y, n) + α [L(x, y) P (x, y, n)] als mv = mv R (x, y, n) = P (x, y, n) P (x, y, n ) = (1 α) R(x, y, n) als mv = 0 Bij een transparant logo (α 0) zal mv = mv doorgaans de kleinste verandering introduceren, bij een opaak logo (α 1) zal dit doorgaans mv = 0 zijn. Ten slotte blijven nog de codeerafhankelijkheden over (aangetast gebied 2). Zoals aangehaald in Sectie 4.1 is het enkel mogelijk om elementen in de bitstroom te corrigeren als CAVLC-entropiecodering gebruikt wordt. Bij CABAC is entropiehercodering van het volledig beeld nodig. De voorgestelde transcodeermethode wordt op de volgende manier geëvalueerd. Ten eerste wordt de naïeve transcodeermethode toegepast (Sectie 1.4) op de gecomprimeerde ingangsstroom en wordt de PSNR-waarde bepaald (Sectie 1.5) ten opzichte van de ruwe videostroom waarin het logo geïnserteerd werd de referentiestroom. Ten tweede wordt de voorgestelde transcodeermethode toegepast op de ingangsstroom en wordt opnieuw de PSNR-waarde bepaald ten opzichte van dezelfde referentiestroom. De experimenten worden uitgevoerd vertrekkende van een videostroom die 300 beelden bevat met een resolutie van pixels. Het logo dat geïnserteerd wordt is pixels groot en beslaat dus 1,5% van het beeld. De experimenten tonen aan dat de PSNR van de voorgestelde methode ten opzichte van de naïeve methode stijgt met meer dan 1 db. Om met de naïeve methode eenzelfde PSNR-waarde te krijgen is er bijna 70% meer bandbreedte nodig. Er wordt vastgesteld dat door de verliesloze codering van I-blokken de bandbreedte in intrabeelden met meer dan 15% kan toenoemen, maar de PSNR daardoor wel beter is omdat fouten vermeden worden. Verder blijkt dat de voorgestelde methode bijna 70% minder uitvoertijd nodig heeft dan de naïeve methode. De voorgestelde methode blijkt goede resultaten op te leveren, maar er zijn toch nog enkele minpunten en opmerkingen bij te maken. Een eerste opmerking is dat de grootte van het logo heel klein is ten opzichte van het beeld. Daardoor zal het aangetast gebied 1 in de meeste beelden ook niet zo groot zijn. Het gebruik van de I PCM mode kan dan wel gerechtvaardigd zijn voor een klein logo, maar bij grotere logo s wordt het aantal intragecodeerde macroblokken die met I PCM gecodeerd worden groot, waardoor de kost

67 Hoofdstuk 4. Logoinsertie in H.264/AVC 49 ervan heel hoog wordt. Daarom moet de I PCM mode dus vermeden worden. Een andere opmerking is dat het kiezen van een bewegingsvector gelijk aan nul (mv = 0) een relatief slechte oplossing is voor snelle beweging in macroblokken van het aangetast gebied 1 als een niet transparant logo wordt ingevoegd. Een betere oplossing daarvoor zou kunnen zijn om in een (beperkt) zoekvenster die bewegingsvector te gaan verfijnen. Dat is zeker verantwoord omdat de uitvoertijd van het voorgesteld algoritme heel laag is en dat het aantal macroblokken waarvoor een verfijning gezocht moet worden meestal maar een relatief kleine fractie van het totaal aantal macroblokken zal zijn. 4.4 Uitwerking van transcodeertechnieken Het is duidelijk geworden uit de vorige secties (Sectie ) dat een aanpak voor logoinsertie in H.264/AVC gecomprimeerde video uit een transcodeermethode in het pixeldomein zal bestaan. In deze sectie worden verschillende mogelijke technieken voorgesteld en de motivatie erachter besproken. Niet alle technieken zijn ook effectief geïmplementeerd geworden. Vooraleer dieper op de technieken in te gaan, wordt eerst uitgelegd welke aangetaste gebieden beschouwd worden. Definitie van aangetaste gebieden Figuur 4.4: Schema van aangetaste gebieden. De aangetaste gebieden worden op een licht andere manier gedefinieerd dan in Sectie Figuur 4.4 geeft het schema van de verschillende aangetaste gebieden. Een eerste gebied is het logogebied (LG). Het logo kan al dan niet samenvallen met grenzen van macroblokken. Macroblokken of (sub)partities die maar voor een deel met het logo overlappen en dus niet volledig binnen het logo liggen, worden als een aparte categorie beschouwd het partieel aangetast gebied (PAG). Intragecodeerde macroblokken die logopixels gebruiken voor hun voorspelling zijn spatiaal aangetast het spatiaal aangetast gebied (SAG). Intergecodeerde macroblokken die niet reeds geclassificeerd zijn en die een referentiemacroblok

68 Hoofdstuk 4. Logoinsertie in H.264/AVC 50 hebben die met het logo overlapt, behoren tot het temporeel aangetast gebied en zijn in 1 e orde aangetast het temporeel aangetast gebied van 1 e orde (TAG1). Intergecodeerde macroblokken waarvan het referentiemacroblok overlapt met een macroblok uit TAG1 of uit SAG, zijn in 2 e orde temporeel aangetast (TAG2). De rest van de macroblokken wordt als niet aangetast beschouwd het niet aangetast gebied (NAG). Visualisatie van aangetaste gebieden Om een beter zicht te krijgen op de verschillende aangetaste gebieden en voornamelijk hoe ze zich gedragen (ligging en grootte in opeenvolgende beelden), kan na de bepaling van de aangetaste gebieden een beeld opgemaakt worden dat voor elke pixel aangeeft, in een bepaalde kleur, in welk aangetast of niet-aangetast gebied het zich bevindt. Enkele voorbeelden van zo n gemarkeerde beelden worden gegeven in Figuur 4.5. Daarin worden de volgende kleurcodes gebruikt: donkergroen is het niet aangetast gebied, wit is het logogebied (LG en PAG), oranje is het spatiaal aangetast gebied (SAG), magenta is het temporeel aangetast gebied (TAG1), zwart is het temporeel aangetast gebied in 2 e orde (TAG2). (a) Gemarkeerd I-beeld. (b) Gemarkeerd P-beeld. (c) Gemarkeerd B-beeld. Figuur 4.5: Gemarkeerde beelden die aangetaste gebieden visueel voorstellen.

69 Hoofdstuk 4. Logoinsertie in H.264/AVC Behouden van alle codeerparameters In deze eerste techniek wordt het logo zonder meer geïnserteerd in het gereconstrueerd beeld. Er worden geen wijzigingen aangebracht aan predictiemodes, bewegingsinformatie, enz. Standaard wordt wel de residuele informatie van alle macroblokken herberekend. Daardoor zullen de meeste macroblokken reeds correct getranscodeerd worden. Voor skipped macroblokken ontstaat er echter nog een probleem omdat voor deze macroblokken geen residu in de gecomprimeerde stroom opgenomen wordt. Skipped macroblokken binnen het logo en in de buurt van het logo worden daarom foutief voorspeld en het residu kan niet gecorrigeerd worden, waardoor er visuele fouten optreden (Figuur 4.6). Figuur 4.6: Foreman met foutief voorspelde skipped macroblokken. Om dit probleem op te lossen moeten alle skipped macroblokken gecontroleerd worden. Als het skipped macroblok een deel van het logo bevat, of als het temporeel aangetast is, dan moet het aangepast worden. De aanpassing bestaat eruit om het macrobloktype te veranderen naar een niet-skipped macrobloktype: Skipped P-macroblokken (P Skip) worden op eenzelfde manier voorspeld als nietskipped P L0 16x16 macroblokken. Het macrobloktype van een foutief voorspelde P Skip wordt daarom veranderd in P L0 16x16. Dit macrobloktype heeft één partitie (16 16) en één bewegingsvector naar een list0 referentiebeeld. Skipped B-macroblokken (B Skip) worden op een zelfde manier voorspeld als macroblokken van het B Direct 16x16-type en dit laatstgenoemde type wordt dan ook gebruikt als vervanging voor aangetaste B Skip macroblokken. Voor B Direct 16x16 macroblokken is wel residuele informatie aanwezig in de bitstroom, maar geen informatie over bewegingsvectoren. De voorspelling van de bewegingsvector wordt overgenomen als echte bewegingsvector.

70 Hoofdstuk 4. Logoinsertie in H.264/AVC 52 Het behouden van bewegingsinformatie zal een goede keuze zijn voor logo s die heel transparant zijn. Logo s die minder transparant zijn zullen echter beter voorspeld worden aan de hand van de overeenkomstige logoblokken uit een referentiebeeld Aanpassen van de bewegingsvector naar nul Een logische volgende stap is het aanpassen van de bewegingsvector voor (partiële) logomacroblokken (LG en PAG) en temporeel aangetaste macroblokken (TAG1). De bewegingsvector voor deze blokken wordt hier op nul gezet (mv = 0). Voor weinig transparante logo s zal daardoor de residuele informatie kleiner worden, omdat de voorspelling beter is, waardoor de bitsnelheid dus zal dalen. De kwaliteit kan daarom stijgen omdat er minder predictiefouten optreden en de reconstructie dus minder afwijkt van het origineel. Hier moet terug speciale aandacht besteed worden aan enkele macrobloktypes. Skipped macroblokken moeten omgezet worden naar een macrobloktype dat zowel een gecodeerd residu als een gecodeerde bewegingsvector heeft. Direct-macroblokken moeten ook aangepast worden omdat deze geen gecodeerde bewegingsvector hebben. Om met deze probleemtypes makkelijker om te gaan, worden macroblokken eerst genormaliseerd en later terug gedenormaliseerd. Normalisatie van macroblokken De normalisatie wordt toegepast op alle skipped macroblokken en macroblokken of partities van het B Direct-type en dit nadat een beeld gedecodeerd is. De macroblokken in kwestie worden omgezet naar een ander type dat bij codering zowel een residu als een bewegingsvector zou bevatten. De te normaliseren macroblokken worden op de volgende manier aangepast: Skipped P-macroblokken (P Skip) worden omgezet naar P L0 16x16 macroblokken. Daarbij moeten een aantal parameters aangepast worden, waaronder de vlag die het macroblok als skipped of niet-skipped markeert en de parameter die het macrobloktype aanduidt. Skipped B-macroblokken (B Skip) en B Direct 16x16 macroblokken worden omgezet naar het B 8x8-type omdat deze macroblokken eigenlijk als vier aparte 8 8 partities behandeld worden. Voor elk van de vier partities wordt de techniek voor een B Direct 8x8-blok toegepast die in het volgend puntje beschreven wordt. Voor de aanpassing naar B 8x8 moet de skip-vlag en ook de parameter die het macrobloktype aanduidt, aangepast worden. B Direct 8x8 partities worden omgezet naar een partitietype waarvoor in de bitstroom zowel een residu als een bewegingsvector wordt opgenomen. Afhankelijk van de gebruikte referentielijsten (L0 en/of L1), wordt een B Direct 8x8-partitie omgezet

71 Hoofdstuk 4. Logoinsertie in H.264/AVC 53 naar B L0 8x8, B L1 8x8 of B Bi 8x8. Het nieuwe partitietype wordt bepaald aan de hand van de predictievlaggen die per partitie en per referentielijst aangeven of de referentielijst wordt gebruikt voor die partitie. Het partitietype en de predictiemode (L0, L1 of Bi) moeten hier aangepast worden. Door de normalisatie is het niet meer nodig om skipped macroblokken bij de vorige techniek (Sectie 4.4.1) aan te pakken. Denormalisatie van macroblokken Na het toepassen van de normalisatie zijn alle skipped en direct macroblokken verdwenen. Als de stroom zo geëncodeerd zou worden, dan zou de vereiste bitsnelheid veel hoger liggen, omdat voor elk macroblok dat vroeger skipped was nu wel een residu en een bewegingsvector meegestuurd wordt. Daarom wordt net voor de encodering, en na het toepassen van alle logoinsertietechnieken, een denormalisatie uitgevoerd. Dat houdt in dat voor elk blok opnieuw nagegaan wordt of het eventueel skipped of Direct kan gemaakt worden. In eerste plaats moet de bewegingsvector van een macroblok of partitie gelijk zijn aan de voorspelling (mv = mvp). De voorspelling van de bewegingsvector wordt daarom uitgevoerd alsof het macroblok een skipped macroblok is. In tweede plaats moet nagegaan worden of het residu al dan niet nul is (r = 0). Indien zowel mv = mvp als r = 0 voor het volledige macroblok dan wordt het als skipped gemarkeerd door de skip-vlag en het macrobloktype aan te passen. Indien mv = mvp, maar r 0, dan wordt een B-macroblok of partitie omgezet naar een Direct-macroblok of -partitie. Voor P-macroblokken bestaat er geen Direct-predictiemode en deze macroblokken blijven daarom als P L0 16x16-macroblokken bestaan. Om verder nog meer macroblokken die binnen het logogebied liggen als skipped te kunnen markeren bij toepassing van de denormalisatie, worden intergecodeerde logomacroblokken die volledig uit logopixels bestaan omgezet naar een macroblok. P-macroblokken van het logo krijgen daarom het P L0 16x16-macrobloktype, terwijl B-macroblokken veranderd worden naar B L0 16x16, B L1 16x16 of B Bi 16x16, afhankelijk van de predictiemode die in de buurblokken gebruikt wordt. Daarbij wordt rekening gehouden met het predictieproces van de bewegingsvector van B Skip-macroblokken. Als bijvoorbeeld de voorspelling van de bewegingsvector enkel een L0-referentiebeeld zou gebruiken, dan wordt het B L0 16x16 macrobloktype gekozen. Als het residu van het macroblok dan nul is, dan zal na denormalisatie het macroblok als skipped gemarkeerd zijn Verfijnen van de bewegingsvector Door het invoegen van het logo zullen de bewegingsvectoren niet meer de optimale bewegingsvectoren zijn. Dit zal voornamelijk een impact hebben op macroblokken die temporeel

72 Hoofdstuk 4. Logoinsertie in H.264/AVC 54 aangetast zijn (TAG1) en mogelijks ook voor het in 2 e orde temporeel aangetast gebied (TAG2). Daarom kan voor deze macroblokken de bewegingsvector verder verfijnd worden. De verfijning kan eventueel gebeuren in een beperkt zoekvenster en met een snelle zoektechniek. De reden om dit niet te doen voor logomacroblokken is omdat de kost van logomacroblokken meestal heel laag is. Als de bewegingsvector verfijnd zou worden voor de logomacroblokken, dan kan het zijn dat elk logomacroblok/-(sub)partitie een andere bewegingsvector heeft. Daardoor daalt het aantal skipped macroblokken binnen het logo wat aanleiding geeft tot een hogere bitsnelheid omdat het coderen van een skipped macroblok veel efficiënter is dan een ander macrobloktype. Voor de partieel aangetaste macroblokken (PAG) wordt de bewegingsvector ook niet verfijnd. Dit zal een goede keuze zijn als elk partieel aangetast macroblok bijna volledig met het logo opgevuld is, maar zal minder goed zijn als er maar een klein aantal logopixels in een macroblok liggen. In het laatste geval zou het beter zijn om de originele bewegingsvector te behouden. Indien het macroblok daardoor temporeel aangetast is, dan worden de technieken voor temporeel aangetaste macroblokken gevolgd en wordt de bewegingsvector toch verfijnd. Strategieën voor partieel aangetaste macroblokken worden echter niet nader onderzocht. In deze masterproef wordt in eerste plaats gekozen voor de meest eenvoudige zoekmethode, namelijk full search. Deze zoekmethode bestaat eruit om alle mogelijke bewegingsvectoren binnen het zoekvenster te overlopen en de beste over te houden. De bepaling van de beste bewegingsvector gebeurt aan de hand van een bepaalde metriek die berekend wordt tussen twee macroblokken. Enkele mogelijke metrieken zijn sum of absolute differences (SAD) en sum of squared differences (SSD). Hier werd gekozen voor SAD met als formule b i r i waarbij b i de pixels van het beschouwde blok zijn en r i de overeenkomstige pixels in het referentieblok. Alhoewel full search de meest optimale bewegingsvector vindt, is de rekentijd van deze methode wel heel groot. Om de rekentijd toch wat te drukken, wordt eerst full search toegepast tot op pixelniveau en de zo bekomen beste bewegingsvector wordt daarna verder verfijnd met full search tot op quarter-pixelniveau. Een tweede zoekstrategie die uitgewerkt is, is een gewijzigde versie van 2D logaritmisch zoeken. De originele vorm van 2D logaritmisch zoeken, werkt in meerdere iteraties. Bij initialisatie wordt het zoekvenster gecentreerd rond het macroblok waarvoor een bewegingsvector gezocht wordt. Bij elke iteratie worden negen punten (bewegingsvectoren) onderzocht in het zoekvenster (Figuur 4.7) en de beste bewegingsvector wordt bepaald. In de volgende iteratie wordt het zoekvenster gehalveerd en worden terug negen punten onderzocht rond de positie van de huidige beste bewegingsvector. Dit proces herhaalt zich totdat het zoekvenster een breedte één heeft en de uiteindelijke beste kandidaat gevonden is.

73 Hoofdstuk 4. Logoinsertie in H.264/AVC 55 Figuur 4.7: De 2D logaritmische zoekstrategie. De gewijzigde versie van de zoekstrategie gaat van in het begin ook posities dicht bij het centrum van het zoekvenster in beschouwing nemen (Figuur 4.8). De redenering daarachter is dat het meestal zo zal zijn dat een goede bewegingsvector toch niet al te ver van het centrum zal verwijderd zijn. De originele logaritmische zoekstrategie zoekt de bewegingsvector echter meteen halverwege het zoekvenster, waardoor er dus eventueel betere bewegingsvectoren dichter bij het centrum niet gevonden worden. De gewijzigde versie gaat als volgt te werk. Alle posities op afstand 1, 2, 4,..., W 1 = 2 k = W/2 + 1 van het centrum worden onderzocht en de beste bewegingsvector wordt bepaald. Indien deze bewegingsvector niet op afstand 1 ligt, dan wordt in een volgende iteratie het zoekvenster gehalveerd (W 1 = 2 k 1 ) en wordt hetzelfde proces uitgevoerd rond de positie van de beste bewegingsvector, totdat de gevonden beste bewegingsvector op een afstand 1 van de vorige ligt. Dit is dan de beste bewegingsvector tot op pixelniveau. Om de beste bewegingsvector te vinden op quarter-pixelniveau wordt dan rond de gevonden positie de gewone logaritmische zoekstrategie toegepast omdat deze dan eerst de beste positie op 1 pixel zal 2 bepalen en daarna op 1 pixel. Uitendelijk werd enkel de full search-methode overgehouden 4 omdat logaritmisch zoeken, zowel met de originele als met de aangepaste versie, inherent beduidend minder goede resultaten opleverde. De grootte van het zoekvenster (W W ) speelt hier een belangrijke rol. Een groot zoekvenster kan een meer optimale bewegingsvector vinden dan een klein zoekvenster, maar de vereiste rekentijd neemt echter ook heel sterk toe (kwadratisch i.f.v. W in het geval van full search). Terwijl bij een klein zoekvenster snel een bewegingsvector gevonden zal wor-

74 Hoofdstuk 4. Logoinsertie in H.264/AVC 56 Figuur 4.8: De gewijzigde 2D logaritmische zoekstrategie tot op pixelniveau. den, maar deze verre van optimaal kan zijn. Een goedgekozen zoekvenster moet daarom bepaald worden zodat er weinig aan kwaliteits- en bitsnelheidswinst ingeboet wordt, maar dat het zoeken toch heel wat sneller is ten opzichte het gebruik van een groot zoekvenster. In de literatuur bestaan nog veel andere zoekstrategieën die heel wat sneller kunnen zijn dan full search (o.a. [24] en [25]). Ook bestaan er betere metrieken die rekening houden met de eigenschappen van het oog en/of die een afweging maken tussen de bitsnelheid en de kwaliteit (Eng.: Rate-Distortion Optimization of RDO) als een bepaalde bewegingsvector gekozen zou worden. Over deze twee onderwerpen is echter een boek te schrijven of een masterproef te maken en dit valt daarom buiten het kader van deze masterproef. Om betere prestaties op het gebied van rekentijd te krijgen zal echter wel een andere zoekstrategie gebruikt moeten worden Aanpakken van I-logoblokken in P- en B-beelden Het komt meermaals voor dat een macroblok in P- en B-beelden intragecodeerd wordt (I-macroblok) in plaats van intergecodeerd (P- of B-macroblok), omdat daardoor het residu kleiner is in de originele stroom. Deze macroblokken kunnen ook binnen het logogebied voorkomen en een logoblok kan meestal wel goed voorspeld worden aan de hand van het overeenkomstig logoblok in een vorig beeld, zeker als het logo weinig transparant is. Daarom kan een intragecodeerd macroblok binnen het logo beter vervangen worden door een intergecodeerd macroblok. Bij die aanpassing moet ermee rekening gehouden worden dat een logoblok veel kans maakt om goed voorspeld te worden en dus een skipped macro-

75 Hoofdstuk 4. Logoinsertie in H.264/AVC 57 blok kan worden. In P-beelden wordt een intragecodeerd logomacroblok daarom omgezet naar een P L0 16x16 macroblok. In B-beelden wordt het omgezet naar een B L0 16x16, B L1 16x16 of B Bi 16x16 macroblok. Dat gebeurt op dezelfde manier als bij de techniek uit Sectie Het grootste voordeel van deze techniek is dat de vereiste bitsnelheid kan dalen terwijl de kwaliteit ongeveer dezelfde blijft Verwijderen van kleine chromacoëfficiënten Na de normalisatie van macroblokken (Sectie 4.4.2) zijn er geen skipped of direct macroblokken meer. Elk macroblok heeft dus een residu en dit residu wordt standaard herberekend. Voor macroblokken die oorspronkelijk skipped waren, kunnen door die herberekening soms kleine afwijkingen ontstaan die verhinderen dat het macroblok terug als skipped gecodeerd kan worden. Voor logoblokken kan eenzelfde situatie optreden, waar kleine afwijkingen verhinderen om een macroblok skipped te kunnen maken. Om dit tegen te gaan kunnen kleine AC-chromacoëfficiënten verwijderd worden in P- en B-beelden. De DC-coëfficiënten en lumacoëfficiënten worden het best ongemoeid gelaten omdat deze al een visuele impact op een beeld kunnen hebben. Er zijn heel wat verschillende strategieën mogelijk. Enkele strategieën zijn: Voor alle macroblokken kleine AC-coëfficiënten (+1/-1) verwijderen. Enkel voor logomacroblokken en macroblokken die origineel skipped waren. Zo zal er geen chroma-informatie verloren gaan bij macroblokken die sowieso al weinig kans hebben om skipped te worden na logoinsertie. Eén van de vorige twee strategieën gecombineerd met de voorwaarde dat het verwijderen van chromacoëfficiënten enkel gebeurt als de lumacomponent van het macroblok nul is. Zo zal er geen chroma-informatie verloren gaan bij macroblokken waarvan de lumacomponent al verhindert dat het macroblok skipped kan worden. Door het verwijderen van chroma-informatie zal de kwaliteit negatief beïnvloed worden. De vereiste bitsnelheid daarentegen zal positief beïnvloed worden Drempelwaarde voor transparantie bij keuze bewegingsvector De transparantiewaarde (α) is een belangrijke factor om te bepalen of het beter is om voor aangetaste gebieden de originele bewegingsvector te behouden (mv = mv) óf de bewegingsvector beter veranderd wordt naar nul (mv = 0). Daarom kan een bepaalde drempelwaarde (Eng.: threshold) bepaald worden die aangeeft vanaf welke transparantiewaarde de keuze voor bewegingsvector verandert.

76 Hoofdstuk 4. Logoinsertie in H.264/AVC 58 Deze techniek is niet geïmplementeerd geworden, maar er is wel een schatting gemaakt van de drempelwaarde Herbepaling van intramodes Het behouden van codeerparameters is niet enkel nadelig voor intergecodeerde macroblokken, maar ook voor intragecodeerde macroblokken. De originele intramode zal voor weinig transparante logo s (LG) meestal een slechte mode zijn omdat ze niet aangepast is aan het logo. Ook voor spatiaal aangetaste macroblokken (SAG) kan het voorkomen dat de originele mode niet meer de optimale mode is. Daardoor kan het gecorrigeerde residu hoog zijn. Om dit probleem aan te pakken moet de intramode herbepaald worden voor die blokken. Een manier om dat te doen is om elke mogelijke intramode te evalueren en via een metriek de beste te kiezen. Dit kan heel wat rekentijd in beslag nemen en in de literatuur zijn dan ook meer optimale methodes voorgesteld zoals [26] en [27]. Deze techniek is niet geïmplementeerd geworden. De intramodes voor macroblokken in LG en SAG wordt telkens behouden Selectieve herberekening van het residu Standaard wordt voor alle macroblokken het residu herberekend. Dit komt de kwaliteit van de macroblokken ten goede, omdat op deze manier drift tegengegaan wordt. Macroblokken die zelf niet rechtstreeks van het logo afhangen kunnen toch door het logo beïnvloed worden omdat ze voorspeld worden uit aangetaste macroblokken. De niet rechtstreeks aangetaste macroblokken zijn dan aangetast in hogere orde. Het residu kan door deze hogere orde afhankelijkheid toch licht wijzigen, zodat door de herberekening van het residu fouten tegengegaan worden die anders kunnen propageren binnen een beeld en ook over beelden heen (drift). Maar, het herberekenen van alle residuele informatie vereist wel wat rekentijd en het kwaliteitsverlies en de drift is meestal maar klein. Daarom kan het selectief herberekenen van enkel de rechtstreeks aangetaste macroblokken een goed compromis zijn tussen rekentijd en kwaliteit. Deze techniek is niet geïmplementeerd geworden. De residuele informatie wordt voor alle macroblokken herberekend Opsplitsen van partieel aangetaste macroblokken Als een logo niet een geheel aantal macroblokken inneemt, dan zijn er een aantal macroblokken die slechts gedeeltelijk door het logo opgevuld zijn. Stel, enkel de rechterhelft van een macroblok bevat logopixels (8 16), de linkerhelft bevat originele beeldpixels.

77 Hoofdstuk 4. Logoinsertie in H.264/AVC 59 Omdat er voor het temporeel of spatiaal aangetast gebied (TAG1 en SAG) andere technieken kunnen toegepast worden dan voor het logogebied, kan het nuttig zijn om, indien mogelijk, een macroblok verder op te splitsen zodat elke (sub)partitie voor een zo groot mogelijk deel uit enkel logopixels of enkel originele pixels bestaat. Voor de verschillende (sub)partities kan daardoor een kleiner residu bekomen worden en een betere kwaliteit. Een nadeel is echter dat de opsplitsing op zich een hogere bitsnelheid vereist. Dat is zeker het geval voor intergecodeerde macroblokken omdat voor elke (sub)partitie één of twee bewegingsvectoren moet doorgegeven worden. Een andere mogelijke methode is om macroblokken die heel weinig logopixels bevatten, ten opzichte van de grootte van het macroblok, niet te beschouwen als logomacroblokken. Eventueel moeten deze macroblokken dan wel beschouwd worden als spatiaal of temporeel aangetast, als respectievelijk de spatiale of temporele voorspelling gebruik maakt van logopixels. Zelfs als deze macroblokken dan ook niet spatiaal of temporeel aangetast zouden zijn, moet het residu sowieso wel herberekend worden. Deze techniek is niet geïmplementeerd geworden. De originele opsplitsing van macroblokken wordt behouden, behalve bij intergecodeerde logomacroblokken die volledig binnen het logo liggen (Sectie 4.4.2) en intragecodeerde logomacroblokken in P- en B-beelden (Sectie 4.4.4) Opsplitsen door partieel aangetast referentieblok Voor temporeel aangetaste macroblokken kan het zijn dat het referentieblok maar met een heel klein deel van het logo overlapt. Bij weinig transparante logo s zal bij het gebruik van de techniek uit Sectie daarom toch voor het volledige macroblok de bewegingsvector gelijkgesteld worden aan nul (mv = 0), terwijl voor het overgrote deel van het macroblok toch beter de originele bewegingsvector behouden wordt. Een mogelijkheid is om het macroblok daarom op te splitsen zodat de referentieblokken van (sub)partities zo veel mogelijk ofwel enkel logopixels bevatten ofwel enkel originele beeldpixels. Een alternatieve methode kan eruit bestaan om bij het gebruik van de techniek uit Sectie 4.4.2, deze toch niet toe te passen als het referentiemacroblok maar heel weinig logopixels bevat. Wel moet het residu van zo n macroblok sowieso herberekend worden. Deze techniek is niet geïmplementeerd geworden. Ook hier wordt de originele opsplitsing van macroblokken behouden.

78 Hoofdstuk 5. Methode en Resultaten 60 Hoofdstuk 5 Methode en Resultaten 5.1 Evaluatiemethode Om het resultaat na transcodering te kunnen evalueren kan op verschillende manieren te werk gegaan worden Evaluatie t.o.v. de originele videostroom Deze evaluatiemethode (Figuur 5.1) vertrekt van de originele, ongecomprimeerde videostroom. Figuur 5.1: Evaluatiemethode t.o.v. de originele videostroom. Eerst wordt deze stroom geëncodeerd waaruit de ingangsbitstroom voor transcodering verkregen wordt. Op de ingangsbitstroom wordt zowel de transcodeermethode als de naïeve methode toegepast. De gecomprimeerde uitgang van beide wordt vervolgens gedecodeerd en van de gereconstrueerde videostroom wordt telkens de PSNR berekend met als referentiestroom de originele videostroom waarin het logo geïnserteerd werd. Op deze manier wordt dus telkens de objectieve kwaliteit bepaald ten opzichte van de referentiestroom.

79 Hoofdstuk 5. Methode en Resultaten 61 Om de kwaliteit van de transcodeermethode te evalueren worden de twee bekomen PSNRwaardes met elkaar vergeleken. De verschilwaarde die zo bekomen wordt, wordt in de resultaten PSNR naief genoemd. De stroom die ontstaat na toepassing van de naïeve methode, wordt de naïeve stroom genoemd. De bitsnelheid van de getranscodeerde bitstroom kan zowel vergeleken worden met de ingangsstroom als met de bitstroom van de naïeve methode. Het eerste geval is belangrijk omdat de te verwachten stijging of daling in bitsnelheid kan bepaald worden. Het tweede geval is interessant omdat de naïeve methode de beste compressie realiseert van de videostroom met logo. De bitsnelheid van de getranscodeerde bitstroom kan dan wel onder de originele bitsnelheid liggen, maar toch nog een stuk boven de bitsnelheid van de uitgangsstroom van de naïeve methode. De vergelijking t.o.v. de originele, gecomprimeerde videostroom wordt in de bespreking van de resultaten bitrate orig genoemd, terwijl de vergelijking t.o.v. de naïeve bitstroom bitrate naief genoemd wordt. Deze evaluatiemethode definieert het ideale geval van logoinsertie bij de distributie van een videostroom als het geval waarbij de originele videostroom bij de eindgebruiker terecht komt en dat het logo pas bij de eindgebruiker geïnserteerd wordt. In de praktijk zal echter nooit de originele videostroom ongecodeerd bij de eindgebruiker terecht komen Evaluatie t.o.v. de gedecodeerde ingangsstroom Deze evaluatiemethode (Figuur 5.2) vertrekt van de ingangsbitstroom. Deze bitstroom kan verkregen worden door encodering van de originele, ongecomprimeerde videostroom. Het is echter niet altijd zo dat de ongecomprimeerde videostroom beschikbaar is. Indien dat niet het geval is, dan kan deze evaluatiemethode toch toegepast worden, terwijl dat niet mogelijk is met de vorige evaluatiemethode. Figuur 5.2: Evaluatiemethode t.o.v. de gedecodeerde ingangsstroom. Op de ingangsstroom wordt vervolgens de transcodering toegepast. Binnen de transco-

80 Hoofdstuk 5. Methode en Resultaten 62 der ontstaat na de decoder de stroom van gereconstrueerde beelden als tussenresultaat of intermediair resultaat. Daarin wordt vervolgens het logo geïnserteerd. Deze stroom van beelden is de referentiestroom bij deze methode. De laatste stap van de transcoder is de encodering van de referentiestroom. De getranscodeerde bitstroom wordt verder gedecodeerd en de PSNR wordt berekend van het resultaat met de referentiestroom. De bekomen PSNR-waarde wordt in de resultaten PSNR inter genoemd. Het intermediaire resultaat dat als referentiestrooom wordt gebruikt, wordt de intermediaire stroom genoemd. De evaluatie van de bitsnelheid kan hier maar op één manier gebeuren, namelijk door vergelijking van de getranscodeerde bitstroom met de ingangsbitstroom ( bitrate orig ). De ideale situatie voor logoinsertie wordt door deze methode gedefinieerd als de situatie waarbij de gecomprimeerde videostroom bij de eindgebruiker terecht komt, deze daar gedecodeerd wordt en het logo in de gereconstrueerde beelden geïnserteerd wordt. Deze situatie komt al dichter bij de praktijk in de buurt, maar de logoinsertie wordt meestal niet bij de eindgebruiker uitgevoerd, maar gebeurt reeds vroeger in de distributie van de videostroom. Het logo zal dus zeker al een eerste keer gecodeerd zijn en het is die eerste codering die het grootste informatieverlies zal introduceren. De hier besproken evaluatiemethode vergelijkt echter een reeds gecodeerd logo met de originele versie ervan, waardoor het logogebied dus een slechtere PSNR-waarde zal hebben in vergelijking met de rest van het beeld. In de volgende sectie wordt een alternatieve evaluatiemethode besproken die zowel een eerlijke vergelijking maakt tussen de logogebieden, en de meest realistische, ideale situatie realiseert Evaluatie t.o.v. een speciale referentiestroom Deze evaluatiemethode (Figuur 5.3) maakt een ietwat ongewone, vandaar speciale, referentiestroom aan. Figuur 5.3: Evaluatiemethode t.o.v. de speciale referentiestroom.

81 Hoofdstuk 5. Methode en Resultaten 63 De referentiestroom wordt geconstrueerd door in de originele videostroom het logo te inserteren en de bekomen stroom éénmaal te encoderen en te decoderen. De originele videostroom wordt geëncodeerd en door de transcoder verwerkt. De uitgangsstroom wordt gedecodeerd en de PSNR-waarde ten opzichte van de referentiestroom wordt berekend als vergelijking. Voor deze methode is dus terug de originele videostroom nodig. Evaluatie van de bitsnelheid kan ook hier op twee manieren. Eerst en vooral kan de vergelijking met de gecomprimeerde ingangsstroom gemaakt worden. Een tweede mogelijkheid is om de bitsnelheid te vergelijken met de geëncodeerde videostroom waarin het logo geïnserteerd werd. Deze manier geeft de bitsnelheid in het geval er eigenlijk geen logoinsertie nodig was en het logo reeds van de bron meegeleverd zou zijn. Het ideale geval die door deze evaluatiemethode gedefinieerd wordt, leunt het best bij de praktijk aan. Het logo wordt geïnserteerd in de originele, ongecomprimeerde videostroom. De aangepaste videostroom wordt geëncodeerd en verstuurd naar de eindgebruiker. De eindgebruiker moet enkel de stroom decoderen Keuze van evaluatiemethode Om het beste van de verschillende evaluatiemethodes te combineren worden twee evaluatiemethodes gebruikt, namelijk deze uit Sectie en Met de eerste evaluatiemethode kan de vergelijking gemaakt worden met de prestaties van de naïeve logoinsertiemethode. In de literatuur wordt deze methode meestal als referentie gebruikt en is dus nuttig om te kunnen vergelijken met andere transcodeermethodes. Deze evaluatiemethode maakt echter geen onderscheid tussen het kwaliteitsverlies dat geïntroduceerd wordt door een eerste encodering en door de her-encodering. Een goed resultaat voor deze evaluatiemethode is een PSNR-waarde die in de buurt of zelfs hoger ligt dan die van de naïeve stroom en een bitsnelheid die zo dicht mogelijk ligt tegen die van de naïeve stroom, want de volledige her-encodering levert de minimale bitsnelheid. De tweede methode komt ook regelmatig terug in de literatuur en biedt het voordeel dat de originele stroom niet noodzakelijk beschikbaar moet zijn. Bij deze methode wordt gestreefd naar een oneindige PSNR voor het niet-logo-gebied. Doordat het logo-gebied een eerste keer geëncodeerd wordt, zal er in meer of mindere mate informatieverlies optreden zodat voor het logo geen oneindige PSNR bekomen kan worden. De methode uit Sectie wordt niet gebruikt omdat deze niet in de literatuur voorkomt en omdat ze het bijkomend nadeel heeft dat de originele ongecomprimeerde stroom beschikbaar moet zijn.

82 Hoofdstuk 5. Methode en Resultaten Testomgeving Naast de transcodeersoftware voor het implementeren van de technieken is er voor de evaluatiemethode nog software nodig om de PSNR-berekening uit te voeren (PSNRcalc) en om een logo te inserteren in een ongecomprimeerde stroom (LogoInserter). Deze tools zijn als aparte programma s geschreven, maar maken beide gebruik van delen van de transcodeersoftware. De implementatiedetails van de transcodeersoftware, het PSNRcalcprogramma en het LogoInserter-programma zijn beschreven in Bijlage A. De transcoder en de twee extra programma s worden deels geconfigureerd met een XML 1 - bestand en optioneel deels via de commandline. Een voorbeeld van zo n XML-configuratiebestand is hieronder gegeven. <?xml v e r s i o n = 1.0 encoding= UTF 8?> <S e t t i n g s > <InputStream>input.264 </ InputStream> <! input H /AVC stream > <OutputStream>r e s u l t.264 </ OutputStream> <! output H /AVC stream > <YUVResult>r e s u l t. yuv</yuvresult> <! decoded output stream > <YUVReference>r e f e r e n c e. yuv</yuvreference> <! r e f e r e n c e stream f o r PSNR c a l c u l a t i o n > <! decoded input stream with l o g o b e f o r e re encode > <YUVIntermediate>i n t e r m e d i a t e. yuv</yuvintermediate> <! raw stream v i s u a l i s i n g a f f e c t e d a r e a s > <YUVMVPropagation>mvpropagation. yuv</yuvmvpropagation> <! t e x t f i l e c o n t a i n i n g a f f e c t e d a r e a s ( x, y, width, h e i g h t ) > <MVPropagationLogFile>mvpropagation. log </MVPropagationLogFile> <GOPLogFile>gop. log </GOPLogFile> <! l o g f i l e f o r GOP s t r u c t u r e > <PSNRLogFile>psnr. txt </PSNRLogFile> <! l o g f i l e with psnr r e s u l t s > <Width>352</Width> <! width o f frame > <Height >288</Height> <! h e i g h t o f frame > <! number o f frames to t r a n s c o d e ( 1 = a l l ) > <NumberOfFramesToParse> 1</NumberOfFramesToParse> <TotalFrames >300</TotalFrames> <! number o f frames i n stream > <DeltaQPLuma>0</DeltaQPLuma> <! no change i n luma QP > <DeltaQPChroma>0</DeltaQPChroma> <! no change i n chroma QP > <EntropyMode>1</EntropyMode> <! 0 = CAVLC, 1 = CABAC > <ProcessParameters > <! 0 = mv orig, 1 = mv zero > <MvMode>0</MvMode> <! 0 = no mv search, 1 = f u l l mv s e a r c h > <MvSearchMode>0</MvSearchMode> <! mv i n [ range..+ range ] > <MvSearchRange>0</MvSearchRange> <! removing s m a l l AC chroma c o e f f s : 0 = no, 1 = i n a l l blocks, 2 = only i n l o g o + input skipped b l o c k s > <ChromaCoeffMode>0</ChromaCoeffMode> <! removing s m a l l AC chroma c o e f f s : 0 = a l l, 1 = only i f luma==0 > <ChromaRefineMode>0</ChromaRefineMode> 1 extensible Markup Language (

83 Hoofdstuk 5. Methode en Resultaten 65 <! I b l o c k s i n P/B frames : 0 = dont change, 1 = change to P/B block > <IBlocksPBMode>0</IBlocksPBMode> </ProcessParameters > <! which l o g o s to i n s e r t? > <I n s e r t > <LogoId>1</LogoId> <! i n s e r t l o g o with i d=1 > <LogoId>2</LogoId> <! i n s e r t l o g o with i d=2 > </I n s e r t > <! d e f i n i t i o n o f l o g o s > <Logo Id= 1 > <FileName>l o g o. yuv</filename> <PosX>16</PosX> <PosY>16</PosY> <Width>64</Width> <Height >64</Height> <Alpha>80</Alpha> </Logo> <Logo Id= 2 > <FileName>l o g o. yuv</filename> <PosX>240</PosX> <PosY>16</PosY> <Width>64</Width> <Height >64</Height> <AlphaMap>alphamap. map</alphamap> </Logo> </S e t t i n g s > De referentiesoftware wordt gebruikt om ongecomprimeerde stromen te encoderen of gecomprimeerde stromen te decoderen en staat los van de transcoder die ook uit een encoderen decodergedeelte bestaat. Door de referentiedecoder te gebruiken wordt geverifieerd dat het resultaat na transcodering compatibel is met de standaard. De configuratie van de encoder gebeurt via een configuratiebestand dat gebaseerd is op een voorbeeld dat meegeleverd wordt met de referentiesoftware (encoder main.cfg). Het configuratiebestand bevat honderden instellingen. De belangrijkste instellingen die van toepassing zijn en eventueel aangepast werden, zijn gegeven in Tabel 5.1. Zoals opgemerkt kan worden, zijn geen stromen behandeld die interlaced gecodeerd worden. Er werden verschillende videosequenties getest die elk een ander type inhoud hebben. De lijst met geteste sequenties en hun kenmerken wordt gegeven in Tabel 5.2. Elke sequentie werd getest met drie logo s 2 : een grote en een kleine variant van het Ciscologo (Figuur 5.4 en 5.5) en het MMLab-logo (Figuur 5.6). Voor elk van de logo s werden verschillende configuraties getest. De configuraties zijn opgelijst in Tabel Opmerking: rond de afbeeldingen van de logo s is in de tekst een zwart kader geplaatst om de afmetingen van de logo s duidelijk te maken.

84 Hoofdstuk 5. Methode en Resultaten 66 Tabel 5.1: Macrobloktypes voor I-macroblokken. Parameter Ingestelde waarde(n) Beschrijving QPISlice 22/30 de quantisatieparameter ( [0, 51]) voor macroblokken in een I-slice (I-macroblokken) QPPSlice 22/30 de quantisatieparameter voor een P-slice (I- en P-macroblokken) QPBSlice 22/30 de quantisatieparameter voor een B-slice (I-, P- en B- macroblokken) ProfileIDC 77 geeft aan dat het Main profile gebruikt wordt IntraPeriod 15 om de 15 beelden een I-beeld NumberBFrames 2 aantal B-beelden tussen twee P-beelden SearchMode 3 een snelle zoekmethode toepassen voor bewegingsestimatie SearchRange 32 de grootte van het zoekvenster W voor bewegingsestimatie EnableIPCM 0 I PCM mode niet gebruiken SymbolMode 1 CABAC gebruiken PicInterlace 0 enkel frame codering toepassen op beeldniveau MbInterlace 0 enkel frame codering toepassen op macroblokniveau Tabel 5.2: Geteste sequenties en hun kenmerken. Videosequentie Beelden Eigenschappen Bus 150 trage camera-panning 1 en traag bewegende objecten Foreman 300 eerste fase heeft onstabiele camera en snelle beweging in het midden tweede fase heeft snelle camera-panning Mobile 300 trage camera-panning en traag bewegende objecten Silent 300 statische camera, belichting en achtergrond relatief trage beweging in het midden Stefan 90 matig snelle, maar niet-rechtlijnige beweging van camera en bewegende objecten Tempete 260 continue snelle beweging van kleine objecten uitzoomen van de camera 1 Panning is het vertikaal of horizontaal bewegen van de camera. Figuur 5.4: Cisco-logo Figuur 5.5: Cisco-logo Figuur 5.6: MMLab-logo

85 Hoofdstuk 5. Methode en Resultaten 67 Tabel 5.3: Logoconfiguraties. Configuratie a Opaciteit Logomap b Macroblokalignatie Cisco-logo groot Cisco-logo klein MMLab-logo 1X 100 2X 100 3X 100 4X X 20 30X 30 40X 40 50X 50 70X 70 a X is 1 voor een logo in de rechter bovenhoek en 2 voor een logo in de rechter onderhoek. b De logomap wordt zo gekozen dat het wit van het logo volledig transparant wordt en de rest volledig opaak. Om dit praktisch uit te voeren is een Python 3 -script ontwikkeld (gen run files.py) dat voor elke logoconfiguratie de configuratiebestanden voor de transcoder en de encoder aanmaakt en voor elke sequentie ook een batch-bestand (.bat) opstelt dat de commando s bevat om elke test uit te voeren. Een test doorloopt de volgende stappen: 1. Construeren van de gecomprimeerde ingangsstroom, indien die nog niet aanwezig is. Dit moet maar één maal per sequentie gedaan worden. 2. Construeren van de referentiestroom. Dit hangt af van de gekozen evaluatiemethode. Tijdens de tests werden echter alle evaluatiemethodes uitgevoerd. 3. Uitvoeren van de transcoder. De transcoder schrijft informatie over de uitvoertijd per beeld naar de commandline. Deze informatie wordt uiteindelijk weggeschreven naar een bestand. 4. PSNR van het resultaat berekenen. Het PSNRcalc-programma genereert informatie per beeld voor elk aangetast gebied. 5. De bitsnelheid (bestandsgrootte) van de verschillende stromen bepalen. De bitsnelheden worden in een bestand weggeschreven. Deze stappen worden voor elke test herhaald. Het aantal tests die uitgevoerd werden is vrij groot. Om de resultaten makkelijker te kunnen analyseren, werd een tweede Python-script geschreven (merge results.py), dat per logoconfiguratie en per beeldtype (I, P, B) de gemiddeldes van de PSNR berekent voor 3

86 Hoofdstuk 5. Methode en Resultaten 68 elk van de aangetaste gebieden. De geaggregeerde resultaten worden weggeschreven naar Excel-bestanden. Om de resulterende videostroom te analyseren werd gebruikgemaakt van twee softwareprogramma s van Elecard, namelijk StreamEye en YUV Viewer. Met StreamEye kan heel wat informatie opgevraagd worden over beelden en macroblokken in een gecomprimeerde H.264/AVC-stroom. Enkele afbeeldingen van StreamEye worden gegeven in Figuur 5.7 en 5.8. Figuur 5.7 toont de belangrijkste vensters. Figuur 5.7: Elecard StreamEye: de drie belangrijkste vensters. In het navigatievenster kunnen verschillende instellingen geconfigureerd worden en kunnen extra informatievensters opgeroepen worden. Het grootste gedeelte wordt echter ingenomen door de navigatiefunctionaliteit. De staafdiagrammen duiden de verschillende beelden aan: een rood staafje duidt een I-beeld aan, een blauw staafje is voor een P-beeld en een groen staafje is voor een B-beeld. De hoogte van een staafje duidt de grootte van het beeld aan (in bytes). In het videovenster kan het macrobloktype gemarkeerd worden met een soortgelijke

87 Hoofdstuk 5. Methode en Resultaten 69 aanduiding (Figuur 5.8(a)). Een macroblok met een roodgekleurde cirkel erboven is een I-macroblok, een blauwe cirkel duidt een P-macroblok of B-macroblok aan, een groene cirkel is voor een B Direct 16x16 macroblok en een gele cirkel wordt gebruikt voor P Skip en B Skip macroblokken. Het is ook mogelijk om de onderverdeling in partities te laten weergeven (Figuur 5.8(b)) en de grootte van de macroblokken ten opzichte van elkaar weer te geven (Figuur 5.8(c)). Hoe hoger de kost van een macroblok hoe witter de kleur die weergegeven wordt. (a) Aanduiding van macrobloktypes. (b) Aanduiding van macroblokpartities. Figuur 5.8: Verschillende markeringen in het videovenster. (c) Aanduiding van de grootte van macroblokken. Met de YUV Viewer van Elecard kan een ruwe videostroom bekeken worden. Een krachtige functie is echter het vergelijken van twee ruwe videostromen (Figuur 5.9). Zo kunnen afwijkingen gevonden worden tussen bijvoorbeeld een gedecodeerde stroom na transcodering en een referentiestroom. Figuur 5.9: Elecard YUV Viewer: vergelijking van twee videostromen.

88 Hoofdstuk 5. Methode en Resultaten Resultaten In deze sectie worden de resultaten besproken van de uitgewerkte en geïmplementeerde technieken uit Sectie 4.4. Om dit overzichtelijk te houden, zullen enkel de meest relevante resultaten besproken worden voor het inserteren van het grote Cisco-logo en bij het gebruik van een quantisatieparameter 30. De andere resultaten liggen meestal in dezelfde lijn, maar zijn soms minder uitgesproken. Voor een volledig overzicht van alle resultaten wordt verwezen naar de bijgevoegde cd-rom Behouden van alle codeerparameters Door het behouden van alle codeerparameters en in het bijzonder de bewegingsvectoren, is de residuele informatie groot, vooral voor logomacroblokken en temporeel aangetaste macroblokken. De vereiste bitsnelheid stijgt bijgevolg sterk tot heel sterk ten opzichte van de bitsnelheid van de originele stroom (soms tot meer dan een verdubbeling). Gegevens daaromtrent zijn opgenomen in Tabel 5.4. Als het logo in een gebied wordt geplaatst met veel beweging, wat meestal zo is voor configuraties met X = 1 (Tabel 5.3), is de stijging groter. Dit kan opgemerkt worden bij de sequenties Bus, Foreman en Stefan. Daarvoor zijn twee redenen. Ten eerste zijn er veel temporeel aangetaste macroblokken. Ten tweede zijn er ook veel logomacroblokken die een grote bewegingsvector hebben waardoor de voorspelling ervan gebeurt via referentieblokken die helemaal niet lijken op het doelmacroblok. Als er minder beweging is, dan zijn de bewegingsvectoren kleiner, waardoor er minder temporeel aangetaste macroblokken zijn. De referentieblokken voor logomacroblokken liggen dan ook minder ver van het doelmacroblok en de afwijking is dan ook een stuk kleiner. Het logogebied en temporeel aangetast gebied nemen samen tot meer dan 10% van het beeld in bij de sequenties die het zwaarst getroffen zijn. Er zijn ook sterke verschillen tussen de configuraties op te merken. Deze zijn als volgt te verklaren. In de configuraties 1X is het logo volledig opaak wat aanleiding geeft tot een groot aantal macroblokken die slecht voorspeld worden. In de configuraties 3X, waarbij het logo niet op een macroblokgrens start en eindigt, is het aantal slecht voorspelde macroblokken nog groter en daarom is de vereiste bitsnelheid ook hoger. De stijging is niet spectaculair omdat de macroblokken aan de rand van het logo slechts een klein deel logo bevatten en dus niet volledig foutief voorspeld worden. In de configuraties 4X, waarbij een groot deel van het logo volledig transparant is, zijn er al heel wat minder macroblokken die slecht voorspeld worden. Degene die wel

89 Tabel 5.4: Resultaten t.o.v. de naïeve stroom en de intermediaire stroom bij het behoud van alle codeerparameters. sequentie Bus Foreman configuratie PSNR inter (db) 45,24 45,12 45,75 45,48 45,10 45,51 45,43 46,00 45,67 45,34 PSNR naief (db) +0,64 +0,65 +0,75 +0,76 +0,68 +0,79 +0,78 +0,86 +0,87 +0,81 bitrate orig +57,88% +59,14% +27,41% +37,34% +47,12% +99,35% +107,71% +63,10% +60,13% +78,30% bitrate naief +64,96% +65,14% +23,51% +37,03% +50,26% +114,35% +117,72% +59,38% +62,39% +85,72% sequentie Mobile Silent configuratie PSNR inter (db) 45,64 45,45 46,27 45,12 44,91 46,70 46,56 47,54 46,61 46,47 PSNR naief (db) +0,46 +0,47 +0,54 +0,55 +0,54 +1,03 +1,01 +1,08 +1,06 +1,04 bitrate orig +28,63% +30,38% +16,21% +17,03% +22,39% +7,05% +7,66% +4,65% +4,01% +5,51% bitrate naief +40,13% +37,32% +12,49% +16,91% +26,07% +18,12% +18,42% +14,81% +16,61% +17,41% sequentie Stefan Tempete configuratie PSNR inter (db) 44,86 44,79 45,61 44,57 44,35 46,30 46,25 46,99 46,35 46,11 PSNR naief (db) +0,73 +0,73 +0,80 +0,82 +0,79 +0,70 +0,70 +0,75 +0,76 +0,73 bitrate orig +48,93% +51,85% +27,24% +28,91% +38,17% +24,34% +25,96% +11,27% +14,80% +19,31% bitrate naief +65,22% +60,52% +15,97% +19,95% +35,04% +34,26% +35,74% +17,41% +22,48% +28,01% Tabel 5.5: Resultaten t.o.v. de naïeve stroom van de aangetaste gebieden bij het behoud van alle codeerparameters. type LG TAG1 TAG2 SAG rest grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) alle 7,58% -2,34 3,34% -0,92 1,23% +0,65 1,18% +0,21 88,09% +0,88 I 7,58% -0,74 n.v.t. n.v.t. n.v.t. n.v.t. 1,18% +0,21 91,25% +0,79 P 7,58% -2,50 2,25% -1,17 0,73% +0,91 n.v.t. n.v.t. 89,47% +0,91 B 7,58% -2,44 3,80% -0,82 1,43% +0,54 n.v.t. n.v.t. 87,20% +0,88 Tabel 5.6: Resultaten t.o.v. de intermediaire stroom van de aangetaste gebieden bij het behoud van alle codeerparameters. type LG TAG1 TAG2 SAG rest grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) alle 7,58% 36,16 3,30% 38,75 1,16% 44,68 1,12% 40,99 88,20% 52,44 I 7,58% 36,77 n.v.t. n.v.t. n.v.t. n.v.t. 1,12% 40,99 91,30% 45,43 P 7,58% 36,04 2,32% 37,53 0,66% 44,96 n.v.t. n.v.t. 89,44% 50,73 B 7,58% 36,14 3,70% 39,25 1,36% 44,57 n.v.t. n.v.t. 87,36% 53,87 Hoofdstuk 5. Methode en Resultaten 71

90 Hoofdstuk 5. Methode en Resultaten 72 slecht voorspeld worden hebben meestal maar een klein deel dat aangetast is. De bitsnelheid is bijgevolg al een stuk lager. In de configuraties 50X en 70X, die respectievelijk een opaciteit van 50% en 70% hebben, is de bitsnelheid ook net iets beter dan bij configuraties 1X omdat de foutieve voorspellingen toch al meer lijken op het origineel beeld, waardoor de fouten kleiner zijn. De bitsnelheid voor 50X ligt altijd iets lager dan 70X omdat een lagere opaciteit meer van het originele beeld doorlaat. In vergelijking met de vereiste bitsnelheid voor de naïeve stroom is het verschil nog groter (tot meer dan 10% extra verhoging). Eén van de redenen hiervoor is dat er voor alle macroblokken een optimale bewegingsvector gezocht wordt met de naïeve methode. Dat geeft aan dat het geschikt aanpassen van de bewegingsvector hier al heel wat kan helpen. Ook intragecodeerde macroblokken geven aanleiding tot een verhoging in de vereiste bitsnelheid. De verhoging ten opzichte van de originele stroom kan oplopen tot 25% voor een I-beeld, ten opzichte van de naïeve methode is dit tot 20%. I-beelden komen in de stroom maar om de 15 beelden voor, maar zijn wel de meest kostelijke beelden en kunnen soms evenveel bitsnelheid vereisten als de 14 P- en B-beelden samen die erop volgen. Om de bitsnelheid te laten dalen zal het dan ook belangrijk zijn om I-beelden aan te pakken. Dit werd echter niet uitgewerkt in deze masterproef. In verband met de kwaliteit kan er opgemerkt worden dat deze telkens beter is dan met de naïeve methode bekomen wordt. Het verschil ligt in de meeste gevallen boven 0,50 db en in sommige gevallen boven 1 db. De absolute PSNR-waarde t.o.v. de intermediaire stroom verschilt sterk tussen de verschillende sequenties (tot 2 db) en is het hoogst bij Silent en het laagst bij Stefan. Voor de verschillende configuraties van één sequentie zijn er minder sterke verschillen (tot 0,80 db). In Tabel 5.5 en 5.6 worden voor de Bus-sequentie en logoconfiguratie 11 de afwijkingen in PSNR-waarde gegeven van de verschillende aangetaste gebieden. Daaruit blijkt dat het logogebied veel slechter is dan bij de naïeve methode (meer dan 2 db lager), en dan vooral de logomacroblokken in P- en B-beelden. Ook macroblokken in het TAG1 hebben een significant lagere PSNR-waarde (ongeveer 1 db lager). De andere gebieden hebben dan terug een iets hogere PSNR-waarde dan de naïeve methode. De eerste prioriteit zal dus zijn om macroblokken in het LG en TAG1 aan te pakken. Bij vergelijking met de intermediaire stroom kan opgemerkt worden dat ook het spatiaal aangetast gebied (SAG) een beduidend lagere PSNR-waarde heeft dan de niet aangetaste macroblokken. Door het behouden van alle codeerparameters kan de her-encodering heel snel verlopen. De grootste kost is het herberekenen van residuele informatie, maar dat moet evenzeer gebeuren bij het gebruik van de naïeve methode. Ten opzichte van de naïeve methode, die alle codeerparameters opnieuw bepaalt, zal de rekentijd dus sterk dalen.

91 Hoofdstuk 5. Methode en Resultaten Aanpassen van de bewegingsvector naar nul Het behouden van de codeerparameters, in het bijzonder de bewegingsvector, blijkt heel nadelig te zijn voor de bitsnelheid en ook de kwaliteit van bepaalde aangetaste gebieden. Daarom is een eerste stap het aanpassen van de bewegingsvector. De meest voor de hand liggende bewegingsvector die daarbij in aanmerking komt is mv = 0. Deze bewegingsvector wordt toegepast voor alle logomacroblokken (LG, PAG) en macroblokken die temporeel aangetast zijn (TAG1). Logomacroblokken worden namelijk goed voorspeld uit dezelfde macroblokken van het referentiebeeld en voor macroblokken in TAG1 kan het ook een eerste stap zijn in de goede richting. In Tabel 5.7 zijn de resultaten van deze techniek opgenomen. Voor de meeste sequenties is er een sterke daling in de toename van de vereiste bitsnelheid op te merken ten opzichte van de vorige techniek (tot meer dan 50%). Een uitzondering over de hele lijn is de Silent-sequentie. De reden daarvoor is dat de meeste macroblokken in LG en TAG1 van deze sequentie reeds een bewegingsvector hadden die dicht bij nul ligt en er dus weinig winst is als de bewegingsvector effectief op nul gezet wordt. De Mobile- en Stefan-sequenties wijken af voor de 4X, 50X en 70X configuraties. Hun vereiste bitsnelheid verhoogt zelfs bij het aanpassen van de bewegingsvector voor die configuraties. Voor beide sequenties ligt de oorzaak bij het feit dat de originele beelden een grotere rol spelen voor de afwijkende configuraties bij configuratie 4X bevat geen enkel macroblok nog alleen maar logopixels, bij configuraties 50X en 70X zijn de originele pixels meer zichtbaar dan bij 1X. De macroblokken met de grootste kost zijn deze die een complexe textuur hebben (bijvoorbeeld een dambord-achtig patroon). Voor zo n macroblokken kan zelfs een kleine afwijking in de bewegingsvector ervoor zorgen dat de voorspelling juist heel goed is of juist heel slecht. Door het stellen van mv = 0 worden die macroblokken nu heel slecht voorspeld, vandaar de hoge kost (Figuur 5.10). Macroblokken met een complexe textuur rond en in het logogebied komen vooral voor in de Mobile- en Stefan-sequentie, wat de afwijking van deze sequenties verklaart. In het algemeen is de vereiste bitsnelheid voor alle configuraties en sequenties wel nog een stuk hoger dan zowel de originele bitsnelheid als de bitsnelheid van de naïeve stroom. Voor de meeste sequenties is er een lichte stijging of daling van de PSNR op te meten (< 0,50 db) t.o.v. het behouden van de bewegingsvectoren, als vergeleken wordt met de intermediaire stroom. De Mobile- en Stefan-sequenties vormen hierop terug een uitzondering. Bij deze sequenties is er een daling van meer dan 1 db. De reden is een gevolg van de grote afwijking die voor sommige macroblokken optreedt. Een grote afwijking geeft aanleiding tot veel niet-nulcoëfficiënten in de residuele informatie van macroblokken waardoor er veel quantisatiefouten optreden. Daardoor kan de PSNR sterk beïnvloed worden. De objectieve kwaliteit van alle sequenties is echter wel nog telkens hoger dan bij de naïeve methode

92 Tabel 5.7: Resultaten t.o.v. de naïeve stroom en de intermediaire stroom bij het aanpassen van de bewegingsvector naar nul. sequentie Bus Foreman configuratie PSNR inter* (db) +0,46 +0,45 +0,01 +0,07 +0,45 +0,08 +0,20-0,07-0,12 +0,16 PSNR naief (db) +0,73 +0,74 +0,79 +0,79 +0,76 +0,82 +0,83 +0,87 +0,86 +0,85 bitrate orig* -46,09% -46,18% -7,55% -16,42% -29,92% -72,80% -78,92% -25,07% -21,81% -45,07% bitrate naief +16,80% +17,22% +16,19% +20,65% +19,70% +36,07% +35,00% +34,88% +40,27% +38,78% sequentie Mobile Silent configuratie PSNR inter* (db) -0,51-0,46-1,20-1,20-0,79-0,03-0,13-0,03-0,09-0,06 PSNR naief (db) +0,42 +0,44 +0,46 +0,43 +0,46 +1,02 +1,00 +1,08 +1,06 +1,04 bitrate orig* -20,11% -18,50% +11,13% +10,72% -2,39% +0,08% -0,01% -0,06% +0,77% +0,50% bitrate naief +18,22% +17,83% +23,27% +27,61% +23,61% +18,21% +18,41% +14,74% +17,48% +17,97% sequentie Stefan Tempete configuratie PSNR inter* (db) -0,25-0,19-1,16-1,11-0,67-0,40-0,11-0,42-0,60-0,37 PSNR naief (db) +0,71 +0,72 +0,69 +0,66 +0,69 +0,68 +0,70 +0,73 +0,72 +0,71 bitrate orig* -33,23% -32,15% +15,14% +15,59% -4,22% -15,75% -17,99% -2,32% -4,09% -9,46% bitrate naief +28,36% +26,54% +29,77% +34,45% +30,92% +17,25% +16,36% +14,97% +18,12% +17,86% (*) Verandering t.o.v. de gemeten waarde bij het behoudt van alle codeerparameters (mv = mv). Tabel 5.8: Resultaten t.o.v. de naïeve stroom van de aangetaste gebieden bij het aanpassen van de bewegingsvector naar nul. type LG TAG1 TAG2 rest grootte PSNR* (db) grootte PSNR* (db) grootte PSNR* (db) grootte PSNR* (db) alle 7,58% +1,46 3,34% +0,09 1,23% -0,36 88,09% -0,00 P 7,58% +1,53 2,25% +0,50 0,73% -0,55 89,47% -0,00 B 7,58% +1,58 3,80% -0,08 1,43% -0,29 87,20% -0,00 Tabel 5.9: Resultaten t.o.v. de intermediaire stroom van de aangetaste gebieden bij het aanpassen van de bewegingsvector naar nul. type LG TAG1 TAG2 rest grootte PSNR* (db) grootte PSNR* (db) grootte PSNR* (db) grootte PSNR* (db) alle 7,58% +1,46 3,30% -0,31 1,16% -2,11 88,20% -0,15 P 7,58% +1,53 2,32% +0,43 0,66% -2,63 89,44% -0,07 B 7,58% +1,58 3,70% -0,61 1,36% -1,90 87,36% -0,20 Hoofdstuk 5. Methode en Resultaten 74

93 Hoofdstuk 5. Methode en Resultaten 75 (a) B-beeld uit resultaat na transcodering. (b) Aanduiding van kost van elk macroblok. Figuur 5.10: Hoge kost van macroblokken door slechte voorspelling van complexe textuur van logomacroblokken (configuratie 42) bij Mobile-sequentie als bewegingsvector aangepast wordt naar nul. (meestal > 0,50 db). In Tabel 5.8 en 5.9 zijn de PSNR-waardes opgenomen voor de verschillende aangetaste gebieden in de Bus-sequentie met logoconfiguratie 11. Door het aanpassen van de bewegingsvectoren is de PSNR-waarde van logomacroblokken sterk gestegen met meer dan 1,50 db. Voor temporeel aangetaste P-macroblokken is er een ook een lichte stijging, maar voor B-macroblokken is er dan terug een lichte daling. Dat komt doordat er veel beweging is in het gebied waar het logo geïnserteerd wordt. Het referentiemacroblok in het vorig beeld kan dan nog matig lijken op het huidig macroblok, zodat de voorspelling voor een macroblok in een P-beeld nog niet al te slecht is. De voorspelling van een macroblok in een B-beeld bestaat meestal uit de uitmiddeling van een referentieblok in een vorig en een volgend beeld. Daardoor benadert de voorspelling mogelijks veel minder goed het macroblok, waardoor de residuele informatie groter is en de reconstructie van het macroblok dan ook meer kan afwijken. Daarom kan het nuttig zijn om de bewegingsvector voor deze macroblokken verder te verfijnen. De kwaliteit van de andere al dan niet aangetaste gebieden ligt nog boven deze van de naïeve methode. Er kan wel opgemerkt worden dat er een significante daling is in de PSNR-waarde voor het in 2 e orde temporeel aangetast gebied (TAG2), zeker als vergeleken wordt t.o.v. de intermediaire stroom. Op het eerste zicht kan verwacht worden dat de rekentijd weinig tot niet verandert met de situatie waarbij alle codeerparameters behouden blijven, maar dat is echter niet correct. Voor de implementatie van de techniek die hier besproken wordt, is het immers nodig om de aangetaste gebieden te detecteren, terwijl dat voor de vorige techniek niet nodig is. Het detecteren van aangetaste gebieden brengt extra rekentijd met zich mee. Enkele

94 Hoofdstuk 5. Methode en Resultaten 76 meetresultaten voor de uitvoertijd zijn gegeven in Tabel Het blijkt dat het toevoegen van de detectie van aangetaste gebieden slechts 3% verhoging van de rekentijd met zich meebrengt. Verder kan opgemerkt worden dat door het toepassen van de techniek waarbij de bewegingsvectoren naar nul aangepast worden de uitvoertijd daalt met 10% à 15% t.o.v. de techniek waarbij alle codeerparameters behouden blijven. Een gedeeltelijke verklaring daarvoor is dat de entropiecodering sneller kan gebeuren doordat er meer nulcoëfficiënten in de blokken aanwezig zijn. De entropiecodering heeft maar een beperkte complexiteit waardoor de daling van de uitvoertijd met 10% of meer niet volledig kan verklaard worden. In het vervolg zal de uitvoertijd telkens vergeleken worden met de situatie waarin de bewegingsvectoren naar nul worden aangepast (mvzero), waarbij de rekentijd de detectie van aangetaste gebieden dus reeds bevat. Tabel 5.10: Uitvoertijd voor en na het toevoegen van de detectie van aangetaste gebieden voor logoconfiguratie 11. Sequentie mvorig voor a (s) mvorig na b (s) mvorig c mvzero d (s) totaal e Bus 20,209 20,747 3% 17,99-11% Foreman 41,49 42,413 2% 35,56-14% Mobile 44,801 46,108 3% 38,74-14% Silent 42,763 41,955-2% 36,94-14% Stefan 13,032 13,235 2% 11,08-15% Tempete 37,592 38,233 2% 32,23-14% a Uitvoertijd voor het behouden van alle parameters vóór toevoegen van detectie. b Uitvoertijd voor het behouden van alle parameters ná toevoegen van detectie. c Procentuele stijging in uitvoertijd voor het behouden van alle parameters. d Uitvoertijd voor het aanpassen van de bewegingsvectoren naar nul (ná toevoegen van detectie). e Relatief verschil in uitvoertijd tussen a en d. Het aanpassen van de bewegingsvector naar nul is dus meestal een goede zaak. De vereiste bitsnelheid daalt significant t.o.v. het niet aanpassen van de bewegingsvectoren; de kwaliteit van logomacroblokken, en in mindere mate temporeel aangetaste macroblokken, stijgt; en de uitvoertijd daalt. Vanaf hier wordt dan ook telkens deze techniek toegepast en bouwen de technieken die in de volgende secties besproken worden daarop verder Verfijnen van de bewegingsvector Het is gebleken dat de kost van temporeel aangetaste macroblokken nog vrij hoog kan zijn. Daarom werd onderzocht wat het effect is van het verfijnen van de bewegingsvector voor deze macroblokken. De resultaten worden gegeven in Tabel Enkel resultaten van de evaluatie t.o.v. de naïeve stroom zijn gegeven omdat de resultaten t.o.v. de intermediaire stroom gelijkaardig zijn en tot dezelfde conclusies leiden. De resultaten in Tabel 5.11 stellen relatieve verschillen voor in PSNR (berekend t.o.v. de naïeve stroom) en bitsnelheidstoename (berekend t.o.v. de naïeve stroom) bij overgang van

95 Tabel 5.11: Resultaten t.o.v. de naïeve stroom bij het verfijnen van de bewegingsvector. configuratie sequentie Bus Foreman Mobile zoekvenster (W ) PSNR naief (db) +0,10 +0,17 +0,03 +0,12 +0,47 +0,12 +0,09 +0,05 +0,30 +0,03-0,00 +0,00 bitrate naief -0,68% -1,26% -0,63% -0,24% -3,82% -0,80% -0,45% +0,05% -3,49% -0,37% -0,02% +0,02% 31 PSNR naief (db) +0,15 +0,19 +0,11 +0,12 +0,37 +0,07 +0,17 +0,06 +0,23 +0,03 +0,02-0,00 bitrate naief -0,19% -0,87% -0,33% -0,06% -0,05% -0,30% -0,10% +0,03% -0,85% -0,15% -0,12% +0,00% 41 PSNR naief (db) +0,16 +0,18 +0,15 +0,14 +0,15 +0,30 +0,18 +0,12 +0,12 +0,05-0,00-0,01 bitrate naief +0,02% -0,82% -0,72% -0,06% -0,56% -0,35% -0,17% +0,35% -1,39% -0,29% -0,11% -0,00% 501 PSNR naief (db) +0,09 +0,16 +0,10 +0,12 +0,46 +0,14 +0,07 +0,06 +0,35 +0,04 +0,01-0,00 bitrate naief -0,80% -1,37% -0,61% -0,23% -4,13% -0,86% -0,29% +0,11% -4,41% -0,51% -0,07% +0,03% 701 PSNR naief (db) +0,08 +0,20 +0,07 +0,11 +0,47 +0,11 +0,09 +0,06 +0,33 +0,02 +0,02 +0,00 bitrate naief -0,75% -1,33% -0,65% -0,20% -4,14% -0,84% -0,40% +0,06% -4,12% -0,42% -0,07% +0,03% configuratie sequentie Silent Stefan Tempete zoekvenster (W ) PSNR naief (db) -0,06 +0,00 +0,01 +0,00 +0,07 +0,10 +0,08 +0,05 +0,20 +0,03 +0,02 +0,03 bitrate naief -0,00% +0,00% +0,00% +0,00% -2,74% -2,10% -1,87% -0,41% -0,89% -0,01% -0,01% +0,03% 31 PSNR naief (db) +0,47 +1,06 +0,00 +0,00 +0,11 +0,07 +0,08 +0,04 +0,17 +0,02 +0,01 +0,01 bitrate naief -0,00% +0,00% +0,00% +0,00% -0,82% -1,23% -1,04% -0,22% +0,10% +0,01% +0,03% +0,01% 41 PSNR naief (db) +0,00 +0,00 +0,00 +0,00 +0,12 +0,10 +0,09 +0,09 +0,31 +0,27 +0,01 +0,04 bitrate naief +0,00% +0,00% +0,00% +0,00% -1,07% -1,32% -1,63% -0,72% -0,13% +0,01% +0,02% +0,02% 501 PSNR naief (db) -0,04 +0,00 +0,01 +0,00 +0,09 +0,09 +0,12 +0,05 +0,23 +0,01 +0,03 +0,03 bitrate naief +0,00% +0,00% +0,00% +0,00% -3,32% -2,42% -2,05% -0,43% -1,05% -0,02% +0,00% +0,03% 701 PSNR naief (db) -0,05 +0,00 +0,01 +0,00 +0,07 +0,09 +0,11 +0,05 +0,21 +0,02 +0,04 +0,02 bitrate naief +0,01% -0,00% +0,00% +0,00% -3,14% -2,36% -1,94% -0,38% -0,99% -0,02% +0,02% +0,01% De resultaten zijn relatieve veranderingen t.o.v. het vorig zoekvenster: W = 4 t.o.v. de situatie waarbij geen verfijning wordt toegepast (mv = 0), W = 8 t.o.v. W = 4, W = 16 t.o.v. W = 8 en W = 32 t.o.v. W = 16. Tabel 5.12: Resultaten t.o.v. de naïeve stroom van verschillende aangetaste gebieden bij het verfijnen van de bewegingsvector. type PSNR TAG1 (db) PSNR TAG2 (db) PSNR rest (db) alle +0,30 +0,03-0,00 +0,00 +0,13 +0,01 +0,01-0,01 +0,00 +0,00 +0,00-0,00 P +0,32 +0,05 +0,01-0,00 +0,10 +0,01-0,00-0,00 +0,00-0,00 +0,00-0,00 B +0,29 +0,03-0,00 +0,00 +0,14 +0,02 +0,02-0,01 +0,00 +0,00 +0,00-0,00 De resultaten zijn relatieve veranderingen t.o.v. de situatie waarbij geen verfijning wordt toegepast (mv = 0). Hoofdstuk 5. Methode en Resultaten 77

96 Hoofdstuk 5. Methode en Resultaten 78 Tabel 5.13: Samenvatting resultaten t.o.v. de naïeve stroom bij het verfijnen van de bewegingsvector. configuratie sequentie Bus Foreman Mobile zoekvenster (W ) PSNR naief (db) +0,30 +0,42 +0,67 +0,73 +0,33 +0,34 bitrate naief -2,57% -2,81% -5,07% -5,02% -3,88% -3,86% 31 PSNR naief (db) +0,45 +0,57 +0,60 +0,66 +0,28 +0,28 bitrate naief -1,39% -1,45% -0,45% -0,42% -1,11% -1,11% 41 PSNR naief (db) +0,49 +0,63 +0,63 +0,75 +0,17 +0,16 bitrate naief -1,53% -1,60% -1,07% -0,72% -1,79% -1,79% 501 PSNR naief (db) +0,35 +0,47 +0,67 +0,73 +0,40 +0,40 bitrate naief -2,78% -3,01% -5,27% -5,16% -4,99% -4,96% 701 PSNR naief (db) +0,34 +0,45 +0,67 +0,73 +0,36 +0,37 bitrate naief -2,72% -2,93% -5,38% -5,33% -4,62% -4,58% configuratie sequentie Silent Stefan Tempete zoekvenster (W ) PSNR naief (db) -0,04-0,04 +0,25 +0,30 +0,26 +0,28 bitrate naief -0,00% -0,00% -6,71% -7,12% -0,91% -0,87% 31 PSNR naief (db) +1,53 +1,53 +0,27 +0,31 +0,20 +0,21 bitrate naief -0,00% -0,00% -3,10% -3,32% +0,15% +0,16% 41 PSNR naief (db) +0,00 +0,00 +0,31 +0,40 +0,60 +0,64 bitrate naief +0,00% +0,00% -4,02% -4,75% -0,11% -0,09% 501 PSNR naief (db) -0,02-0,02 +0,30 +0,35 +0,27 +0,30 bitrate naief +0,01% +0,01% -7,79% -8,22% -1,06% -1,03% 701 PSNR naief (db) -0,04-0,04 +0,27 +0,32 +0,27 +0,29 bitrate naief +0,01% +0,01% -7,44% -7,82% -0,99% -0,98% De resultaten zijn veranderingen t.o.v. de situatie waarbij geen verfijning wordt toegepast (mv = 0). een kleiner zoekvenster naar een groter zoekvenster. Zo is duidelijk te zien wat de winst is van het vergroten van het zoekvenster. Het is meestal zo dat zowel voor de bitsnelheid als voor de kwaliteit de meeste winst bekomen wordt bij een klein zoekvenster (W = 4 of 8), en de winst eerder beperkt is als de stap naar een groot zoekvenster gemaakt wordt (W = 16 of 32). De rekentijd die nodig is, stijgt echter kwadratisch met de grootte van het zoekvenster. De voorkeur zal dus eerder gaan naar een kleiner zoekvenster. Vooral de sequenties Mobile, Foreman en Tempete voldoen aan de algemene trend. Bij een zoekvenster met W = 32 is er bijna geen winst meer in de kwaliteit en de bitsnelheid. Het is zelfs mogelijk dat de bitsnelheid lichtjes stijgt omdat het coderen van grote en eventueel sterk variërende bewegingsvectoren veel bits in beslag neemt. Voor de sequenties Bus en Stefan is er wat meer variatie in de resultaten, maar er kan toch besloten worden dat de extra winst van een zoekvenster met W = 32 niet zo groot is t.o.v. de totale winst die bereikt wordt als een zoekvenster met W = 16 wordt gekozen. De Silent-sequentie is terug een totale uitzondering omdat de temporeel aangetaste macroblokken meestal maar een heel klein aantal pixels gemeen hebben met het logo ofwel gewoon aangetast zijn door de quarter-pixelinterpolatie. Dat komt doordat er weinig of geen beweging is op de plaats waar het logo ingevoegd wordt. Het verfijnen van de bewegingsvector zal dus weinig afwijken

97 Hoofdstuk 5. Methode en Resultaten 79 van de zowel de originele bewegingsvector als mv = 0 en daarom is er dus zo goed als geen winst in PSNR of bitsnelheid te realiseren op deze manier. Het valt ook op dat er iets meer winst in de bitsnelheid bereikt wordt voor de transparante logo s (50X en 70X) t.o.v. een niet transparant logo (1X) en dat er minder bitsnelheid gewonnen wordt als verfijning toegepast wordt op configuraties 3X en 4X. De samenvatting in Tabel 5.13 geeft aan dat het gebruik van een zoekvenster met W = 16 reeds de meeste winst realiseert bij het verfijnen van de bewegingsvector een min of meer significante stijging in kwaliteit (meer dan 0,30 db meestal) en een reductie in bitsnelheid van 1% tot 8%. Een zoekvenster van 32 geeft meestal wel nog iets betere resultaten tot 0,15 db extra PSNR en bijna 1% extra bitsnelheidsreductie. In Tabel 5.12 worden de resultaten gegeven voor de verschillende aangetaste gebieden in de Mobile-sequentie met logoconfiguratie 11. De kwaliteitswinst komt dus vooral voort uit het temporeel aangetast gebied in 1 e en 2 e orde, wat de bedoeling was van het verfijnen van de bewegingsvector. De winst is niet zo groot en neemt ook snel af bij een groter zoekvenster. De zoekstrategie die hier wordt toegepast is full search (Sectie 4.4.3). De uitvoertijd van het toepassen van full search stijgt kwadratisch met de zijde van het zoekvenster (W ). De grafiek in Figuur 5.11 geeft voor de verschillende sequenties en logoconfiguratie 11 de evolutie van de zoektijd als functie van W gemeten t.o.v. de situatie waarin geen verfijning toegepast wordt. De Silent-sequentie wordt daarin niet opgenomen omdat het temporeel aangetast gebied heel klein is (0,27% van het beeld) en daarom het zoeken heel snel gaat, zelfs voor grotere zoekvensters. Terwijl de overgang van W = 4 naar W = 8 meestal maar een verdubbeling van de zoektijd oplevert, verviervoudigt de zoektijd telkens bij de overgangen naar grotere zoekvensters mobile foreman tempete bus stefan zoektijd (s) W (zijde van het zoekvenster) Figuur 5.11: Zoektijd voor de verschillende sequenties in functie van de zijde van het zoekvenster (W).

98 Hoofdstuk 5. Methode en Resultaten 80 In Tabel 5.14 wordt de totale stijging in uitvoertijd gegeven. Bij het gebruik van een zoekvenster met W = 32 is er meer dan een verdubbeling van de uitvoertijd, terwijl een zoekvenster met W = 16 slechts met de helft is toegenomen. Tabel 5.14: Relatieve verandering in uitvoertijd voor logoconfiguratie 11 t.o.v. de situatie waarin geen verfijning toegepast wordt. W Bus Foreman Mobile Silent Stefan Tempete 4 +6% +6% +5% +0% +7% +4% 8 +14% +14% +13% -1% +18% +11% % +43% +43% +2% +53% +34% % +156% +153% +3% +191% +128% Een goed compromis tussen kwaliteit, bitsnelheid en rekentijd is dan het gebruik van een zoekvenster met W = 16 voor full search. Er bestaan echter legio andere zoekstrategieën, waarvan enkele besproken in Sectie 4.4.3, die heel wat sneller zoeken en de optimale oplossing dicht kunnen benaderen. Daar werd in deze masterproef niet verder op ingegaan Aanpakken van I-logoblokken in P- en B-beelden Veel van de intragecodeerde macroblokken in P- en B-beelden die binnen het logo vallen kunnen uiteindelijk omgezet worden in skipped macroblokken. Dat levert voor de opgeloste blokken een grote winst op, maar omdat er slechts heel weinig I-logoblokken voorkomen in P- en B-beelden, is de winst toch heel beperkt. In sequenties waar er toch veel zo n blokken zijn, is het duidelijk dat het aanpakken van deze blokken zeker nut heeft. Tabel 5.15 geeft de resultaten weer van het toepassen van deze techniek. De Silent- en Mobile-sequentie zijn niet opgenomen omdat er bij die sequenties geen I- logoblokken in P-/B-beelden voorkomen voor de opgesomde logoconfiguraties. Bij de Foreman-sequentie is het resultaat het duidelijkst omdat er hier en daar zeer kostelijke intragecodeerde logomacroblokken voorkomen (tot meer dan 800 bits). De reden waarom de daling in vereiste bitsnelheid kleiner is bij configuraties 50X en 70X is omdat de originele video meer naar boven komt en dus het residu dat ontstaat voor de intragecodeerde logoblokken al kleiner is dan bij de configuraties 1X. Voor configuraties 4X kan het zijn dat een blok maar een deel uit logopixels bestaat en de rest originele pixels zijn, waardoor de winst ook al iets lager is. De uitvoertijd door het toepassen van de beschreven techniek verandert niet t.o.v. de situatie waarbij de bewegingsvectoren naar nul veranderd worden (mvzero). Het aanpassen van het macrobloktype van een I- naar P- of B-macroblok is een heel eenvoudige bewerking. Omdat enkel logomacroblokken aangepast worden, zal er ook geen verdere verhoging van

99 Tabel 5.15: Resultaten van het aanpakken van I-logoblokken in P- en B-beelden. sequentie Bus Foreman configuratie PSNR inter* (db) -0,03-0,01-0,01-0,03-0,03-0,05-0,03-0,02-0,05-0,05 PSNR naief (db) +0,73 +0,74 +0,78 +0,79 +0,75 +0,81 +0,83 +0,87 +0,85 +0,84 bitrate orig* -0,02% -0,52% +0,07% +0,20% +0,13% -3,15% -3,74% -2,10% -1,38% -2,12% bitrate naief +16,78% +16,69% +16,26% +20,85% +19,84% +32,69% +31,08% +32,83% +38,87% +36,57% sequentie Stefan Tempete configuratie PSNR inter* (db) -0,06-0,01-0,01-0,04-0,04 0,00-0,01-0,02-0,02-0,01 PSNR naief (db) +0,70 +0,72 +0,69 +0,65 +0,68 +0,68 +0,70 +0,73 +0,72 +0,71 bitrate orig* -0,07% -0,06% +0,00% +0,21% +0,09% -1,82% -1,88% -0,68% -0,92% -1,31% bitrate naief +28,28% +26,48% +29,77% +34,65% +31,00% +15,29% +14,33% +14,25% +17,14% +16,46% (*) Verandering t.o.v. de gemeten waarde bij het aanpassen van de bewegingsvector naar nul (mv = 0). Hoofdstuk 5. Methode en Resultaten 81

100 Hoofdstuk 5. Methode en Resultaten 82 de uitvoertijd optreden als de bewegingsvectoren verder verfijnd worden. wordt immers niet toegepast op logoblokken. De verfijning Verwijderen van kleine chromacoëfficiënten De bedoeling van het verwijderen van kleine chromacoëfficiënten in P- en B-beelden is om meer blokken als skipped te kunnen markeren. Dit kan op meerdere manieren gebeuren. De geteste strategieën worden gegeven in Tabel In Tabel 5.17 en 5.18 zijn de resultaten van deze strategieën opgenomen. Tabel 5.16: Verschillende strategieën voor het verwijderen van chromacoëfficiënten. test enkel logomacroblokken luma nul is enkel als residu all nee nee logo ja nee all+luma nee ja logo+luma ja ja Tabel 5.17: Resulaten voor voor het verwijderen van chromacoëfficiënten. configuratie sequentie Bus Foreman Mobile Silent Stefan Tempete chromastrategie all all all all all all 11 PSNR inter (db) 45,42 45,41 43,23 46,58 43,51 44,97 PSNR naief (db) +0,66 +0,76-0,00 +1,01 +0,42 +0,47 bitrate naief -0,44% -0,77% -3,70% -0,36% -3,09% -1,99% 31 PSNR inter (db) 45,26 45,40 43,07 46,34 43,43 45,18 PSNR naief (db) +0,67 +0,76 +0,00 +0,98 +0,41 +0,49 bitrate naief -0,48% -0,90% -3,71% -0,44% -3,14% -2,00% 41 PSNR inter (db) 45,22 45,59 42,82 47,36 42,85 45,42 PSNR naief (db) +0,64 +0,77 +0,00 +1,06 +0,30 +0,49 bitrate naief -0,57% -1,07% -3,83% -0,35% -3,73% -2,31% 501 PSNR inter (db) 45,10 45,21 41,76 46,36 42,10 44,63 PSNR naief (db) +0,71 +0,78-0,02 +1,04 +0,32 +0,49 bitrate naief -0,52% -0,98% -3,68% -0,45% -3,34% -2,21% 701 PSNR inter (db) 45,15 45,22 42,04 46,28 42,42 44,71 PSNR naief (db) +0,68 +0,77 +0,02 +1,02 +0,37 +0,49 bitrate naief -0,51% -1,00% -3,68% -0,44% -3,13% -2,14% Enkel bij het verwijderen van alle kleine chromacoëfficiënten (all), is er een matig tot sterke reductie in vereiste bitsnelheid (tot meer dan 3%). Voor de andere technieken is de reductie in bitsnelheid zo laag dat de toepassing van de techniek niet nuttig is. Bij het verwijderen van kleine chromacoëfficiënten in alle macroblokken kan de kwaliteit wel sterk beïnvloed worden. Terwijl de kwaliteit t.o.v. de naïeve stroom maar met 0,50 db daalt, is er een daling van soms meer dan 2 db waar te nemen als vergeleken wordt met de intermediaire stroom. Voor de meeste sequenties ligt de PSNR-waarde t.o.v. de intermediaire stroom nog rond of boven de 45 db. Door de sterke daling van de PSNR-waarde in sommige sequenties

101 Tabel 5.18: Resultaten t.o.v. de naïeve en intermediaire stroom voor de verschillende strategieën voor chromacoëfficiënten. configuratie sequentie Bus Foreman Mobile chromastrategie all logo all+luma logo+luma all logo all+luma logo+luma all logo all+luma logo+luma 11 PSNR inter (db) -0,28-0,03-0,02-0,01-0,19-0,02-0,02-0,00-1,90-0,03-0,29-0,01 PSNR naief (db) -0,07-0,00-0,00-0,00-0,06-0,01-0,01-0,00-0,43-0,00-0,04-0,00 bitrate naief -0,44% -0,05% -0,04% -0,01% -0,77% -0,21% -0,16% -0,08% -3,70% -0,07% -0,41% -0,03% 31 PSNR inter (db) -0,31-0,04-0,02-0,01-0,22-0,04-0,02-0,01-1,93-0,07-0,29-0,01 PSNR naief (db) -0,07-0,01-0,00-0,00-0,07-0,01-0,01-0,00-0,44-0,01-0,04-0,00 bitrate naief -0,48% -0,07% -0,06% -0,03% -0,90% -0,28% -0,20% -0,12% -3,71% -0,12% -0,40% -0,03% 41 PSNR inter (db) -0,53-0,02-0,01-0,00-0,35-0,03-0,02-0,00-2,25-0,08-0,34-0,00 PSNR naief (db) -0,15-0,01-0,00-0,00-0,10-0,01-0,00-0,00-0,46-0,01-0,04-0,00 bitrate naief -0,57% -0,07% -0,03% -0,00% -1,07% -0,19% -0,09% -0,02% -3,83% -0,15% -0,35% -0,00% 501 PSNR inter (db) -0,45-0,14-0,02 +0,00-0,33-0,13-0,02-0,00-2,16-0,41-0,33-0,00 PSNR naief (db) -0,08-0,02-0,00 +0,00-0,08-0,02-0,01-0,00-0,45-0,04-0,04-0,00 bitrate naief -0,52% -0,14% -0,02% +0,00% -0,98% -0,44% -0,09% -0,02% -3,68% -0,32% -0,35% -0,00% 701 PSNR inter (db) -0,40-0,11-0,02-0,00-0,28-0,10-0,02-0,00-2,07-0,25-0,32-0,00 PSNR naief (db) -0,08-0,02-0,00-0,00-0,08-0,02-0,01-0,00-0,44-0,02-0,04-0,00 bitrate naief -0,51% -0,12% -0,03% -0,00% -1,00% -0,44% -0,13% -0,05% -3,68% -0,24% -0,36% -0,00% configuratie sequentie Silent Stefan Tempete chromastrategie all logo all+luma logo+luma all logo all+luma logo+luma all logo all+luma logo+luma 11 PSNR inter (db) -0,08-0,02-0,01-0,01-1,10-0,04-0,06-0,01-0,93-0,02-0,22-0,01 PSNR naief (db) -0,02-0,00-0,00-0,00-0,29-0,01-0,01-0,00-0,21-0,00-0,04-0,00 bitrate naief -0,36% -0,14% -0,09% -0,07% -3,09% -0,19% -0,14% -0,04% -1,99% -0,07% -0,27% -0,02% 31 PSNR inter (db) -0,10-0,03-0,01-0,01-1,16-0,07-0,06-0,00-0,95-0,04-0,24-0,01 PSNR naief (db) -0,02-0,00-0,00-0,00-0,31-0,01-0,01-0,00-0,21-0,00-0,04-0,00 bitrate naief -0,44% -0,21% -0,14% -0,12% -3,14% -0,29% -0,12% -0,03% -2,00% -0,11% -0,33% -0,06% 41 PSNR inter (db) -0,14-0,01-0,03-0,00-1,60-0,14-0,07-0,00-1,15-0,03-0,27-0,01 PSNR naief (db) -0,02-0,00-0,00-0,00-0,39-0,02-0,01-0,00-0,24-0,00-0,05-0,00 bitrate naief -0,35% -0,09% -0,10% -0,07% -3,73% -0,47% -0,10% -0,00% -2,31% -0,09% -0,36% -0,05% 501 PSNR inter (db) -0,17-0,09-0,01-0,01-1,36-0,43-0,06-0,00-1,12-0,25-0,25-0,01 PSNR naief (db) -0,02-0,01-0,00-0,00-0,34-0,07-0,01-0,00-0,23-0,03-0,04-0,00 bitrate naief -0,45% -0,22% -0,13% -0,11% -3,34% -0,88% -0,09% -0,00% -2,21% -0,30% -0,26% -0,02% 701 PSNR inter (db) -0,14-0,07-0,01-0,01-1,26-0,25-0,06-0,00-1,03-0,14-0,24-0,01 PSNR naief (db) -0,02-0,01-0,00-0,00-0,32-0,04-0,01-0,00-0,22-0,02-0,04-0,00 bitrate naief -0,44% -0,22% -0,10% -0,08% -3,13% -0,55% -0,10% -0,00% -2,14% -0,24% -0,29% -0,04% De resultaten zijn relatieve veranderingen t.o.v. de gemeten waardes bij het aanpassen van de bewegingsvector naar nul (mv = 0). Hoofdstuk 5. Methode en Resultaten 83

102 Hoofdstuk 5. Methode en Resultaten 84 (Mobile en Stefan) is de PSNR-waarde soms net geen 42 db meer. De fout t.o.v. de intermediaire stroom is dan nog klein te noemen, maar niet meer verwaarloosbaar. Bij analyse van de resulterende videostromen blijkt het meestal dat (kleine) lumacoëfficiënten of DC-chromacoëfficiënten het skipped worden van een macroblok alsnog verhinderen. Verder onderzoek naar hoe dit probleem kan aangepakt worden valt buiten deze masterproef. De uitvoertijd voor het verwijderen van alle kleine chromacoëfficiënten wordt gegeven in Tabel Het toepassen van deze techniek kan aanleiding geven tot een heel lichte stijging in uitvoertijd (2%). Voor elk macroblok moeten immers de chromacoëfficiënten uit het geheugen opgehaald, getest en eventueel aangepast worden. Een andere reden om de resultaten te verklaren is dat er soms lichte fluctuaties optreden bij het bepalen van de uitvoertijd. Gemiddeld gezien is er immers geen stijging en de opgemeten stijging of daling is heel klein. Tabel 5.19: Relatieve verandering in uitvoertijd voor logoconfiguratie 11 t.o.v. de situatie waarin de bewegingsvectoren aangepast worden naar nul. Sequentie Bus -1% Foreman -1% Mobile +0% Silent +2% Stefan +2% Tempete +0% uitvoertijd Drempelwaarde voor transparantie bij keuze bewegingsvector De transparantiewaarde heeft een invloed op de keuze om te vertrekken van de originele bewegingsvector (goed voor transparante logo s), of om de bewegingsvector gelijk aan nul te stellen (goed voor weinig transparante logo s). Om de drempelwaarde voor de transparantie te bepalen voor die keuze werden enkele tests met verschillende transparantiewaardes uitgevoerd. Daarbij werd vooral de stijging of daling in bitsnelheid in het oog gehouden tussen de techniek waarbij de bewegingsvector aangepast wordt naar nul (mv = 0) en de techniek die alle codeerparameters behoudt (mv = mv). Het resultaat van de tests is gegeven in Tabel Zoals kan opgemerkt worden is de drempelwaarde sterk afhankelijk van de sequentie en de plaats waar het logo geïnserteerd wordt. Voor sommige sequenties/logoposities levert een opaciteit van 30% al een significante reductie in bitsnelheid door bewegingsvectoren op nul te zetten, bij andere sequenties/logoposities is bij een opaciteit van 70% de reductie nog

103 Tabel 5.20: Resultaten t.o.v. de naïeve en intermediaire stroom voor de verschillende transparantiewaardes. logo- sequentie Bus Foreman positie configuratie 20X 30X 40X 50X 70X 20X 30X 40X 50X 70X PSNR inter (db) -1,05-0,57-0,17 +0,07 +0,45-1,04-0,60-0,30-0,12 +0,16 X = 1 PSNR naief (db) -0,10-0,05-0,01 +0,02 +0,07-0,13-0,08-0,04-0,01 +0,04 bitrate naief +8,35% -0,64% -9,08% -16,42% -29,92% +18,98% +4,47% -9,71% -21,81% -45,07% PSNR inter (db) -1,55-1,09-0,68-0,45-0,13-0,79-0,37-0,06 +0,11 +0,38 X = 2 PSNR naief (db) -0,13-0,09-0,05-0,03 +0,01-0,11-0,06-0,01 +0,01 +0,06 bitrate naief +18,16% +11,19% +4,14% -1,83% -13,69% +9,02% -6,21% -20,47% -32,39% -55,22% logo- sequentie Mobile Silent positie configuratie 20X 30X 40X 50X 70X 20X 30X 40X 50X 70X PSNR inter (db) -2,38-1,86-1,40-1,20-0,79-0,33-0,17-0,11-0,09-0,06 X = 1 PSNR naief (db) -0,21-0,18-0,14-0,12-0,08-0,01-0,00-0,00-0,00-0,00 bitrate naief +30,93% +24,33% +17,11% +10,72% -2,39% +1,07% +0,94% +0,89% +0,77% +0,50% PSNR inter (db) -2,08-1,60-1,16-0,93-0,64-0,42-0,30-0,22-0,19-0,09 X = 2 PSNR naief (db) -0,12-0,10-0,08-0,07-0,05-0,02-0,02-0,01-0,01-0,00 bitrate naief +14,71% +10,21% +5,33% +0,98% -7,94% +1,08% -1,07% -3,06% -4,88% -8,18% logo- sequentie Stefan Tempete positie configuratie 20X 30X 40X 50X 70X 20X 30X 40X 50X 70X PSNR inter (db) -2,37-1,83-1,35-1,11-0,67-1,26-0,97-0,71-0,60-0,37 X = 1 PSNR naief (db) -0,30-0,25-0,19-0,16-0,10-0,09-0,07-0,05-0,04-0,03 bitrate naief +46,08% +35,89% +25,18% +15,59% -4,22% +5,71% +2,27% -1,12% -4,09% -9,46% PSNR inter (db) -0,55-0,10 +0,15 +0,30 +0,53-1,69-1,30-0,93-0,72-0,41 X = 2 PSNR naief (db) -0,03-0,00 +0,02 +0,03 +0,05-0,15-0,12-0,09-0,07-0,04 bitrate naief -1,23% -7,57% -13,48% -18,18% -27,23% +10,89% +5,20% -0,73% -5,75% -15,37% De resultaten zijn relatieve veranderingen bij vergelijking van de techniek waarbij de bewegingsvector aangepast wordt naar nul t.o.v. de techniek waarbij de bewegingsvector behouden wordt. Hoofdstuk 5. Methode en Resultaten 85

104 Hoofdstuk 5. Methode en Resultaten 86 maar heel klein of is er zelfs nog een lichte stijging. De PSNR volgt een gelijkaardige trend. Een sterke daling in de PSNR is op te merken voor heel transparante logo s, terwijl een lichte daling of zelfs stijging opgemeten wordt voor weinig transparante logo s. Voor bijna alle configuraties is de reductie in bitsnelheid door het aanpassen van de bewegingsvectoren meer of minder significant vanaf een opaciteit van 50% en bij ongeveer de helft van de configuraties is deze bitsnelheidsreductie al aanwezig bij een opaciteit van 40%. De drempelwaarde kan dus ergens tussen 40% en 50% opaciteit gekozen worden. Voor logo s die een opaciteit hebben die lager dan 40% à 50% ligt zal het dus beter zijn om de bewegingsvector niet nul te stellen, terwijl dat wel een goede eerste stap is voor logo s waarvan de opaciteit hoger ligt. Veel logo s worden in de praktijk echter met een opaciteit groter dan 50% ingevoegd. Het al dan niet aanpassen van de bewegingsvectoren op basis van deze drempelwaarde is niet geïmplementeerd, maar de aanpassing die daarvoor moeten uitgevoerd worden, zijn minimaal Totaaloplossing: combinatie van alle technieken In deze sectie wordt een totaaloplossing voorgesteld als combinatie van de technieken die na het testen als nuttig naar voor gekomen zijn: de bewegingsvector van macroblokken in LG, TAG1 en PAG aanpassen naar nul; de bewegingsvector verder verfijnen in een zoekvenster van grootte 16 voor macroblokken in TAG1; intragecodeerde logomacroblokken in P- en B-beelden omzetten naar P- en B-macroblokken. Voor de keuze van de strategie voor chromacoëfficiënten zijn er twee mogelijkheden. De eerste is het verwijderen van alle kleine chromacoëfficiënten. Voor de meeste sequenties geeft dat een kleine daling in PSNR en een reductie in bitsnelheid, voor sommige sequenties kan dat een significante daling in PSNR geven (meer dan 2 db), maar geeft dan ook een sterkere reductie in bitsnelheid (meer dan 3%). Omdat de kwaliteit meestal meevalt, maar de bitsnelheid wel een probleem kan vormen, wordt gekozen voor het verwijderen van alle kleine chromacoëfficiënten. De resultaten van deze oplossing zijn opgenomen in Tabel Ten eerste kan opgemerkt worden dat de kwaliteit t.o.v. de naïeve stroom telkens hoger is, meestal meer dan 0,50 db en de kwaliteit t.o.v. de intermediaire stroom meestal meer dan 45 db is waardoor de fout klein genoemd kan worden. Uitzonderingen daarop zijn Mobile en Stefan, maar dat zijn ook de sequenties die het meest beïnvloed worden door het verwijderen van chromacoëfficiënten, zoals in Tabel 5.17 reeds opgemerkt werd. Tabel 5.22 en 5.23 geven de resultaten van de verschillende aangetaste gebieden voor de Bus-sequentie.

105 Tabel 5.21: Resultaten t.o.v. de naïeve en intermediaire stroom voor de voorgestelde oplossing. sequentie Bus Foreman configuratie PSNR inter 45,51 45,30 45,23 45,19 45,25 45,58 45,42 45,62 45,34 45,36 PSNR naief +0,68 +0,68 +0,67 +0,72 +0,69 +0,79 +0,76 +0,79 +0,81 +0,80 bitrate orig +8,81% +10,61% +17,71% +17,85% +14,13% +17,77% +23,84% +33,76% +30,86% +24,94% bitrate naief +13,69% +14,79% +14,11% +17,58% +16,57% +26,63% +29,81% +30,71% +32,71% +30,14% sequentie Mobile Silent configuratie PSNR inter 43,38 43,11 42,85 41,90 42,17 46,58 46,34 47,36 46,36 46,27 PSNR naief +0,03 +0,01 +0,00 +0,01 +0,05 +1,01 +0,98 +1,06 +1,04 +1,02 bitrate orig +1,31% +7,27% +21,59% +19,18% +11,90% +6,80% +7,26% +4,28% +4,38% +5,63% bitrate naief +10,38% +12,98% +17,70% +19,05% +15,27% +17,84% +17,97% +14,40% +17,03% +17,53% sequentie Stefan Tempete configuratie PSNR inter 43,61 43,50 42,89 42,23 42,54 45,09 45,17 45,38 44,74 44,81 PSNR naief +0,45 +0,43 +0,30 +0,36 +0,41 +0,50 +0,49 +0,49 +0,51 +0,51 bitrate orig +6,47% +13,74% +34,35% +33,67% +23,77% +4,08% +4,38% +5,92% +6,69% +5,61% bitrate naief +18,12% +20,23% +22,46% +24,37% +20,96% +12,38% +12,48% +11,78% +13,83% +13,31% Tabel 5.22: Resultaten t.o.v. de naïeve stroom van de aangetaste gebieden voor de voorgestelde oplossing. type LG TAG1 TAG2 SAG rest grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) all 7,58% -0,92 3,30% -0,71 1,16% +0,36 1,12% +0,21 88,20% +0,81 I 7,58% -0,74 n.v.t. n.v.t. n.v.t. n.v.t. 1,12% +0,21 91,30% +0,79 P 7,58% -1,00 2,32% -0,86 0,66% +0,45 n.v.t. n.v.t. 89,44% +0,83 B 7,58% -0,90 3,70% -0,65 1,36% +0,32 n.v.t. n.v.t. 87,36% +0,81 Tabel 5.23: Resultaten t.o.v. de intermediaire stroom van de aangetaste gebieden voor de voorgestelde oplossing. type LG TAG1 TAG2 SAG rest grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) grootte PSNR (db) all 7,58% 37,58 3,30% 38,72 1,16% 42,69 1,12% 40,99 88,20% 50,98 I 7,58% 36,77 n.v.t. n.v.t. n.v.t. n.v.t. 1,12% 40,99 91,30% 45,43 P 7,58% 37,55 2,32% 37,71 0,66% 42,55 n.v.t. n.v.t. 89,44% 49,48 B 7,58% 37,68 3,70% 39,14 1,36% 42,75 n.v.t. n.v.t. 87,36% 52,16 Hoofdstuk 5. Methode en Resultaten 87

106 Hoofdstuk 5. Methode en Resultaten 88 Daaruit kan afgeleid worden dat de logomacroblokken en het temporeel aangetast gebied (TAG1) nog een minder goede PSNR-waarde hebben en er zelfs in die gebieden een daling van de PSNR-waarde is t.o.v. de naïeve stroom. Om dit te verhelpen zullen dus nog betere technieken moeten uitgewerkt worden om vooral het logogebied aan te pakken. Een groter probleem is echter de vereiste bitsnelheid, die telkens hoger ligt dan de originele bitsnelheid en een flink stuk hoger dan wat met de naïeve methode kan bekomen worden. De verhoging in bitsnelheid hangt wel heel sterk af van de logoconfiguratie. Voor de logoconfiguratie 1X blijft de bitsnelheidsverhoging binnen de 10%, behalve voor Foreman. Voor configuraties 3X is de bitsnelheidsverhoging nog wat hoger dan bij 1X, maar de naïeve methode presteert daar ook wat minder goed. De 4X en 50X configuraties hebben meestal de grootste bitsnelheidsverhoging. De belangrijkste reden daarvoor is dat de originele sequentie een grotere rol speelt voor deze configuraties, waardoor de voorspelling binnen het logo heel slecht kan zijn en zo logomacroblokken een heel hoge kost kunnen hebben. Omdat het logo gemiddeld groot is van afmetingen, geeft dat aanleiding tot een sterke verhoging van de bitsnelheid. Bij analyse van de videostroom kan opgemerkt worden dat de grootste kost zich voor P- en B-beelden bevindt in macroblokken die aan de rand van het logo gelegen zijn (Figuur 5.12). Dit zijn blokken die temporeel aangetast zijn (TAG1). Een betere techniek is dan aangeraden om deze macroblokken aan te pakken zodat de bitsnelheid ervan verkleind kan worden. In I-beelden zit de kost vooral in logomacroblokken. Het gebruiken van de originele intramode geeft meestal aanleiding tot grote residuele informatie (Figuur 5.13). (a) Naïeve stroom. (b) Resultaat totaaloplossing. Figuur 5.12: Kost van macroblokken in een B-beeld van de Bus-sequentie met logoconfiguratie 11. Het logogebied is met een wit kader omlijnd. In Tabel 5.24 wordt de uitvoertijd vergeleken met de situatie waarin de bewegingsvectoren aangepast worden naar nul. De uitvoertijd van de totaaloplossing stijgt met maximaal

107 Hoofdstuk 5. Methode en Resultaten 89 (a) Naïeve stroom. (b) Resultaat totaaloplossing. Figuur 5.13: Kost van macroblokken in een I-beeld van de Foreman-sequentie met logoconfiguratie 11. Het logogebied is met een wit kader omlijnd. 50%. Dat is voornamelijk het gevolg van het verfijnen van de bewegingsvector zoals uit de vorige secties is gebleken. Als een snellere zoekstrategie wordt toegepast die (ongeveer) dezelfde kwaliteit biedt als full search, dan zal de rekentijd slechts weinig stijgen t.o.v. het niet verfijnen van de bewegingsvectoren. Tabel 5.24: Relatieve verandering in uitvoertijd voor logoconfiguratie 11 t.o.v. de situatie waarin de bewegingsvectoren aangepast worden naar nul. Sequentie Bus +42% Foreman +43% Mobile +42% Silent -0% Stefan +52% Tempete +34% uitvoertijd De voorgestelde totaaloplossing presteert goed in kwaliteit (+0,50 db), maar presteert slecht op vlak van bitsnelheid (tot 30% verhoging). Kwaliteit en bitsnelheid zijn echter tegenstrijdige objectieven waarvoor een totaaloplossing niet tegelijk en consistent goed kan op presteren. De minder goede prestaties voor de bitsnelheid liggen voornamelijk aan het nog niet optimaal aanpakken van temporeel aangetaste macroblokken (TAG1) en logomacroblokken in I-beelden. De logoconfiguratie (plaats, transparantie, logomap) hebben echter ook een belangrijke invloed. Weinig transparante logo s worden het meest efficiënt geïnserteerd, terwijl transparante logo s of logo s met een logomap heel wat minder efficiënt geïnserteerd worden. De uitvoertijd stijgt tot 50%, maar dat is vooral te wijten aan het toepassen van full search als zoekstrategie.

108 Hoofdstuk 5. Methode en Resultaten Niet uitgewerkte technieken Enkele uitgewerkte technieken (Sectie 4.4) die mogelijks nog voor meer of minder spectaculaire verbetering kunnen zorgen, zijn jammergenoeg niet geïmplementeerd geraakt. De grootste oorzaak daarvan is het lang zoeken naar fouten in zowel de reeds bestaande transcodeersoftware als in enkele basisfuncties die gebruikt worden om de technieken te ondersteunen. De reden van het moeilijk vinden van fouten ligt voornamelijk bij de complexiteit van de H.264/AVC-standaard Herbepaling van intramodes Een vrij belangrijke techniek is het aanpassen van intramodes in I-beelden voor logomacroblokken en eventueel ook spatiaal aangetaste macroblokken. Zoals reeds aangehaald komt er maar één I-beeld om de 15 beelden voor, maar de I-beelden vereisen wel heel wat meer bitsnelheid in vergelijking met P- en B-beelden. Als in I-beelden bits kunnen bespaard worden, kan dit toch al een sterke impact hebben op de totale bitsnelheid. Bij analyse van de bitstroom is het duidelijk dat een niet aangepaste intramode voor intragecodeerde logomacroblokken heel wat meer bitsnelheid vereist (tot een verdubbeling voor sommige macroblokken) (Figuur 5.13). Ook spatiaal aangetaste macroblokken lijden onder en niet optimale intramode, maar in veel minder sterke mate dan logoblokken. (a) Naïeve stroom. (b) Resultaat totaaloplossing. Figuur 5.14: Kost van macroblokken bij al dan niet opsplitsen van partiële logomacroblokken voor logoconfiguratie 41 en de Bus-sequentie. Het gebied aangeduid met een wit kader is het gebied waar het logo geïnserteerd werd. Wat verder opgemerkt wordt is dat de meest kostelijke macroblokken in de stroom na logoinsertie ook de meest kostelijke zijn in de naïeve stroom. Toch is de verwachting dat het herbepalen van de intramodes voor logomacroblokken in I-beelden de vereiste bitsnelheid

Video. Multimedia Rein van den Boomgaard Universiteit van Amsterdam

Video. Multimedia Rein van den Boomgaard Universiteit van Amsterdam Video Multimedia Rein van den Boomgaard Universiteit van Amsterdam 1 data explosion 1200 lines x 1600 pixels per line RGB, 24 bit (3 bytes) per color pixel Total uncompressed (raw) size is 5.8 Mbyte 36

Nadere informatie

Classification of triangles

Classification of triangles Classification of triangles A triangle is a geometrical shape that is formed when 3 non-collinear points are joined. The joining line segments are the sides of the triangle. The angles in between the sides

Nadere informatie

dens het encoderen. Een hoge QP duidt op grove quantisatie van residuele data en leidt bijgevolg tot een lagere kwaliteit. Door de ruwere benadering

dens het encoderen. Een hoge QP duidt op grove quantisatie van residuele data en leidt bijgevolg tot een lagere kwaliteit. Door de ruwere benadering Samenvatting De beschikbaarheid en verspreiding van video kent de laatste jaren een steile groei. Waar nog geen vijftien jaar geleden de bandbreedte van netwerken ontoereikend was om streaming video (aan

Nadere informatie

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead 7.1 Exploring Combinations of Ten Look at these cubes. 2. Color some of the cubes to make three parts. Then write a matching sentence. 10 What addition sentence matches the picture? How else could you

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 8 februari 2010 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

Non Diffuse Point Based Global Illumination

Non Diffuse Point Based Global Illumination Non Diffuse Point Based Global Illumination Karsten Daemen Thesis voorgedragen tot het behalen van de graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Promotor: Prof. dr.

Nadere informatie

Het JPEG compressie algoritme, IS

Het JPEG compressie algoritme, IS Het JPEG compressie algoritme, IS 10918-1 Een overzicht van het JPEG compressie algoritme door Mathias Verboven. Inhoudsopgave Inleiding.... 2 Stap 1: inlezen bronbestand.... 3 Stap 2: Veranderen van kleurruimte....

Nadere informatie

Risico s van Technologisch Succes in digitale transformatie S T R A T E G I C A D V I S O R

Risico s van Technologisch Succes in digitale transformatie S T R A T E G I C A D V I S O R Risico s van Technologisch Succes in digitale transformatie 2e Risk Event 2019 11 april 2019 The S T R A T E G I C A D V I S O R Ymanagement school of the autonomous University of Antwerp 2 Prof. dr. Hans

Nadere informatie

AVCHD. AVCHD Workshop. 2012 Hans Dorland

AVCHD. AVCHD Workshop. 2012 Hans Dorland AVCHD AVCHD Workshop Inzicht Wie monteert* met DV? Wie monteert* met HDV? Wie monteert met AVCHD? *en overweegt montage met AVCHD? Overzicht digitale video 1995 DV 2005 HDV 2012 AVCHD Wat is HD video?

Nadere informatie

After that, the digits are written after each other: first the row numbers, followed by the column numbers.

After that, the digits are written after each other: first the row numbers, followed by the column numbers. Bifid cipher The bifid cipher is one of the classical cipher techniques that can also easily be executed by hand. The technique was invented around 1901 by amateur cryptographer Felix Delastelle. The cipher

Nadere informatie

04/11/2013. Sluitersnelheid: 1/50 sec = 0.02 sec. Frameduur= 2 x sluitersnelheid= 2/50 = 1/25 = 0.04 sec. Framerate= 1/0.

04/11/2013. Sluitersnelheid: 1/50 sec = 0.02 sec. Frameduur= 2 x sluitersnelheid= 2/50 = 1/25 = 0.04 sec. Framerate= 1/0. Onderwerpen: Scherpstelling - Focusering Sluitersnelheid en framerate Sluitersnelheid en belichting Driedimensionale Arthrokinematische Mobilisatie Cursus Klinische Video/Foto-Analyse Avond 3: Scherpte

Nadere informatie

Travel Survey Questionnaires

Travel Survey Questionnaires Travel Survey Questionnaires Prot of Rotterdam and TU Delft, 16 June, 2009 Introduction To improve the accessibility to the Rotterdam Port and the efficiency of the public transport systems at the Rotterdam

Nadere informatie

Preschool Kindergarten

Preschool Kindergarten Preschool Kindergarten Objectives Students will recognize the values of numerals 1 to 10. Students will use objects to solve addition problems with sums from 1 to 10. Materials Needed Large number cards

Nadere informatie

Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen.

Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen. Examen ET1205-D1 Elektronische Circuits deel 1, 5 April 2011, 9-12 uur Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen. Indien, bij het multiple choice

Nadere informatie

(1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs. (2) Ons gezelschap is er om kunsteducatie te verbeteren

(1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs. (2) Ons gezelschap is er om kunsteducatie te verbeteren (1) De hoofdfunctie van ons gezelschap is het aanbieden van onderwijs (2) Ons gezelschap is er om kunsteducatie te verbeteren (3) Ons gezelschap helpt gemeenschappen te vormen en te binden (4) De producties

Nadere informatie

General info on using shopping carts with Ingenico epayments

General info on using shopping carts with Ingenico epayments Inhoudsopgave 1. Disclaimer 2. What is a PSPID? 3. What is an API user? How is it different from other users? 4. What is an operation code? And should I choose "Authorisation" or "Sale"? 5. What is an

Nadere informatie

Introductie in flowcharts

Introductie in flowcharts Introductie in flowcharts Flow Charts Een flow chart kan gebruikt worden om: Processen definieren en analyseren. Een beeld vormen van een proces voor analyse, discussie of communicatie. Het definieren,

Nadere informatie

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain.

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain. Domino tiles Dominoes is a game played with rectangular domino 'tiles'. Today the tiles are often made of plastic or wood, but in the past, they were made of real stone or ivory. They have a rectangle

Nadere informatie

The colour of a pixel in a bit map picture can be presented in different ways. For this assignment, we distinguish two categories:

The colour of a pixel in a bit map picture can be presented in different ways. For this assignment, we distinguish two categories: Bitmap conversion A bit map picture is exactly what the name makes one suspect: a sequence of bits (0 or 1) that together represent a digital photo. The picture consists of a matrix (rectangle grid) of

Nadere informatie

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

Risk & Requirements Based Testing

Risk & Requirements Based Testing Risk & Requirements Based Testing Tycho Schmidt PreSales Consultant, HP 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Agenda Introductie

Nadere informatie

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim The Relationship between Work Pressure, Mobbing at Work, Health Complaints and Absenteeism Agnes van der Schuur Eerste begeleider:

Nadere informatie

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT TELETASK Handbook Multiple DoIP Central units DALISOFT 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool Connect the TDS20620V2 If there is a TDS13620 connected to the DALI-bus, remove it first.

Nadere informatie

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS COGNITIEVE DISSONANTIE EN ROKERS Gezondheidsgedrag als compensatie voor de schadelijke gevolgen van roken COGNITIVE DISSONANCE AND SMOKERS Health behaviour as compensation for the harmful effects of smoking

Nadere informatie

Add the standing fingers to get the tens and multiply the closed fingers to get the units.

Add the standing fingers to get the tens and multiply the closed fingers to get the units. Digit work Here's a useful system of finger reckoning from the Middle Ages. To multiply $6 \times 9$, hold up one finger to represent the difference between the five fingers on that hand and the first

Nadere informatie

i(i + 1) = xy + y = x + 1, y(1) = 2.

i(i + 1) = xy + y = x + 1, y(1) = 2. Kenmerk : Leibniz/toetsen/Re-Exam-Math A + B-45 Course : Mathematics A + B (Leibniz) Date : November 7, 204 Time : 45 645 hrs Motivate all your answers The use of electronic devices is not allowed [4 pt]

Nadere informatie

Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten.

Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten. Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten. The Effect of Difference in Peer and Parent Social Influences on Adolescent Alcohol Use. Nadine

Nadere informatie

Studie en implementatie van de bewegingscompensatie in een H.264/AVC-decoder

Studie en implementatie van de bewegingscompensatie in een H.264/AVC-decoder Faculteit Toegepaste Wetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. J. Van Campenhout Studie en implementatie van de bewegingscompensatie in een H.264/AVC-decoder door

Nadere informatie

Quick start guide. Powerbank MI Mah. Follow Fast All rights reserved. Page 1

Quick start guide. Powerbank MI Mah. Follow Fast All rights reserved. Page 1 Quick start guide Powerbank MI 16.000 Mah Follow Fast 2016 - All rights reserved. Page 1 ENGLISH The Mi 16000 Power Bank is a very good backup option for those on the move. It can keep you going for days

Nadere informatie

Quality requirements concerning the packaging of oak lumber of Houthandel Wijers vof (09.09.14)

Quality requirements concerning the packaging of oak lumber of Houthandel Wijers vof (09.09.14) Quality requirements concerning the packaging of oak lumber of (09.09.14) Content: 1. Requirements on sticks 2. Requirements on placing sticks 3. Requirements on construction pallets 4. Stick length and

Nadere informatie

Ontpopping. ORGACOM Thuis in het Museum

Ontpopping. ORGACOM Thuis in het Museum Ontpopping Veel deelnemende bezoekers zijn dit jaar nog maar één keer in het Van Abbemuseum geweest. De vragenlijst van deze mensen hangt Orgacom in een honingraatpatroon. Bezoekers die vaker komen worden

Nadere informatie

Eye Feature Detection Towards Automatic Strabismus Screening

Eye Feature Detection Towards Automatic Strabismus Screening Eye Feature Detection Towards Automatic Strabismus Screening Ken Allen, Khanh Nguyen Gettysburg College What is strabismus? Eye defect that causes eyes to look in two different directions If left untreated,

Nadere informatie

Geslacht, Emotionele Ontrouw en Seksdrive. Gender, Emotional Infidelity and Sex Drive

Geslacht, Emotionele Ontrouw en Seksdrive. Gender, Emotional Infidelity and Sex Drive 1 Geslacht, Emotionele Ontrouw en Seksdrive Gender, Emotional Infidelity and Sex Drive Femke Boom Open Universiteit Naam student: Femke Boom Studentnummer: 850762029 Cursusnaam: Empirisch afstudeeronderzoek:

Nadere informatie

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and Lichamelijke factoren als voorspeller voor psychisch en lichamelijk herstel bij anorexia nervosa Physical factors as predictors of psychological and physical recovery of anorexia nervosa Liesbeth Libbers

Nadere informatie

MyDHL+ Van Non-Corporate naar Corporate

MyDHL+ Van Non-Corporate naar Corporate MyDHL+ Van Non-Corporate naar Corporate Van Non-Corporate naar Corporate In MyDHL+ is het mogelijk om meerdere gebruikers aan uw set-up toe te voegen. Wanneer er bijvoorbeeld meerdere collega s van dezelfde

Nadere informatie

0515 DUTCH (FOREIGN LANGUAGE)

0515 DUTCH (FOREIGN LANGUAGE) UNIVERSITY OF CAMBRIDGE INTERNATIONAL EXAMINATIONS International General Certificate of Secondary Education MARK SCHEME for the May/June 2011 question paper for the guidance of teachers 0515 DUTCH (FOREIGN

Nadere informatie

Calculator spelling. Assignment

Calculator spelling. Assignment Calculator spelling A 7-segmentdisplay is used to represent digits (and sometimes also letters). If a screen is held upside down by coincide, the digits may look like letters from the alphabet. This finding

Nadere informatie

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur Invloed van het aantal kinderen op de seksdrive en relatievoorkeur M. Zander MSc. Eerste begeleider: Tweede begeleider: dr. W. Waterink drs. J. Eshuis Oktober 2014 Faculteit Psychologie en Onderwijswetenschappen

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Bewijzen en Technieken 1 7 januari 211, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe.

Nadere informatie

Cambridge Assessment International Education Cambridge International General Certificate of Secondary Education. Published

Cambridge Assessment International Education Cambridge International General Certificate of Secondary Education. Published Cambridge Assessment International Education Cambridge International General Certificate of Secondary Education DUTCH 055/02 Paper 2 Reading MARK SCHEME Maximum Mark: 45 Published This mark scheme is published

Nadere informatie

Four-card problem. Input

Four-card problem. Input Four-card problem The four-card problem (also known as the Wason selection task) is a logic puzzle devised by Peter Cathcart Wason in 1966. It is one of the most famous tasks in the study of deductive

Nadere informatie

Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten

Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten Difference in Perception about Parenting between Parents and Adolescents and Alcohol Use of Adolescents

Nadere informatie

De causale Relatie tussen Intimiteit en Seksueel verlangen en de. modererende invloed van Sekse en Relatietevredenheid op deze relatie

De causale Relatie tussen Intimiteit en Seksueel verlangen en de. modererende invloed van Sekse en Relatietevredenheid op deze relatie Causale Relatie tussen intimiteit en seksueel verlangen 1 De causale Relatie tussen Intimiteit en Seksueel verlangen en de modererende invloed van Sekse en Relatietevredenheid op deze relatie The causal

Nadere informatie

Handleiding Installatie ADS

Handleiding Installatie ADS Handleiding Installatie ADS Versie: 1.0 Versiedatum: 19-03-2014 Inleiding Deze handleiding helpt u met de installatie van Advantage Database Server. Zorg ervoor dat u bij de aanvang van de installatie

Nadere informatie

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

ANGSTSTOORNISSEN EN HYPOCHONDRIE: DIAGNOSTIEK EN BEHANDELING (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM

ANGSTSTOORNISSEN EN HYPOCHONDRIE: DIAGNOSTIEK EN BEHANDELING (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM Read Online and Download Ebook ANGSTSTOORNISSEN EN HYPOCHONDRIE: DIAGNOSTIEK EN BEHANDELING (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM DOWNLOAD EBOOK : ANGSTSTOORNISSEN EN HYPOCHONDRIE: DIAGNOSTIEK STAFLEU

Nadere informatie

University of Groningen

University of Groningen University of Groningen De ontwikkeling van prikkelverwerking bij mensen met een Autisme Spectrum Stoornis en de invloed van hulp en begeleiding gedurende het leven. Fortuin, Marret; Landsman-Dijkstra,

Nadere informatie

ALGORITMIEK: answers exercise class 7

ALGORITMIEK: answers exercise class 7 Problem 1. See slides 2 4 of lecture 8. Problem 2. See slides 4 6 of lecture 8. ALGORITMIEK: answers exercise class 7 Problem 5. a. Als we twee negatieve (< 0) getallen bij elkaar optellen is het antwoord

Nadere informatie

z x 1 x 2 x 3 x 4 s 1 s 2 s 3 rij rij rij rij

z x 1 x 2 x 3 x 4 s 1 s 2 s 3 rij rij rij rij ENGLISH VERSION SEE PAGE 3 Tentamen Lineaire Optimalisering, 0 januari 0, tijdsduur 3 uur. Het gebruik van een eenvoudige rekenmachine is toegestaan. Geef bij elk antwoord een duidelijke toelichting. Als

Nadere informatie

AdVISHE: Assessment of the Validation Status of Health- Economic Decision Models

AdVISHE: Assessment of the Validation Status of Health- Economic Decision Models AdVISHE: Assessment of the Validation Status of Health- Economic Decision Models Pepijn Vemer, George van Voorn, Isaac Corro Ramos, Maiwenn Al, Talitha Feenstra Rationale In theorie: Doe alles! Een model

Nadere informatie

Today s class. Digital Logic. Informationsteknologi. Friday, October 19, 2007 Computer Architecture I - Class 8 1

Today s class. Digital Logic. Informationsteknologi. Friday, October 19, 2007 Computer Architecture I - Class 8 1 Today s class Digital Logic Friday, October 19, 2007 Computer Architecture I - Class 8 1 Digital circuits Two logical values Binary 0 (signal between 0 and 1 volt) Binary 1 (signal between 2 and 5 volts)

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 6 januari 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

Illustrator Tutorial - How to Create a Watch

Illustrator Tutorial - How to Create a Watch Illustrator Tutorial - How to Create a Watch «Andrew Bannecker - Simple, True and Tender Vector Movie Posters by GABZ» Categories: Tutorials Have you ever seen print advertising of some watch brand before?

Nadere informatie

LONDEN MET 21 GEVARIEERDE STADSWANDELINGEN 480 PAGINAS WAARDEVOLE INFORMATIE RUIM 300 FOTOS KAARTEN EN PLATTEGRONDEN

LONDEN MET 21 GEVARIEERDE STADSWANDELINGEN 480 PAGINAS WAARDEVOLE INFORMATIE RUIM 300 FOTOS KAARTEN EN PLATTEGRONDEN LONDEN MET 21 GEVARIEERDE STADSWANDELINGEN 480 PAGINAS WAARDEVOLE INFORMATIE RUIM 300 FOTOS KAARTEN EN PLATTEGRONDEN LM2GS4PWIR3FKEP-58-WWET11-PDF File Size 6,444 KB 117 Pages 27 Aug, 2016 TABLE OF CONTENT

Nadere informatie

AE1103 Statics. 25 January h h. Answer sheets. Last name and initials:

AE1103 Statics. 25 January h h. Answer sheets. Last name and initials: Space above not to be filled in by the student AE1103 Statics 09.00h - 12.00h Answer sheets Last name and initials: Student no.: Only hand in the answer sheets! Other sheets will not be accepted Write

Nadere informatie

De Relatie Tussen de Gehanteerde Copingstijl en Pesten op het Werk. The Relation Between the Used Coping Style and Bullying at Work.

De Relatie Tussen de Gehanteerde Copingstijl en Pesten op het Werk. The Relation Between the Used Coping Style and Bullying at Work. De Relatie Tussen de Gehanteerde Copingstijl en Pesten op het Werk The Relation Between the Used Coping Style and Bullying at Work Merijn Daerden Studentnummer: 850225144 Werkstuk: Empirisch afstudeeronderzoek:

Nadere informatie

Never trust a bunny. D. J. Bernstein University of Illinois at Chicago. Tanja Lange Technische Universiteit Eindhoven

Never trust a bunny. D. J. Bernstein University of Illinois at Chicago. Tanja Lange Technische Universiteit Eindhoven Never trust a bunny D. J. Bernstein University of Illinois at Chicago Tanja Lange Technische Universiteit Eindhoven The HB(n; ; 0 ) protocol (2001 Hopper Blum) Secret s 2 F n 2. Reader sends random C 2

Nadere informatie

Value based healthcare door een quality improvement bril

Value based healthcare door een quality improvement bril Rotterdam, 7 december 2017 Value based healthcare door een quality improvement bril Ralph So, intensivist en medisch manager Kwaliteit, Veiligheid & Innovatie 16.35-17.00 uur Everybody in healthcare really

Nadere informatie

Global TV Canada s Pulse 2011

Global TV Canada s Pulse 2011 Global TV Canada s Pulse 2011 Winnipeg Nobody s Unpredictable Methodology These are the findings of an Ipsos Reid poll conducted between August 26 to September 1, 2011 on behalf of Global Television. For

Nadere informatie

Karen J. Rosier - Brattinga. Eerste begeleider: dr. Arjan Bos Tweede begeleider: dr. Ellin Simon

Karen J. Rosier - Brattinga. Eerste begeleider: dr. Arjan Bos Tweede begeleider: dr. Ellin Simon Zelfwaardering en Angst bij Kinderen: Zijn Globale en Contingente Zelfwaardering Aanvullende Voorspellers van Angst bovenop Extraversie, Neuroticisme en Gedragsinhibitie? Self-Esteem and Fear or Anxiety

Nadere informatie

open standaard hypertext markup language internetprotocol transmission control protocol internet relay chat office open xml

open standaard hypertext markup language internetprotocol transmission control protocol internet relay chat office open xml DOWNLOAD OR READ : OPEN STANDAARD HYPERTEXT MARKUP LANGUAGE INTERNETPROTOCOL TRANSMISSION CONTROL PROTOCOL INTERNET RELAY CHAT OFFICE OPEN XML PDF EBOOK EPUB MOBI Page 1 Page 2 relay chat office open xml

Nadere informatie

CHROMA STANDAARDREEKS

CHROMA STANDAARDREEKS CHROMA STANDAARDREEKS Chroma-onderzoeken Een chroma geeft een beeld over de kwaliteit van bijvoorbeeld een bodem of compost. Een chroma bestaat uit 4 zones. Uit elke zone is een bepaald kwaliteitsaspect

Nadere informatie

Functioneren van een Kind met Autisme. M.I. Willems. Open Universiteit

Functioneren van een Kind met Autisme. M.I. Willems. Open Universiteit Onderzoek naar het Effect van de Aanwezigheid van een Hond op het Alledaags Functioneren van een Kind met Autisme M.I. Willems Open Universiteit Naam student: Marijke Willems Postcode en Woonplaats: 6691

Nadere informatie

Contextanalyse. Patrick v/d Vlist

Contextanalyse. Patrick v/d Vlist Contextanalyse Patrick v/d Vlist Contextanalyse Patrick v/d Vlist Krimpen ad IJsel 10-01-2016 Verdoold Installatiebedrijf Voorwoord Ik heb dit rapport geschreven naar aanleiding van een communicatieopdracht

Nadere informatie

RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN GENEESMIDDELEN (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM

RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN GENEESMIDDELEN (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM Read Online and Download Ebook RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN GENEESMIDDELEN (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM DOWNLOAD EBOOK : RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN STAFLEU

Nadere informatie

Behandeleffecten. in Forensisch Psychiatrisch Center de Rooyse Wissel. Treatment effects in. Forensic Psychiatric Centre de Rooyse Wissel

Behandeleffecten. in Forensisch Psychiatrisch Center de Rooyse Wissel. Treatment effects in. Forensic Psychiatric Centre de Rooyse Wissel Behandeleffecten in Forensisch Psychiatrisch Center de Rooyse Wissel Treatment effects in Forensic Psychiatric Centre de Rooyse Wissel S. Daamen-Raes Eerste begeleider: Dr. W. Waterink Tweede begeleider:

Nadere informatie

The mitochondrial genome has bases and codes for 37 genes: 13 polypeptides, 22 trnas and 2 ribosomal RNAs.

The mitochondrial genome has bases and codes for 37 genes: 13 polypeptides, 22 trnas and 2 ribosomal RNAs. Genome density The genome of an organism is the whole of hereditary infromation in a cell. This hereditary information is either coded in DNA or for some types of viruses in RNA. Genes are structural components

Nadere informatie

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind.

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind. Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind. Bullying among Students with Autism Spectrum Disorders in Secondary

Nadere informatie

Summary 124

Summary 124 Summary Summary 124 Summary Summary Corporate social responsibility and current legislation encourage the employment of people with disabilities in inclusive organizations. However, people with disabilities

Nadere informatie

Sociale Cognitie bij Psychisch Gezonde Volwassenen

Sociale Cognitie bij Psychisch Gezonde Volwassenen Sociale Cognitie bij Psychisch Gezonde Volwassenen Onderzoek met het Virtuele Lab Social Cognition in Psychologically Healthy Adults Research with the Virtual Laboratory Anja I. Rebber Studentnummer: 838902147

Nadere informatie

2013 Introduction HOI 2.0 George Bohlander

2013 Introduction HOI 2.0 George Bohlander 2013 Introduction HOI 2.0 George Bohlander HOI 2.0 introduction Importance HOI currency Future print = HOI 2.0 HOI 2.0 Print: Décomplexation/more simple Digital: New set-up Core values HOI Accountability

Nadere informatie

01/ M-Way. cables

01/ M-Way. cables 01/ 2015 M-Way cables M-WaY Cables There are many ways to connect devices and speakers together but only few will connect you to the music. My Way of connecting is just one of many but proved it self over

Nadere informatie

Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten?

Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten? Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten? Does Gentle Teaching have Effect on Skills of Caregivers and Companionship and Anxiety

Nadere informatie

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016 www.iuscommune.eu Dear Ius Commune PhD researchers, You are kindly invited to attend the Ius Commune Amsterdam Masterclass for PhD researchers, which will take place on Thursday 16 June 2016. During this

Nadere informatie

2000 Volkswagen Passat GLS

2000 Volkswagen Passat GLS REAR DOOR WINDOW Rear door window, assembly overview Fig. 304: Exploded View Of Rear Door Window 1 - Door Removing and installing: --> Rear door, removing and installing 2 - Spring nut Qty 2 3 - Screw

Nadere informatie

Modererende Rol van Seksuele Gedachten. Moderating Role of Sexual Thoughts. C. Iftekaralikhan-Raghubardayal

Modererende Rol van Seksuele Gedachten. Moderating Role of Sexual Thoughts. C. Iftekaralikhan-Raghubardayal Running head: momentaan affect en seksueel verlangen bij vrouwen 1 De Samenhang Tussen Momentaan Affect en Seksueel Verlangen van Vrouwen en de Modererende Rol van Seksuele Gedachten The Association Between

Nadere informatie

Power Quality aspecten van LED-lampen.

Power Quality aspecten van LED-lampen. Power Quality aspecten van LED-lampen. Hoe meet je die en wat betekent het voor de praktijk? Mark Vloemans AR Benelux Timothy Hertstein ZES ZIMMER Onderwerpen o Aanleiding o Wat is de Power Factor? o Hoe

Nadere informatie

Adherence aan HWO en meer bewegen

Adherence aan HWO en meer bewegen Adherence aan HWO en meer bewegen Een experimenteel onderzoek naar de effecten van het motivationele stadium van patiënten en de adherence aan huiswerkoefeningen (HWO) bij fysiotherapie en het meer bewegen.

Nadere informatie

UNECE/UNESCAP Workshop on. Electronic Trade Documents. Ulaanbaatar, Mongolia, October 2009

UNECE/UNESCAP Workshop on. Electronic Trade Documents. Ulaanbaatar, Mongolia, October 2009 /UNESCAP Workshop on Electronic Trade Documents Ulaanbaatar, Mongolia, October 2009 Presentation Need for digital paper documents Developing Electronic documents for SW Using Digital Paper in Supply Chains

Nadere informatie

Een eerste belangrijk deel in dit proefschrift behandelt het automatisch detecteren van shotovergangen in H.264/AVC-gecodeerde videostromen.

Een eerste belangrijk deel in dit proefschrift behandelt het automatisch detecteren van shotovergangen in H.264/AVC-gecodeerde videostromen. Samenvatting De laatste decennia zijn we getuige geweest van een snel stijgende verspreiding en beschikbaarheid van mediabronnen. Deze toename kan hoofdzakelijk toegeschreven worden aan de groei van het

Nadere informatie

invloed van herschaling bij het comprimeren van HD-videobeelden

invloed van herschaling bij het comprimeren van HD-videobeelden Faculteit Ingenieurswetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. Dr. Ir. J. Van Campenhout invloed van herschaling bij het comprimeren van HD-videobeelden door Timothy Suy

Nadere informatie

Esther Lee-Varisco Matt Zhang

Esther Lee-Varisco Matt Zhang Esther Lee-Varisco Matt Zhang Want to build a wine cellar Surface temperature varies daily, seasonally, and geologically Need reasonable depth to build the cellar for lessened temperature variations Building

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

INVLOED VAN CHRONISCHE PIJN OP ERVAREN SOCIALE STEUN. De Invloed van Chronische Pijn en de Modererende Invloed van Geslacht op de Ervaren

INVLOED VAN CHRONISCHE PIJN OP ERVAREN SOCIALE STEUN. De Invloed van Chronische Pijn en de Modererende Invloed van Geslacht op de Ervaren De Invloed van Chronische Pijn en de Modererende Invloed van Geslacht op de Ervaren Sociale Steun The Effect of Chronic Pain and the Moderating Effect of Gender on Perceived Social Support Studentnummer:

Nadere informatie

Screen Design. Deliverable 3 - Visual Design. Pepijn Gieles 0877217 19-12-2014. Docent: Jasper Schelling

Screen Design. Deliverable 3 - Visual Design. Pepijn Gieles 0877217 19-12-2014. Docent: Jasper Schelling Screen Design Deliverable 3 - Visual Design Pepijn Gieles 0877217 19-12-2014 Docent: Jasper Schelling Hulp bij het inloggen Inloggen Particulier Personal Banking Private Banking Zakelijk Zoeken in Particulier

Nadere informatie

Procedure Reset tv-toestellen:

Procedure Reset tv-toestellen: Procedure Reset tv-toestellen: Volgende procedure is te volgen wanneer er een tv-toestel, op een van de kamers niet meer werkt. TV Re-installation Factory Default Her-installeren van de TV Fabrieksinstellingen

Nadere informatie

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information Activant Prophet 21 Prophet 21 Version 12.0 Upgrade Information This class is designed for Customers interested in upgrading to version 12.0 IT staff responsible for the managing of the Prophet 21 system

Nadere informatie

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Settings for the C100BRS4 MAC Address Spoofing with cable Internet. Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version

Nadere informatie

Functioneel Ontwerp / Wireframes:

Functioneel Ontwerp / Wireframes: Functioneel Ontwerp / Wireframes: Het functioneel ontwerp van de ilands applicatie voor op de iphone is gebaseerd op het iphone Human Interface Guidelines handboek geschreven door Apple Inc 2007. Rounded-Rectangle

Nadere informatie

Genetic code. Assignment

Genetic code. Assignment Genetic code The genetic code consists of a number of lines that determine how living cells translate the information coded in genetic material (DNA or RNA sequences) to proteins (amino acid sequences).

Nadere informatie

Bin packing and scheduling

Bin packing and scheduling Sanders/van Stee: Approximations- und Online-Algorithmen 1 Bin packing and scheduling Overview Bin packing: problem definition Simple 2-approximation (Next Fit) Better than 3/2 is not possible Asymptotic

Nadere informatie

NMOZTMKUDLVDKECVLKBVESBKHWIDKPDF-WWUS Page File Size 9,952 KB 29 May, 2016

NMOZTMKUDLVDKECVLKBVESBKHWIDKPDF-WWUS Page File Size 9,952 KB 29 May, 2016 NAVIJVEN MINILAMPJES OM ZELF TE MAKEN KERSTFIGUREN UIT DE LAPPENMAND VOOR DE KINDERSSALOON EN COWBOYS VAN LOLLYSTOKJES KAMERBREED BOEKENREK VOOR EEN SMAL BUDGETGEBAKKEN KOEKFIGUURTJES HANGEN WE IN DE KERSTBOOM

Nadere informatie

Media en creativiteit. Winter jaar vier Werkcollege 7

Media en creativiteit. Winter jaar vier Werkcollege 7 Media en creativiteit Winter jaar vier Werkcollege 7 Kwartaaloverzicht winter Les 1 Les 2 Les 3 Les 4 Les 5 Les 6 Les 7 Les 8 Opbouw scriptie Keuze onderwerp Onderzoeksvraag en deelvragen Bespreken onderzoeksvragen

Nadere informatie

Hertentamen 8D040 - Basis beeldverwerking

Hertentamen 8D040 - Basis beeldverwerking Hertentamen 8D040 - Basis beeldverwerking 6 augustus 203, 4:00-7:00 Opmerkingen: Maak elke opgave op een apart vel. Antwoord op vraag 4 mag gewoon in het Nederlands. Een gewone rekenmachine is toegestaan.

Nadere informatie

Detectie van bewegende objecten in videosequenties, gecomprimeerd met H.264/AVC, voor videobewakingssystemen

Detectie van bewegende objecten in videosequenties, gecomprimeerd met H.264/AVC, voor videobewakingssystemen Detectie van bewegende objecten in videosequenties, gecomprimeerd met H.264/AVC, voor videobewakingssystemen Sammy Lievens Promotor: prof. dr. ir. Rik Van de Walle Begeleiders: Chris Poppe, Sarah De Bruyne

Nadere informatie

MyDHL+ ProView activeren in MyDHL+

MyDHL+ ProView activeren in MyDHL+ MyDHL+ ProView activeren in MyDHL+ ProView activeren in MyDHL+ In MyDHL+ is het mogelijk om van uw zendingen, die op uw accountnummer zijn aangemaakt, de status te zien. Daarnaast is het ook mogelijk om

Nadere informatie

The upside down Louisa tutorial by Dorothée: Noortjeprullemie.blogspot.be Written for Compagnie M.: m.com

The upside down Louisa tutorial by Dorothée: Noortjeprullemie.blogspot.be Written for Compagnie M.:  m.com The upside down Louisa tutorial by Dorothée: Noortjeprullemie.blogspot.be Written for Compagnie M.: www.compagnie- m.com Dorothée heeft een unieke Compagnie M. hack gemaakt: de Louisa op zijn kop. Als

Nadere informatie