NL1031379C2 - Werkwijze en inrichting voor het coderen en decoderen van data. - Google Patents

Werkwijze en inrichting voor het coderen en decoderen van data. Download PDF

Info

Publication number
NL1031379C2
NL1031379C2 NL1031379A NL1031379A NL1031379C2 NL 1031379 C2 NL1031379 C2 NL 1031379C2 NL 1031379 A NL1031379 A NL 1031379A NL 1031379 A NL1031379 A NL 1031379A NL 1031379 C2 NL1031379 C2 NL 1031379C2
Authority
NL
Netherlands
Prior art keywords
block
codes
code
database
combination
Prior art date
Application number
NL1031379A
Other languages
English (en)
Inventor
Francois Augustin Van Schaik
Original Assignee
Ipo Paulus Willem Marinus Mari
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ipo Paulus Willem Marinus Mari filed Critical Ipo Paulus Willem Marinus Mari
Priority to NL1031379A priority Critical patent/NL1031379C2/nl
Priority to PCT/NL2007/050102 priority patent/WO2007105951A1/en
Application granted granted Critical
Publication of NL1031379C2 publication Critical patent/NL1031379C2/nl

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/94Vector quantisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

Werkwijze en inrichting voor het coderen en decoderen van data.
Achtergrond.
De uitvinding heeft betrekking op een werkwijze en inrichting voor het coderen 5 en decoderen van data, waarbij tijdens het coderen een datareductieactie wordt toegepast.
Stand van de techniek.
10 Een digitaal beeld is een matrix van B*H beeldpunten (pixel = picture element).
De kleur van elk pixel wordt door een bepaalde waarde van D bits bepaald. Een volledig beeld wordt dus met B*H*D bits beschreven, Meestal zijn opeenvolgende beelden opgenomen in “frames”, waarbij 1 frame de audio- en video-informatie bevat van 1 beeld.
15
Voorbeeld:
Een beeld van 720 x 576 pixels (de standaardresolutie van een DVD film) met 24 bits per pixel (itruecolor, voor elk van de drie kleurkanalen rood, groen en blauw 8 bits) wordt door 720 x 576 x 24 = 9.953.280 bits of 1.244.160 bytes of 1,19 MB 20 gerepresenteerd: 8 bits = 1 byte, 1024 byte = 1 KB (KiloByte), 1024 KB = 1 MB (MegaByte).
De typische afspeelsnelheid van een videofilm is 25 beelden per seconde (frames per second, jps). Dit betekent dat één seconde film met de gegevens uit het bovenstaande voorbeeld 30 MB per seconde bevat of meer dan 100.000 MB per uur.
25 Hoewel de gebruikelijke geheugencapaciteit van computers behoorlijk hoog is zal het in de praktijk niet mogelijk zijn om 100 GB (GigaByte - 1024 MB) per uur film op te slaan. Een DVD biedt bijvoorbeeld tussen 5 en 17 GB opslagcapaciteit. De naïeve manier van opslag, namelijk het opslaan van alle bits van de film is in de praktijk dus niet toe te passen.
30
Er bestaan hoofdzakelijk twee verschillende manieren om de benodigde geheugencapaciteit voor informatie kleiner te krijgen: 1031379- 2 1) Modificeren van de invoerinformatie: hierbij worden bijvoorbeeld irrelevante delen van de informatie verwijderd, bijvoorbeeld niet-hoorbare frequenties bij geluid of niet-zichtbare delen bij beeldinformatie; of de invoerinformatie wordt op een andere manier zodanig gemodificeerd dat opvolgende 5 compressiestappen efficiënter gaan werken. De oorspronkelijke informatie is bij deze soort datareductie niet exact terug te krijgen.
2) Verliesvrije codering van invoerinformatie: hierbij wordt de informatie naar een andere representatie omgezet, waarbij data op een zodanige wijze wordt gecomprimeerd, dat dezelfde informatie met minder ruimte kan worden 10 opgeslagen. De oorspronkelijke informatie is altijd zonder verlies terug te krijgen.
Korte beschrijving van de uitvinding.
Het doel van de uitvinding is om een wijze van datareductie aan te geven zodanig 15 dat dezelfde hoeveelheid data met aanzienlijk minder geheugenruimte kan worden opgeslagen.
De uitvinding is gekenmerkt door diverse onafhankelijke conclusies die zijn bijgevoegd. Uitvoeringsvormen zijn in afhankelijke conclusies geclaimd.
Diverse testen met volgens de uitvinding gecomprimeerde videogegevensstromen 20 hebben laten zien, dat een reductie met een factor van ongeveer 15-20 haalbaar is zonder noemenswaardig kwaliteitsverlies.
De uitvinding zal hierna gedetailleerd worden toegelicht onder verwijzing naar enkele figuren. De figuren tonen slechts uitvoeringsvormen en zijn niet bedoeld ter beperking van de uitvindingsgedachte die door de bijgevoegde conclusies is bepaald.
25 Technisch equivalente oplossingen worden geacht binnen de reikwijdte van de conclusies te vallen.
Opgemerkt wordt dat in de uitvinding in de onderhavige octrooiaanvrage voornamelijk wordt besproken aan de hand van beelddata. De uitvinding is echter net zo goed van toepassing op geluiddata en tekstdata. Bij tekstdata kan geen gébruik 30 worden gemaakt van acties waar sprake is van informatieverlies. Te denken valt aan het berekenen van gemiddelde waarden en quantisatie.
Bij tekstdata kunnen de bladzijden in een boek in principe op dezelfde wijze worden beschouwd als frames in een film. Veelal is sprake van slechts twee kleuren: 3 wit (achtergrond) en zwart (tekst). Elke regel tekst levert een regel-code op. Alle ‘regel-codes’ tezamen op een bladzijde leveren een bladzijde-code voor een bladzijde op. Bladzijde-codes leveren tezamen weer een boek-code voor het betreffende boek op.
5 Korte aanduiding van de figuren.
Figuur 1 toont een schematische opstelling van een codeereenheid en een decodeereenheid;
Figuur 2 een schematisch overzicht van blokken data in een beeld van 10 bijvoorbeeld een video;
Figuur 3 toont een schematische weergave van geheugenblokken in een geheugen;
Figuur 4 toont een verkort overzicht van de werkwijze volgens de uitvinding.
13 Beschrijving van uitvoeringsvormen.
1. Inleiding.
Figuur 1 toont een algemene opzet van een systeem waarin de onderhavige uitvinding kan worden toegepast. Het systeem omvat een codeereenheid 1, die ook de functie van zender kan hebben. De codeereenheid 1 omvat een processor 5 die is 20 verbonden met een geheugen 7. De processor 5 is tevens verbonden met een input/output inrichting (I/O) 9 en een I/O 11. Via de I/O 9 kan de processor 5 over een verbinding 13 data ontvangen. De verbinding 13 kan een draad zijn maar kan ook draadloos worden geïmplementeerd. Voor de uitvinding maakt het niet uit welke golflengte van elektromagnetische straling wordt gebruikt voor een eventuele draadloze 25 verbinding. Via de I/O 11 kan de processor 5 data uitvoeren over een verbinding 15, die eveneens een draad kan betreffen of een draadloze verbinding.
In het geheugen zijn een of meer programma’s en data opgeslagen die het de processor 5 mogelijk maken om bepaalde functionaliteit te verschaffen, zoals het coderen van gegevens volgens de uitvinding het vervolgens versturen daarvan.
30 Figuur 1 toont verschillende manieren waarop de door processor 5 geproduceerde gecodeerde data kunnen worden verzonden. Verzending kan bijvoorbeeld via een draad plaatsvinden. De dubbele pijl 31 geefl aan dat de geproduceerde data als alternatief draadloos naar een ontvanger kan worden verstuurd. Dat kan zijn in het kader van 4 radio, televisie, of van de ene naar een andere terminal. Een terminal is bijvoorbeeld een mobiele telefoon, een pda (personal digital assistant), etc. Als alternatief kan de geproduceerde data op een datadrager worden opgeslagen, zoals een optische schijf (bijvoorbeeld een CD, een DVD), een magneetband 35, of een geheugenkaart 37, zoals 5 een memory stick. Andere vormen van opslag zijn uiteraard ook mogelijk.
Het door de codeereenheid 1 geproduceerde signaal wordt ontvangen door een ontvanger of decodeereenheid 3. De decodeereenheid 3 omvat een processor 21 die is verbonden met een geheugen 23. De processor 21 is tevens verbonden met een input/output inrichting (I/O) 19 en een I/O 25. Via de I/O 19 kan de processor 21 over 10 een verbinding 17 de data ontvangen. Via I/O 25 kan de processor 21 data uitvoeren, bijvoorbeeld audio-data naar een luidspreker (koptelefoon) en/of video-data naar een monitor of display 29.
De decodeereenheid 3 kan elke gewenste implementatie hebben, zoals een CD- of DVD-speler, een bandrecorder, een speler gebaseerd op op een geheugenchip 15 opgeslagen data (zoals tegenwoordig een MP3 speler), een mobiele telefoon, een pda, een blackberry, etc.
De getoonde geheugens kunnen één of meer omvatten van: een harde schijf, Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM) en Random Access Memory (RAM). Niet al deze geheugentypen hoeven 20 noodzakelijkerwijs aanwezig te zijn. Bovendien hoeven zij niet fysiek vlak bij de respectieve processor te zijn geplaatst. Zij kunnen ook op afstand daarvan zijn geplaatst.
In een uitvoeringsvorm zijn de respectieve processoren verbonden met middelen voor het invoeren van instructies, gegevens, enz. door een gebruiker, zoals een 25 toetsenbord en een muis. Andere invoermiddelen, zoals een touch screen, een trade ball en/of spraak converter, die bekend zijn aan de deskundige, kunnen eveneens worden toegepast.
Ook kan een met de respectieve processoren verbonden leeseenheid zijn voorzien. Zo’n leeseenheid is ingericht om gegevens te lezen van een gegevensdrager, 30 zoals een floppy disk, een memory stick, een magneetband, een CD-R, een DVD-R of een CDROM.
De respectieve processoren kunnen zijn verbonden met een printer voor het printen van uitvoergegevens op papier, alsmede een weergeefeenheid, bijvoorbeeld een 5 monitor of LCD (Liquid Crystal Display) scherm, of enig ander type weergeefeenheid bekend aan de deskundige.
De processoren kunnen zijn verbonden met een communicatienetwerk, bijvoorbeeld het PSTN (Public Switched Telephone Network), een lokaal netwerk 5 (LAN = local area network), een breedgebied-netwerk (WAN = Wide Area Network), het Internet, enz. door middel van geschikte invoer/uitvoermiddelen voor het ontvangen en versturen van gegevens.
De processoren kunnen zijn geïmplementeerd als een op zich zelf staand systeem of als een aantal parallel opererende processoren, die ieder zijn ingericht om subtaken 10 van een groter programma uit te voeren, of als een of meer hoofdprocessoren met diverse subprocessoren. Gedeelten van de functionaliteit van de uitvinding kunnen zelfs, indien gewenst, worden uitgevoerd door op afstand gelegen processoren die met de respectieve processor communiceren via een netwerk.
Hierna zal de uitvinding nader worden toegelicht aan de hand van video-data, 15 maar de uitvinding is daartoe niet beperkt. Zo kan de uitvinding eveneens worden toegepast op bijvoorbeeld geluidsdata en tekstdata. In geval van tekstdata wordt de fase van voorbereiding voorzover deze verlies van informatie veroorzaakt weggelaten.
2. Codeereenheid 2.1 Inleiding 20 De codeereenheid 1 zet digitale beeldinformatie, bijvoorbeeld behorend bij een film, om naar een gecomprimeerd formaat. Hierdoor kan de informatie ruimtebesparend worden opgeslagen. Het coderen van een beeld werkt hierbij in twee fasen: het voorbereiden van het beeld en het coderen van de informatie.
2.2 Voorbereiding van het beeld 25 Het doel van de eerste fase is het omzetten van de beeldinformatie uit het oorspronkelijke beeld naar een representatie die de tweede fase (het coderen) efficiënter maakt. In deze eerste fase wordt vooral gebruik gemaakt van de in de inleiding besproken, eerste mogelijkheid om datareductie te bereiken: het modificeren van informatie door irrelevante informatie weg te laten. Het menselijke oog heeft bepaalde 30 beperkingen die het mogelijk maken informatie uit beelden weg te laten zonder dat een (goed) zichtbaar verlies van kwaliteit optreedt De eerste fase van de codeereenheid 1 6 maakt gebruik van dit feit om de informatie in de beelden te vereenvoudigen. Voor de vereenvoudiging zijn verschillende technieken mogelijk, die hierna worden besproken.
2.2.1 Conversie van RGB naar YUV
Beeldschermen geven verschillende kleuren weer door de basiskleuren rood, 5 groen en blauw met verschillende intensiteiten te vermengen. Elke basiskleur hoort bij 1 kanaal. Daarom kan een pixel van een beeld eenvoudig worden beschreven door de intensiteit van de drie basiskleuren rood, groen en blauw aan te geven. Een mogelijke RGB waarde voor een pixel is dus (255, 128, 0). Uitgaande van een schaal van 0 t/m 255 betekent dit: vermeng rood met een intensiteit van 255 (vol aan), groen met een 10 intensiteit 128 (half aan) en blauw met een intensiteit 0 (helemaal uit). Vaak wordt deze schaal van 0 t/m 255 genomen, omdat dit overeenkomt met 256 toestanden en de 256 toestanden precies door één byte van 8 bits (28 = 256) kunnen worden gerepresenteerd. Aangezien er 3 bytes per pixel zijn, zijn er vaak 24 bits per pixel.
Het YUV formaat gebruikt ook drie kanalen voor beeldinformatie: één kanaal 15 voor de helderheid (Y, luminantie) en twee kanalen voor de kleur (U en V, chrominantié). Het menselijke oog is sterker gevoelig voor veranderingen in de helderheid dan voor veranderingen in de kleur. Op grond hiervan is het zonder zichtbaar kwaliteitsverlies mogelijk delen van de kleurinformatie (chrominantié) weg te laten.
20 Een pixel in RGB kan eenvoudig worden omgezet naar YUV ([ 1 ]). Door de resolutie van de twee chrominantie-kanalen UV op een kwart neer te schalen, bijvoorbeeld van 720*576 pixels naar 360*288 pixels, kan 50% van de informatie worden verwijderd zonder zichtbaar kwaliteitsverlies: - + 2| — * — ]=— J 3 U 3J 2 25 2.2.2 Gemiddelde
In een uitvoeringsvorm wordt een gemiddelde waarde bepaald op de volgende wijze. Elk pixel wordt vervangen door het gemiddelde van de pixel zelf en de pixel rechts van, de pixel onder en de pixel rechtsonder van de pixel als het gemiddelde niet meer dan een vooraf bepaalde drempelwaarde, bijvoorbeeld 8, van de originele pixel 30 afwijkt. Indien de afwijking groter dan de drempelwaarde is, wordt geprobeerd alleen het gemiddelde van de oorspronkelijke pixel en de rechter buurpixel of de pixel onder 7 de pixel te gebruiken mits dit gemiddelde ook niet groter is dan de drempelwaarde van 8. Op deze manier wordt het beeld niet globaal vervaagd. Alleen vlakken met vergelijkbare kleur worden hierdoor vervaagd. Hierdoor wordt de kans verhoogd, dat twee opeenvolgende frames in deze vlakken dezelfde waarde hebben. Het nemen van 5 het gemiddelde kan en wordt tijdens het decoderen niet ongedaan gemaakt. Een mogelijke inverse voor deze stap is het toepassen van een scherpende filter.
2.2.3 Vergelijking van opeenvolgende frames.
Een van de mogelijke acties zou kunnen zijn om opeenvolgende frames met 10 elkaar te vergelijken, dus frame n+1 met frame n. Doel daarvan zou zijn om na het berekenen van de gemiddelde waarden te kijken hoe groot de afwijking van pixelwaarden tussen twee opvolgende frames is. Immers, als deze verschillen binnen een bepaalde drempelwaarde vallen, kan het aanbeveling verdienen om de pixelwaarden in opeenvolgende beelden aan elkaar gelijk te maken. De drempelwaarde 15 moet ervoor zorgen, dat niet al te groot kwaliteitsverlies in de frames optreedt. Als de verschillen groter zijn dan de drempelwaarde wordt geen actie ondernomen.
Het gevolg is dat quantisatie meer gelijke pixelwaarden oplevert, de codering na quantisatie meer gelijk wordt en derhalve de verschillen vaker gelijk zijn aan 0 (geen verschil).
20 2.2.4 Quantisatie
Het menselijke oog kan heel kleine verschillen in de intensiteit van kleuren niet waarnemen. Een mogelijke reductie van informatie bestaat erin om het aantal mogelijke verschillende intensiteiten te verlagen, bijvoorbeeld in plaats van 256 stappen slechts 64 stappen oftewel een reductie van 8 bits per pixel per kanaal naar 6 bits. Dit betekent 25 dat meerdere invoerwaarden dezelfde uitvoerwaarden krijgen, b.v.
30 8
Invoer Uitvoer “Ö Ö 1 Ö _ _ _ _ - _ ; i _ .
_ ï _ _ “i 2 _ 2
De codeereenheid 1 kan deze quantisatie als volgt uitvoeren. Volgens bovenstaand voorbeeld leveren: • de invoerwaarden 0, 1,2 en 3 de waarde 2 op; 5 · de invoerwaarden 4, 5, 6 en 7 de waarde 5 op; • etc.
Vervolgens worden de waarden na quantisatie als volgt gecodeerd: • de waarde 2 wordt code 0; • de waarde 5 wordt code 1; 10 · etc.
Als alternatief kunnen de quantisatie-stappen op 5 worden gezet. Dan volgt: • de invoerwaarden 0,1,2,3 en 4 worden dan 2; • de invoerwaarden 5,6,7,8 en 9 worden dan 7; 15 · etc.
Vervolgens worden dan de waarden na quantisatie als volgt gecodeerd: • de waarde 2 code 0 • de waarde 7 code 1 9 • de waarde 12 code 2 • etc 5 Als deze actie wordt toegepast moeten in het navolgende “pixelwaarden” gelezen worden als “coderingswaarden”.
2.2.5 Opslaan van verschillen tussen frames
Omdat het verschil tussen twee opeenvolgende beelden (“frames”) in een film meestal niet heel groot is, kan het voordelig zijn om niet de ‘"harde” waarden van elk 10 frame op te slaan maar alleen de verschillen tussen opeenvolgende frames.
Onderstaande tabel geeft een voorbeeld daarvan voor 9 pixels in frame #1 en dezelfde 9 pixels in een opvolgend frame #2. Voor het gemak is slechts 1 kleurwaarde van elk pixel weergegeven.
15 Voorbeeld:
Frame #1 Frame #2 Verschillen ~22Ö ΠΪ80 f~24Ö 11225 182 [245 II |~2 [5 "235 Ï9Ö 23Ö 229 Ï9Ö 228 ” ^6 "~Ö 3 "Ï9Ö 150 100 193 Ï5Ï 1ÖÖ 1 ï Ö 25 Dit voorbeeld heeft betrekking op één van de RGB-waarden, voordat quantisatie is toegepast. Als wordt uitgegaan van quantisatiestappen van 5 wordt het voorbeeld als volgt:
Frame #1 Frame #2 Verschillen 30 44 [36 48 [45 [36 [49 [Ί [Ö [ï *47 38 46 45 38 45 -2 5 ~l 38 30 2Ö 38 30 2Ö Ö Ö 0 10
Op deze manier krijgt men minder verschillende, kleinere getallen die voordeliger in de tweede fase te coderen zijn, omdat zij met een kleiner aantal bits zijn vast te leggen. Hier worden immers verschillen van de na quantisatie verkregen codes genomen en niet van de feitelijke RGB-waarden. Daardoor zijn de verschilwaarden hier nog kleiner, 5 zelfs vaak gelijk aan nul.
2.2.6 Discrete cosinus transformatie
Met hulp van transformaties zoals de “discrete cosinus transformatie” (DCT) [2] is het mogelijk om beeldinformatie om te zétten naar de firequentieruimte. Het beeld wordt dan niet meer gerepresenteerd door de kleurwaarden, maar door coëfficiënten 10 van basisfrequenties. Omdat het menselijke oog minder gevoelig is voor hogere frequenties in een beeld kunnen de coëfficiënten voor de hoge frequenties vaak volledig worden verwijderd of tenminste sterk in waarde worden gereduceerd zonder een groot kwaliteitsverlies.
2.2.7 Overige 15 Zinvol zijn technieken die de inhoud van de frames “zo gelijk mogelijk” maken zonder de kwaliteit te verslechteren, bijvoorbeeld ruisfilters. Andere technieken die toepasbaar kunnen zijn, zijn Hufinann, Zip etc.
2.3 Coderen van beeldinformatie
Nadat de informatie in de eerste fase vereenvoudigd is, worden de gegevens in de 20 tweede fase ruimtebesparend gecodeerd. Dit gebeurt zonder verlies van informatie. De invoer voor de tweede fase, dat wil zeggen de uitvoer van de eerste fase, is exact weer terug te krijgen door decoderen.
De tweede fase werkt op basis van meerdere databases op verschillend niveau.
De informatie wordt na elkaar naar drie verschillende databases gebracht. Dit zal 25 hieronder worden toegelicht aan de hand van een voorbeeld. Het voorbeeld betreft één “beeld”, dat wil zeggen één frame. Omwille van het gemak wordt er steeds van uitgegaan dat er bij elke pixel slechts één kleurwaarde hoort. Voor die ene waarde per pixel wordt het principe van de uitvinding uitgelegd. Uiteraard wordt in de praktijk het principe van de uitvinding op elk van de drie waarden (RGB of YUV) toegepast.
30 Voor het uitvoeren van de uitvinding worden drie databases gedefinieerd: een blokkendatabase BDB, een framedatabase FDB en een sequentiedatabase SDB. Zoals 11 aangegeven in figuur 3 kunnen deze drie databases zich in het geheugen 7 bevinden. Er kunnen echter ook aparte databases in elders opgestelde geheugens zijn. De databases kunnen fysiek in dezelfde geheugenchip of op dezelfde harde schijf, etc. zijn gedefinieerd. Het toegepaste algoritme wordt gebruikt per kanaal. Desondanks hoeft er 5 per database BDB, FDB, SDB maar 1 set gegevens voor alle drie de kanalen te worden gebruikt.
2.3.1 Pixel-niveau: de blokkendatabase BDB.
Een reeks beelden die bijvoorbeeld bij een film horen is opgeslagen in geheugen 7. Elk beeld, dat bijvooibeeld 720x576 pixels bevat, wordt onderverdeeld in blokken 10 met een bepaalde grootte, bijvoorbeeld blokken van 16x16 pixels. Figuur 2 geeft dat schematisch weer. Het beeld in figuur 2 is onderverdeeld in Bmn blokken. Elk blok wordt omgezet naar een blokcode. De blokcode is korter dan de inhoud van het blok zelf.
Figuur 3 toont ook dat originele beelden OB in het geheugen 7 zijn opgeslagen en 15 dat het geheugen 7 een geheugenruimte CB heeft voor opslag van de gecodeerde beelden.
Het omzetten van een blok naar een blokcode gebeurt als volgt: a) Eerst wordt het eerste blok B11 van het beeld uitgelezen uit geheugenruimte OB; b) Het eerste blok Βιι wordt in de blokkendatabase BDB opgeslagen.
20 c) Het eerste blok B11 krijgt een unieke blokcode C11, die in de geheugenruimte CB wordt opgeslagen; de blokcode heeft een vaste relatie met het blok.
d) Een volgend blok Bmn (m= 1,2,..., Μ; n= 1,2, ...N) wordt uit geheugenruimte OB gelezen.
e) Het blok Bmn wordt met de inhoud van de blokkendatabase BDB vergeleken;
25 f) Als het blok Bmn nog niet bekend is, wordt het blok in de blokkendatabase BDB
opgeslagen. Aan het blok wordt een nieuwe blokcode Cmn toegekend. Deze blokcode Cmn wordt in de geheugenruimte CB opgeslagen. Elke blokcode Cmn heeft een vaste relatie met een bijbehorend blok Bmn. Als nog niet alle blokken Bmn zijn gelezen, gaat het programma terug naar actie d). Anders gaat het 30 programma naar actie h).
g) Als het blok Bmn identiek is aan een bekend blok in blokkendatabase BDB, wordt de waarde van de unieke blokcode van het bekende blok uitgelezen en wordt de waarde van deze uitgelezen blokcode in de reeks van blokcodes in 12 geheugenruimte CB geplaatst. Als nog niet alle blokken Bmn zijn gelezen, gaat het programma terug naar actie d). Anders gaat het programma naar actie h).
h) In deze actie is het coderen voor het betreffende niveau klaar.
Op deze manier wordt elk verschillend blok maar één keer opgeslagen. De eerste fase 5 heeft ervoor gezorgd dat 1) een bepaald blok Bmn wellicht vaker in de beelden voorkomt; 2) de inhoud van elk uniek blok Bmn “eenvoudig” is, dat wil zeggen, dat er over het algemeen minder verschillende blokken zijn dan het theoretisch maximaal mogelijke aantal.
10 Omdat de inhoud van elk unieke blok Bmn vrij eenvoudig is, worden de blokken bij voorkeur niet zomaar bijvoorbeeld in geheugen 7 opgeslagen, maar wordt er bij voorkeur voorafgaand aan opslag eerst een compressie-algoritme gebruikt. Een goede kandidaat voor dit compressie-algoritme is “deflate " [3].
Datareductie wordt dan in deze blokkendatabase BDB dus door twee technieken 15 bereikt: 1) alleen opslaan van verschillende blokken 2) ruimtebesparend opslaan van de unieke blokken.
2.3.2 Blokken-niveau: de framedatabase FDB.
20 Na de vorige actie is het beeld omgezet naar een matrix met blokcodes. Er bestaat nu de kans dat een bepaalde combinatie van blokcodes vaker voorkomt, met andere woorden dat vlakken die groter zijn dan één blok vaker voorkomen. Van deze mogelijkheid maakt de framedatabase gebruik. De matrix met blokcodes wordt recursief gecodeerd tot dat er per beeld maar één code over is (de framecode). Daartoe 25 worden naast elkaar liggende codes vervangen door zogenaamde “combinatiecodes”, terwijl in vervolgacties naast elkaar gelegen combinatiecodes kunnen worden vervangen door nieuwe combinatiecodes. Dit werkt vergelijkbaar met het coderen van blokken: i) Eerst wordt een paar naast elkaar gelegen blokcodes Ci ι en C12, ook “code- 30 paar” genoemd, geselecteerd; j) Sla een combinatiecode PCi 1 op in de framedatabase FDB in het geheugen 7 die op unieke wijze verwijst naar de waarden van het code-paar Cn en C12; k) Selecteer een paar nieuwe naast elkaar liggende codes; 13 l) Vergelijk de combinatie van dit nieuwe naast elkaar gelegen paar codes met alle code-paren in de framedatabase FDB; m) Als deze combinatie nog niet bestaat, sla dan een nieuwe combinatiecode CCij (i=l,2,3, ...;j = l,2,3,...) met het bijbehorende code-paar op in de 5 framedatabase FDB. D.w.z., het code-paar wordt als het ware vervangen door de nieuwe combinatiecode CCij. Als nog niet alle codes van het beeld zijn geselecteerd geweest, selecteer dan een paar nieuwe naast elkaar gelegen codes. Ga terug naar actie 1).
n) Als de combinatie wel al bekend is, sla dan een combinatiecode CCij op in de 10 framedatabase FDB met het bijbehorende code-paar. D.w.z. vervang het code- paar door de combinatiecode CCij van het betreffende bekende paar. Als nog niet alle codes van het beeld zijn geselecteerd geweest, selecteer dan een paar nieuwe naast elkaar gelegen codes. Ga terug naar actie 1).
o) (Omdat elk paar codes door één combinatiecode is vervangen, bevat de matrix 15 nu half zo veel codes als aan het begin.) Hernoem ten behoeve van het programma: "combinatiecode CCij” -> “blokcode Cy”.
p) Herhaal recursief acties i tot en met o zolang de matrix groter is dan lxl. Bij het doorlopen van acties i tot en met o wordt de matrix bijvooikeur de ene keer horizontaal doorlopen en de volgende keer vertikaal, enzovoorts.
20 Opgemerkt wordt dat het bovenstaande schema is opgesteld voor horizontaal naast elkaar liggende blokcodes / combinatiecodes. Uiteraard is dit niet beperkend bedoeld. Elk willekeurig paar kan uitgangspunt vormen, bijvoorbeeld twee vertikaal naast elkaar gelegen blok- / combinatiecodes.
Verder wordt opgemerkt dat het systeem werkt als de resoluties machten van 2 zijn, 25 bijvoorbeeld 512*512. Bij andere resoluties moeten er af en toe “dummy-codes” (bijvoorbeeld 0) aan het eind van een rij of kolom worden toegevoegd.
Voorbeeld:
Blokcodes: 1 Π [2 [Ί _ _ - - 1 2 Ö ï 1 ~2 Ö 3 14 le cyclus: acties 1-6 doorlopen.
(0,1) Niet bekend; opslaan met nieuwe combinatiecode 0 (2,3) Niet bekend: opslaan met nieuwe combinatiecode 1 5 (0,3) Niet bekend: opslaan met nieuwe combinatiecode 2 (2.1) Niet bekend; opslaan met nieuwe combinatiecode 3 (3.2) Niet bekend: opslaan met nieuwe combinatiecode 4 (0, 1) Bekend: combinatiecode 0 (1.2) Niet bekend: opslaan met nieuwe combinatiecode 5 10 (0, 3) Bekend: combinatiecode 2
Na 1® cyclus: Το ΓΪ ~2 3 ~4 Ö 1 2 ¥ cyclus: verticale buren bekijken (0, 2) Niet bekend; opslaan met nieuwe combinatiecode 6 15 (4, 5) Niet bekend; opslaan met en nieuwe combinatiecode 7 (1.3) Niet bekend; opslaan met nieuwe combinatiecode 8 (0, 2) Bekend; combinatiecode 6
Na 2® cyclus: ~6 [8 ~ï 6 3e cyclus: horizontale buren bekijken: (6, 8) Niet bekend; opslaan met nieuwe combinatiecode 9 20 (7, 6) Niet bekend; opslaan met nieuwe combinatiecode 10
Na 3® cyclus: _ lö 15 4 cyclus: verticale buren bekijken: (9, 10) Niet bekend; opslaan met nieuwe combinatiecode 11.
5 Deze laatste combinatiecode wordt hier de “framecode” voor dit beeld genoemd en is dus gelijk aan 11. De inhoud van de framedatabase FDB voor dit beeld is dus:
Code Waarde "ö Ö7ï Ί 2Γ3 ~2 ÖT3 "3 2Π 1 ί! 1 ÏT2 "6 ~02 ~7 475 1 TT3 "9 67e lö 77e
Ti ëTïö
Als de oorspronkelijke grootte van de matrix bekend is kan de decodeereenheid later de 10 originele codes weer herstellen door recursief elke code door de twee waarden uit de database te vervangen. Door deze database is verzekerd, dat ook grotere beelddelen maar één keer worden opgeslagen. Ook deze database kan gebruik maken van een compressiealgoritme zoals deflate om de combinatiecodes ruimtebesparend op te slaan.
2.3.3 Frame-niveau: sequentiedatabase SDB.
15 Omdat elk videobeeld drie (kleur)kanalen heeft, krijgt de codeereenheid 1 dus drie framecodes terug voor elk frame (beeld); één framecode per kanaal. Wij mogen ervan uitgaan dat de combinatie van deze drie framecodes vrij uniek is. De kans dat precies hetzelfde videobeeld nog een keer in een film gebruikt wordt is heel klein. De drie framecodes per frame worden daarom lineair opgeslagen in de sequentiedatabase 20 SDB. Ook hier kan echter weer een compressiealgoritme, zoals deflate, worden toegepast om de framecodes ruimtebesparend op te slaan.
16 2.4 Schema codeereenheid 1.
Figuur 4 geeft een schematisch overzicht van de opeenvolgende acties zoals hierboven zijn toegelicht.
5 3 Decodeereenheid
Het decoderen van de informatie in de decodeereenheid 3 gebeurt ook weer in twee fasen. Elke fase is overeenkomend met een fase uit de codeereenheid 1: 1) Decoderen met behulp van de blokkendatabase BDB, framedatabase FDB en 10 sequentiedatabase SDB; 2) Terugtransformeren naar beeldinformatie.
3.1 Decoderen van frames
Fase 1 van de decodeereenheid 3 is het tegendeel van fase 2 in de codeereenheid 1. De decodeereenheid 3 moet in deze fase de drie databases BDB, FDB, SDB uit de 15 codeereenheid 1 hebben ontvangen. Voor elk frame leest de decodeereenheid 3 de drie framecodes - één framecode per kanaal - uit de sequentiedatabase SDB. Dan begint de decodeereenheid 3 met behulp van de framedatabase FDB de framecodes om te zetten naar blokcodes. Dit werkt als volgt: de decodeereenheid 3 begint met een matrix van lxl en vult het enige veld in de matrix met de framecode. De code gebruikt de 20 decodeereenheid 3 dan om in de framedatabase FDB het bijbehorende paar codes op te zoeken. De originele framecode wordt vervangen door dit code-paar. De matrix wordt hierdoor groter. Deze stappen worden herhaald uitgevoerd tot dat de matrix de oorspronkelijke grootte heeft: een code wordt altijd vervangen door het code-paar in de sequentiedatabase. De uitbreiding van de matrix gebeurt weer afwisselend horizontaal 25 en verticaal.
Voorbeeld
De framedatabase FDB bevat bijvoorbeeld de volgende informatie: 17
Code Waarde 7) öTï 1 2~3 ~2 ÖT3
T 2J
1 3Γ2 1 ÏT2 "6 ÖT2 “7 4Γ5 _ __ "9 “Xe lö 7Të Tï 9jö
De eerste framecode uit de sequentiedatabase is 11. Deze code wordt in een matrix van lxl aan het begin gezet. De decodeereenheid gaat deze code nu zo lang 5 “uitpakken” totdat de matrix een bepaalde grootte heeft. Stel de decodeereenheid weet dat de matrix uiteindelijk een grootte van 4x4 moet hebben.
Begintoestand
Tl
De decodeereenheid kijkt welk code-paar bij de framecode “11” in de framedatabase FDB hoort en vervangt de framecode door die twee codes. Bij framecode “11” hoort in 10 de framedatabase FDB het code-paar “9,10”
Na actie 1:
Begintoestand - —-► 9 11 _ - 10
Voor elke van de twee codes “9” en “10” kijkt de decodeereenheid 3 weer in de framedatabase FDB naar de overeenkomende code-paren voor deze codes en breidt de 15 matrix met deze paren uit. Bij code “9” hoort het code-paar “6, 8", en bij code “10” hoort code-paar “7,6”.
18
Na actie 1: Na actie 2: ~9 _^ [6 [8 1Ö ~7 6
Dit algoritme wordt herhaald uitgevoerd, totdat de matrix de gewenste grootte 5 4x4 heeft:
Na actie 3: "Ö Π
Na actie 2: 2 3 ^ p _► ~4 '~Ö _► “7 "6 1 “1
Na actie 4: 1 ΓΪ [~2 11 1 3 2 ï 1 2 5 ï 1 2 Ö 3 10 De codes in deze laatste matrix zijn nu de blokcodes.
Met behulp van de blokkendatabase BDB wordt elke blokcode vervangen door het overeenkomende blok in de blokkendatabase BDB. Op deze manier krijgt men precies de waarden terug die ooit voor fase 2 van de codeereenheid 1 als invoer dienden.
15 3.2 Terug transformeren tot beeldinformatie
Uitgaande van de waarden die de decodeereenheid 3 in de fase 1 teruggekregen heeft, moet nu de beeldinformatie worden hersteld. Hiervoor moeten sommige van de voorbereidende stappen tijdens het coderen ongedaan worden gemaakt. Niet voor elk voorbereidend algoritme is het mogelijk of noodzakelijk om de verandering ongedaan 20 te maken. Een ruisfilter tijdens fase 1 van de codeereenheid 1 haalt bijvoorbeeld 19 bepaalde ongewenste informatie weg om het coderen eenvoudiger te maken. Maar tijdens het decoderen zal waarschijnlijk geen algoritme toegepast worden, die de ruis weer toevoegt. Een transformatie bijvoorbeeld van RGB naar YUV of een DCT kan en moet echter weer ongedaan gemaakt worden. In ieder geval krijgt men na deze fase een 5 beeld dat afhankelijk van de gemaakte voorbereidende stappen niet exact overeenkomt met het origineel maar in de meeste gevallen voldoende sterk op het origineel lijkt.
4 Referentie applicatie
Om aan te tonen dat en hoe de werkwijze van het coderen en decoderen volgens de uitvinding in de praktijk werkt is er een referentie-applicatie gemaakt die de 10 wezenlijke punten daarvan implementeert 4.1 Invoer
Als invoer gebruikt het programma MPEG-2 films, een gebruikelijk formaat voor zowel DVDs als ook digitale TV. Om de films te lezen is gebruik gemaakt van de onder GPL (GNU Public Licence) [4] staande bibliotheek mpeg2lib [5]. Echter, de 15 uitvinding beperkt zich niet tot MPEG-2 films. Ook andere formaten, zoals raw-AVI materiaal kunnen als invoer worden gebruikt.
4.2 Voorbereidende stappen
De referentie-applicatie gebruikt de volgende voorbereidende stappen om de beeldinformatie zodanig te vereenvoudigen dat de tweede fase (coderen) efficiënter kan 20 gebeuren:
4.2.1 Conversie RGB naar YUV
Elk frame wordt van RGB naar YUV getransformeerd. Vervolgens worden de U en V kanalen op een kwart geschaald, waarbij elk uitvoerpixel de gemiddelde waarde van vier invoerpixels krijgt (4:2:0 chroma subsampling). Tijdens het decoderen worden 25 de U/V kanalen weer hoog geschaald en het beeld teruggetransformeerd tot RGB.
4.2.2 Gemiddelde
In een uitvoeringsvorm wordt een gemiddelde waarde bepaald op de volgende wijze. Elk pixel wordt vervangen door het gemiddelde van de pixel zelf en de pixel rechts van, de pixel onder en de pixel rechtsonder van de pixel als het gemiddelde niet 30 meer dan een vooraf bepaalde drempelwaarde, bijvoorbeeld 8, van de originele pixel 20 afwijkt. Indien de afwijking groter dan de drempelwaarde is, wordt geprobeerd alleen het gemiddelde van de oorspronkelijke pixel en de rechter buurpixel of de pixel onder de pixel te gebruiken mits dit gemiddelde ook niet groter is dan de drempelwaarde van 8.
5 Op deze manier wordt het beeld niet globaal vervaagd. Alleen vlakken met vergelijkbare kleur worden hierdoor vervaagd. Hierdoor wordt de kans verhoogd, dat twee opeenvolgende frames in deze vlakken dezelfde waarde hebben. Het nemen van het gemiddelde kan en wordt tijdens het decoderen niet ongedaan gemaakt. Een mogelijke inverse voor deze stap is het toepassen van een scherpende filter.
10 4.2.3 Vergelijking van opeenvolgende frames.
Een van de mogelijke acties zou kunnen zijn om opeenvolgende frames met elkaar te vergelijken, dus frame n+1 met frame n. Doel daarvan zou zijn om na het berekenen van de gemiddelde waarden te kijken hoe groot de afwijking van 15 pixelwaarden tussen twee opvolgende frames is. Immers, als deze verschillen binnen een bepaalde drempelwaarde vallen, kan het aanbeveling verdienen om de pixelwaarden in opeenvolgende beelden aan elkaar gelijk te maken. De drempelwaarde moet ervoor zorgen, dat niet al te groot kwaliteitsverlies in de frames optreedt. Als de verschillen groter zijn dan de drempelwaarde wordt geen actie ondernomen.
20 Het gevolg is dat quantisatie meer gelijke pixelwaarden oplevert, de codering na quantisatie meer gelijk wordt en derhalve de verschillen vaker gelijk zijn aan 0 (geen verschil).
4.2.4 Quantisatie 25 De referentie-applicatie gebruikt een eenvoudige manier van quantisatie. Tijdens de quantisatie-actie worden opeenvolgende waardegroepjes tot één enkele waarde afgerond en daarna tot een enkele lagere waarde gecodeerd (zie 2.2.4).
4.2.4 Verschillen tussen frames
De codeereenheid 1 codeert allen de verschillen tussen twee frames. Hiervoor 30 wordt een offscreen-buffer bijgehouden die het vorige frame bevat. Aan het begin is deze buffer helemaal zwart. Voor elk nieuw frame wordt het verschil tussen deze offscreen-buffer en het nieuwe frame berekend. Alleen deze verschillen worden 21 doorgegeven aan de tweede fase van de codeerwerkwijze zoals utgevoerd door de codeereenheid 1. Daarna wordt de offscreen-buffer vervangen door het huidige frame.
Tijdens het coderen wordt weer met een offscreen-buffer gewerkt. De decodeereenheid krijgt voor elk frame de verschillen ten opzichte van het vorige frame.
5 Deze verschillen worden toegepast op de offscreen-buffer en een kopie van de offscreen-buffer wordt doorgegeven naar de volgende stap.
4.3 Databases
Een probleem is op dit moment soms de beschikbare geheugenruimte voor opslag 10 van de databases BDB, FDB en SDB. Omdat een hele film vaak databases nodig heeft van meerdere honderd MB is het niet altijd mogelijk om de hele databases in het werkgeheugen van een computer te houden, zowel tijdens het coderen als het decoderen. Een alternatief zou kunnen zijn om de databases BDB, FDB, SDB op een harde schijf bij te houden, maar het lezen van en schrijven naar een harde schijf duurt 15 (vergeleken met werkgeheugen) erg lang, waardoor de werkwijze van coderen (en decoderen) traag zou kunnen werken.
De referentiedatabase lost dit probleem bijvoorbeeld op door meer dan één blokkendatabase BDB, ffamedatabase FDB en sequentiedatabase SDB te gebruiken. Na een instelbaar aantal frames (standaard: 500, maar dit aantal kan ook anders worden 20 gekozen) wordt een nieuwe set databases BDB, FDB, SDB begonnen. Op deze mania* blijven de databases BDB, FDB, SDB zo klei, dat de bewerking volledig in het werkgeheugen van de computer kan gebeuren. Dit maakt de werkwijze volgens de uitvinding duidelijk sneller.
In een uitvoeringsvorm maken de blokkendatabase BDB en de ffamedatabase 25 FDB gebruik van hash-tables om heel snel te kunnen controleren of een bepaald blok/code-paar al in de betreffende database bestaat. Tijdens hét coderen draaien in de achtergrond zogenoemde “dump-threads” die de inhoud van de databases naar de harde schijf brengen. Hierbij kan de database-informatie on-the-fly worden gecomprimeerd, bijvoorbeeld met behulp van de zlib bibliotheek [6].
Om de film af te spelen is het dus nodig om op het goede tijdstip de goede delen van de databases BDB, FDB, SDB in het geheugen te hebben. De referentie-applicatie gebruikt hiervoor aparte loader-threads. Gelijktijdig met het decoderen van een huidig 30 22 stukje film (sequentie) worden alle delen van de databases BDB, FDB, SDB van het volgende stukje film (sequentie) geladen. Bij een sequentielengte van SOO frames hebben de loader-threads dus 20 seconden tijd om de volgende databases te laden (500 frames worden getoond in (500 frames) / (25 frames per sec) = 20 sec.). Dit is over het 5 algemeen ruim voldoende. Als tijdens het laden duidelijk wordt, dat een database veel sneller geladen kan worden dan nodig, wordt de loader-thread met opzet geremd om het afspelen van film in de hoofdthread niet te storen. Hierdoor is een vloeiend afspelen van de film mogelijk.
4.4 Technische informatie 10 De geteste codec is geïmplementeerd als een Microsoft Windows DLL. De broncode is in C++ geschreven en door Microsoft Visual C++ 2005 gecompileerd.
De grafische front-ends Codeereenheid.exe en Decodeereeriheid.exe zijn geschreven in C# en door Microsoft Visual C# 2005 gecompileerd. De programma’s hebben .NET 2.0 runtime [7] gebruikt.
15
Tijdens de test werden de volgende bibliotheken van derden gebruikt: - Mpeg21ib [5] - Zlib [6] - Stlport [8] 20 5 Bronvermelding
[1] http://en.wikinedia.org/wiki/YUV
[2] http://en.wikipedia.org/wiki/Discrete cosine transform
25 [3] http://CTi.wikipedia.org/wiki/DEFLATE
[4] http://en.wikipedia.org/wiki/GPL
[5] https://sourceforge.net/proiects/mpeg21ib [6] http://www.zlib.net [7] http ://www.micro soft.com/net 30 [8] http://www.stlport.org 1031379

Claims (26)

1. Werkwijze voor het coderen van tenminste één videobeeld, welk videobeeld een aantal kleurkanalen (RGB; YUV) en per kleurkanaal een reeks in een geheugen (7) 5 opgeslagen blokken (Bmn; m = 1,2,..Μ; n = 1,2,.. .N) omvat, waarbij elk blok (Bmn) twee of meer pixels vertegenwoordigt en een bepaalde waarde heeft, omvattend a) het uitlezen van een eerste blok (Bi i) van het videobeeld uit het geheugen; b) het opslaan van het eerste blok (Bn) in een blokkendatabase (BDB); c) het verschaffen van een unieke blokcode (Ci i) aan het eerste blok (Bn), welke 10 unieke blokcode (Ci i) in het geheugen wordt opgeslagen en een vaste relatie met het eerste blok (Bi i) heeft; d) het uitlezen van een volgend blok (Bmn, m = 1,2,..., Μ; n = 1,2,.. .N) uit het geheugen; e) het vergelijken van het uitgelezen volgende blok (Bmn) met de inhoud van de 15 blokkendatabase (BDB); als het volgende blok (Bmn) nog niet bekend is, het gaan naar actie f); als het blok (Bmn) identiek is aan een bekend blok in de blokkendatabase (BDB), het gaan naar actie g); f) het opslaan van het volgende blok in de blokkendatabase (BDB); het toekennen van een nieuwe blokcode (Cmn) aan dit volgende blok; het opslaan van de 20 nieuwe blokcode (Cmn) in het geheugen; het verdergaan naar actie h); g) lees de waarde van de blokcode van het bekende blok uit en plaats de waarde van de blokcode van het bekende blok in de reeks van blokcodes in het geheugen; het verdergaan naar actie h); h) als nog niet alle blokken (Bmn) zijn gelezen, het teruggaan naar actie d). 25
2. Werkwijze volgens conclusie 1, gekenmerkt doordat bij het opslaan van de blokken in de blokkendatabase een compressie-algoritme wordt toegepast.
3. Werkwijze volgens conclusie 2, gekenmerkt doordat het compressie-algoritme 30 het deflate-algoritme is. 1 2 *1031379- Werkwijze volgens een van de voorgaande conclusies 1-3, gekenmerkt door: 2 i) het selecteren van een paar blokcodes (Cu, C12); j) het opslaan van het paar blokcodes (Ci i, C12) en van een combinatiecode (PCi 1) in een framedatabase (FDB) in het geheugen, welke combinatiecode (PC 11) op unieke wijze verwijst naar de waarden van het paar blokcodes (Ci i, C12); k) het selecteren van een nieuw paar blokcodes; 5 1) het vergelijken van dit nieuwe paar blokcodes met alle reeds in de framedatabase (FDB) opgeslagen paren blokcodes; m) als het nieuwe paar blokcodes nog niet bestaat in de framedatabase (FDB), het opslaan van een nieuwe combinatiecode (CCij, i = 1, 2,3,...; j = 1, 2, 3,...) met het bijbehorende nieuwe paar blokcodes in de framedatabase (FDB); als 10 nog niet alle paren blokcodes zijn geselecteerd, het selecteren van een verder nieuw paar blokcodes en teruggaan naar actie k); n) als het nieuwe paar blokcodes overeenkomt met een reeds in de framedatabase (FDB) opgeslagen bekende blokcode, het opslaan van de combinatiecode (CCij) in de framedatabase (FDB) die behoort bij de bekende blokcode; als nog niet 1S alle paren blokcodes zijn geselecteerd, het selecteren van een verder nieuw paar blokcodes en teruggaan naar actie k); o) het recursief herhalen van acties i) tot en met n) voor alle combinatiecodes (CCij) verkregen in een voorgaande reeks van acties i) tot en met n), waarbij geldt dat waar in acties i) tot en met n) “blokcode” staat “combinatiecode” 20 wordt gelezen, totdat de reeks acties i) tot en met n) resulteren in 1 laatste combinatiecode.
5. Werkwijze volgens conclusie 4, gekenmerkt doordat de blokcodes en combinatiecodes zijn opgesteld in een matrix en bij het recursief doorlopen van acties i) 25 tot en met n) de matrix afwisselend horizontaal en vertikaal wordt doorlopen. 1
7. Werkwijze volgens conclusie 6, gekenmerkt doordat het compressie-algoritme het deflate-algoritme is. Werkwijze volgens conclusie 4 of 5, gekenmerkt doordat bij het opslaan van gegevens in de framedatabase (FDB) een compressie-algoritme wordt toegepast.
8. Werkwijze volgens een van de voorgaande conclusies, waarbij de werkwijze wordt uitgevoerd voor elk van de drie kleurkanalen (RGB; YUV) en de resulterende gegevens uit de framedatabase lineair worden opgeslagen in een sequentiedatabase (SDB). 5
9. Werkwijze volgens een van de voorgaande conclusies waarbij het beeld pixels met RGB waarden heeft, omvattend • het transformeren van de RGB waarden naar YUV waarden, waarbij de UV waarden een bepaalde resolutie vertegenwoordigen; 10. het schalen van de resolutie van de UV waarden.
10. Werkwijze volgens een van de voorgaande conclusies waarbij het beeld pixels heeft en de werkwijze wordt gestart met het vervangen van elke pixelwaarde door een gemiddelde waarde van één of meer naastgelegen pixels.
11. Werkwijze volgens een van de voorgaande conclusies waarbij het beeld pixels met eerste pixelwaarden heeft en de eerste pixelwaarden individueel worden vergeleken met tweede pixelwaarden van pixels van een volgend beeld en door de tweede pixelwaarden worden vervangen als de tweede pixelwaarden minder dan een drempelwaarde met de eerste pixelwaarde verschillen. 20
12. Werkwijze volgens een van de voorgaande conclusies waarbij pixelwaarde een quantisatie-actie ondergaan.
13. Werkwijze volgens een van de voorgaande conclusies waarbij opeenvolgende 25 beelden van een video worden gecodeerd en alleen verschilwaarden tussen opeenvolgende beelden worden gecodeerd.
14. Werkwijze volgens een van de voorgaande conclusies waarbij een reeks beelden van een video-film wordt onderverdeeld in apart van elkaar gecodeerde subreeksen, 30 waarbij de werkwijze per subreeks opnieuw start.
15. Werkwijze voor het decoderen van een reeks blokcodes (Cmn) in een blokkendatabase (BDB) zoals verkregen met de werkwijze volgens een van de conclusies 1-14, omvattend: • het ontvangen van de reeks blokcodes (Cmn); 5. het vervangen van elke blokcode (Cmn) door een bijbehorend blok (Bmn).
16. Werkwijze voor het decoderen van een reeks combinatiecodes (CCij) met bijbehorende paren codes in een framedatabase (FDB) zoals verkregen met de werkwijze volgens conclusie 6, omvattend: 10. het vervangen van een laatste combinatiecode (CCij) door een bijbehorend paar codes; • het behandelen van elke verkregen code als een combinatiecode en het vervangen van deze combinatiecodes door een bijbehorend paar codes; • het recursief herhalen van de voorgaande actie, totdat alle combinatiecodes 15 (CCij) zijn vervangen en een reeks blokcodes (Cmn) is verkregen; • het vervangen van elke blokcode (Cmn) door een bijbehorend blok (Bmn).
17. Codeereenheid omvattende een processor (5) en een geheugen (7) met gegevens en instructies om de processor tenminste één videobeeld te laten coderen, welk 20 videobeeld een aantal kleurkanalen (RGB; YUV) en per kleurkanaal een reeks in het geheugen (7) opgeslagen blokken (Bmn; m = 1, 2,..., Μ; n = 1,2,.. .N) omvat, waarbij elk blok (Bmn) twee of meer pixels vertegenwoordigt en een bepaalde waarde heeft, waarbij de processor is ingericht voor: a) het uitlezen van een eerste blok (Bi ï) van het videobeeld uit het geheugen; 25 b) het opslaan van het eerste blok (Bn) in een blokkendatabase (BDB); c) het verschaffen van een unieke blokcode (Ci i) aan het eerste blok (Bi i), welke unieke blokcode (Cu) in het geheugen wordt opgeslagen en een vaste relatie met het eerste blok (Bu) heeft; d) het uitlezen van een volgend blok (Bmn, m = 1,2,..., Μ; n = 1,2,. ..N) uit het 30 geheugen; e) het vergelijken van het uitgelezen volgende blok (Bmn) met de inhoud van de blokkendatabase (BDB); als het volgende blok (Bmn) nog niet bekend is, het gaan naar actie i); als het blok (Bmn) identiek is aan een bekend blok in de blokkendatabase (BDB), het gaan naar actie g); f) het opslaan van het volgende blok in de blokkendatabase (BDB); het toekennen van een nieuwe blokcode (Cmn) aan dit volgende blok; het opslaan van de 5 nieuwe blokcode (Cmn) in het geheugen; het verdergaan naar actie h); g) lees de waarde van de blokcode van het bekende blok uit en plaats de waarde van de blokcode van het bekende blok in de reeks van blokcodes in het geheugen; het verdergaan naar actie h); h) als nog niet alle blokken (Bmn) zijn gelezen, het teruggaan naar actie d). 10
18. Codeereenheid volgens conclusie 17, gekenmerkt door: i) het selecteren van een paar blokcodes (Cu, C12); j) het opslaan van het paar blokcodes (Ci 1, C12) en van een combinatiecode (PC11) in een framedatabase (FDB) in het geheugen, welke combinatiecode (PCn) op 15 unieke wijze verwijst naar de waarden van het paar blokcodes (Cu, C12); k) het selecteren van een nieuw paar blokcodes; l) het vergelijken van dit nieuwe paar blokcodes met alle reeds in de framedatabase (FDB) opgeslagen paren blokcodes; m) als het nieuwe paar blokcodes nog niet bestaat in de framedatabase (FDB), het 20 opslaan van een nieuwe combinatiecode (CCij. i = 1,2, 3,...; j = 1, 2, 3,...) met het bijbehorende nieuwe paar blokcodes in de framedatabase (FDB); als nog niet alle paren blokcodes zijn geselecteerd, het selecteren van een verder nieuw paar blokcodes en teruggaan naar actie k); n) als het nieuwe paar blokcodes overeenkomt met een reeds in de framedatabase 25 (FDB) opgeslagen bekende blokcode, het opslaan van de combinatiecode (CCij) in de framedatabase (FDB) die behoort bij de bekende blokcode; als nog niet alle paren blokcodes zijn geselecteerd, het selecteren van een verder nieuw paar blokcodes en teruggaan naar actie k); o) het recursief herhalen van acties i) tot en met n) voor alle combinatieoodes 30 (CCij) verkregen in een voorgaande reeks van acties i) tot en met n), waarbij geldt dat waar in acties i) tot en met n) “blokcode” staat “combinatiecode” wordt gelezen, totdat de reeks acties i) tot en met n) resulteren in 1 laatste combinatiecode.
19. Zender omvattende een codeereenheid volgens een van de conclusies 17 en 18.
20. Decodeereenheid omvattende een processor (21) en een geheugen (23) met 5 gegevens en instructies om de processor een reeks blokcodes (C mn) uit een blokkendatabase (BDB) zoals verkregen met de werkwijze volgens een van de conclusies 1-14 te laten decoderen, waarbij de processor is ingericht voor: • het ontvangen van de reeks blokcodes (Cmn); • het vervangen van elke blokcode (Cmn) door een bijbehorend blok (Bmn). 10
21. Decodeereenheid volgens conclusie 20, waarbij de processor is ingericht voor het decoderen van een reeks combinatiecodes (CCij) met bijbehorende paren codes uit een framedatabase (FDB) zoals verkregen met de werkwijze volgens conclusie 4, volgens: • het vervangen van een laatste combinatiecode (CCij) door een bijbehorend paar 15 codes; • het behandelen van elke verkregen code als een combinatiecode en het vervangen van deze combinatiecodes door een bijbehorend paar codes; • het recursief herhalen van de voorgaande actie, totdat alle combinatiecodes (CCij) zijn vervangen en een reeks blokcodes (Cmn) is verkregen; 20. het vervangen van elke blokcode (Cmn) door een bijbehorend blok (Bmn).
22. Ontvanger omvattende een decodeereenheid volgens een van de conclusies 20 en 21.
23. Systeem omvattende een zender volgens conclusie 19 en een ontvanger volgens conclusie 22.
24. Signaal omvattende een reeks blokcodes (Cy) zoals verkregen met de werkwijze volgens conclusie 1. 30
25. Signaal volgens conclusie 24 omvattende tevens een reeks combinatiecodes (CCij) en hun bijbehorende paren codes zoals verkregen met de werkwijze volgens conclusie 4.
26. Computerprogrammaproduct omvattende gegevens en instructies die kunnen worden ingelezen door een computer om de computer de mogelijkheid te verschaffen om de codeerwerkwijze volgens een van de conclusies 1-14 te laten uitvoeren. 5
27. Computerprogrammaproduct omvattende gegevens en instructies die kunnen worden ingelezen door een computer om de computer de mogelijkheid te verschaffen om de decodeerwerkwijze volgens een van de conclusies 15-16 te laten uitvoeren.
28. Gegevensdrager omvattende een computerprogrammaproduct volgens een van de voorgaande conclusies. 15 ***** IJ03 13 7 9
NL1031379A 2006-03-15 2006-03-15 Werkwijze en inrichting voor het coderen en decoderen van data. NL1031379C2 (nl)

Priority Applications (2)

Application Number Priority Date Filing Date Title
NL1031379A NL1031379C2 (nl) 2006-03-15 2006-03-15 Werkwijze en inrichting voor het coderen en decoderen van data.
PCT/NL2007/050102 WO2007105951A1 (en) 2006-03-15 2007-03-14 Method and device for coding and decoding data

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL1031379 2006-03-15
NL1031379A NL1031379C2 (nl) 2006-03-15 2006-03-15 Werkwijze en inrichting voor het coderen en decoderen van data.

Publications (1)

Publication Number Publication Date
NL1031379C2 true NL1031379C2 (nl) 2007-09-18

Family

ID=37139430

Family Applications (1)

Application Number Title Priority Date Filing Date
NL1031379A NL1031379C2 (nl) 2006-03-15 2006-03-15 Werkwijze en inrichting voor het coderen en decoderen van data.

Country Status (2)

Country Link
NL (1) NL1031379C2 (nl)
WO (1) WO2007105951A1 (nl)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI127117B (fi) * 2009-06-17 2017-11-30 Gurulogic Microsystems Oy Kuvaprosessoija ja tietokoneohjelma
ES2387153B1 (es) * 2010-06-16 2013-08-08 Fundación Para La Investigación Biomédica Del Hospital Universitario De La Paz Sistema y procedimiento para obtener datos acerca del ciclo respiratorio de un paciente

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0633701A2 (en) * 1993-07-05 1995-01-11 Oy Nokia Ab Method and device for the compression of a digital video signal

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0633701A2 (en) * 1993-07-05 1995-01-11 Oy Nokia Ab Method and device for the compression of a digital video signal

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
BUZO A ET AL: "SPEECH CODING BASED UPON VECTOR QUANTIZATION", IEEE TRANSACTIONS ON ACOUSTICS, SPEECH AND SIGNAL PROCESSING, IEEE INC. NEW YORK, US, vol. ASSP-28, no. 5, 1 October 1980 (1980-10-01), pages 562 - 574, XP000670426, ISSN: 0096-3518 *
GERSHO A ET AL: "ADAPTIVE VECTOR QUANTIZATION BY PROGRESSIVE CODEVECTOR REPLACEMENT", INTERNATIONAL CONFERENCE ON ACOUSTICS, SPEECH & SIGNAL PROCESSING. ICASSP. TAMPA, FLORIDA, MAR. 26 - 29, 1985, NEW YORK, IEEE, US, vol. VOL. 1 CONF. 10, 26 March 1985 (1985-03-26), pages 133 - 136, XP001176990 *
GOLDBERG M ET AL: "IMAGE COMPRESSION USING ADAPTIVE VECTOR QUANTIZATION", IEEE TRANSACTIONS ON COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 34, no. 2, February 1986 (1986-02-01), pages 180 - 187, XP008074559, ISSN: 0090-6778 *
GOLDBERG M ET AL: "IMAGE SEQUENCE CODING USING VECTOR QUANTIZATION", IEEE TRANSACTIONS ON COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. COM-34, no. 7, July 1986 (1986-07-01), pages 703 - 710, XP002280029, ISSN: 0090-6778 *
NASRABADI N M ET AL: "IMAGE CODING USING VECTOR QUANTIZATION: A REVIEW", IEEE TRANSACTIONS ON COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 36, no. 8, 1 August 1988 (1988-08-01), pages 957 - 971, XP000052119, ISSN: 0090-6778 *
NELSON M R: "THE ZLIB COMPRESSION LIBRARY A COMPRESSION ENGINE FOR EVERYONE", DR. DOBB'S JOURNAL, M&T PUBL., REDWOOD CITY, CA,, US, vol. 22, no. 1, January 1997 (1997-01-01), pages 36,38,40 - 41, XP001004599, ISSN: 1044-789X *

Also Published As

Publication number Publication date
WO2007105951A1 (en) 2007-09-20

Similar Documents

Publication Publication Date Title
JP4782181B2 (ja) エントロピー復号化回路、エントロピー復号化方法、およびパイプライン方式を利用したエントロピー復号化方法
JP4682102B2 (ja) 画像符号化装置及び画像符号化方法
US20070263939A1 (en) Variable length decoding device, variable length decoding method and image capturing system
NL1031379C2 (nl) Werkwijze en inrichting voor het coderen en decoderen van data.
US7860168B2 (en) Method and apparatus for improved increased bit-depth display from a transform decoder by retaining additional inverse transform bits
JP2007006194A (ja) 画像復号再生装置
CN100550972C (zh) 图像处理方法及图像处理装置
JP4814826B2 (ja) 画像処理装置及び画像処理方法
US7340101B2 (en) Device and method for compressing and decompressing data for graphics display
JPH04100379A (ja) 画像再生方式
JP7020782B2 (ja) 再生装置及びその制御方法
US20240048734A1 (en) Image processing method and image processing device for enhancing image processing efficiency
US6614437B1 (en) Apparatus and method for efficient memory utilization in an electronic system
CN100409657C (zh) 图像处理方法及图像处理装置
US6690834B1 (en) Compression of pixel data
US10735757B2 (en) Video decoder and controlling method thereof
JP3984981B2 (ja) 画像符号化方法、その装置及びそのプログラム並びに画像復号化方法、その装置及びそのプログラム
JPH0283579A (ja) 画像データ表示装置と画像データ表示方法
US20110286663A1 (en) Method And Apparatus Of Color Image Rotation For Display And Recording Using JPEG
CN117560498A (zh) 图像处理方法及图像处理装置
JPH03106190A (ja) 動画像符号化制御方式
JP2002112258A (ja) ノイズ低減装置およびその方法、並びに画像記録再生装置
JP2000172486A (ja) デ―タ変換装置およびデ―タ変換方法、提供媒体、並びにデ―タ変換システム
JPH0654207A (ja) 画像処理装置
JPS6053388A (ja) 画像信号記録再生装置

Legal Events

Date Code Title Description
PD2B A search report has been drawn up
V1 Lapsed because of non-payment of the annual fee

Effective date: 20101001