NL1013639C2 - Werkwijze voor het 3D-raster coderen/decoderen en inrichting voor foutbestendigheid en incrementele beeldconversie. - Google Patents
Werkwijze voor het 3D-raster coderen/decoderen en inrichting voor foutbestendigheid en incrementele beeldconversie. Download PDFInfo
- Publication number
- NL1013639C2 NL1013639C2 NL1013639A NL1013639A NL1013639C2 NL 1013639 C2 NL1013639 C2 NL 1013639C2 NL 1013639 A NL1013639 A NL 1013639A NL 1013639 A NL1013639 A NL 1013639A NL 1013639 C2 NL1013639 C2 NL 1013639C2
- Authority
- NL
- Netherlands
- Prior art keywords
- triangle
- data
- tree
- error
- progressive
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
- H04N19/27—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving both synthetic and natural picture components, e.g. synthetic natural hybrid coding [SNHC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/30—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/89—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Generation (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Description
Werkwijze voor het 3D-raster coderen/decoderen en inrichting voor foutbestendigheid en incrementele beeldconversie
ACHTERGROND VAN DE UITVINDING
1. Gebied van de uitvinding 5 De onderhavige uitvinding heeft betrekking op een werkwijze voor het progressief coderen/decoderen en een inrichting voor driedimensionale (3D) rasterdata, gekenmerkt door foutbestendigheid en incrementele opbouw, die worden toegepast op de gebieden van motion picture experts group-4 10 synthetisch en natuurlijk hybride-coderen (MPEG-4 SNHC), virtuele werkelijkheid-modelleertaal (VRML), en dergelijke.
2. Beschrijving van de verwante techniek
Bij het verzenden van 3D-objecten die zijn opgebouwd uit 3D-rasterdata, is het heel belangrijk om verzonden data 15 incrementeel en foutbestendig te herstellen, evenals de 3D-rasterdata effectief te coderen. Wanneer een datafout wordt gegenereerd door een verzendpad-fout, maakt progressief herstellen mogelijk dat verzonden data gedeeltelijk kunnen worden hersteld en minimaliseert de hoeveelheid opnieuw te 20 verzenden data. Het foutbestendig herstellen maakt mogelijk dat verzonden data onafhankelijk kunnen worden hersteld in eenheden van de verzonden data, ongeacht de aanwezigheid van fouten die in een specifieke eenheid van de verzonden data zijn gegenereerd, waardoor de doelmatigheid van het data 25 herstellen wordt verhoogd en de standby-tijd van een gebruiker wordt verkort. De werkwijze voor het progressief en foutbestendig herstellen, die bestand is tegen zulke commu-nicatiepad-fouten, kan effectief worden toegepast bij draadloze communicatie of communicatie met lage verzendsnelheid. 30 De doelen van de onderhavige uitvinding zijn het construeren van connectiviteit, geometrie en fotometrie die nodig zijn voor het progressief coderen van 3D-rasterdata, en het verschaffen van bestendigheid tegen datafouten, en het voorstellen van een werkwijze voor het coderen/decoderen 35 ervan.
1013639 aangezien dij ae coventionexe werxwij ze voox iicl uuub-ren van 3D-rasterdata de rasterdata volledig gecodeerd zijn, is het bijna onmogelijk om data gedeeltelijk te herstellen voordat een complete bitstroom ontvangen is. Ook wanneer 5 door tijdens het verzenden gegenereerde verzendingspad-fouten slechts een gedeelte van de data beschadigd is, moet de complete bitstroom data opnieuw ontvangen worden. Op dit moment wordt ISO/IEC JTC1/SC29/WG11 MPEG98/W2301, "MPEG-4 SNHC Verification Model 9.0", voorgesteld door IBM Corpora-10 tion gehanteerd als een MPEG-4 SNHC 3D-rastercoderingstechnologie .
Bij MPEG-4 SNHC wordt een op VRML gebaseerde rastercodering ontworpen. Bij de VRML wordt een raster beschreven in een knooppuntvorm die wordt aangeduid als een IndexedFace-15 Set. Een van de hoofdtechnologieën voor het coderen van rasterdata is een topologische chirurgie die is voorgesteld door IBM Corp. Overeenkomstig deze technologie wordt aangenomen dat topologisch een gegeven raster hetzelfde is als een bol. Dan wordt het raster langs een gegeven snijrand 20 gesneden voor het genereren van een graaf die een driehoek overspant en een binaire boomstructuur heeft. Daarbij is de voor het snijden van het raster gedefinieerde snijrand zodanig geconfigureerd dat hij hoekpunten met elkaar verbindt, dat wil zeggen, hij wordt verschaft alseen boomstruc-25 tuur met een lus. De snij rand wordt aangeduid als een hoekpunt-spanning graaf. Zo worden twee boomstructuren, dat wil zeggen, de driehoek-spanning graph en de hoekpunt-spanning graph, gecodeerd/gedecodeerd, waardoor het originele raster wordt hersteld zonder verlies.
30 Overeenkomstig MPEG-4 SNHC is het zo dat ofschoon er in een VRML-bestand een aantal IndexedFaceSets kunnen zitten, comprimering in principe wordt verricht op de eenheid van één IndexedFaceSet. Het is echter mogelijk om met behulp van verscheidene verbonden componenten een enkele IndexedFaceSet 35 te vormen.
In het algemeen moet voor het snel verwerken van 1 01 3639 3 graphics modellering in eenheden bestaande uit driehoeken worden uitgevoerd. Deze driehoeken worden niet willekeurig gevormd maar worden bij voorkeur met elkaar verbonden idne vorm van strippen of waaiers. Ook is het zo dat hoe meer 5 symbolen herhaaldelijk worden weergegeven, des te beter de comprimeerbaarheid is. Daartoe wordt door IBM Corp. met het oog op snelle verwerking van graphics en een betere comprimeerbaarheid een raster voorgesteld dat wordt gevormd door een enkele lange driehoekige strip.
10 De fig. IA tot en met 1F tonen een conventionele procedure voor het genereren van een hoekpunt-spanning graph en een driehoek-spanning graph in een voorbeeld van een driehoekig rooster. Fig. IA en 1D tonen een werkwijze om een raster te snijden langs snij randen die zijn getrokken met 15 een dikke lijn. Fig. 1B toont de totale vorm van de snij randen. Fig. IE toont de configuratie van randen en hoekpunten die zijn geproduceerd langs de in fig. 1B getoonde snijranden. Fig. 1C toont een hoekpunt - spanning graph die is gemaakt door het verbinden van hoekpunten die snijpunten 20 aangeven. Fig. 1F toont een driehoek-spanning graph die is gedefinieerd als een strip die bestaatuit een groep verbonden driehoeken die is gegenereerd door het raster langs de hoekpunt-spanning graph te snijden. Ook wanneer de driehoek-spanning graph wordt gegenereerd door de werkwijze die is 25 getoond in de fig. IA tot en met 1F, kan de lengte van een van de twee aftakgangen in de driehoek-spanning graph aanzienlijk korter zijn dan de andere.
Fig. 2A tot en met 2D tonen een voorbeeld van een topologische chirurgietechniek toegepast op feitelijke 30 rasterdata. In een driehoek-spanning graph kan een tak worden afgetakt in verschillende takken. Fig. 3 toont een voorbeeld van een hoekpunt-spanning graph met een lus, waarbij een hoekpunt-gang terugkeert naar een locatie van een van de vorige hoekpunten. Aangezien een raster in het 35 algemeen is gevormd van verscheidene verbonden componenten, genereert elke verbonden component die het raster vormt een 1013639 paar in £ig. IF getoonde hoekpunt-spanning graphs en een in fig. 1C getoonde driehoek-spanning graph. Wanneer een enkele IndexedFaceSet wordt gecodeerd, kunnen daarom verscheidene driehoek-spanning graph/hoekpunt-spanning graph paren worden 5 verkregen.
De werkwijze voor het herstellen van de met behulp van de hierboven beschreven topologische chirurgie-technologie gecodeerde data is als volgt: 1. Een begrenzingslus wordt gegenereerd onder gebruik-10 making van een hoekpunt-spanning graph.
2. Wanneer het derde hoekpunt van een driehoek die in een driehoek-spanning tree is af getakt, wordt aangeduid als een Y-hoekpunt, wordt het Y-hoekpunt berekend onder gebruikmaking van bit stromen van de driehoek-spanning tree, en 15 worden groepen driehoeken of polygonen met de connectiviteit van een stripvorm gegenereerd. Hier worden de driehoeken of polygonen gevormd onder gebruikmaking van een driehoek-verplaatsingsbit van de driehoek-spanning graph.
3. Rasters worden hersteld in overeenstemming met de 20 topologische geometrie onder gebruikmaking van de rasterdata van een boomstructuur die is geconstrueerd in de stappen 1 en 2.
Verliesloos comprimeren onder gebruikmaking van het rekenkundig coderen van de hoekpunt-spanning graph en de 25 driehoek-spanning graph is voorgesteld door IBM Corp. Overeenkomstig deze werkwijze is het echter zo dat om de oorspronkelijke structuur te reconstrueren, alle bitstromen moeten worden ingevoerd en de volgende problemen zich voordoen: 30 1. Aangezien alle bitstromen moeten worden ingevoerd om rasterdata te decoderen, moeten bij elk geval van een ver-zendingsfout allee bitstromen opnieuw worden verzonden.
2. In het geval waarbij de omvang van de gecomprimeerde data groot is vergeleken met de bandbreedte, is er een lange 35 tijd nodig om de data geheel te verzenden en moet een gebruiker die tijd wachten. Teneinde de wachttijd van de 1013639 5 gebruiker te reduceren, moeten rasters onder gebruikmaking van de verzonden data gedeeltelijk worden hersteld en gerenderd. Overeenkomstig de bestaande technologieën is het aantal driehoeken dat kan worden hersteld, klein vergeleken 5 met de hoeveelheid verzonden bits, ten aanzien van de structuur van bitstromen.
Om de bezwaren van de gangbare technologie te verhelpen, moeten de volgende functies kunnen worden verricht.
I 1. Rasterdata moeten worden gepartitioneerd door een I 10 effectieve eenheid-afmeting ten aanzien van de bandbreedte I van een verzendingspad of de eigenschap van een decoder, en I foutbestendigheid moet mogelijk worden gemaakt zodat bit- I stromen met de eenheid-afmeting door de decoder worden I hersteld en gerenderd.
I 15 2. Werkwijzen voor incrementeel coderen/decoderen I moeten mogelijk worden gemaakt zodat het gedeeltelijk her- I stellen en renderen van slechts een gedeelte van de thans I ontvangen data mogelijk is.
I Het uitvoeren van deze twee functies onder handhaving 20 van de basisstructuur van de conventionele werkwijze die is I voorgesteld door IBM Corp. is afhankelijk van het effectief I verwerken van de begrenzingslus en het Y-hoekpunt, zoals I getoond in fig. 4. In fig. 1F zijn de punten 10, 14 en 18 Y-hoekpunten. Teneinde een Y-hoekpunt te berekenen, moet I 25 tenminste een van twee afgetakte driehoek-gangen worden bewerkt. Met andere woorden, voor driehoeken in een drie- I hoek-gang, kunnen de indicia van de hoekpunten van elke I driehoek worden bepaald onder gebruikmaking van het ver- I plaatsingsbit-patroon en de begrenzingslus. Echter voor het I 30 bepalen van de indicia van Y-hoekpunten die de derde hoek- punten van aftakdriehoeken zijn, moeten alle bitstromen voor I een van de twee driehoek-gangen naast de aftakdriehoeken I worden ontvangen. Daarom kunnen de driehoeken naast de I aftakdriehoeken niet worden hersteld om te worden gerenderd I 35 totdat volgende bitstromen zijn ontvangen. Dit probleem doet zich niet voor bij de conventionele werkwijze die door IBM- 6
Corp. wordt voorgesteld, die is gebaseerd op de veronderstelling dat alle bitstromen worden ontvangen in de decoder. Om de driehoeken incrementeel te herstellen en weer te geven, moet dit probleem echter worden opgelost.
5 De definities van termen die in de techniek worden gehanteerd en op de uitvinding betrekking hebben zullen eerst als volgt worden beschreven.
► Polygonaal raster: een polygonaal raster wordt gedefi nieerd door coördinaten (geometrie) in een 3D-ruimte van 10 hoekpunten, de verhouding (connectiviteit) tussen de respectievelijke vlakken en de hoekpunten die de vlakken vormen, en fotometrie zoals kleur, normaleof textuurinformatie, die geen invloed hebben op de geometrische structuur van een raster maar wel invloed hebben op het ui terlijk van het 15 raster.
► Vlak: een vlak is een groep hoekpunt-indicia en een hoek is een paar (vlak, hoekpunt)-sets. Een eenvoudig vlak is een groep hoekpunt-indicia waarin verschillende indicia een vlak vormen. Bij de onderhavige uitvinding zal alleen een polygo- 20 naai raster dat uit eenvoudige vlakken bestaat worden behandeld.
► Rand: een rand is een paar hoekpunt-indicia. Wanneer een rand voorkomt op alleen één vlak in een polygonaal raster, wordt de rand gedefinieerd als een "begrenzingsrand". Wan- 25 neer een en dezelfde rand voorkomt op verscheidene vlakken, wordt de rand gedefinieerd als een "enkele" rand. Wanneer een rand voorkomt op slechtstwee naast elkaar gelegen vlakken, wordt de rand gedefinieerd als een "interne" rand. De begrenzingsrand en de interne rand worden gedefinieerd als 30 "normaal".
► Dual graph: Een punt wordt gedefinieerd in elk vlak van een raster en daarna worden punten die zijn gedefinieerd boven, en lopen door, de binnenrand tussen naast elkaar gelegen vlakken, met elkaar verbonden om te worden gedefi- 35 nieerd als een dual graph. Fig. 5A toont een polygonaal 1 ΓΜ OR on 7 raster en fig. 5B is een dual graph van het in fig. 5A getoonde polygonale raster.
► Virtuele werkelijkheid modelleertaal (VRML): De VRML is een grafisch standaardformaat dat is vervaardigd om een 5 virtuele ruimte te beschrijven en verzenden over het internet .
► Moving Pictures Expert Group (MPEG): De MPEG is een groep voor het uitvoeren van internationale standaardiseringsacti-viteiten voor het standaardiseren van compressie-formats 10 voor het verzenden van een verscheidenheid aan media zoals video.
► Raster: Een raster is een voorstelling van een object dat is geconstrueerd uit verscheidene polygonen.
► Knooppunt: Een knooppunt is een hoekpunt in een hoekpunt 15 spanning graph of een in VRML gebruikte minimum beschrij- vingseenheid.
► Topologische chirurgie: Topologische chirurgie is een door IBM voorgestelde raster-coderingswerkwijze, waarbij een raster langs een gegeven pad wordt gesneden om het raster de 20 vorm van strips te verlenen.
► Hoekpunt spanning graph: een hoekpunt spanning graph is een weg voor het snijden van een raster in de topologische chirurgie.
► Driehoek spanning tree: een driehoek spanning tree is een 25 binaire boom in de vorm van een driehoekige strip die is gemaakt door een raster langs de hoekpunt spanning graph te snijden.
► vlast: vlast geeft aan of de actuele gang al dan niet de laatste tak is. Wanneer de actuele gang de laatste tak is, 30 is de vlastwaarde 1; anders is hij 0.
► vleaf: vleaf geeft aan of de actuele hoekpunt-gang eindigt met een blad of een tak. Wanneer de actuele hoekpunt-gang eindigt met een blad, is de waarde van vleaf 1; anders is hij 0.
35 ► vrun: een vrun is een groep verbonden hoekpunten en ein digt met een tak of vleaf.
1 Π1 9 P o n 8 ► vlength; vlength is de lengte van een hoekpunt-gang.
► loopstart: het blad van een hoekpunt-gang kan met een andere hoekpunt-gang samenkomen om een lus te vormen. In zo'n geval wordt het begin van de lus aangegeven door de 5 loopstart.
► loopend: in het geval waarbij het blad van een hoekpunt-gang een lus vormt, wordt het einde van de lus aangegeven door de "loopend".
► loopmap: een loopmap geeft connectiviteit tussen het 10 lusbegin en het luseind aan en bestaat uit een groep indicia die randen van het luseind tot het lusbegin met elkaar verbinden.
► trun: een trun is een groep opeenvolgende driehoeken en het einde ervan is een blad-driehoek of een tak-driehoek.
15 ► tleaf: tleaf geeft aan of de gang van een driehoek eindigt met een blad-driehoek of een tak-driehoek. Wanneer de gang van een driehoek eindigt met een blad-driehoek, is de waarde van tleaf l; anders is hij 0.
► tmarching: tmarching beschrijft het aspect van verplaat-20 sing van driehoeken. Wanneer een strip aan zijn rechtergrens een rand heeft, is de waarde van tmarching 1; wanneer een strip aan zijn linkergrens een rand heeft, is de waarde van tmarching 0.
► polygonedge: polygonedge geeft aan of een actuele rand van 25 het oorspronkelijke rastermodel wordt gegeven of wordt ingevoerd om de polygoon voor te stellen als een groep driehoeken. Wanneer een actuele rand van het oorspronkelijke rastermodel wordt gegeven, is de waarde van polygonedge 1; anders is hij 0.
30 ► triangulated: triangulated geeft de aanwezigheid van een polygoon in het raster aan.
► nvertices: nvertices geeft het aantal hoekpunten aan.
► nloops: nloops geeft het aantal lussen aan.
► nvedges: nvedges geeft de omvang van een vrun aan.
35 ► nvleaves: nvleaves geeft het aantal bladen in een hoekpunt spanning graph aan.
1013639 9 ► bitspernvedges: bitspernvedges geeft het aantal voor nvedges gebruikte bits aan.
► simple: wanneer in een hoekpunt spanning graph lussen aanwezig zijn, is de waarde van simple 0; en anders 1.
5 ► ntriangles: geeft het aantal driehoeken in een driehoek spanning graph aan.
► ntbranches: ntbranches geeft het aantal driehoeken aan die worden afgetakt in een driehoek spanning graph.
► nmarchingtrans en nmarchingkeepleft zijn statistische 10 modellen voor compressie van Tmarching.
► npolytrans en nkeeppoly zijn statistische modellen voor compressie van polygonedge.
Fig. 6 is een conceptueel blokschema van een conventionele werkwijze voor het coderen van driedimensionale (3D) 15 rasters. In fig. 6 is een 3D-rasterobject 100 verdeeld in connectiviteit, geometrie en fotometrie en wordt gecodeerd door een coderingsdeel 101 dat een connectiviteit-codeerder 102, een geometrie-codeerder 103 en een fotometrie-codeerder 112 heeft. Hierbij wordt hoekpunt-structuur informatie 105 20 van de connectiviteit-codeerder 102 verzonden naar de geometrie-codeerder 103. De informatie die door de connectiviteit-codeerder 102, een geometrie-codeerder 103 en de fotometrie-codeerder 112 wordt gecomprimeerd, wordt gecombineerd in een bitstroom en de bitstroom wordt door een entropie-25 codeerder 104 gecomprimeerd to een gecomprimeerde bitstroom 111.
De gecomprimeerde bitstroom 111 wordt ingevoerd in een decodeerdeel 112. Met andere woorden, de gecomprimeerde bitstroom lil wordt via een entropie-decodeerder 106 gede-30 comprimeerd en verdeeld in connectiviteit, geometrie en fotometrie om daarna te worden gedecodeerd door respectievelijk een connectiviteit-decodeerder 107, een geometrie-decodeerder 108 en een fotometrie-decodeerder 113. Net als in het codeerdeel 101 wordt hoekpunt-structuur informatie 35 109 van de connectiviteit-decodeerder 107 verzonden naar de
1Π1QfiOO
10 geometrie-decodeerder 108. Een gedecodeerd 3D rasterobject 110 kan worden geconstrueerd onder gebruikmaking van de gedecodeerde connectiviteit, geometrie en fotometrie.
In fig. 6, kan een 3D-raster in de vorm van een gecom-5 primeerde bitstroom worden verzonden in een communicatiepad. Aangezien de conventionele MPEG-werkwijze voor het comprimeren van data echter gebruik maakt van de entropie-codeerder 104, is de werkwijze niet bestand tegen verzendfouten die in een communicatiepad worden gegenereerd. Daarom stelt de on-10 derhavige uitvinding een technologie voor het oplossen van de verzendfouten en het progressief herstellen van 3D-raster data onder gebruikmaking van verzonden informatie overcon-nectiviteit, geometrie, en andere informatie voor.
SAMENVATTING VAN DE UITVINDING
15 Om de bovenstaande problemen op te lossen, is het een doel van de onderhavige uitvinding, om te voorzien in een werkwijze voor het progressief coderen/decoderen van 3D-rasterinformatie, door middel waarvan een netwerk-belasting en een verzendtijd kunnen worden gereduceerd door alleen een 20 gedeelte opnieuw te verzenden wanneer een overdrachtsfout wordt gegenereerd of de data worden hersteld onafhankelijk van het deel dat een overdrachtsfout bevat, een toename in het aantal gegenereerde bits door foutherstel afhankelijk van netwerklagen kan worden geminimaliseerd, en de 3D-infor-25 matie progressief kan worden hersteld onder gebruikmaking van connectiviteit, geometrie en fotometrie van het overgedragen deel.
Bijgevolg is om het bovenstaande doel te bereiken voorzien in een werkwijze voor het coderen van een polygo-30 naai driedimensionaal (3D) rasterobject (MO) dat bestaat uit de stappen van (a) het verdelen van de polygonale 3D MO in een of meer verbonden componenten, (b) het genereren van een hoekpunt-graaf en driehoek-tree/driehoek-data voor elk van de verbonden componenten, en (c) het reconstrueren van de 35 hoekpunt-graaf en driehoek-tree/driehoek-data die de verbon- 11 den component vormen in conformiteit met rasterobject-basis-lagen (MOBL's) die alle in staat zijn om onafhankelijk gedecodeerd voor de respectievelijke verbonden componenten en deze daarna te coderen.
5 Volgens een ander aspect van de onderhavige uitvinding is voorzien in een progressieve en foutbestendige werkwijze voor het coderen van een polygonaal driedimensionaal (3D) rasterobject (MO), dat bestaat uit de stappen (a) van het verdelen van de polygonale 3D MO in één of meer verbonden 10 componenten, (b) het genereren van een hoekpunt-graaf en een paar bestaande uit driehoek-tree/driehoek-data voor elk van de verbonden componenten, en (c) het coderen van de hoekpunt-graaf en driehoek-tree/driehoek-data die de verbonden componenten vormen die in conformiteit zijn met rasterob-15 ject- basislagen (MOBL's) die elk een vast type bitstroom hebben die in onafhankelijk te worden gedecodeerd voor de respectievelijke verbonden componenten.
Volgens de onderhavige uitvinding is tevens voorzien in een progressieve en foutbestendige werkwijze voor het code-20 ren van een polygonaal driedimensionaal (3D) rasterobject (MO), die bestaat uit de stappen (a) voor het verdelen van de polygonale 3D MO in één of meer verbonden componenten, (b) het genereren van een hoekpunt-graaf en een paar bestaande uit driehoek-boom/driehoek-data voor elk van de 25 verbonden componenten, en (c) het coderen van de hoekpunt-graaf en driehoek-boom/driehoek-data die de verbonden componenten vormen in conformiteit met rasterobject-basislagen (MOBL's) die elk een variabele bitstroom-type hebben in overeenstemming met de eigenschappen van te coderen informa-30 tie, die onafhankelijk kunnen worden gedecodeerd voor de respectievelijke verbonden componenten.
Volgens een ander aspect van de onderhavige uitvinding is voorzien in een progressieve en foutbestendige coderings-werkwijze van een polygonaal driedimensionaal (3D) rasterob-35 ject (MO), die bestaat uit de stappen (a) waarbij de polygonale 3D MO wordt verdeeld in een of meer verbonden componen- UCU| \u; ixcu vjciieicicii veui ecu uue^uu t * y ι αα^ eu ecu. ραοι driehoek-boom/driehoek-data voor elk van de verbonden componenten; en (c) het coderen van de hoekpunt-graaf die de verbonden componenten vormt; en (d) het construeren van de 5 driehoek-boom/driehoek-data als virtuele verbonden componenten en het coderen ervan door virtuele bitparen toe te voegen aan data-partities die zijn verkregen door partitio-nering van de driehoek-boom/driehoek-data.
Om het bovenstaande doel van de onderhavige uitvinding 10 te bereiken, wordt bij het coderen van een driedimensionaal (3D) rasterobject (MO) voor incrementele opbouw en foutbestendigheid voorzien in een werkwijze om de driehoek 3D OM te partitioneren in te verpakken data-partities, welke werkwijze bestaat uit de stappen (a) het calculeren van 15 totale bitgeneratie-hoeveelheden driehoeken terwijl de in een driehoek-boom aanwezige driehoeken sequentieel worden getraverseerd, (b) het accumuleren van de totale bitgenera-tie-hoeveelheden die zijn berekend in stap (a); en (c) wanneer de geaccumuleerde waarde van stap (b) kleiner is dan 20 het product van een pakket-afmeting en een pakket-speling, het uitvoeren van de stappen (a) en (b) op de volgende getraverseerde driehoek die in de driehoekenboom aanwezig is, en indien dit niet het geval is, worden driehoek-boom/ driehoek-data van de getraverseerde driehoeken gepartitio-25 neerd in data-partities die moeten worden verpakt.
De onderhavige uitvinding voorziet tevens in een progressieve en foutbestendige werkwijze voor het decoderen van een polygonaal driedimensionaal (3D) rasterobject (MO), die bestaat uit de stappen (a) het verdelen van ingevoerde 30 bitstromen in eenheden rasterobject-basislagen (MOBL's); (b) het vaststellen van een partitie-type van de MOBL's; (c) wanneer een hoekpunt-graaf in de MOBL's, het decoderen van de hoekpunt-graaf voor het genereren van een grenslus-tabel; (d) wanneer in de MOBL's driehoek-boom/driehoek-data aanwe-35 zig is, het decoderen van de driehoek-boom/driehoek-data voor het genereren van 3D MO; en (e) het herhaaldelijk
1n1qfi 3Q
13 uitvoeren van de stappen (a) tot en met (d) voor het genereren van een 3D MO.
Volgens een ander aspect van de onderhavige uitvinding is voorzien in een progressieve en foutbestendige werkwijze 5 voor het decoderen van een polygonaal driedimensionaal (3D) rasterobject (MO), die bestaat uit de stappen (a) waarbij ingevoerde bitstromen worden verdeeld in eenheden rasterobject -basislagen (MOBL's); (b) het bepalen van een partitie-type van de MOBL's; (c) wanneer in de MOBL's een hoekpunt-10 graaf aanwezig is, het decoderen van de hoekpunt-graaf om een grenslus-tabel te genereren; (d) wanneer in de MOBL's driehoek-boom/driehoek-data aanwezig is, het decoderen van de driehoek-boom/driehoek-data in eenheden van verbonden componenten voor het genereren van driehoek 3D MO; en (e) 15 wanneer de verbonden componenten in de stap (d) virtuele verbonden componenten zijn, het herhaaldelijk uitvoeren van de stappen (a) tot en met (d), en wanneer dit niet het geval is, het completeren van het genereren van een driehoek 3D MO.
20 KORTE BESCHRIJVING VAN DE TEKENINGEN
De bovenstaande doelen en voordelen van de onderhavige uitvinding zullen duidelijker worden door uitvoerige beschrijving van een voorkeuruitvoeringsvorm ervan onder verwijzing naar de bijgevoegde tekeningen, waarbij: 25 de fig. IA tot en met 1F een conventionele werkwijze voor het genereren van een hoekpunt spanning graph en een driehoek spanning graph tonen in een voorbeeld van een driehoekig raster; de fig. 2A tot en met 2D een voorbeeld van een topo-30 logische chirurgie tonen; fig. 3 een voorbeeld van een hoekpunt spanning graph met een lus toont; fig. 4 de vorming van een grenslus in een topologische chirurgie toont; Λ Λ Λ O C O Λ de fig. 5A en 5B een polygonaal raster en een voorbeeld van een dual graph ervan tonen; fig. 6 een conceptueel diagram van een conventionele werkwijze voor het coderen van driedimensionale (3D) raster-5 informatie is; fig. 7 een conceptueel diagram van de afbeelding van progressieve 3D-rasterobjeet-informatie is; de fig. 8A en 8B voorbeelden van 3D rasterobj eet (MO) en rasterobjeet-basislaag (MOBL) tonen; 10 fig. 9 een conceptueel diagram is dat de verhouding tussen een paar driehoek-boom en driehoek-data en een grens-lus-indext laat zien; de fig. 10A tot en met IOC conceptuele diagrammen zijn van het coderen onder gebruikmaking van oriëntatie-informa-15 tie; de fig. 11A en 11B diagrammen zijn voor het vergelijken van de coderingsopdrachten in afhankelijkheid van de aanwezigheid van oriëntatie-informatie; de fig. 12A tot en met 121 een werkwijze voor het 20 partitioneren van vaste data tonen; de fig. 13A en 13B conceptuele diagrammen van het partitioneren van data zijn; de fig. 14A tot en met 14D een werkwijze voor het partitioneren van variabele data tonen; 25 de fig. 15A tot en met 15D partities tonen die zijn gepartitioneerd met behulp van de werkwijze voor het partitioneren van variabele data; fig. 16 datapartionering in een hoofdtak laat zien; fig. 17 een werkwijze voor het partitioneren van data 30 laat zien waarbij gebruik wordt gemaakt van tt_mean; de fig. 18A tot en met 18C een werkwijze voor het vormen van virtuele verbonden componenten laten zien; fig. 19 een voorbeeld van het transformeren van een polygonaal raster naar een driehoekig raster laat zien; 1013639 15 de fig. 20A tot en met 20E voorbeelden van het partiti-oneren in een polygonaal raster en syntaxen daarvan laten zien; fig. 21 een werkwijze voor het indexeren van een grens-5 lus en een werkwijze voor het coderen van de aanhef-informatie van de met behulp daarvan geproduceerde partities laat zien; fig. 22 een data-partitionering inclusief een grenslus toont; 10 de fig. 23A en 23B werkwijzen voor het definiëren van grenslus-indicia laten zien; de fig. 24A tot en met 25E de codering van geometrie laten zien; de fig. 25A en 25B syntaxen voor het ordenen van data 15 zoals geometrie, kleur, normald of texCoord-informatie tonen; en fig. 26 een conceptueel diagram van een geometrie-coderingswerkwij ze is.
BESCHRIJVING VAN DE VOORKEURUITVOERINGSVORMEN 20 Voor het progressief bewerken van een 3D rasterobject wordt bij de onderhavige uitvinding een nieuwe rasterstruc-tuu voorgesteld die is getoond in fig. 7. Zoals getoond in fig. 7, kan een 3D-rasterobject (MO) worden verdeeld in verscheidende verbonden of niet-verbonden componenten. De in 25 het 3D rasterobject aanwezige componenten kunnen worden gereconstrueerd als verscheidene rasterobject-lagen (MOL's). Hier bevat elke MOL een of meer rasterobject-basislagen (MOBL's). De MOL bevat connectiviteit, geometrie en fotome-trie die hij nodig heeft voor het herstellen van zichzelf. 30 Met andere woorden, de MO wordt gedefinieerd als de eenheid van een te coderen 3D rasterobject en is verdeeld in verscheidene lagen in overeenstemming met variabele beeldkwaliteit en functies van rasterdata. Elke laag wordt gedefinieerd als een rasterobjectlaag (MOL) . Ook wanneer een 3D 35 rasterobject wordt gevormd van verscheidene niet-verbonden
1 n 136 s.Q
* w onafhankelijke rasterdata-eenheden (dat wil zeggen, verbonden componenten), worden de onafhankelijke rasterdata-eenheden gecombineerd of gepartitioneerd in overeenstemming met de omvang van de te coderen data of andere kenmerken, die 5 wordt gedefinieerd als een rasterobjeet-basislaag.
De fig. 8A en 8B tonen een 3D rasterobject (MO) en rasterobject-basislagen (MOBL's).
In de hierboven beschreven nieuwe rasterstructuur is een werkwijze voor het bepalen van de index van een grenslus 10 waarbij rekening is gehouden met een Y-hoekpunt nodig voor het effectiever uitvoeren van progressief herstel/renderen. Teneinde een driehoekraster te herstellen, zoals getoond in fig. 9, zijn grenslus-indicia van beginpunten van rechter-en linkergrens gegeven in een partitie van het paar drie-15 hoek-boom (tt) en driehoek-data (td) . In fig. 9 geeft refe-rentieteken m een rechter begin-index, geeft n een linker begin-index aan en geeft een centrale pijl de volgorde van gecodeerde driehoeken aan. Hierbij is op basis van de ver-plaatsingsrichting de aan de rechterkant van de driehoeks-20 trip gepositioneerde grens een rechtergrens, en is de aan de linkerkant van de driehoekstrip gepositioneerde grens een linkergrens, en is de gearceerde driehoek binnen een aftak-driehoek. Teneinde de grenslus-indicia van de respectievelijke driehoeken van het paar tt/td vast te stellen, is 25 verder de volgende informatie nodig.
• driehoek voorafgaand aan aftak-driehoek
Zoals getoond in fig. 9, worden in het geval van driehoeken voorafgaand aan een aftak-driehoek indicia van de grenslus in de linkergrens met één verhoogd en in de rech-30 tergrens met één verlaagd. Zo kunnen telkens wanneer een verplaatsingsbit wordt gedecodeerd, drie hoekpunten van de driehoek onmiddellijk worden hersteld.
• Aftak-driehoek
In fig. 9 is een aftak-driehoek opgebouwd uit drie 35 hoekpunten b[m - 3], b[m - 10] en b[n + 2] . Wanneer echter de driehoek-informatie van de rechtertak in de aftak-drie- 1013639 17 hoek, dat wil zeggen, de informatie over het aantal driehoeken, niet wordt ontvangen, is het niet mogelijk om erachter te komen wat de index m - 10 in de grenslus van het derde hoekpunt, i.e., het Y-hoekpunt, is. Bijgevolg moet voor het 5 bepalen van de index van het Y-hoekpunt de informatie over het aantal driehoeken in een van de zijtakken worden ontvangen. Teneinde erachter te komen wat het aantal takken aan één kant is, is de informatie over de driehoek-gang in de tt/td-paar nodig. Wanneer in fig. 9 het aantal driehoeken op 10 de rechter takken p is, kan men het aantal gebruikte hoekpunten gemakkelijk als volgt te weten komen: [formule 1] aantal hoekpunten gebruikt in één zijtak = p + 2 In fig. 9 kunnen bijvoorbeeld de indicia van de grens-15 lus van het derde hoekpunt, d.w.z. Y-hoekpunt, van de aftak-driehoek worden bepaald onder gebruikmaking van het feit dat de index van het hoekpunt op de rechter grens m - 3 is en dat het aantal driehoeken in de tak 6 is, als volgt:
Index van Y-hoekpunt = (m-3)-(6+2-1) = 3-7 = m-10.
20 · Driehoeken in de tak die is afgetakt van de aftak-driehoek
In het geval waarbij de Y-hoekpunt-index wordt verschaft, kunnen de respectievelijke driehoeken worden hersteld en gerenderd op dezelfde manier als in het geval waarbij de driehoek voorafgaand aan een aftak-driehoek wordt 25 verwerkt. Wanneer echter het Y-hoekpunt van de aftak-driehoek niet wordt bepaald, kunnen de indicia van de hoekpunten van de driehoek niet worden bepaald. Dit komt omdat de indicia van de hoekpunten die op de linker grens liggen, niet kunnen worden bepaald wanneer het Y-hoekpunt in de 30 rechtertak die is getoond in fig. 9 niet bepaald is.
Zoals hierboven beschreven, moeten voor het progressief herstellen en renderen de Y-hoekpunten effectief worden bepaald. Daarom wordt bij de onderhavige uitvinding een werkwijze voorgesteld die het progressief herstellen en 35 renderen mogelijk maakt door oplossing van het Y-hoekpunt-probleem dat zich voordoet bij de aftak-driehoek.
1n136 sa
Ook worden bij de onderhavige uitvinding, ten behoeve van de foutbestendigheid, bij het partitioneren van raster-data met inachtneming van de bandbreedte van een overdracht spad of de kenmerken van een decodeerder, twee werk-5 wijzen gebruikt, te weten, een werkwijze van vaste partitio-nering en een werkwijze van variabele partitionering. Het onafhankelijk herstellen en renderen van de gepartitioneerde data zal hieronder worden beschreven. Hierbij is het zo dat terwijl de werkwijze van het vast partitioneren voor alle 10 gegeven modellen een en dezelfde partitioneringswerkwijze hanteert, de werkwijze voor het variabel partitioneren verschillende partitioneringswerkwijzes hanteren in overeenstemming met het type bitstroom dat door data-partitioneren wordt beheersd, dat wil zeggen, hoekpunt-graaf, driehoek-15 boom, driehoek-data, en dergelijke.
<Progressieve coderingswerkwijze waarbij het Y-hoekpunt in aanmerking wordt genomen>
Bij de conventionele topologische chirurgie is de coderingsvolgorde met betrekking tot alle tt/td-paren vast. 20 Overeenkomstig deze werkwijze wordt, teneinde alleen de prestaties van het progressief renderen te verbeteren, de informatie die de indicia en het totale aantal van alle Y-hoekpunten die in de rasterdata zijn gegenereerd, samen met bitstromen overgebracht naar een decodeerder. Deze werkwijze 25 is echter ten aanzien van de coderingsefficiêntie onwenselijk. . Daarom is een effectiever coderingswerkwijze nodig, die kan voldoen aan beide vereisten, dat wil zeggen, een progressief rendereffect en een hoge mate van coderingseffi-ciëntie.
30 In de topologische chirurgie kan het progressief rende ren op basis van het herstellen van polygonen niet effectief worden gerealiseerd omdat het verschil in de lengtes van afhankelijke bomen groot is en een effectieve bepaling van de index van het Y-hoekpunt van de aftak-driehoek waarvan de 35 afhankelijke boom omvangrijke rasterdata bezit, niet kan worden gerealiseerd. Wanneer de lengtes van afhankelijke 1013639 19 bomen dus verschillen, dat wil zeggen, wanneer de afmetingen van twee aftakkende takken niet gelijk zijn, is het effectiever om de kleinere tak eerder te coderen met het oog op het bepalen en renderen van Y-hoekpunten. Wanneer daarbij de 5 data worden verkregen via de in de figs. 2A tot en met 2D getoonde topologische chirurgie, kan het aantal driehoeken van één zijtak kleiner zijn dan dat van de andere zijtak. Daarom wordt bij de onderhavige uitvinding een werkwijze voorgesteld voor het afzonderlijk vaststellen van de traver-10 seervolgorde op basis van aftak-driehoeken door de oriëntatie- informatie -openingen te presenteren in afhankelijkheid van de afmeting van afhankelijke bomen, die niet is gedefinieerd in de topologische chirurgie. Met andere woorden, wanneer de oriëntatie-informatie "1" is, is de traverseer-I 15 volgorde dezelfde als die welke in het begin gegeven is.
I Bijgevolg wordt de linker (of rechter) tak het eerst be- I zocht. Anders, wanneer de oriëntatie-informatie "0" is, wordt de rechter (of linker) tak het eerst bezocht om te I worden gecodeerd. Daarom kunnen de effecten van progressief I 20 decoderen en renderen worden verbeterd door de oriëntatie- I informatie te verzenden naar een decodeerder. Aangezien de oriëntatie-informatie ook mogelijk maakt dat een willekeuri- I ge rasterboom kan worden verdeeld in een hoofdboom en een I afhankelijke boom, kan een meer effectieve data-partitione- 25 ring worden verkregen terwijl de connectiviteit wordt ge- I handhaafd.
I De fig. 10A tot en met IOC tonen een voorbeeld van I codering waarbij gebruik gemaakt wordt van oriëntatie-infor- I matie, waarbij gearceerde driehoeken staan voor aftak-drie- I 30 hoeken die in een hoofdtak aanwezig zijn en de oriëntatie- I informatie bezitten; lijnen in de binair raster-boom geven een hoofdtak met afhankelijke bomen aan, en lijn buiten de binair raster-boom geven de traverseervolgorde in een afhan- I kelijke boom aan, dat wil zeggen, een afbeeldrichting van 35 indicia van de grenslus in een decodeerder. Hierbij kan worden vastgesteld dat de afbeeldrichtingen van indicia van 20 de grenslus, zoals getoond in fig. 10A, identiek zijn aan de oriëntatie-informatie van elke afhankelijke boom. Daarentegen kan de afbeeldrichting van indicia van de grenslus geheel worden gedefinieerd als in klokwijzerrichting of 5 tegen de klokwijzerrichting in, ongeacht de oriëntatie-informatie van elke afhankelijke boom. Als wordt aangenomen dat het aantal te herstellen driehoeken in de afhankelijke boom t bedraagt, verschillen de formules van berekening van de Y-hoekpuntwaarden in overeenstemming met de oriëntatie-10 informatie als volgt.
• Wanneer eerst de rechtertak wordt gecodeerd (d.w.z., wanneer de oriëntatiewaarde 1 bedraagt)
Wanneer de index van het hoekpunt van een aftak-drie-hoek in de rechtergrens van de grenslus p bedraagt, is de 15 index van het Y-hoekpunt als volgt:
Positie van Y-hoekpunt = p - t - 1 • Wanneer eerst de linkertak wordt gecodeerd (d.w.z., wanneer de oriëntatiewaarde 0 bedraagt)
Wanneer de index van het hoekpunt van een aftak-drie-20 hoek in de linkergrens van de grenslus q bedraagt, is de index van het Y-hoekpunt als volgt:
Positie van Y-hoekpunt = q + t + l
In de fig. 10B en IOC geeft verwijzingsteken 'tr' een driehoek-gang aan, geeft 'tl' tleaf-informatie aan, geeft 25 'to' oriëntatie-informatie aan, en geeft 'tm' verplaat sings -informatie aan. Fig. 10B toont de ordening van oriëntatie-informatie in een driehoek en fig. IOC toont de ordening van oriëntatie-inf omat ie in driehoek-data. De in fig. 10B getoonde ordening kan gemakkelijk worden gerealiseerd. De in 30 fig. IOC getoonde ordening maakt rendering mogelijk meteen nadat de data van een driehoek zijn hersteld, waardoor de vertragingstijd wordt verkort, en gebruikt vergeleken met de in fig. 10B getoonde ordening een kleinere geheugencapaciteit in de architectuur van een decodeerder, waardoor de 35 kosten worden gereduceerd.
1013639 21
Fig. 11A toont de traversee-volgorde in de conventionele topologische chirurgie en fig. 11B toont de traverseer-volgorde in overeenstemming met de afmetingen van takken aan elke zijde van de aftak-driehoeken. De fig. 11A en 11B zijn 5 diagrammen voor het tonen van de functie van de oriëntatie-informatie. Nu zal een werkwijze voor het bepalen van oriëntatie-informatie in data-partitionering worden beschreven.
<Progressieve codering waarbij foutbestendigheid in aanmerking wordt genomen> 10 Wanneer data verloren gaan door fouten in een gegevens overdracht-pad of in bitstromen die zijn gegenereerd in een codeerdeel, moet een decodeerdeel het probleem efficiënt behandelen. Bijgevolg worden de te coderen rasterdata verdeeld in zinvolle eenheden, dat wil zeggen, partities of 15 rasterobject-basislagen, om partities te vormen, en daarna worden de data-partities verzonden in de verwerkingseenheid met een vooraf bepaalde afmeting (en in het onderstaande wordt afgekort als "pakket"). Met andere woorden, een pakket is een bundel bits die zijn geordend in een specifieke 20 opmaak en heeft een vooraf bepaalde lengte. Wanneer data met een grote lengte worden verzonden via een verzendingspad, kan het door een groot aantal gebruikers gebruikte verzendingspad verstopt raken. Bijgevolg moeten eenheden overgedragen data een vooraf bepaalde lengte hebben zodat een 25 aantal gebruikers het verzendingspad van beperkte capaciteit kunneij delen. Een pakket wordt verkregen door te coderen bitstromen te binden, terwijl een partitie wordt verkregen door te coderen oorspronkelijke informatie (raster) te verdelen in geschikte eenheden. Tijdens het verdelen moet 30 ervoor worden gezorgd dat het mogelijk is om op het verzendingspad gegenereerde fouten effectief te hanteren bij het herstellen van de data aan de zijde van een ontvanger. Met andere woorden, wanneer alle roosters worden verdeeld in delen met betekenis, kunnen data-partities zonder een fout 35 perfect worden hersteld aan de zijde van de ontvanger, terwijl alleen de gecodeerde bitstroom met een fout wordt
1 n 1 QQ
jjtrü'jiiauj.yu um mei. lc wuiucu uclqlcxu. mei vclwajccu uc delen met betekenis naar de respectievelijke delen die met elkaar zijn verbonden bij het bewerken van een dierenbeeld, bijvoorbeeld armen, poten, lichaam, enz.. Bij het partitio-5 neren is de afmeting van een data-partitie niet gefixeerd op een specifiek niveau, in tegenstelling tot het pakket. Bij de onderhavige uitvinding worden verschillende werkwijzen voor partitioneren voorgesteld zodat data aan de zijde van de ontvanger effectief kunnen worden hersteld, zelfs wanneer 10 de ontvangen data een fout bevatten.
Het op dusdanige wijze coderen van partitioneerdata heeft de volgende voordelen: • Door alleen de data met een fout opnieuw te verzenden, kan de belasting van een netwerk en de standby-tijd van 15 een gebruiker worden gereduceerd.
• Wanneer onafhankelijkheid onder gepartitioneerde data zekergesteld is, wordt raster-herstellen en rendering mogelijk gemaakt onder gebruikmaking van de data zonder fout, waardoor de decoderingvertraging als gevolg van de fout 20 wordt gereduceerd.
Zelfs wanneer de rasterdata niet compleet worden ontvangen, kunnen de actueel ontvangen data progressief hersteld en gerenderd worden.
In vergelijking tot de coderingswerkwijze waarbij de 25 onafhankelijkheid onder data-eenheden niet wordt zekergesteld, is het raster-herstelvermogen groot aangezien de data zonder fout niet nogmaals worden verzonden. Ook wordt zelfs in het geval van opnieuw verzenden de doelmatigheid van overdracht (de standby-tijd voor het decoderen) verbeterd.
30 «Werkwijze van vast partitioneren>
De fig. 12A tot en met 121 tonen een werkwijze van vaste data-partitionering, waarbij verwijzingsteken 'sc' een startcode aangeeft die staat voor de beginpositie van het partitioneren in verpakte raster-bitstromen, 'id· een mar-35 keerteken van een partitie aangeeft, dat wordt voorgesteld door respectievelijk 3D_MOBL_start_code en mobl_d, bij de 1013639_ 23 onderhavige uitvinding. 'vg_id' geeft een markeerteken aan dat wordt gebruikt voor het specificeren van de hoekpunt-graaf die correspondeert met het actuele te herstellen tt/td-paarf wanneer verscheidene eenheden hoekpunt-graaf 5 data zullen worden verwerkt in raster-data die zijn geconstrueerd door verscheidene verbonden componenten. In de syntax van de onderhavige uitvinding wordt 'vg_id' gemarkeerd door odap_vg_id. Het bezoeken van index 'vi' geeft een markeerteken aan dat staat voor de bounding_index van een 10 root-driehoek van een partitie, en bevat linker_index en rechter_index, zoals getoond in fig. 4, die zijn aangegeven door respectievelijk codap_left_idx en codap_right_idx, in de syntax volgens de onderhavige uitvinding, 'bp' geeft een markeerteken aan dat staat voor boundary_prediction en 15 bepaalt de coderingsmethode van geometrie, kleur, normale en textCoord. Met andere woorden, een waarde van 1 betekent een coderingswerkwijze waarbij overlappende codering van eerder gecodeerde hoekpunten toegestaan is. Een waarde van 0 betekent dat hoekpunten worden gecodeerd zonder overlapping.
20 'bp' wordt aangegeven door codap_bdry_pred in de syntax van de onderhavige uitvinding, 'lbl' is een markeerteken voor het berekenen van Y-hoekpunten indicia van een aftak-drie-hoek waarbij de actuele partitie-data alleen worden gebruikt door de decodeerder in het geval wanneer de actuele partitie 25 eindigt bij de aftak-driehoek en de totale afmeting van een willekeurige afhankelijke boom die met de aftak-driehoek verbonden is. 'lbl' wordt aangegeven door codap_branch_len in de syntax van de onderhavige uitvinding, 'vg' geeft een hoekpunt-graaf aan, 'tt' geeft een driehoek-boom aan, en 30 'td' geeft driehoek-data aan. 'lvg' is een eenbit markeerteken dat is gedefinieerd voor het aangeven van de aanwezigheid van verbonden componenten die moeten worden hersteld in een partitie. Wanneer daarna te herstellen vg aanwezig is, is de waarde van 'lvg' 0; anders is deze '1'. 'ltg' is een 35 eenbit markeerteken die is gedefinieerd om de aanwezigheid van verbonden componenten die moeten worden hersteld in een partitie aan te geven, of de aanwezigheid van afhankelijke bomen. Een waarde van 0 vertegenwoordigt de aanwezigheid van verbonden componenten, en een waarde van 1 staat voor de afwezigheid van verbonden componenten. Een vaste partitione-5 ringswerkwijze maakt gebruik van een identieke partitione-ringswerkwijze bij alle gegeven rasterdata die gebruik maken van alleen één willekeurig formaat van de in fig. 12A tot en met 121 beschreven bitstroom-formaten, overeenkomstig de toepassingsgebieden.
10 Ten aanzien van de constructie toont fig. 12A dat het totaal van rasterdata is gevormd in een coderingsvolgorde worden verwerkt om te worden gevormd als een partitie, toont fig. 12B dat het totaal aan rasterdata is gevormd als een partitie terwijl hoekpunt graaf-data en tt/td-paren zijn 15 gescheiden, en toont fig. 12C dat een partitie wordt gevormd door een verbonden componnent als een minimum eenheid. Fig. 12D toont dat verscheidene hoekpunt-grafen die rasterdata vormen, worden verzameld om een partitie te vormen, waarbij de tt/td-paren die corresponderen met de hoekpunt-grafen 20 worden verzameld om een partitie te vormen. Fig. 12E toont dat verscheidene hoekpunt-grafen die raster-data vormen worden verzameld om een partitie te vormen en de tt/td-paren verscheidene partities vormen met inachtneming van de afmetingen van de partities. Fig. 12F toont dat de hoekpunt-25 grafen en de tt/td-paren zijn gescheiden en zijn gevormd als afzonderlijke partities in eenheden van verbonden componenten. Fig. 12G toont dat verscheidene hoekpunt-grafen die rasterdata vormen, worden gevormd als afzonderlijke partities en de tt/td-paren die met elke hoekpunt-graaf corres-30 ponderen vormen verscheidene partities met inachtneming van de afmetingen van de partities. Fig. 12H toont dat de hoekpunt-graaf die elke verbonden component vormt, eerst wordt gevormd als een partitie en het corresponderende tt/td-paar daarna wordt gevormd als een partitie. Fig. 121 laat zien 35 dat hoekpunt-graaf data van elke verbonden component worden gecodeerd tot een partitie en het corresponderende tt/td- 1013639 25 paar wordt gescheiden in partities onder inachtneming van de afmetingen van de partities.
Ten aanzien van de werking, zullen nu de in de fig. 12A tot en met 121 beschreven partitioneringswerkwijzen worden 5 beschreven. De in fig. 12A en 12B getoonde werkwijzen worden gebruikt wanneer niet is voorzien in foutbestendigheid pf wanneer er geen beperking is in een overdrachtspad en de prestaties van een decodeerder. Overeenkomstig de in fig. 12A getoonde werkwijze is de bewerkingsprijs gereduceerd en 10 is de doelmatigheid van het renderen verbeterd. Volgens deze werkwijze worden de door het opnieuw verzenden van data ing geval van een datafout veroorzaakte kosten echter hoger. De in de fig. 12c, 12D, 12F en 12H kunnen onafhankelijkheid van partities garanderen. Overeenkomstig deze werkwijzen is het 15 echter moeilijk om te worden aangepast aan een pakket dat een specifieke afmeting heeft. Met andere woorden, wanneer een partitie kleiner is dan het pakket bij het overdragen van data die zijn ondergebracht in een pakket van een specifieke afmeting, moet aanvullend worden voorzien in dummy-20 data die corresponderen met het verschil in afmeting tussen de partitie en het pakket. Wanneer daarentegen de partitie groter is dan de pakket-afmeting, kunnen de data niet tot een pakket worden gemaakt, moeten de data afzonderlijk worden verwerkt en moet de decodeerder aanvullende data 25 verschaffen. Bijgevolg wordt de 12E, 12G, 121, de hoekpunt-graaf. data voor de connectiviteit verwerkt op dezelfde manier als hierboven beschreven is. Het tt/td-paar voor het constructie-type van een driehoek in een raster kan afzonderlijk worden verwerkt in overeenstemming met de partitie-30 afmeting, terwijl de onafhankelijkheid ervan wordt verzekerd. De data waaronder vg_id, vi en bp worden aanvullend verschaft aan de partities van het tt/td-paar. Hier specificeert vg_id de hoekpunt-graaf die correspondeert met het te herstellen tt/td-paar, en wordt gebruikt wanneer de hoek-35 punt-grafen collectief worden verwerkt, zoals is weergegeven in fig. 12D tot en met 12G. vi specificeert waarden van 1013639 left_index en right_index van een start-driehoek van elke partitie, en is verschaft voor het herstellen van de actuele partitie onafhankelijk van de vorige partitie zelfs wanneer de vorige partitie vanwege fouten niet kan worden hersteld.
5 Ook is bp een eenbit markeerteken voor het definiëren van een coderingswerkwijze van hoekpunt-geometrie, kleur, normaal en textCoord, voor elke partitie van het tt/td-paar. Bij de in fig. 12E, 12G en 121 getoonde werkwijzen wordt lbl selectief gebruikt alleen bij het partitioneren van de 10 einden van een aftak-driehoek. Wanneer het tt/td-paar kan worden gecodeerd in eenheden van verbonden componenten, zoals getoond in de fig. 12A tot en met 12D, 12F en 12H, wordt de waarde van bp ingesteld op '1' waarbij overlappende codering van eerder gecodeerde hoekpunten toegestaan is.
15 Wanneer het tt/td-paar wordt verdeeld in verscheidene gedeelten die een willekeurig verbonden component vormen, zoals getoond in fig. 12E, 12G en 121, bp wordt onafhankelijk gedefinieerd voor elke te herstellen partitie.
Itg wordt selectief gecodeerd. Dat wil zeggen, wanneer 20 de actuele partitie de laatste van een zijtak van het tt/td-paar is, wordt Itg gecodeerd tot 11'; anders wordt hij gecodeerd tot '0'. Dit wordt bepaald door de bezoek-index te gebruiken als volgt: [formule 2] 25 right_index - lefta_index - 1 = het aantal driehoeken in de actuele partitie.
Wanneer aan de bovenstaande formule wordt voldaan, hetgeen inhoudt dat het einde van de tak bereikt is, wordt Itg gecodeerd tot '1'.
30 Nu zullen data-partitioneerwerkwijzen voor het ver schaffen van de hierboven beschreven constructies worden beschreven.
1. Data-partitioneerwerkwijze in eenheden van verbonden componenten 35 Deze werkwijze is getoond in fig. 12C en 12H en kan gemakkelijk worden gerealiseerd. Wanneer het verschil in 1013639 27 afmeting tussen verbonden componenten niet groot is, is deze werkwijze effectief. Wanneer de data-afmetingen van verbonden componenten echter niet uniform zijn en het verschil daartussen groot is, worden redundante bits gegenereerd, 5 hetgeen de doelmatigheid van de codering verslechtert. Wanneer de afmeting van een verbonden component groot is, wordt de doelmatigheid ook verlaagd en kunnen de data niet tot een pakket met vooraf bepaalde afmeting worden gemaakt. Daarom kan deze werkwijze alleen worden gebruikt wanneer er 10 geen beperkingen aan het overdrachtspad en het vermogen van de decodeerder zijn. De in fig. 12A, 12B, 12D en 12F stuiten ook op deze nadelen.
2. Partitioneerwerkwij ze voor het combineren van kleine verbonden componenten 15 Wanneer vele verbonden componenten van kleine afmetin gen in een model aanwezig zijn, is de hierboven beschreven partitioneer-werkwijze niet effectief. Bijgevolg is het wenselijk, zoals getoond in fig. 12A en 12B, dat de verbonden componenten waarvan de afmetingen klein zijn, worden 20 samengevoegd tot één component totdat partities met elk een vooraf bepaalde afmeting worden verkregen. Overeenkomstig deze werkwijze is het nodig om vg_id te verschaffen voor het definiëren van het tt/td-paar dat correspondeert met een specifieke hoekpunt-graaf als de header-informatie van een 25 partitie.
3. Partitioneerwerkwijze voor het combineren van grote verbonden componenten
De eerste partitioneerwerkwij ze kan bij het coderen van grote verbonden componenten alleen worden gebruikt in beper-30 kende omgevingen. Om deze beperking weg te nemen, stelt de onderhavige uitvinding een algemene coderingswerkwijze voor, waarbij een grote verbonden component kan worden gepartitio-neerd terwijl wordt voorzien in zowel de flexibiliteit in partitie-afmeting als de onafhankelijkheid van partities. De 35 fig. 12E, 12G en 121 tonen coderingswerkwi j zen waarbij alleen het tt/td-paar van een willekeurig grote verbonden
1 Ω 1 Qfi Q O
«* v component wordt verdeeld in verscheidene partities om daarna te worden gecodeerd. Fig. 12E toont een wijziging van de werkwijze die is getoond in fig. 12D, en fig. 121 toont een wijziging van de werkwijze die is getoond in fig. 12H. De in 5 fig. 12E en 12G getoonde werkwijzen hebben een nadeel in het feit dat de prijs hoger wordt omdat alle hoekpunt-graaf data moeten worden opgeslagen in een decodeerder. Ook is de in fig. 121 getoonde werkwijze matig ten aanzien van de code-ringsefficiëntie van kleine verbonden componenten.
10 Ook moeten overeenkomstig deze werkwijze vg_id voor het definiëren van het tt/td-paar volgens een specifieke hoekpunt -graaf, vi voor het definiëren van de grenslus-index van een start-driehoek van een part it ie, en bp voor het aangeven van een coderingswerkwijze van de data waaronder geometrie, 15 kleur, normaal en textCoord, aanvullend worden gedefinieerd in de header-informatie van de partitie. Overeenkomstig deze werkwijze kunnen de rasterdata onafhankelijk van elkaar echter gemakkelijk worden beschermd tegen datafouten. Ook kan het door partitioneren veroorzaakte coderingsverlies 20 worden gereduceerd.
Daarbij toont fig. 13A de structuur van bitstromen wanneer de tt/td-paren zijn gescheiden, waarbij streeplijnen scheidingsposities aangeven, die de verhouding tussen drie-hoek-boom en driehoek-data aangeven. Fig. 13B toont een 25 data-partitioneringsprocedure waarbij gebruik wordt gemaakt van de hierboven beschreven partitioneerwerkwijzen. Ofschoon voor het gemak in fig. 13B geen 'id'-informatie is afge-beeld, moet deze achter de startcode komen, 'vg' geeft hoekpunt-graaf data aan , 'tt/td' geeft een paar driehoek-30 boom/driehoek-data aan, en 'cc' geeft een verbonden component aan. In fig. 13B geeft het onderschrift n het aantal verbonden componenten (CC) aan en geeft n' het aantal opnieuw geformatteerde componenten aan in geval van formatteren overeenkomstig de afmetingen van de verbonden componen-35 ten. Het opnieuw formatteren wordt op de volgende wijze uitgevoerd.
1013639 29 1. Reconstructie van verbonden componenten (stap 201)
Kleine verbonden componenten worden gecombineerd om te worden opgenomen in het bereik van een vooraf bepaalde data-partitie-afmeting. Zoals getoond in fig. 13B, worden de 5 verbonden componenten CCj en CC2 gecombineerd om de opnieuw geformatteerde component CC'j te vormen. De verbonden componenten groter dan een vooraf bepaalde afmeting zijn, worden gepartitioneerd in kleine componenten. In fig. 13B is de derde verbonden component CC3 gepartitioneerd in verscheidene 10 componenten CC'2, ..., CC'k.
2. Het genereren van hoekpunt-grafen en paren driehoek-boom/driehoek-data (stap 202) vgs en tt/td-paren worden gegenereerd voor de respectievelijke opnieuw geformatteerde componenten.
15 3. Het herordenen van vgs en tt/td-paren (stap 203) in stap 202 gegenereerde vgs en tt/td-paren worden afzonderlijk opnieuw geordend.
4. Het partitioneren van vg-informatie (stap 204)
De in stap 203 opnieuw geordende vg-informatie wordt 20 gepartitioneerd tot informatie-eenheden met een vooraf bepaalde afmeting.
5. Het partitioneren van tt/td-paar informatie (stap 205)
De in stap 253 gegenereerde tt/td-paar informatie wordt 25 gepartitioneerd in informatie-eenheden met een vooraf bepaalde afmeting.
De vaste partitioneringswerkwijze is van nadeel ten aanzien van systeem-complexiteit en prijs aangezien een afzonderlijke decodeerder nodig is die voor elk van de in de 30 fig. 12A tot en met 121 getoonde werkwijzen geschikt is. Daarom stelt de onderhavige uitvinding een variabele parti-tioneerwerkwijze voor door middel waarvan bitstromen op basis van de hierboven beschreven werkwijzen adaptief kunnen worden gedecodeerd onder gebruikmaking van een en dezelfde 3 5 decodeerder.
1 m 36 3 9 <wex»JiwjLj ze νυυι ναι ïauci paitxuiuucicu^
In tegenstelling tot de werkwijze voor het vast parti-tioneren, wordt bij de werkwijze voor het variabel partitio-neren wordt pt {partition-type) informatie, dat wil zeggen, 5 informatie voor het definiëren van het partitie-type van de actuele partitie, aanvullend verschaft. Bijgevolg worden de partities geclassificeerd in vier typen, zoals getoond in fig. 14A tot en met 14D. pt gedefinieerd in de onderhavige uitvinding is afhankelijk van de waarde van sc, en de ver- 10 houding tussen sc en pt is samengevat in Tabel 1.
Tabel 1. Verhouding tussen sc en pt bitwaarde betekenis 0000 0000 0011 0001 Ben of meer vgs aanwezig en de vg- data worden gebruikt in één of meer data-partities 0000 0000 0011 0011 Alleen tt/td-data aanwezig. Bij het herstellen van de data zijn vg_id om tt/td-paar te vergelijken met een willekeurige vg, vi (bezoek-index) die het beginpunt is van een driehoeks trip, en bp (boundary prediction) aanwezig in header-informatie » 15 0000 0000 0011 0100 vg, tt en td vormen een data- partitie, en vg wordt gebruikt in een andere of meer data-partities
Om de partitionering van variabele data te realiseren ter compensatie van de complexiteit en kosten van het systeem, moet het volgende in acht worden genomen.
► Een startcode kan niet selectief worden ingevoerd.
20 Met andere woorden, een decodeerder voert een decodeerbewer-king uit zonder te weten in welke modus de actuele bitstroom 1013639 31 gecodeerd is. Zo worden in het geval waarbij de startcode selectief wordt geleverd in overeenstemming met een code-ringsmodus alleen beperkte bitstromen hersteld. Bijgevolg kunnen de kosten en complexiteit toenemen. Teneinde decode-5 ring te realiseren ongeacht de coderingsmodus van een co-deerder, moet het variabele syntax-systeem worden uitgesloten.
► Wanneer een specifiek type codering wordt gebruikt, kan onnodige informatie worden verschaft in overeenstemming 10 met de eigenschappen van raster-data of een decodeerder, hetgeen de doeltreffendheid van de codering reduceert.
De fig. 14A tot en met 14D tonen vier typen syntax-modules voor het ondersteunen van de werkwijze voor variabel partitioneren. Fig. 14C toont de syntax voor het aanpassend 15 verschaffen van vg_id en ltg, als gedefinieerd in de fig. 12A tot en met 121. Met andere woorden, wanneer in de syntax die is getoond in fig. 14B slechts één vg aanwezig is, kan de verhouding tussen vg en het tt/td-paar worden geïdentificeerd tijdens het herstellen. vg_id is dus niet noodzakelijk 20 gegeven. Itg wordt alleen verschaft wanneer het gepartitio-neerde tt/td-paar correspondeert met het einde van een zijtak van het gehele tt/td-paar, en de bepalingsformule daarvoor wordt uitgedrukt in formule (2) . Fig. 14A toont de structuur in partitie-type 0 waarbij een partitie wordt 25 gevormd door een willekeurig aantal verbonden componenten, Fig. 14B toont de structuur in partitie-type 1, waarbij een partitie is opgebouwd uit een willekeurig aantal vg's. Fig. 14C toont de structuur in partitie-type 2 waarbij een partitie is opgebouwd uit alleen een tt/td-paar dat correspon-30 deert met één verbonden component, en fig. 14D toont de structuur in partitie-type 3 waarbij een partitie is opgebouwd uit vg en het tt/td-paar dat correspondeert met de actuele verbonden component. Daarom kan de combinatie van deze syntax-structuren alle typen syntax-structuren onder-35 steunen, behalve die welke is getoond in fig. 12B. Met andere woorden, de in fig. 12A getoonde structuur kan worden uitgevoerd in part it ie-type 0, en de in fig. 121 getoonde structuur kan worden gerealiseerd door een combinatie van partitie-type 1 en partitie-type 2. Daarom zijn bij de onderhavige uitvinding voor de verbonden componenten die 5 kleiner zijn dan pakketten, verscheidene verbonden componenten samengevoegd in een partitie om te worden gecodeerd in partitie-type 0, met inachtneming van de coderingseffici-entie. De grotere verbonden componenten zijn gecodeerd in part itie-typen 1 en 2 of in part it ie-typen 2 en 3. Ook met 10 het oog op het overdrachtspad of de prestaties van een decodeerder kunnen verschillende syntax-structuren gecombineerd op verschillende wijzen worden verschaft.
Fig. 15A tot en met 15D tonen een voorbeeld van de werkwijze voor variabel partitioneren. Aangezien in fig. 15A 15 ccl tot en met cc3 kleine rasters zijn, worden ze verwerkt door elke verbonden component, met een partitie die is gedefinieerd in partitie-type 0 of 3. Aangezien cc4 een groot raster is, wordt het tt/td-paar verdeeld in verscheidene delen om te worden verwerkt in een combinatie van 20 partitie-type 3 en partitie-type 2. Ook kan de cc4 worden verwerkt in een combinatie van partitie-type 1 en partitie-type 2, zoals weergegeven in fig. 15B. Zoals weergegeven in fig. 15C kunnen de raster-data, om de coderingsefficiëntie te verbeteren, worden veranderd in een andere gecombineerde 25 structuur. Fig. 15C toont het geval waarbij de raster-data van ccl tot en met cc3 zijn gedefinieerd in partitie-type 0. Teneinde de complete raster-data weer te geven, kunnen de in fig. 15C en 15A of fig. 15C en 15B worden gecombineerd. Om echter de in fig. 15C getoonde structuur te verschaffen, 30 zijn voorwaarden voor het bepalen van de laatste verbonden component nodig. Bij de gangbare methode wordt om de laatste verbonden component te bepalen een markeerteken van last_cc gebruikt. Een waarde van 1 vertegenwoordigt de laatste verbonden component. Daarom kan bij de onderhavige uitvin-35 ding de aanwezigheid van een te herstellen verbonden component worden vastgesteld onder gebruikmaking van Xtg waarvan 1013639 33 de functie lijkt op last_cc en pt-informatie binnen sc als volgt: als (ltg==i){ als (pt==0){ 5 als (next_2_bytesO==sc) De actueel herstelde cc is de laatste cc in een partitie; anders De actueel herstelde cc is de laatste te herstellen partitie; } anders De actueel herstelde cc is de laatste cc 10 in een partitie; } anders De actueel herstelde cc is niet de laat ste cc in een partitie; waarbij next_2_bytes () de functie is om alleen twee bytes van bitstromen in een decoder vooruit te lezen. Fig. 15D 15 toont een voorbeeld in part it ie-typen 1, 2 en 3. Zoals weergegeven in het hierboven beschreven voorbeeld, bezit de werkwijze voor het variabel partitioneren een voortreffelijke aanpasbaarheid aan coderingsomgevingen en is hij ten aanzien van de coderingsefficiêntie en kosten beter dan de 20 werkwijze voor vast partitioneren.
«Werkwijze voor het partitioneren van data van tt/td- paar
Bij de onderhavige uitvinding word het partitioneren van het tt/td-paar in principe uitgevoerd op de bijpassende 25 plaats nadat de driehoek-data van een zij tank van een aftak-driehoek eerst verschenen aan het einde van de vorige partitie, dat wil zeggen de hoofdtak, die is weergegeven in fig.
16. De reden voor het partitioneren van het tt/td-paar bij de hoofdtak is als volgt. Wanneer zoals hierboven beschreven 30 Y-hoekpunten niet worden bepaald, kan het herstellen en renderen van een driehoek die na de corresponderende aftak-driehoek komt, niet worden gerealiseerd. Deze werkwijze kan echter leiden tot ondoelmatigheid in overeenstemming met de initiële traverseervolgorde en het feitelijke type tt/td-35 paar. Dat wil zeggen, in het geval waarbij de linker (of rechter) tak het eerst gecodeerd wordt, wanneer de linker 1013639 tak van een aftak-driehoek van het tt/td-paar zeer groot is, is hij nog groter dan het pakket. Bijgevolg kan het bepalen van Y-hoekpunt-indicia niet worden gerealiseerd totdat veel informatie die na de aftak-driehoek komt, dat wil zeggen, de 5 informatie over het aantal driehoeken van één tak, verwerkt is.
Daarom stelt de onderhavige uitvinding drie effectieve methoden voor het partitioneren van raster-data voor. Bij de onderhavige uitvinding kunnen een of meer partities in een 10 pakket aanwezig zijn. In dit hoofdstuk zal de beschrijving worden gegeven op basis van het feit dat er in een pakket slechts één partitie aanwezig is.
Een eerste werkwijze voor het partitioneren van data is het realiseren van partitionering door het instellen van een 15 pakket-toelating, t_rate, voor een pakket-afmeting, doel (300 in fig. 17). Een gemiddelde bitgeneratie-hoeveelheid tt die moet worden gecodeerd in eenheden van verbonden componenten, dat wil zeggen, tt_mean, wordt verkregen, en daarna wordt partitionering verricht binnen het bereik waarin aan 20 een vooraf bepaalde pakket-toelating, t_rate, wordt voldaan. In fig. 17 is tt_mean een gemiddeld bitaantal van de data met uitzondering van vg en tt, nadat de i* driehoek is gecodeerd, is cur_bits een som die wordt verkregen door optelling van alle bits die door de eerste tot en met i* 25 driehoek van het pakket zijn gegenereerd, dat wil zeggen, tt_mean+td_bits. Wanneer curjoits groter dan of gelijk aan t__rate*target (stap 330) is, wordt partitionering verricht voor codering (stap 340) . Wanneer dit niet het geval is, wordt de (1+1)^ driehoek gecodeerd (stap 350) . De hierboven 30 beschreven procedure wordt herhaald totdat alle rasters zijn gecodeerd, waardoor de partitionering wordt verkregen.
Hier moet de werkwijze voor het bepalen van de partitionering bij aftak-driehoeken op de hoofdtak in aanmerking worden genomen. Dat wil zeggen, als wordt aangenomen dat de 35 partitioneer-positie in principe alleen op de hoofdtak wordt gedefinieerd om het Y-hoekpunt-probleem op te lossen, is het 1013639 35 nodig dat wordt bepaald of een afhankelijke boom die is gekozen om te worden gedecodeerd naast de aftak-driehoek door oriëntatie-informatie, is opgenomen in het pakket dat de aftak-driehoek bevat. Daartoe wordt bij de onderhavige 5 uitvinding een te coderen afhankelijke boom vooraf gecodeerd. Met andere woorden, wanneer het pakket geheel gevuld is met gecodeerde data terwijl de afhankelijke boom gecodeerd is, is dit in strijd met de veronderstelling van partitionering op de hoofdtak. Dus, zoals getoond in fig. 10 18C, vindt partitionering plaats bij de vorige aftak-drie- hoek. Wanneer de totale bitgeneratie-hoeveelheid, verkregen totdat zelfs de afhankelijke boom gecodeerd is, kleiner is dan de pakket-afmeting, zoals weergegeven in fig. 18A of 18B, wordt de afhankelijke boom in het pakket opgenomen om 15 daarna te worden gecodeerd.
Een tweede werkwijze is het uitvoeren van partitionering wanneer de volgende te coderen driehoek een aftak-driehoek is en wanneer wordt vastgesteld dat de som van de voorspelde bitgeneratie-hoeveelheid van een afgetakte afhan-20 kelijke boom en de bij de actuele partitie gegenereerde bithoeveelheid groter is dan de pakket-afmeting, ofschoon t_rate nog niet is bereikt. Dit zal nu uitvoerig worden beschreven.
1. Het anatal bits dat is gecodeerd in de eerste parti-25 tie van elke verbonden component, curjbit, wordt opgeslagen.
2. Zelfs wanneer een streefbit nog niet bereikt is, wanneer de volgende driehoek een aftak-driehoek is, wordt de afmeting van de afhankelijke boom van de volgende driehoek, nst, verkregen.
30 3. Het aantal hoekpunten van driehoeken dat in de actuele partitie tot dusver gecodeerd is, cur_ng, wordt verkregen.
4. Wanneer cur_ng+nst+2>ng, wordt het partitioneren uitgevoerd als volgt.
35 (1) Wanneer de voorspelde hoeveelheid bits die bij de afhankelijke boommoet worden gegenereerd groter is dan de
1 Π 1 Q Q Q
pakket-afmeting, wordt partitionering met inbegrip van de volgende aftak-driehoek verricht. Dat wil zeggen, wanneer nst+2>ng, wordt gepartitioneerd met inbegrip van de volgende aftak-driehoek, zoals weergegeven in fig. 18C.
5 (2) Anders wordt partitionering verricht bij de actuele driehoek.
Een derde werkwijze is het vooraf coderen van een pakketeenheid van een vervolgens te coderen raster, om het totale aantal driehoeken te berekenen in het geval waarbij 10 aan de eis van de pakket-afmeting wordt voldaan, en daarna bitstromen van feitelijke pakket-eenheden te construeren onder gebruikmaking van de informatie van het aantal driehoeken. De hierboven beschreven werkwijze van bepaling of de afhankelijke boom al dan niet in een pakket moet worden 15 opgenomen wordt ook op deze werkwijze toegepast.
Bij het partitioneren van raster-data onder gebruikmaking van deze werkwijze, moeten aanvullend de volgende twee punten in aanmerking worden genomen. Ten eerste wordt vertraging in decodeertijd gegenereerd door Y-hoekpunt-bereke-20 ning. Ten tweede moet de onafhankelijkheid van gepartitio-neerde data in acht worden genomen. Bij de onderhavige uitvinding wordt de vertraging geminimaliseerd door het instellen van een virtuele verbonden component die later nog wordt beschreven, en het probleem van onafhankelijkheid 25 wordt opgelost door het definiëren van oriëntatie-informatie, grenslus-indexinformatie en polygoonrand-informatie in eenheden van pakketten.
<Y-hoekpunt bewerkingsmethode waarbij gebruik wordt gemaakt van virtuele verbonden component> 30 Teneinde Y-hoekpunten te verwerken onder handhaving van de onafhankelijkheid van gepartitioneerde data van tt/td-paren, worden twee methoden gehanteerd. De eenvoudigste methode is het verzenden van de lengte van de gepartitioneerde data en Y-hoekpunt-informatie naar een decodeerder. 35 De andere methode is het definiëren van de gepartitioneerde data als virtuele verbonden componentne in overeenstemming 1 01 3639 37 met de kenmerken van het tt/td-paar. Aangezien overeenkomstig de eerste methode de lengtes van alle rasters en de lengtes van gepartitioneerde rasters op het moment van decoderen bekend zijn, kan de opbouw van een te herstellen 5 raster worden voorspeld. Aangezien ook de Y-hoekpunt-informatie bekend is, kan progressief renderen worden gerealiseerd. De coderingsefficiëntie kan echter worden verlaagd als gevolg van aanvullende data.
Overeenkomstig de tweede methode waarbij virtuele 10 verbonden componenten worden gedefinieerd, worden de verbonden componenten van het tt/td-paar gedefinieerd als de aantallen takken en bladeren, zoals uitgedrukt in de volgende formule (3) . De virtuele verbonden componenten kunnen worden geconstrueerd door virtuele bits in de gepartitio-15 neerde raster-data te definiëren om te voldoen aan de formule (3) . Daarbij wordt gezorgd dat de startpositie van het partitioneren alleen voorkomt op het verloop van de hoofdtak van de binaire boom. Dit dient om de Y-hoekpunt-verwerking te vergemakkelijken. Wanneer het partitioneren bijvoorbeeld 20 wordt verricht op een andere plaats dan de hoofdtak, wordt het hierboven beschreven Y-hoekpunt-probleem gegenereerd zodat een noodzaak van aanvullende data voor Y-hoekpunt-verwerking nodig is, of het herstellen of renderen voor elke partitie onafhankelijk kan worden verricht.
25 [formule 3] aantal takken + 1 = aantal bladeren
Virtuele bits kunnen worden gedefinieerd in twee gevallen : 1. Wanneer het partitioneren eindigt in een gang of 30 blad
Om aan formule (3) te voldoen, wordt een paar virtuele bits van (1, l) toegevoegd aan (trun, leaf) .
2. Wanneer het partitioneren eindigt op een tak
Om te voldoen aan de formule (3) worden twee paar 35 virtuele bits van (1, 1) toegevoegd aan (trun, leaf).
Λ η 4 Q R O O
•3 O
Ook wanneer einden op een tak worden gepartitioneerd en geometrie, kleur, normale en texCoord-data voor elk hoekpunt worden verwerkt, worden de geometrie, kleur, normale en texCoord-data voor de laatste driehoek, die een aftak-drie-5 hoek is, niet gecodeerd. Dit komt doordat een aftak-driehoek kan worden hersteld door de Y-hoekpunt-indicia die zijn bepaald door de index-informatie van een driehoek meteen voorafgaand aan het partitioneren in de actuele partitie en een root-driehoek van een vervolgens te coderen partitie. 10 Wanneer bij de als volgende te coderen partitie echter een fout wordt gegenereerd, kan de laatste aftak-driehoek van de actuele partitie niet worden hersteld. Dit probleem kan worden opgelost door de totale afmetingsdata (lbl) van één van de afhankelijke bomen van beide takken van de aftak-15 driehoek naar een decodeerder over te zenden door deze op te nemen in de tt/td-paar data. Dit komt omdat het mogelijk is om de Y-hoekpunt indicia van de aftak-driehoek te berekenen onder gebruikmaking van de lbl-waarde voordat volgende partities worden hersteld. Aangezien in het geval van het 20 verrichten van codering per vlak of hoek het coderen niet afhankelijk is van de Y-hoekpunt index-data, wordt de codering voor elk geval uitgevoerd. Fig. 18A tot en met 18C tonen een conceptueel diagram van virtuele verbonden componenten. Fig. 18A toont een virtuele driehoek in het geval 25 waarbij het partitioneren plaatsvindt bij een blad, fig. 18B toont.een virtuele driehoek in het geval waarbij het partitioneren eindigt in een gang, en fig. 18C toont een virtuele driehoek in het geval waarbij het partitioneren eindigt bij een tak die wordt gedefinieerd als virtuele driehoek(en) 30 aangegeven door a.
Wanneer in fig. 18A het partitioneren plaatsvindt in een toestand waarbij een blad-driehoek meteen achter de aftak-driehoek komt, wordt de in fig. 18A getoonde boomstructuur dezelfde als die welke is getoond in fig. 18C. In 35 dat geval kan de decodeerder de in fig. 18A en 18B getoonde structuren niet van elkaar onderscheiden. In een codeerder 1013639 39 moet het partitioneren niet plaatsvinden bij een blad-drie-hoek die meteen achterde aftak-driehoek komt, behalve het einde van een boomtak. Door aldus te handelen, kan de deco-deerder het decoderen met betrekking tot alle driehoeken 5 verrichten zonder informatie voor het onderscheiden van de in fig. 18A en 18C getoonde structuren.
Zo kan het probleem, dat in het geval van een grote afhankelijke boom packetzing niet mogelijk is door de algemene veronderstelling dat partitioneren alleen wordt uitge-10 voerd op een hoofdtak, worden opgelost door de afhankelijke boom op te bouwen uit verscheidene onafhankelijke virtuele verbonden componenten.
Nu zal een werkwijze worden beschreven voor het bepalen van virtuele bits wanneer de codering wordt verricht door de 15 virtuele verbonden component op een zodanige wij ze te vormen.
1. Het bepalen van de aanwezigheid van virtuele bits in een gang of blad
Wanneer aan formule 4 wordt voldaan, is een virtuele 20 bit aanwezig. Anders is geen virtuele bit aanwezig. Wanneer de derde driehoek vanaf de laatste van de gecodeerde driehoeken geen aftak-driehoek is zoals getoond in fig. 18A en 18B, en aan formule 4 is voldaan, wordt vastgesteld dat alleen de virtuele data van een paar van (1, 1) wordt gege-25 nereerd in (trun, tleaf) en td data worden niet gecodeerd voor de virtuele driehoek.
[formule 4] right_index_left_index-l>totaal aantal gegenereerde driehoeken wanneer alleen tt van de actuele partitie wordt 30 hersteld.
2. Het vaststellen van de aanwezigheid van virtuele bits in een tak
Wanneer partitioneren plaatsvindt bij een aftak-driehoek, zoals getoond in fig. 18C, worden twee virtuele leaf 35 driehoeken toegevoegd. Wanneer dus de derde driehoek vanaf het einde van de tt-data een aftak-driehoek en aan formule 4 1 fl 1 36 39 wordt voldaan, zijn de virtuele bit-data van twee paren (1, 1) aanwezig in (trun, tleaf). Dan worden de td-data van de laatste twee blad-driehoeken niet gedecodeerd.
<Data-partitioneren in polygonaal raster> 5 Teneinde bij topologische chirurgie rasterdata bestaan de uit polygonen te coderen, worden de polygoondata eerst gereconstrueerd als driehoeken. Fig. 19 toont een voorbeeld van het reconstrueren van polygoon-rasterdata als driehoek-rasterdata, waarbij getrokken lijnen feitelijke randen van 10 oorspronkelijke polygoon-rasterdata aangeven, en streeplij-nen virtuele randen aangeven die zijn toegevoegd om het polygoonraster te verdelen in driehoeken. Om de decodeerder de verdeelde driehoeken te laten herstellen tot de oorspronkelijke polygoon, moet de informatie voor het verwijderen 15 van de virtuele randen worden verzonden naar de decodeerder. Dit wordt polygoonrand-informatie genoemd. Wanneer een deel polygoonrand-informatie per driehoek wordt overgebracht, betekent een waarde van 1 een werkelijke rand, en een waarde van 0 betekent een virtuele rand.
20 Gewoonlijk wordt nadat de in rasterdata aanwezige polygonen zijn omgezet in driehoek-rasterdata de polygoonrand- informatie over alle driehoeken behalve de eerste driehoek gegenereerd. Hierbij stelt de codeerder de eerste driehoek in als een werkelijke rand, en de decodeerder stelt 25 de polygoonrand-informatie van de eerste driehoek in als 1 en verricht een herstelbewerking.
Echter in het geval waarbij data-partitionering moet worden uitgevoerd in andere polygoon dan een driehoek, kunnen de rasterdata niet worden hersteld door de conventio-30 nele werkwijze. Bijgevolg is het rasterdata-partitioneren beperkt in het voldoen aan de vereiste van pakket-afmeting, waardoor de efficiëntie van de codering wordt gereduceerd.
Om de hierboven beschreven problemen en nadelen weg te nemen, is het daarom nodig om de in een partitie gedefi-35 nieerde polygoonrand-informatie te definiëren voor de eerste driehoek van de partitie in het geval waarbij de partitie 1013639 41 begint bij een virtuele rand. In de fig. 20D en 20E geeft verwijzingsteken ’ tt' driehoekgang-informatie aan, geeft 'tm' verplaatsingsinformatie aan, geeft 'pe' polygoonrand-informatie aan, geven subscripts de orde aan van tm en pe 5 die corresponderen met tt, en geeft 'n' het aantal driehoeken aan. Fig. 20D toont syntaxen in het geval van het parti-tioneren van een polygoonraster bij werkelijke randen, corresponderend met fig. 20C, en fig. 20E toont syntaxen in het geval van het partitioneren van een polygoonraster bij 10 virtuele randen, corresponderend met fig. 20B.
De onderhavige uitvinding is gebaseerd op het feit dat data-partitionering wordt uitgevoerd bij een werkelijke rand, en voorziet in syntaxen die herstel mogelijk maken zelfs wanneer binnen een polygooon data-partitionering 15 plaatsvindt.
Polygoonranden in elke partitie worden op basis van 'pt'-informatie of "triangulated" en 'polygon__edge' -informatie verwerkt als volgt.
1. Werkwijze voor het verwerken van polygon_edge op 20 . basis van pt (1) Wanneer pt = 0, wordt de randwaarde van de eerste polygoonrand binnen een partitie niet gecodeerd; en (2) Alleen wanneer pt = 2 en één of meer polygonen in een partitie aanwezig zijn, dat wil zeggen, triangulated = 25 0, wordt de randwaarde van de eerste polygoonrand binnen een partitie wel gecodeerd.
2. Werkwij ze voor het verwerken van polygon_edge op basis van triangulated en polygoonrand-informatie (1) Wanneer het partitioneren bij een werkelijke rand 30 wordt toegestaan, wordt de waarde van de eerste polygoonrand binnen een partitie niet gecodeerd; en (2) Wanneer het partitioneren bij een virtuele rand wordt toegestaan, wordt de waarde van de eerste polygoonrand binnen een partitie wel gecodeerd.
I Hierbij wordt het onderscheiden tussen de werkelijke I rand en de virtuele rand in een willekeurige gerealiseerd I door de volgende voorwaarden: I wanneer (triangulated==l) werkelijke rand I 5 anders wanneer (polygon_edge==0) virtuele rand I anders werkelijke rand I Daarom decodeert de decodeerder de eerste polygon_edge- I waarde onvoorwaardelijk wanneer triangulated = 0. Dan wordt I een waarde van 0 gedefinieerd als de waarde van de eerste I 10 polygoonrand, en wordt een waarde van 1 gedefinieerd als de I waarde van de tweede polygoonrand.
I De triangulated informatie is 0 wanneer een of meer I polygonen in rasterdata in een part it ie aanwezig zijn; I anders is hij l, om eenbits informatie te construeren in I 15 eenheden van partities.
I <Data-partitionering op basis van oriëntatie-informa- I tie> I De hierboven beschreven noodzaak en definitiemethode I van de oriëntatie-informatie kan ook worden toegepast op I 20 data-partitioneren. Aangezien partitioneren zelfs wordt I toegestaan bij een afhankelijke boom wanneer virtuele ver- I bonden componenten worden gebruikt zoals hierboven beschre- I ven is, is het niet mogelijk om vast te stellen of het I raster van de te herstellen actuele partitie is verbonden I 25 met een hoofdtak of subtak wanneer de vorige partitie vanwe- I ge een datafout niet kan worden hersteld. Bijgevolg kan bij I het berekenen van de grenslus-index een fout worden gegene- I reerd, en kunnen herstel en rendering niet worden gereali- I seerd.
I 30 Bij de onderhavige uitvinding wordt daarom de oriënta- I tie-informatie in de virtuele verbonden component op dezelf- I de manier gedefinieerd als die van de werkelijke verbonden I component, waardoor onafhankelijk herstel en rendering in de I virtuele verbonden component worden gerealiseerd.
I 1 n 1 3 6 a 9 43 <Data-partitioneren met inbegrip van grenslus-informatie (vi)>
Aangezien de indicia van de geometrie van werkelijke hoekpunten in de grenslus-informatie worden afgebeeld, 5 kunnen de werkelijke coördinaatwaarden van de hoekpunten van een driehoek worden geïndentificeerd door gebruik te maken van de grens lus-indicia. Wanneer een partitie met een fout niet met succes opnieuw wordt verzonden, zoals getoond in fig. 9, is het niet mogelijk om vervolgens te herstellen 10 partities te herstellen omdat de grenslus-indexinformatie voor een begindriehoek in een partitie niet bekend is. Om deze ineffectiviteit te vermijden, moetende respectievelijke data-partities onafhankelijk hersteld of gerenderd worden. Daartoe moeten de beginposities van de grenslus worden 15 gegeven, van waar de respectievelijke data-partities beginnen.
Tijdens het herstellen in het decodeerdeel wordt vg gebruikt voor het herstellen van de waarden van de respectievelijke hoekpunten van driehoeken die vervolgens in een 20 grenslus-tabel moeten worden hersteld. Hierbij kan het hoekpunt van de volgende driehoek worden vastgesteld door het met 1 vermeerderen/verminderen van de index van de grenslus-tabel van de indexwaarde van een driehoek die zich op de beginpositie bevindt, zoals getoond in fig. 21. Wan-25 neer dus de indicia van de hoekpunten van de eerste driehoek van een data-partitie in de grenslus worden vastgesteld, kunnen de hoekpunten van de vervolgens te herstellen resterende driehoeken worden bepaald door de grenslus-index van de eerste driehoek te vermeerderen/verminderen met 1. Daarom 30 worden bij de onderhavige uitvinding alleen de grenslus-indicia van de hoekpunten van de eerste driehoek van een partitie aan de corresponderende partitie gegeven, waardoor onafhankelijkheid van de respectievelijke partities wordt gegarandeerd. Ook is in de onderhavige uitvinding gedefi-35 nieerde vi opgebouwd uit twee soorten indexinformatie, dat wil zeggen, left_index en right_index, en de constructie van
1 n 1Qfi QQ
bitstromen daarvoor is getoond in fig. 22. In fig. 22 geeft verwijzingsteken L de index aan van het eerste hoekpunt in de grenslus op de linker grens van een driehoeken-strip, en geeft R de index aan van het eerste hoekpunt in de grenslus 5 op de rechter grens van een driehoeken-strip.
Wanneer bitstromen sequentieel worden ontvangen van een opgslagmedium zoals een compact disc, aangezien indicia van de grenslus variëren van 0 tot een niveau binnen een vooraf bepaalde afmeting voor elke verbonden component, moet de aan 10 het header-gedeelte van de partitie gegeven index worden gecodeerd tot een waarde die binnen dat bereik ligt, hetgeen toegestaan is omdat de grenslus exact gelijk is aan het tt/td-paar en een tt/td-paar altijd wordt gecodeerd na een vg. Overeenkomstig de kenmerken van overdrachtsmedia, kunnen 15 de volgorde van verzending en volgorde van ontvangst verschillen vanwege een zendvertraging. Ook kan verlies van bitstromen optreden. Aangezien er in zulke gevallen geen garantie bestaat dat de vg die correspondeert met het tt/td-paar goed wordt ontvangen, moet een index worden verschaft 20 die verschilt van de vorige index.
Fig. 21 toont de verhouding tussen een grenslus en tt/td-paren in het geval van verscheidene verbonden componenten. Hier toont de eerste kolom voorbeelden van het onafhankelijk indexeren van elke verbonden component in de 25 grenslus en toont de tweede kolom voorbeelden van het indexeren van de laatste waarde van de vorige grenslussen die continu worden geïncrementeerd, in de grenslus.
Fig. 23A en 23B tonen een werkwijze van het coderen van de begin-indexinformatie van een partitie, waarbij nj staat 30 voor de afmeting van de grenslus van de eerste verbonden component en n2 staat voor de afmeting van de grenslus van de tweede verbonden component. In dit geval wordt voor het par-titioneren van de tweede verbonden component de indexinfor-matie aan de header gegeven door middel van twee werkwijzen 35 als getoond in fig. 23A en 23B. Fig. 23A toont header-infor-matie van een partitie in het geval van grenslus-indexering 1013639 45 voor elke verbonden component, en fig. 23B toont header-informatie van een partitie in het geval van grenslus-in-dexering voor alle modellen.
<Data-partitionering op basis van geometrie> 5. Tot dusver is de onderhavige uitvinding beschreven op basis van de connectiviteit van een model bij een data-partitionering. Nu zal een werkwijze voor het verzekeren van de onafhankelijkheid tussen partities van geometrie en het verbeteren van de coderingsefficiëntie worden beschreven. 10 Wanneer tijdens het data-partitioneren de hoekpunten van de respectievelijke driehoeken in contact komen met die van een driehoek die zich in de vorige partitie bevindt, is de informatie over het feit of de geometrie al dan niet gecodeerd is nodig, welke wordt gedefinieerd door een 'visited' 15 markeerteken. Een waarde van 1 geeft aan dat de geometrie al gecodeerd is, en een waarde van 0 geeft aan dat de geometrie nog niet gecodeerd is. Gewoonlijk verschijnt de voor zowel de vorige partitie als de actuele partitie gebruikte geometrie op de grens van twee partities. In het geval waarbij de 20 actuele partitie wordt gecodeerd, wordt de geometrie die verschijnt bij de grens van de vorige partitie zodanig gedefinieerd dat visited = 2. In dit verband wordt de geometrie-coderingsmethode bij het partitioneren van data als volgt geclassificeerd.
25 Ten eerste, zoals getoond in fig. 24A, wordt van de in de actuele partitie opgenomen geometrie-informatie alleen de informatie die in de vorige partitie niet visited is, in de actuele partitie gecodeerd.
Ten tweede, zoals getoond in fig. 24B, wordt de infor-30 matie over de in de vorige partitie gecodeerde grens in de actuele partitie ook gecodeerd, waardoor de geometrie in de actuele partitie onafhankelijk van de vorige partitie wordt hersteld.
Ten derde, zoals getoond in fig. 24C, wordt van in de 35 vorige partities gecodeerde data alleen de geometrie die is
4 Λ Λ QfiQQ
verbonden met verscheidene geometrieën die ook in de actuele partitie verschijnen, in de actuele partitie gecodeerd.
Ten vierde, zoals getoond in £ig. 24D, aangezien de overlappende geometrie die verschijnt in zowel de vorige 5 partitie als de actuele partitie gewoonlijk achtereenvolgens verschijnt in een grens van een driehoeken-strip, wordt de ene helft van de overlappende data gecodeerd in de vorige partitie en wordt de andere helft gecodeerd in de actuele partitie.
10 In fig. 24A tot en met 24D geven gearceerde cirkels geometrie aan die alleen in de vorige partitie gecodeerd is, zwarte cirkels geven geometrie aan die is gecodeerd in zowel de vorige partitie als de actuele partitie, witte cirkels geven geometrie aan die is gecodeerd in de actuele partitie, 15 en dikke, zwarte volle lijnen geven grenzen tussen partities aan.
De hierboven beschreven werkwijzen hebben echter de volgende problemen.
Ofschoon de eerste werkwijze gemakkelijk ten uitvoer 20 kan worden gebracht, is de hoeveelheid omgevende data die kan worden benut voor het voorspellen voor codering van de geometrie kleiner dan die van de andere werkwijze, hetgeen de nauwkeurigheid van de geometrie reduceert.
De tweede werkwijze is beter dan de eerste werkwijze 25 met betrekking tot de nauwkeurigheid van de geometrie. Aangezien overeenkomstig deze werkwijze de geometrie die op de grens verschijnt overlappend en in twee partities gecodeerd is, is de coderingsefficiëntie gereduceerd.
De derde werkwijze kan een verlies van geometrie redu-30 ceren terwijl een geschikt compressieniveau wordt gehandhaafd. Aangezien overeenkomstig de derde werkwijze het kenmerk van de connectiviteit bekend moet zijn, is het moeilijk om deze werkwijze ten uitvoer te brengen en de complexiteit neemt toe.
35 Ofschoon bij de vierde werkwijze het nadeel van de tweede werkwijze kan worden weggenomen, wordt een rendering- 1n 1 36 39 47 vertraging gegenereerd. Met andere woorden, de eerste, tweede en derde werkwijze maken zelf het herstellen en rendering mogelijk, en de vierde werkwijze maakt rendering mogelijk door in de actuele partitie weggelaten waarden te 5 genereren door middel van interpolatie onder gebruikmaking van de omgevende geometrie, of vereist een standby-tijd voor de volgende partitie.
De eerste of tweede werkwijze wordt in aanpassing gebruikt bij het werkelijk partitioneren van data. Met andere 10 woorden, gezien de coderingsefficiëntie en de onafhankelijkheid tussen partities, aangezien de traverseer-informatie van de partitie waarvan de partitie-begin en -eindposities op een hoofdtak liggen uit de vorige gecodeerde partities exact bekend is, wordt de partitie door middel van de eerste 15 werkwijze gepartitioneerd. Wanneer de vorige partitie niet kan worden hersteld vanwege een in de vorige partitie gegenereerde fout, aangezien de traverseer-informatie van de partitie waarvan de partitie-begin en -eindposities op een afhankelijke boom liggen, niet bekend kan worden gemaakt, 20 wordt de partitie door middel van de tweede werkwijze gepartitioneerd. Bij de onderhavige uitvinding wordt de geometrie- coderingswerkwij ze aan de header-informatie van elke partitie verschaft. Wanneer adaptief alleen de eerste en tweede werkwijze worden gebruikt, houdt een eenbits grens-25 voorspelling-markeertekenwaarde van 0 in dat de eerste werkwij ze wordt gebruikt bij het coderen van de geometrie van een data-partitie. Een waarde van 1 betekent dat de tweede werkwij ze wordt gebruikt bij het coderen van de geometrie van een data-partitie. Fig. 24E toont de syntax 30 van de structuur waarbij het grensvoorspelling-markeerteken is opgenomen in de header-informatie.
cVoorspellende coderingswerkwijze van geometrie>
Een voorspellende coderingswerkwijze van een raster is gericht op een verhoging van de coderingsdoelmatigheid door 35 de geometrie van een willekeurig hoekpunt te voorspellen, dat wil zeggen, d, onder gebruikmaking van drie hoekpunten
Λ η Λ QRQO
a, b en c van een eerder gecodeerde, naastgelegen driehoek, dat wil zeggen, d', en het coderen van het verschil tussen een geschatte waarde en een werkelijke waarde. Zo'n voorspellende coderingswerkwijzekan worden uitgedrukt door de 5 formule 5.
[formule 5] d' = f(a, b, c)
De werkwijzen van het voorspellen van de geometrie verschillen in afhankelijkheid van de grensvoorspelling. Dit 10 komt omdat het gebruik of niet-gebruik van drie hoekpunten van een aangrenzende driehoek die wordt gebruikt voor voorspelling verschilt in afhankelijkheid van de werkwijze van grensvoorspelling en dus kan het onafhankelijk herstel van partities niet voor elke werkwijze worden gegarandeerd. 15 Wanneer bij de onderhavige uitvinding de waarde van grensvoorspelling wordt ingesteld op '1', dat wil zeggen, wanneer overlapping toegestaan is, wordt de voorspellende coderings-werkwijze gebruikt zoals gewoonlijk alleen de bezochte informatie van aangrenzende hoekpunten wordt gebruikt. 20 Anders, wanneer de waarde van de grensvoorspelling wordt ingesteld op '0', dat wil zeggen, wanneer overlapping niet toegestaan is en voorspellende codering moet worden gerealiseerd door alleen de geometrie in een partitie te gebruiken, wordt de voorspellende coderingswerkwijze uitgevoerd zoals 25 is uitgedrukt in formule 6: [formule 6] wanneer geen van a, b en c kan worden gebruikt, d' = 0 anders wanneer alleen één van a, b en c kan worden gebruikt, d' = t 30 anders wanneer alleen twee van a, b en c kunnen worden gebruikt, { wanneer de afstanden tussen twee hoekpunten tl en t2 en d 1 bedragen, d' = (tl+t2)/2 anders wanneer de afstand tussen alleen één hoek-35 punt tl en d 1 is, d' = tl anders d' = t2 1013639 49 } anders d' = f(a, b, c) waarbij t een willekeurig beschikbaar hoekpunt van drie hoekpunten a, b en c aangeeft, en tl en t2 twee beschikbare hoekpunten van drie hoekpunten a, b en c aangeven.
5 <Constructie en verwerkingsmethode van bitstromen van geometrie en fotometrie>
De geometrie-informatie en de fotometrie-informatie waaronder kleur, normale en textuur-coördinaten worden gecodeerd als volgt. Ten eerste, zoals getoond in fig. 25A, 10 de gerelateerde eigenschapsinformatie gecodeerd voor elke verplaatsingsbit van een driehoek. Wanneer overeenkomstig deze werkwijze verplaatsingsbits en polygoonrand-informatie worden hersteld, kunnen driehoeken meteen worden gerenderd. Anders kunnen zoals getoond in fig. 25B de respectievelijke 15 eigenschappen afzonderlijk worden gecodeerd. Fig. 26 is een routeschema voor het coderen van de werkelijke fotometrie door gebruik te maken van het bovenstaande syntax-stelsel. Zoals getoond in fig. 26, is de geometrie gecodeerd in de combinatie van de werkwijzen die zijn af geheeld in de fig. 20 24A en 24B, door gebruik te maken van het in fig. 25A ge toonde syntax-stelsel.
Fig. 26 is een routeschema van de codering van een polygonaal 3D-model in eenheden die bestaan uit partities.
1. Een grensvoorspellingsmethode wordt bepaald (stap 25 401). Met andere woorden, er wordt vastgesteld of codering moet worden verricht met behulp van de in fig. 24A of 24B getoonde werkwijze.
2. De eerste driehoek die in een parti tie voorkomt, de root-driehoek, wordt gecodeerd (stap 402).
30 3. De root-geometrie wordt gecodeerd (stap 403).
4. Wanneer een volgende driehoek aanwezig is (stap 404), wordt de routine verplaatst naar de volgende driehoek (stap 405) en daarna verplaatst naar het volgende hoekpunt (stap 406).
35 5. Er wordt vastgesteld of elk hoekpunt van de driehoek in de vorige partitie wordt getraverseerd (stap 407). Wan- neer in de vorige partitie geen codering is uitgevoerd, wordt vastgesteld of een codering is uitgevoerd in de actuele partitie (stap 409). Wanneer dit niet het geval is, wordt het hoekpunt gecodeerd (stap 410).
5 6. Wanneer het hoekpunt in de vorige partitie gecodeerd is, of de grensvoorspellingswaarde 1 bedraagt (stap 408), wordt vastgesteld of het hoekpunt is bezocht (stap 409). Wanneer dit niet het geval is, wordt codering van het hoekpunt gerealiseerd (stap 410).
10 7. De stappen 405 tot en met 410 worden herhaald tot de laatste driehoek van de actuele partitie.
Nu zal de coderingssyntax voor het realiseren van een progressief 3D-raster en foutbestendigheid worden beschreven.
15 De gecomprimeerde bitstroom voor een 3D polygoon-raster is opgebouwd uit een header-datablok met globale informatie, gevolgd door een volgreeks van verbonden component-datablok-ken, elk ervan verbonden met een verbonden component van het raster.
20 3D-raster-header CC-data nr. 1 CC-data nr. nCC
Wanneer een 3D-raster wordt gecodeerd in foutbestendig-heidsmodus, worden verbonden component-datablokken gegroepeerd of verdeeld in partities.
partitie nr. 1 partitie nr. 2 partitie nr.nPT
25 Elk verbonden conponent-datablok is opgebouwd uit drie bestanden, de hoekpunt-graaf, het driehoek-boom-bestand, en het driehoek-databestand.
hoekpunt-graaf driehoek-boom driehoek-data
λ η Λ Q R Q Q
51
Het driehoek-boom-bestand bevat de structuur van een driehoek-spanning tree die alle driehoeken van de corresponderende verbonden componenten koppelt en een eenvoudige polygoon vormt. Het polygoon-raster wordt in driehoekvorm 5 vertegenwoordigd in de bitstroom, die ook de informatie bevat die nodig is voor het reconstrueren van de oorspronkelijke vlakken. Het hoekpunt-graaf bestand bevat de informatie die nodig is om paren grensranden van de eenvoudige polygoon aan elkaar te hechten voor het reconstrueren van de 10 oorspronkelijke verbonden componenten-connectiviteit. De connectiviteit wordt gecategoriseerd als globale informatie (voor elke verbonden component) en lokale informatie (voor elke driehoek). De globale informatie wordt opgeslagen in de Vertex Graph- en Triangle Tree-bestanden. De lokale informa-15 tie wordt opgeslagen in het Triangle Data-bestand.
De driehoek-data worden ingericht op een per driehoek-basis, waarbij de ordening van de driehoeken wordt bepaald door de traversering van de driehoek-boom.
data voor data voor data voor 20 driehoek 1 driehoek 2 driehoek n
De data voor een gegeven driehoek worden als volgt georganiseerd: verplaatsings- td_orientation polygon_edge coord normal patroQn 25 kleur texCoord
Het verplaatsingspatroon, td_orientation en polygon_ed-ge vormen de per driehoek-connectiviteit. De andere velden bevatten informatie voor het reconstrueren van de hoekpunt-coördinaten (coord) en naar keuze, normale, kleur- en tex-30 tuur-coördinaat (texCoord) informatie.
Visuele Bitstroom Syntax 3D-raster-object 3D_Mesh_Objeet 1013639 3D_Mesh_0bject () { No. of bits Mnemonic 3D_MO_start_code 16__uimsbf 3D_Mesh_Object_Header () _ _doj___ 3D_Mesh_Object_Layer ()__ } while (nextbits_bytealigned ()==3D_MOL_start_code)__
[} II
3D_Mesh_Object_Header 3D_Mesh_0bject_Header () { No. of bits Mnemonic ccw 1 bslbf convex J__bslbf ! 0 1 36 39 - ' 53 solid 1_bslbf creaseAngle 6 uimsbf coord_header () normal_header () color_header () texCoord_header () cgd_data 1 bslbf if (cgd_data==T) cgd_header () [} 111 3D_Mesh_Object_Layer 3D_Mesh_Object_Layer () { No. of bits Mnemonic 3D_MOL_start_code 16 uimsbf moljd 8 uimsbf if (cgd_data==T) { _ cgd_n_vertices 24 uimsbf cgd_n_triangles 24 uimsbf cgd_n_edges 24 uimsVf }___ if (mol_id==0) _ 3D_Mesh_Object_Base_Layer () _ else _ 3D_Mesh_Object_Refinement_Layer () |} 111 3D_Mesh_Object_Base_Layer 3D_Mesh_Object_Base_Layer () { No. of bits Mnemonic do{ ' 3D_MOBL_start_code 16 uimsbf j 1013639 mobljd 8_uimsbf while (Ibytealigned ()__ one_bit 1 bslbf qf_start () ___ if (3D_MOBL_start_code =="partitionjype_0") { __ do{ connected_component () qf_decode (last_component, vlclbf last_component_context) _ } while (last_component==O') _>___ else if (3D_MOBL_start_code =="partition_type_r){ _ vg_number=0 do{ _ vertex_graph () vg_number++ qf_decode (codap_last_vg, vlclbf codap_last_vg_context) ,__ } while (codap_last_vg==O’) __}___ else if (3D_MOBL_start_code =="partition_type_2") { __ if (vg_number > 1) _ qf_decode (codap_vg_id, vlclbf codap_vg_id_context) '__ qf_decode (codap_left_bloop_idx, vlclbf codap_left_bloop_idx_context) 1 0 1 3 6 p 9 55 qf_decode (codap_right_bloop_idx, vlclbf codap_right_bloop_idx_context) qf_decode (codap_bdry_pred, vlclbf codap_bdry_pred_context) triangle_tree() triangle_data() _}____ } while (nextbits_bytealigned ()==3D_MOBL_start_code) [7 11 coord_header coord_header () { No. of bits Mnemonic coord_binding 2 uimsbf coord_bbox 1 blsbf if (coord_bbox==T) { coord_xmin 32 blsbf coord_ymin 32 blsbf coord_zmin 32 blsbf coord_size 32 blsbf - }___ coord_quant 5 uimsbf coord_pred_type 2 uimsbf if (coord_pred_type=-'tree_prediction"|| coord_pred_type =="parallelogram_prediction") { coord_nlambda 2 uimsbf j for(i=1;i<coord_nlambda; i++) coordjambda 4-35 simsbf L ) I I I · in 30 _
[} 1 1 I
normaljieader normal_header () { No. of bits Mnemonic normal_binding 2 uimsbf if (normal_binding !="not_bound") { normal_bbox 1 blsbf normal_quant 5 uimsbf normal_pred_type 2 uimsbf · if (normal j5red_type=="tree_prediction"I normal_pred_type == "parallelogram_prediction") { normaljilambda 2 uimsbf for (i=1;i<normal_nlambda; i++) normaljambda 4-35 simsbf }___ }____
[}_I_ V
colorjieader color_header () { No. of bits Mnemonic color_binding 2 uimsbf if (color_binding!="not_bound") { color_bbox 1 blsbf if (color_bbox=='1') { _ color_rmin 32 blsbf color_gmin 32 blsbf color_bmin 32 blsbf
- I
color_size 32 blsbf } 111 ·· 1013639 I 57 I color_quant 5 uimsbf I color_pred_type 2 uimsbf I if (colorj3red_type==,,treej3rediction,,| I color_pred_type == I s "parallelogram_prediction”) { I color_nlambda 2 uimsbf I for (i=1;i<color_nlambda; i++) I color_lambda 4-35 simsbf I _}___ I 1° }___
I l> I
I texCoord_header I texCoord_header () { No. of bits Mnemonic I texCoord_binding 2 uimsbf I is if (texCoord_binding!="not_bound") { I texCoord_bbox 1 blsbf I if (texCoord_bbox==’1') { I texCoord_umin 32 bslbf I texCoord_vmin 32 bslbf I 2o texCoord_size 32 bslbf I _>___ I texCoord_quant 5 uimsbf I texCoord_pred_type 2 uimsbf I if (texCoord_pred__type 25 =="tree_prediction"|| texCoord_pred_type == "parallelogram_prediction") { I texCoord_nlambda 2 uimsbf __ for (i=1;i<texCoord_nlambda; i++) · 58 texCoordJambda 4-35 simsbf _}___ }______
|7~ I I
5 cgd_header cgd_header () { No. of bits Mnemonic cgd_n_proj_surface_spheres 4 uimsbf if(cgd_n_proj_surface_spheres!=0) { cgd_x_coord_center_point 32 ieeefl io cgd_y_coord_center_point 32 ieeefl cgd_z_coord_center_point 32 ieeefl cgd_normalized_screen_distance_factor 8 uimsbf for (l=0;i<=cgd_n_proj_surface_spheres; i++) { cgd_radius 32 ieeefl j is cgd_min_proi_surface 32 ieeefl j cgd_n_proj_points 8 uimsbf ---i for G'=0;j<=cgd_n_proj_points; j++) {__ cgd_spbere_point_coord 11 uimsbf cgd_proj_surface 32 . ieeefl j 1 i
20 _}___I
_>___! }____ η 111 connected_component 25 connected_component () { No. of bits Mnemonic vertex_graph () __ qf_decode (has_stitches, has_stitches_context) vlclbf if (has_stitches=-1')____ Λ A o r, Λ Λ 59 stitches () _ _ trianglejree () _ triangle_data () _ I) 11 s vertex_graph vertex_graph () { No. of bits Mnemonic qf_decode (vg_simple, vg_simple_context) vlclbf depth=0 codeJast=' 1' _ io openloops=0 _ do { do { _ if (code_last=-1') { _ qf_decode (vgjast, vg_last_context) vlclbf : is if (openloops>0) { _ qf_decode (vg_forward_run, vlclbf vg_forward_run_context) _ if (vg_forward_run==’0') { openloop- 2o · if (openloops>0) _ qf_decode (vgjoopjndex, · vlclbf vg_loop_index_context)
Break ___: _>___ 25 }___ }___ qf_decode (vg_run_length, vlclbf vg_runJength_context) __· _qfjjecode (vgjeaf, vg_leaf_context)_____vlclbf if (vg_leaf=-1 '&&vg_simple==O') {__ qfjjecode (vg_loop, vg_loop_context) vlclbf if (vg_loop==T) openloops++ 5 }______ } while (0) if (vg _leaf=='1 '&&vg_last=- 1 '&&code Jast==' 1') depth- if (vgJeaf==O'&&(vgJast==O,|| code_last==O')) io depth++ codeJast=vg_leaf } while (depth >= 0) I} stitches is stitches () { No. of bits Mnemonic for each vertex in connected_component { qf_decode (stitch_cmd, stitch_cmd_context) vlclbf if (stitch_cmd) { qfjjecode (stitch_pop_or_get, vlclbf 20 stitch_pop_or_get_context) if (stitch_pop_or_get=='1') { qf_decode (stitch_pop, stitch_pop__context) vlclbf qf_decode (stitch_stitch__stack_index, vlclbf stitch_stitich_stack_index_context) 25 qf_decode (stitch_incr_length, vlclbf stitch_incr_length_context) if (stitch_incrJength!=0) qf_decode (stitch_incrjength_sign, vlclbf stitch_incr_length_sign_context)______.
1013639 61 qf_decode (stitch_push, vlclbf stitch_push_context) _ if (total length>0) qf_decode (stitch_reverse, vlclbf 5 stitch_reverse_context) }___ else qf_decode (stitch_length, vlclbf stitch_length_context) >° }___ }___ |} 11" triangle_tree triangle_tree () { No. of bits Mnemonic is depth = 0 ntriangles = 0 branch_position = 0 do{ _ qf_decode(tt_run_length, tt_run_length_context) vlclbf 20 . ntriangles += tt_runjength () qf_decode(tt_leaf, tt_leaf_context) vlclbf if (tt_leaf=-1 ’) {__; depth- |
} I
—-- — - " - - ---j
25 else I
1 * I mi I ' ——— — i - ' 1 ^' j branch_position = ntriangles _ depth++ __ }___ } while (depth >= 0)_____' 62 if (3D_MOBL_start_code=="partition_type_2") if (codap_right_bloop_idx-codapJeft_bloop_idx-1 >ntriangles) { if (branch_position == ntriangles-2) { qf_decode(codap_branch_len, vlclbf codap_branch_len_context) ntriangles-=2 _}___ else ntriangles- }___ b 111 triangle_data triangle_data () { No. of bits Mnemonic qf_decode(triangulated, triangulated_context) vlclbf depth = 0; root_triangle () for (i=1; i<ntriangles; i++) { triangle (i) Γ) 111 rootjriangle rootjriangle () { No. of bits Mnemonic if (marchingjriangle) qf_decode(marching_pattern, vlclbf marching_pattern_context[marching_pattern]) else{ if (3D_MOBL_start_code=="partition type_2") _If (tt_leaf==O,&&depth==0)___j · 1013639 63 qf_decode(td_orientation, vlclbf td_orientation_context) _ if (tt_leaf==O')___ depth++ else depth- }___ if (3D_MOBL_start_code=="partition type_2") if (tΓiaπgulated==,0,) qf_decode(polygon_edge, vlclbf polygon_edge_context[polygon_edge])__ root_coord () __ root_normal () __ root_color () __ root_texCoord () __ 1) .
root_coord () { No. of bits Mnemonic if (3D_MOBL_start_code=="partition type_2") {__ if (visited[vertex_index]==0) {__ root_coord_sample () _ if (visited[vertex_index]==0) { _ coord_sample () ___ coord_sample () __ }___ }___ }____ else { root_coord_sample() __' _coord_sample()___ 64 coord_sample() }___ |} 111 root_normal () { No. of bits Mnemonic if (normal_binding != "not_bound") { if (3D_MOBL_start_code=="partition type_2M) { if (normal_binding != "bound_per_vertex" || visited[vertex_index]==0) { root_normal_sample () if (normal_binding != "bound_per_face"&& (normal_binding != "bound_per_vertex"|| visited[vertex_index]==0)) { normal_sample () normal_sample () _}____ }___ else { root_normal_sample () if (normal_binding != "bound_per_face") { normal_sample () normal_sample () _}___ }___.
η 111 root_color () { No. of bits Mnemonic if (color_binding != "not_bound") _if (3D_MOBL_start_code=-'partition type__2") {____· ,- ' 65 _ if (color_binding != "bound_per_vertex"||visited[vertex_index]==0) { root_color_sample() if (color_binding != "bound_per_face"&& (color_binding != "bound_per_vertex" || visited[vertex_index]==0)) { color_sample () color_sample () _}___ }___ else root_color_sample() if (color_binding != "bound_per_face") { _ color_sample () color_sample () _}____ _}___ ΓΓ rootJexCoord () { No. of bits Mnemonic if (.texCoord_binding != Mnot_bound”) { if (3D_MOBL_start_code=="partition type_2") { __ if (texCoord_binding 1= "bound_per_vertex" I visited[vertex_index]==0) { root_texCoord_sample () if (texCoord_binding != "boundjDer_vertex,’||visited[vertexjndex]==0) { _ texCoord_sample () _ texCoord_sample () r ) ] ......I ·· - }____ else { root_texCoord_sample() texCoord_sample() texCoord_sample() }___ [} 111 triangle triangle () { No. of bits Mnemonic if (marchingjriangle) qf_decode(marching_pattem, vlclbf marchingj3attern_context[marching_pattern]) else{ if (3D_MOBL_start_code=="partition type_2") if(ttjeaf=-0'&&depth==0)__ qf_decode(td_orientation, vlclbf td_orientation_context) _ if(tt_leaf==Ol)___ depth++ _ else depth- if (triangulated==O') qf_decode(polygon_edge, vlclbf polygon_edge_context[polygon_edge]) coord () normal () color () texCoord () 1 G 1 36 39 _67__ coord () { No. of bits Mnemonic if (3D_MOBL_start_code=="partition type_2") { if (visited[vertex_index]==0) if(no_ancestors) root_coord_sample()
Else coord_sample () }_;___ else { if (visited[vertex_index]==0) coord_sample() }___; |} 11 normal () { No. of bits Mnemonic if (normal_binding == "bound_per_vertex") { if (3D_MOBL_start_code=="partition type_2") { _ if (visited[vertex_index]==0) if (no_ancestors) root_normal_sample() _ else normal_sample () _ }____ else { _ if (visited[vertex_index]==0 normal_sample () }___ } else if (normal_binding == "bound_per_face") { if (triangulated==’1' || polygon_edge=='1') _ _ normal_sample ()___
IfHQfion 68 } else if (normaljjinding == "bound_per_comer") { if (triangulated=-1' || polygon_edge==’1 ’) normaLsample () normal_sample () 5 _}______ normal_sample () }___
[) I I
color () { No. of bits Mnemonic • io if (color_binding == "bound_per_vertex") { if (3D_MOBL_start_code=="partition type_2") { if (visited[vertex_index]==0) if (no_ancestors) root_color_sample() is Else color_sample () }_;___i else { if (visited[vertex_index]==0) 1 “ I 1 »11 "“ ' 20 color_sample () }____ } else if (color_binding == ”bound_per_face") { if (triangulated==,1'||polygon_edge==T) color_sample () 25 } else if (color_binding == "bound_per_comer") { if (triangulated=='1' || polygon_edge=='1') color_sample () color_$ample () j l } 1013639 I · . 69 color_sample () ____ }___ 1} .lil texCoord () { No. of bits Mnemonic s if (texCoord_binding == "bound_per_vertex") { if (3D_MOBL_start_code==”partition type_2") { if (visited[vertex_index]==0) if (no_ancestors) root_texCoord_sample()__ 10 else texCoord_sample () }___ else { if (visited[vertex_index]==0) is texCoord_sample () }___ } else if (texCoord_binding == "boundjDer^corner'') j___ if (triangulated==,1'||polygon_edge==T) _ — 20 texCoord_sample () _ texCoord_sample () }___ texCoord_sample () _ }___ 25 }____ root_coord_sample () { No. of bits Mnemonic for (i=0; i<3; i++)___ for (j=0; j<coord_quant; j++)___ : 1013639
• / V
qf_decode(coord_bit, zero_context) vlcfbf
[} II
root_normal_$ample () { No. of bits Mnemonic for (i=0; i<3; i++) _ 5 for (j=0; j<normal_quant; j++) qf_decode(normal_bit, zero_context) vldbf [} 1 i root_color_sample () { No. of bits Mnemonic for (i=0; i<3; i++) _ to for (j=0; j<color_quant; j++) _ qf_decode(color_bit, zero_context)__vlclbf I 1 root_texCoord_sample () { No. of bits Mnemonic .
for (i=0; i<3; i++) __ is for (j=0; j<texCoord_quant; j++)__ qf_decode(texCoord_bit, zero_context) vlclbf
5 I I
coord_sample () { No. of bits Mnemonic for (i=0; i<3; i++) {_____ 20 _j=0_________ do { ___.
qf_decode(coord_leading_bit, vlclbf | coord_leading_bit_context[3*j+i]) ___| j+·*·_____ 25 } while (j<coord_quant && coordJeading_bit==O')__- if (coordJeadingJ>H="T) {______
1 ΙΊ1 36 3Q
71 _ qf_decode(coord_sign_bit, zero_context)__vlclbf do {___ qf_decode(coord_trailing_bit, zero_context)__vtclbf } while (j<coord_quant)__ s }___ }__;__
|} I
normal_sample () { No. of bits Mnemonic for(i=0; i<1; i++) { 10 j=0 do{ qf_decode(normaMeading_bit, vlclbf normal_leading_bit_contextö]) j++___ is } while (j<normal_quant && normalJeading_bit==O') if (normal_leading_bit==’1') { qf_decode(normal_sign_bit, zero_context) vlclbf do{ 20 qf_decode(normal_trailing_bit, zero_context) vlclbf } while (j<normal_quant) }____ }_____ [} I 1; 25 color_sample () { No. of bits Mnemonic for (i=0; i<3; i++) {
i*°__I
_doj_ I
1n1 as so • 72 qfjjecode(colorjeading_bit, vlclbf color_leading_bit_context[3*j+i]) j++ } while (j<color_quant && colorJeading_bit==O') 5 if (color_leading_bit=-1') { qf_decode(color_sign_bit, zero_context) vlclbf do{ qf_decode(color_trailing_bit, zero_context) vlclbf } while (j<color_quant) }_____ _}___ l) texCoord_sample () { No. of bits Mnemonic for (i=0; i<1; i++){ 15 j=0 do{ qf_decode(texCoord_leading_bit, vlclbf texCoordJeading_bit_context[2*j+i]) j++____ 2o } while (j<texCoord_quant && texCoord_leading_bit==O') if (texCoordJeading_bit==' 1') { qf_decode(texCoord_sign_bit, zero_context) vlclbf do{ _ 25 qfjjecode(texCoord_trailing_bit, vlclbf zero_context) } while (j<texCoord__quant) } π 111
1n1QfiQQ
.' 73
[Γ I I
3D Mesh Ojbect_Refinement_Layer 3D Mesh Ojbect_Refinement_Layer() { No. of bits Mnemonic do { 5 3D_MORL_start_code 16 uimsbf morljd β uimsbf connectivity_update 2 uimsbf pre_smoothing 1 bslbf if (pre_smoothing==,1') io pre_smoothing__parameters() post_smoothing 1 bslbf if (post_smoothing=-1')__ post_smoothing_parameters() while (!bytealigned())__ is one_bit 1 bslbf qf_start() __ if (connectivity_update=="fs_updateM) _ fs_pre_update() _____ if (pre_smoothing=-1' || post_smoothing=='1') .__ 20 ’ smoothing_constraints() _
Tapply pre smoothing step*/ _ if (connectivity_update==’fs_update") _ fs_post_update() _ if (connectivity_update=-’notjjpdated") _| 25 qf_decode(other_update, zero_context)__vlclbf if (connectivity_update=="not_updated") ||other_update=-1') .
other_property_update() _/‘apply post smoothing step*/___ I t } while (nextbits_bytealigned()==3D_M0RL_start_code) [} 111 pre_smoothing_parameters pre_smoothing_parameters() { No. of bits Mnemonic pre_smoothing_n 8 uimsbf pre_smoothingJambda 32 ieeefl pre_smoothing_mu 32 ieeefl [} 1 post_smoothing_parameters post_smoothing_parameters() { No. of bits Mnemonic post_smoothing_n 8 uimsbf post_smoothing_lambda 32 ieeefl post_smoothing_mu 32 ieeefl [} 111 fs_pre_update fs_pre_update() { No. of bits Mnemonic for each connected component { forest() _ for each tree in forest { triangle_tree() /*for each tree loop vertex set visited[vertex_index]=T*/ triangle_data() _ }___ _J___: [} 1.-
1 Π 1 Q O
' 75 forestQ_ No. of bits Mnemonic for each edge in connected component if (creates no loop in forest) qf_decode(pfs_forest_edge), vlclbf pfs_forest_edge_context) |} smoathing_constraints smoothing_constraints() { No. of bits Mnemonic qf_decode(smooth_with_sharp_edges, zero_context) vlclbf if (smooth_with_sharp_edges==’1 *) sharp_edge_marks() qf_decode(smooth_with_fixed_vertices, vlclbf zero_context)_________ if (smoothjvith_fixed_vertices=-1')___ fixed_vertex_marks()______ |} sharp_edge_marks() { No. of bits Mnemonic for each edge ______|__ qf_decode (smooth_sharp_edge, vlclbf smooth_sharp_edge_context)________ |} _ fixed_vertex_marks() { No. of bits Mnemonic for each vertex _____ qf_decode (smooth_fixed_vertex, smooth_fixed_vertex_context)_________
I} . J
fs_post_update * fs_post_update() { No. of bits Mnemonic for each connected component { for each tree in forest treejoop_property_update()
[} II
tree_loop_property_update() { No. of bits Mnemonic loop_coord_update() loop_normal_update() loop_color_update() loopJexCoord_update()
[} I I
loop_coord_update() { No. of bits Mnemonic for each tree loop vertex coord_sample() |} loop_normal_update() { No. of bits Mnemonic if {normal J>inding=="bound_per_vertex") { for each tree loop vertex normal_sample() ___ else if (normal_binding=="bound_per_face") { for each tree loop face normal_sample() }___ else if (normaLbinding=="bound_per_corner") { for each tree loop comer___j · 1013639 77 normal_sample() }__-__ [} loop__color_update() { No. of bits Mnemonic if (color_binding=="bound_per_vertex") { for each tree loop vertex color_sample() }____ else if (color_binding=="bound_per_face") { for each tree loop face color_sample() _ }____ else if (color_binding=="bound_per_corner") { _ for each tree loop corner color_sample() >____ 1 1 loop_texCoord_update() { No. of bits Mnemonic if (texCoord_binding=="bound_per_vertex"){____ for each tree loop vertex__ texCoord_sample()__ }___ else if (texCoord_binding=="bound_per_corner") { _ for each tree loop comer__ texCoord_sample() }___.
η 11 f o << η ο n * /0 other_property_update otherjDroperty_update() { No. of bits Mnemonic other_coord_update() other_normaljjpdate() other_colorjjpdate() otherjexCoord_update() 1) 11 other_coord_update() { No. of bits Mnemonic for each vertex in mesh if (vertex is not a tree loop vertex) coord_sample() I} 11 other_normal_update() { No. of bits Mnemonic if (normal J)inding==Hbound_per_vertex") { for each vertex in mesh if (vertex is not a tree loop vertex) normal_sample() }___ else if (normal_binding=="bound j)er_face") { for each face in mesh _ ___ _ . _ if (face is not a tree loop face) normal_sample() }___ else if (normal_binding=="bound_per_comer") { for each comer in mesh if (comer is not a tree loop comer) normal_sample() 1 } II , 1013639 79 _ |} 111 other_color_update() { No. of bits Mnemonic if (color_binding=="bound_per_vertex") { for each vertex in mesh if (vertex is not a tree loop vertex) color_sample() }____ else if (color_binding=="bound_per_face") { for each face in mesh if (face is not a tree loop face) color_sample() }___ else if (color_binding=="bound_per_comeO { for each corner in mesh if (corner is not a tree loop corner) color_sample() _ }___ |} other_texCoord_update() { No. of bits Mnemonic if (texCoord_binding=="bound_per_vertex") { for each vertex in mesh _ if (vertex is not a tree loop vertex) texCoord_sample() _ }___ else if (texCoord_binding=="bound_per_comer") { __ for each comer in mesh if (corner is not a tree loop corner) '
_texCoord_sample()______J
1013639 f } ' ] [} ► 3D_Mesh_0bject MO_start_code: Dit is een unieke 16-bits code die wordt gebruikt voor synchronisatie. De waarde van deze code is altijd '0000 0000 0010 0000'.
5 ► 3D_Mesh_0bject_Layer 3D_MOL_start_code: Dit is een unieke 16-bits code die wordt gebruikt voor synchronisatie. De waarde van deze code is altijd '0000 0000 0011 0000'.
mol_id: deze 8-bits ongemarkeerde eenheid specificeert 10 een unieke id voor de rasterobject-laag. Een waarde van 0 geeft een basislaag aan, en een waarde groter dan 0 geeft een verfijningslaag aan. De eerste 3D_Mesh_Obj ect_Layer meteen na een 3D__Mesh__Object_Header moet mold_id = 0 hebben, en volgende 3D_Mesh_Obj ect_Layers in hetzelfde 3D_Mesh_Ob-15 ject moeten mold_id > 0 hebben.
cgd_n_vertices: Dit is het aantal hoekpunten in de actuele resolutie van het 3D-raster. Wordt gebruikt ter ondersteuning van computational graceful degradation.
cgd_n_triangles: Dit is het aantal driehoeken in de 20 actuele resolutie van het 3D-raster. Wordt gebruikt ter ondersteuning van computational graceful degradation.
cgd_n_edges: Dit is het aantal randen in de actuele resolutie van het 3D-raster. Wordt gebruikt ter ondersteuning van computational graceful degradation.
25 ► 3D_Mesh_Object_Base_Layer 3D_MOBL_start_code: Dit is een code van lengte 16 die wordt gebruikt voor synchronisatie. Tevens geeft hij drie verschillende partitie-typen voor foutbestendigheid aan.
1013639
80'V
Tabel 2. Definitie van partitie-type informatie 3D_M0BL_start_code partitie-type betekenis_ Ό000 0000 0011 0001' Partition_type_0 één of meer groepen van vg, tt en td 5 '0000 0000 0011 0011' Partition_type_l één of meer vgs_ '0000 0000 0011 0100' Partition_type_2 één paar tt en td mobl_id: Deze 8-bits ongemarkeerde eenheid specificeert een unieke id voor de rasterobjeet-component.
10 one_bit: Deze booleanse waarde is altijd waar. Deze ene bit wordt gebruikt voor byte-alignering.
last_component: Deze booleaanse waarde geeft aan of er meer te decoderen verbonden componenten zijn. Wanneer last_component '1' is, dan is de laatste component gedeco-15 deerd. Anders zijn er meer te decoderen componenten. Dit veld is rekenkundig gecodeerd.
codap_last_vg: Deze booleaanse waarde geeft aan of de actuele vg de laatste in de partitie is. De waarde is fout wanneer er meer te decoderen vg's in de partitie aanwezig 20 zijn.
codap_vg_id: deze ongemarkeerde eenheid geeft de id van de hoekpunt-graaf aan die correspondeert met het actuele tt/td-paar in partition_type_2. De lengte van deze waarde is een log scaled value van het vg_number van vg die is gedeco-25 deer.d van de vorige partition_type_l. Wanneer er alleen één vg in de vorige partition_type_l zit, wordt codap_vg_id niet gebruikt.
Codap_left_bloop_idx: Deze ongemarkeerde eenheid geeft de linker begin-index aan, binnen de grenslus-tabel van een 30 verbonden component, voor de driehoeken die in een partitie moeten worden gereconstrueerd. De lengte van deze waarde is de log scaled value van de afmeting van de grenslus-tabel.
Codap_right_bloop_idx: Deze ongemarkeerde eenheid geeft de rechter begin-index aan, binnen de grenslus-tabel van een 35 verbonden component, voor de driehoeken die in een partitie •i* moeten worden gereconstrueerd. De lengte van deze waarde is de log scaled value van de afmeting van de grenslus-tabel.
codap_bdry_pred: Deze booleaanse vlag geeft aan hoe geometrie- en fotometrie-informatie die twee of meer parti-5 ties met elkaar gemeen hebben, moet worden voorspeld. Wanneer codap_bdry_pred '1' is, wordt de modus van beperkte grensvoorspelling gebruikt, anders wordt de uitgebreide modus voor grensvoorspelling gebruikt.
► 3D_Mesh_0bject_Header 10 ccw: Deze booleaanse waarde geeft aan of hoekpunten ordening van de gedecodeerde vlakken tegen de klokwijzer-richting in gaat.
convex: Deze booleaanse waarde geeft aan of het model convex is.
15 solid: Deze booleaanse waarde geeft aan of het model een vaste stof is.
creaseAngle: Deze 6-bits ongemarkeerde eenheid geeft de plooihoek aan.
► coord_header 20 coord_binding: Deze 2-bits ongemarkeerde eenheid geeft de binding van hoekpunt-coördinaten aan het 3D-raster aan. De enige toelaatbare waarde voor coord Jbinding is '01'.
coordjobox: Deze booleaanse waarde geeft aan of voor de geometrie een grenskader is verschaft.
25 coord_xmin, coord_ymin en coord_zmin: Deze zwevend punt-waarden geven de linker benedenhoek aan van het grenskader waarin de geometrie ligt.
coord_size: Deze zwevend punt-waarde geeft de afmeting van het grenskader aan.
30 coord_guant: Deze 5-bits ongemarkeerde eenheid geeft de voor geometrie gebruikte kwantiseringsstap aan.
coord_pred_type: Deze 2-bits ongemarkeerde eenheid geeft het type voorspelling aan dat wordt gebruikt voor het reconstrueren van de hoekpunt-coördinaten van het raster.
35 Tabel 3 toont de toelaatbare waarden voor coord__pred_type 1013639 82
Tabel 3. Toelaatbare waarden voor coord_pred_type coord_pred_type voorspellingstype 00 geen voorspelling 01 verboden_ 5 10 parallellogram-voorspelling ll gereserveerd_ coord_nlambda: Deze 2-bits ongemarkeerde eenheid geeft het aantal voorlopers aan dat wordt gebruikt om de geometrie te voorspellen. De enige toelaatbare waarde van coord_nlamb-10 da is 3. Tabel 4 toont toelaatbare waarden als een functie van coord_pred_type.
Tabel 4. Toelaatbare waarden voor coord_nlambda als een functie van coord_pred_type.
coord_pred_type coord_.nl ambda 15 00 _niet gecodeerd 10 _3_ coord_lambda: Deze ongemarkeerde eenheid geeft het gewicht aan dat aan een voorloper wordt verleend voor voorspelling. Het aantal bits dat voor dit veld wordt gebruikt 20 is gelijk aan coord_quant + 3.
► normal_header normaljbinding: Deze 2-bits ongemarkeerde eenheid geeft de binding van normalen aan het 3D-raster aan. De toelaatbare waarden zijn beschreven in Tabel 5.
25 Tabel 5. Toelaatbare waarden voor normaljbinding normaljbinding _binding_ 00 _notjbound_ 01 bound_per_vertex 10 bound_per_face 30 11 bound__per_comer 10 13639 uw normal_bbox: Deze booleaanse waarde behoort altijd fout ('0') te zijn.
normal_quant: Deze 5-bits ongemarkeerde eenheid geeft de kwantiseringsstap aan die voor normalen wordt gebruikt.
5 normal_pred_type: Deze 2-bits ongemarkeerde eenheid geeft aan hoe normaalwaarden worden voorspeld.
Tabel 6. Toelaatbare waarden voor normal_pred_type normal_binding _voorspel lings type_ _00__geen voorspelling_ 10 01 boom-voorspelling 10 parallellogram-voorspelling 11 _gereserveerd_
Tabel 7. Toelaatbare combinaties voor noraal_.binding en nomal_pred_type 15 normaljbinding normal_pred_type 00 not_coded 01 geen voorspelling, parallellogram- voorspelling_ 10 geen voorspelling, boom-voorspelling 20 11 geen voorspelling, boom-voorspelling normal_nlambda: Deze 2-bits ongemarkeerde eenheid geeft het aantal voorlopers aan dat wordt gebruikt om normalen te voorspellen. Toelaatbare waarden van normal_nlambda zijn 1, 2 en 3. Tabel 8 toont toelaatbare waarden als een functie 25 van normal_pred_type.
Tabel 8. Toelaatbare waarden voor normal_nlambda als een functie van normal_pred_type f* 1 1 - - . M . .
normal_pred_type normal_nlambda no_prediction niet gecodeerd 30 treejprediction 1, 2, 3 parallelogram-prediction 3_ 1013639 % 84 normal_lambda: Deze ongemarkeerde eenheid geeft het gewicht aan dat een voorloper voor voorspelling is gegeven. Het aantal voor dit veld gebruikte bits is gelijk aan normal_quant + 3.
5 ► color_header colorjbinding: Deze 2-bits ongemarkeerde eenheid geeft de binding van kleuren aan het 3D-raster aan. De toelaatbare waarden zijn beschreven in Tabel 9.
Tabel 9. Toelaatbare waarden voor color_binding 10 color_binding binding _00____notjbound_ 01 bound_per_vertex 10 _bound„per_f ace 11 _bound_per_corner 15 color_bbox: Deze booleaanse waarde geeft aan of een grenskader voor kleuren gegeven is.
color_rmin, color_gmin en colorjbmin: Deze 3 zwevend punt waarden geven de positie van de linker benedenhoek van het grenskaer in RGB-ruimte aan.
20 color_size: Deze zwevend punt-waarde geeft de afmeting van het kleurgrenskader aan.
color_quant: Deze 5-bits ongemarkeerde eenheid geeft de kwantiseringsstap aan die voor kleuren wordt gebruikt.
color_pred_type: Deze 2-bits ongemarkeerde eenheid 25 geeft aan hoe kleuren worden voorspeld.
Tabel 10. Toelaatbare waarden voor color_pred_type color_pred_type voorspellingstype 00 geen voorspelling _01__boom-voorspelling__ 30 10 parallellogram-voorspelling 11 gereserveerd 1 fl 1 36 3 9 V w
Tabel 11. Toelaatbare waarden voor color_binding en color_pred_type color_binding color_pred_type not_bound niet gecodeerd 5 bound_per_vert ex no_prediction, pa ra11el1ogram_predi c t i on bound__per_face no_prediction, tree_prediction_ bound_per_comer no_prediction, tree„prediction color_nlambda: Deze 2-bits ongemarkeerde eenheid geeft het aantal voorlopers aan dat wordt gebruikt om kleuren te 10 voorspellen. Toelaatbare waarden van color_nlambda zijn 1, 2 en 3. Tabel 12 toont toelaatbare waarden als een functie van color_pred_type.
Tabel 12. Toelaatbare waarden voor color_nlambda 15 als een functie van color_pred_type_ _col or_pred_type_ color_nlambda nojprediction niet gecodeerd tree_prediction 1, 2, 3 parallellogram_prediction 3 20 color_lambda: Deze ongemarkeerde eenheid geeft het gewicht aan dat een voorloper heeft voor de voorspelling.
Het voor dit veld gebruikte aantal bits is gelijk aan co-lor_quant + 3.
► texCoord_header 25 texCoord_binding: Deze 2-bits ongemarkeerde eenheid geeft de binding van texturen aan het 3D-raster aan. De toelaatbare waarden zijn beschreven in Tabel 13.
Tabel 13. Toelaatbare waarden voor texCoordJbinding texCoord_binding binding 30 00 _niet-gecodeerd_ 01 bound_per_vertex 10 verboden 11 bound_per_coraer 1013639_ 86 texCoord_bbox: Deze booleaanse waarde geeft aan of een grenskader voor textuur-coördinaten gegeven is.
texCoord_umin en texCoord_vmin: Deze 2 zwevend punt- waarden geven de positie aan van de linker benedenhoek van 5 het grenskader in 2D-ruimte.
texCoord_size: Deze zwevend punt-waarde geeft de afmeting van het textuur-grenskader aan.
texCoord_quant: Deze 5-bits ongemarkeerde eenheid geeft de kwantiseringsstap aan die wordt gebruikt voor textuur-10 coördinaten.
texCoord_pred_type: Deze 2-bits ongemarkeerde eenheid geeft aan hoe kleuren worden voorspeld. Tabel 14 toont toelaatbare waarden voor texCoord_pred_type en Tabel 15 toont toelaatbare waarden als een functie van texCoord_bin-15 ding.
Tabel 14. Toelaatbare waarden voor texCoord_pred_type texCoord_pred_type voorspellings type ÖÖ no_prediction 01 verboden 20 10 parallellogram-voorspelling 11 gereserveerd I — —»< 1 9 " - """ 1 ”*
Tabel 15. Toelaatbare combinaties van texCoord_binding en texCoord_pred__type texCoord_binding texCoord_pred_type 25 · not_bound _niet-gecodeerd_ bound_per_vertex geen voorspelling, parallellogram- voorspelling___ bound_per_corner geen voorspelling, boomvoorspelling texCoord_nlambda: Deze 2-bits ongemarkeerde eenheid 30 geeft het aantal voorlopers aan dat wordt gebruikt om tex-tuutr-coördinaten te voorspellen. Toelaatbare waarden van texCoord_nlambda zijn 1, 2 en 3. Tabel 16 toont toelaatbare waarden voor texCoord_nlambda als een functie van texCoord_pred_type.
1 fHQRQQ
V /
Tabel 16. Toelaatbare waarden voor texCoord_nlambda als een functie van texCoord_pred_type texCoordj?red_type texCoord_nlambda no_prediction niet-gecodeerd 5 treejprediction 1, 2, 3 parallelogram-prediction 3 texCoord_lambda: Deze ongemarkeerde eenheid geeft het gewicht aan dat een voorloper heeft gekregen voor voorspelling. Het aantal voor dit veld gebruikte bits is gelijk aan 10 texCoord_quant + 3.
► Cgd_header cgd_n_proj_surface_spheres is het aantal Projected Surface Spheres. Dit aantal is typisch gelijk aan 1.
cgd_x_coord_center_point is de x-coördinaat van het 15 middelpunt (typisch het zwaartepunt van het object) van geproj ecteerde oppervlakbol.
cgd_y_coord_center_point is de y-coördinaat van het middelpunt (typisch het zwaartepunt van het object) van de geprojecteerde oppervlakbol.
20 cgd_z_coord_center_point is de z-coördinaat van het middelpunt (typisch het zwaartepunt van het object) van de geprojecteerde oppervlakbol.
cgd_normalized_screen_distance_factor geeft aan waar het virtuele scherm is geplaatst, vergeleken, met de straal 25 van·de geprojecteerde oppervlakbol. De afstand tussen het middelpunt van de geprojecteerde oppervlakbol en het virtuele scherm is gelijk aan cgd_radius (cgd_normali-zed_screen_distance_factor + 1). Merk op dat cgd_radius voor elke geprojecteerde oppervlakbol gespecificeerd is, terwijl 30 cgd_normalized_screen_distance_factor slechts een keer gespecificeerd is.
cgd_radius is de straal van de geprojecteerde oppervlakbol .
cgd_min_proj_surface is de minimum uitstekend opper-35 vlak-waarde op de corresponderende geprojecteerde oppervlak- 1013639 88 bol. Deze waarde is vaak (maar niet noodzakelijk) gelijk aan een van de cgd_proj_surface-waarden.
cgd_n_proj_points is het aantal punten op de geprojecteerde oppervlak-bol waarnaar het geprojecteerde oppervlak 5 zal worden overgebracht. Voor alle andere punten wordt het geprojecteerde oppervlak bepaald door lineaire interpolatie. cgd_n_proj_points is typisch klein (bijv. 20) voor de eerste geprojecteerd oppervlak-bol en zeer klein (bijv. 3) voor aanvullende geprojecteerd oppervlak-bollen.
10 cgd_sphere_point_coord geeft de index van de punt- positie in een achtvlak aan.
c9d__proj_isurface is het geprojecteerd oppervlak in het punt dat wordt gespecificeerd door cdg_sphere_point_coord.
► vertex_graph 15 vg_simple: Deze booleaanse waarde geeft aan of de actuele hoekpunt-graaf simpel is. Een simpele hoekpunt-graaf bevat geen lussen. Dit veld is rekenkundig gecodeerd.
vg_last: Deze booleaanse waarde geeft aan of de actuele gang de laatste gang is die begint vanaf het actuele aftak- 20 hoekpunt. Dit veld is niet gecodeerd voor de eerste gang van elk aftak-hoekpunt, d.w.z., wanneer de skip_last variabele waar is. Indien niet gecodeerd, wordt de waarde van vg_last voor de actueel hoekpunt-gang beschouwd als onwaar. Dit veld is rekenkundig gecodeerd.
25 vg_forward_run: Deze booleaanse waarde geeft aan of de actuele gang een nieuwe gang een nieuwe gang is. Wanneer het geen nieuwe gang is, moet het een eerder getraverseerde gang zijn, wat duidt op een lus in de graaf. Dit veld is rekenkundig gecodeerd.
30 vg_loop_index: Deze ongemarkeerde eenheid geeft de index aan van een gang waarop de actuele lus aansluit. De monadische voorstelling ervan is rekenkundig gecodeerd. Wanneer de variabele openlus gelijk is aan vg_loop_index, wordt de achterste '1' in de monadische voorstelling wegge- 35 laten.
1013639
Tabel 17. Monadische voorstelling van het vg_loop_index_field vg_loop_index monadische voorstelling 0 1 5 1 01 _ “1 001_ Ί ~ oooi_ 4 _ 00001 5 _000001_ 10 6 _0000001______ • · · openlus-1 openlus-1 O's vg_run_length: Deze ongemarkeerde eenheid geeft de lengte van de actuele hoekpunt-gang aan. De monadische 15 voorstelling ervan wordt rekenkundig gecodeerd.
Tabel 18. Monadische voorstelling van het vg_run_length_field vg_run_length monadische voorstelling 1 1___ 20 _2_ 01 _ 3 ___001_ 4 0001_ ~5~~' 00001 _ "1 000001__ 25 ~7 0000001_t "1 ” 00000001__ n n-1 O's gevolgd door 1 vg_leaf: Deze booleaanse vlag geeft aan of het laatste hoekpunt van de actuele gang een blad-hoekpunt is. Wanneer 30 het geen blad-hoekpunt is, is het een aftak-hoekpunt. Dit veld is rekenkundig gecodeerd.
1013639 9° vg_loop: Deze booleaanse vlag geeft aan of het bald van de actuele gang aansluit op een blad-hoekpunt van de graaf, dat een lus aangeeft. Dit veld is rekenkundig gecodeerd.
► triangle_tree 5 branch_position: Deze eenheid-variabele wordt gebruikt om de laatste af tak-driehoek op te slaan in een partitie.
tt_run_length: Deze ongemarkeerde eenheid geeft de lengte van de actuele driehoek-gang aan. De monadische voorstelling ervan wordt rekenkundig gecodeerd.
10 Tabel 19. Monadische voorstelling van het tt_run_length_field tt_run_length monadische voorstelling _ ' 1 15 ~2 01__ 3 001_ Ί 0001_ t — 00001 __ 6 000001__ 20 7 0000001__ 8 00000001__ n n-l O's gevolgd door 1 tt_leaf: Deze booleaanse vlag geeft aan of de laatste driehoek van de actuele gang en blad-driehoek is. Wanneer 25 het geen blad-driehoek is, is het een aftak-driehoek. Dit veld is rekenkundig gecodeerd.
triangulated: Deze booleaanse waarde geeft aan of de actuele component alleen driehoeken bevat. Dit veld is rekenkundig gecodeerd.
30 marching_triangle: Deze booleaanse waarde wordt bepaald door de positie van de driehoek in de driehoek-boom. Wanneer de waarde marching_triangle 0 is, is de driehoek een blad of aftak-driehoek. Anders is de driehoek een gang.
marching_pattern: Deze booleaanse vlag geeft het ver-35 plaatsingspatroon van randen in een driehoek-gang aan. Een 1 Π 1 Qfi Oft 'O' staat voor een verplaatsing naar links, en een '1' voor een verplaatsing naar rechts. Dit veld is rekenkundig gecodeerd .
polygon_edge: Deze booleaanse waarde geeft aan of de 5 basis van de actuele driehoek een rand is die bij het reconstrueren van het 3D-rasterobject zou moeten worden gehandhaafd. Wanneer de basis van de actuele driehoek niet moet worden gehandhaafd, wordt de rand verwijderd. Dit veld is rekenkundig gecodeerd.
10 codap_branch_len: Deze ongemarkeerde eenheid geeft de lengte van de volgende te traverseren tak aan. De lengte van deze waarde is de log scaled value van de afmeting van de grenslus-tabel.
► driehoek 15 td_oriëntatie: Deze eenbits vlag informeert de deco- deerder over de traverseer-volgorde van tt/td-paren op een tak. Dit veld is rekenkundig gecodeerd. Tabel 20 toont toelaatbare waarden voor td_oriêntatie.
Tabel 20. Toelaatbare waarden voor td_oriëntatie 20 td_oriëntatie traverseer-volgorde ~Ö rechter tak eerst 1 linker tak eerst bezocht: Deze variabele geeft aan of het. huidige hoekpunt* al dan niet bezocht is. Wanneer codap_bdry_pred '1' is, 25 is 'bezocht' 'waar' voor de hoekpunten die zijn bezocht in de huidige partitie. Wanneer codap_bdry_pred echter '0' is, is bezocht waar voor de hoekpunten die zijn bezocht in zowel de vorige partities als ook de huidige partitie.
vertex_index: Deze variabele geeft de index van het 30 actuele hoekpunt in de hoekpunten-reeks aan.
no.ancestors: Deze booleaanse waarde is waar, wanneer er geen voorlopers zijn die kunnen worden gebruikt voor het voorspellen van het actuele hoekpunt.
1013639 92 coord_bit: Deze booleaanse waarde geeft de waarde van een geometrie-bit aan. Dit veld is rekenkundig gecodeerd.
coord_heading_bit: Deze booleaanse waarde geeft de waarde van een heading-geometrie-bit aan. Dit veld is reken-5 kundig gecodeerd.
coord_sign__bit: Deze booleaanse waarde geeft het teken van een georaetrie-monster aan. Dit veld is rekenkundig gecodeerd.
coord_trailing_bit: Deze booleaanse waarde geeft de 10 waarde van een achterste geometrie-bit aan. Dit veld is rekenkundig gecodeerd.
normal_bit: Deze booleaanse waarde geeft de waarde van een normale bit aan. Dit veld is rekenkundig gecodeerd.
normal_leading_bit: Deze booleaanse waarde geeft de 15 waarde van een voorste normale bit aan. Dit veld is rekenkundig gecodeerd.
normal_sign_bit: Deze booleaanse waarde geeft het teken van een normaal monster aan. Dit veld is rekenkundig gecodeerd .
20 normal_trailing__bit: Deze booleaanse waarde geeft de waarde van een normale achterste bit aan. Dit veld is rekenkundig gecodeerd.
color_bit: Deze booleaanse waarde geeft de waarde van een kleurbit aan. Dit veld is rekenkundig gecodeerd.
25 color_leading_bit: Deze booleaanse waarde geeft de waarde van een voorste kleurbit aan. Dit veld is rekenkundig gecodeerd.
color_sign_bit: Deze booleaanse waarde geeft het teken van een kleurmonster aan. Dit veld is rekenkundig gecodeerd. 30 color.trailing bit: Deze booleaanse waarde geeft de waarde van een achterste kleurbit aan. Dit veld is rekenkundig gecodeerd.
texCoord_bit: Deze booleaanse waarde geeft de waarde van een textuurbit aan. Dit veld is rekenkundig gecodeerd.
93 ; . .
texCoord_leading_bit: Deze booleaanse waarde geeft ae waarde van een voorste textuurbit aan. Dit veld is rekenkundig gecodeerd.
texCoord__sign_bit: Deze booleaanse waarde geeft het 5 teken van een textuurmonster aan. Dit veld is rekenkundig gecodeerd.
texCoord_trailing_bit: Deze booleaanse waarde geeft de waarde van een achterste textuurbit aan. Dit veld is rekenkundig gecodeerd.
10 ► 3D-rasterobject-verfijningslaag 3D_MORL_start_code: Dit is een unieke code van 16 bits lang die wordt gebruikt voor synchroniseren. De waarde van deze code is altijd '0000 0000 0011 0010’.
morl__id: Deze 8-bits ongemarkeerde eenheid specificeert 15 een unieke id voor de forest split-component.
connectivity_update: Deze 2-bits variabele geeft aan of de forest split-bewerking al dan niet resulteert in een verfijning van de connectiviteit van het raster.
Tabel 21. Waarden voor connectivity_update 20 connect ivity__update betekenis 00 not_updated_ 01 fs_update 10 gereserveerd 11 _gereserveerd .
25 pre_smoothing: Deze booleaanse waarde geeft aan of de actuele forest split-bewerking gebruik maakt van een vooraf vlakkingsstap om hoekpunt-posities globaal te voorspellen.
post_smoothing: Deze booleaanse waarde geeft aan of de actuele forest split-bewerking gebruik maakt van een na- 30 afvlakkingsstap om kwantiseringsartefacten te verwijderen, stuffingjbit: Deze booleaanse waarde is altijd waar.
other_update: Deze booleaanse waarde geeft aan of updates voor hoekpunt-coördinaten en eigenschappen van 013639 94 vlakken en hoeken al dan niet in een boom van forest follow in de bitstroom vallen.
► pre_smoothing n: Deze eenheid-waarde geeft het aantal iteraties van het voor-afvlakkingsfilter aan.
5 pre_smoothing_lambda: Deze zwevend punt-waarde is de eerste parameter van het voor-afvlakkingsfilter.
pre_smoothing_mu: Deze zwevend punt-waarde is de tweede parameter van het voor-afvlakkingsfilter.
► post_smoothing_parameters 10 post_smoothing_n: Deze eenheid-waarde geeft het aantal iteraties van het na-afvlakkingsfilter aan.
post_smoothing_lambda: Deze zwevend punt-waarde is de eerste parameter van het na-afvlakkingsfilter.
post_smoothing_mu: Deze zwevend punt-waarde is de 15 tweede parameter van het na-afvlakkingsfilter.
► fs_pre_update pfs_forest_edge: Deze booleaanse waarde geeft aan of een rand aan het tot dusver aangelegde woud moet worden toegevoegd.
20 ► smoothing constraints smooth_with_sharp_edges: Deze booleaanse waarde geeft aan of in de bitstroom al dan niet data voor markering van afvlak-onderbrekingsranden. Wanneer smooth_with_sharp_edges==0, wordt er geen rand gemarkeerd 25 als een afvlak-onderbrekingsrand. Wanneer er wel afvlak-onderbrekingsranden zijn gemarkeerd, worden deze door zowel de voor-afvlakkingsfilters als na-afvlakkingsfilters in acht genomen.
smooth_with_fixed_vertices: Deze booleaanse waarde 30 geeft aan of in de bitstroom data zijn opgenomen voor het markeren van hoekpunten die tijdens het afvlakproces niet bewegen. Wanneer smooth_with_sharp_edges==0, mogen alle hoekpunten niet bewegen. Wanneer vaste hoekpunten zijn gemarkeerd, dan houden zowel het voor-afvlakfilter als het 35 na-afvlakfilter daar rekening mee.
1 Π Λ QQ
95 smooth_sharp_edge: Deze booleaanse waarde geeft aan of een corresponderend hoekpunt al dan niet is gemarkeerd als een vast hoekpunt.
Volgens de onderhavige uitvinding wordt, ten eerste, 5 zelfs wanneer een overdrachtfout wordt gegenereerd, alleen het gedeelte dat de fout bevat opnieuw erzonden, waardoor de belasting van het netwerk en de overdrachttijd worden gereduceerd. Ten tweede, kan een geselecteerd gedeelte data progressief hersteld worden door de connectiviteit, geome-10 trie en fotometrie ervan te gebruiken.
- conclusies - 1013639
Claims (82)
- 96
- 1. Werkwijze voor het coderen van een polygoon driedimensionaal (3D) rasterobject (MO), welke bestaat uit de stappen van: 5 (a) het verdelen van het polygoon 3D-M0 in één of meer verbonden componenten; (b) het genereren van een hoekpunt-graaf en driehoek-boom/driehoek-data voor elk van de verbonden componenten; en (c) het reconstrueren van de hoekpunt-graaf en drie-10 hoek-boom/driehoek-data die de verbonden component vormen, in overeenstemming met rasterobject-basislagen (MOBL's) die elk in staat zijn om onafhankelijk te worden gedecodeerd voor de respectievelijke verbonden componenten en deze daarna te coderen.
- 2. Coderingswerkwi j ze volgens conclusie 1, met het kenmerk, dat de stap (a) bestaat uit de substappen van het classificeren van de polygoon 3D-M0 in een aantal rasterob-ject-lagen (MOL's) en het partitioneren van de geclassificeerde polygoon 3D-M0 in één of meer verbonden componenten.
- 3. Coderingswerkwijze volgens conclusie 1, met het kenmerk, dat in stap (c) , wanneer de driehoek-boom/driehoek-data die de verbonden componenten vormen, zo groot zijn, dat ze niet in overeenstemming zijn met de MOBL's, de driehoek-boom/driehoek-data worden gepartitioneerd in data-partities 25 die elk onafhankelijk kunnen worden gedecodeerd in overeenstemming met de MOBL's, en wanneer de informatie die een aantal verbonden componenten vormt in overeenstemming met de MOBL's kan worden gebracht, de informatie die een aantal verbonden componenten vormt, wordt verzameld tot één data-30 partitie om daarna te worden gecodeerd in overeenstemming met de MOBL's.
- 4. Coderingswerkwijze volgens conclusie l, met het kenmerk, dat de MOBL's waarin de driehoek-boom/driehoek-data zijn gecodeerd, een eenbits oriëntatie-markeerteken bevatten 35 op een plaats waar een aftak-driehoek gepositioneerd op de 1013639 hoofdtak van de driehoek-boom aanwezig is, en de traverseer-volgorde van afhankelijke bomen volgt nadat de aftak-drie-hoek is bepaald door de oriëntatie die is gemarkeerd in het oriëntatie-markeerteken.
- 5. Coderingswerkwijze volgens conclusie 4, met het kenmerk, dat het oriëntatie-markeerteken (td_orientation) wordt bepaald door de afmeting-informatie van afhankelijke bomen die volgen na de aftak-driehoek.
- 6. Coderingswerkwijze volgens conclusie 5, met het 10 kenmerk, dat alle afhankelijke bomen in dezelfde traverseer- volgorde verkeren.
- 7. Coderingswerkwijze volgens conclusie 5, met het kenmerk, dat de traverseer-volgorde van een driehoek in de afhankelijke bomen correspondeert met de waarde van het 15 oriëntatie-markeerteken (td_orientation).
- 8. Coderingswerkwijze volgens conclusie 1, met het kenmerk, dat MOBL's waarin de driehoek-boom/driehoek-data zijn gecodeerd, totale afmeting-informatie (codap_branch_len) bevatten van een afhankelijke boom die is 20 gepositioneer bij een zijtak in een aftak-driehoek die is gepositioneerd bij de hoofdtak van de driehoek-boom, en de Y-hoekpunt-indicia worden bepaald door de totale afmeting-informatie.
- 9. Progressieve en foutbestendige werkwijze voor het 25 coderen van een polygoon driedimensionaal (3D) rasterobject (MO),.die bestaat uit de stappen: (a) het verdelen van de polygonale 3D MO in een of meer verbonden componenten; (b) het genereren van een hoekpunt-graaf en een paar 30 driehoek-boom/driehoek-data voor elk van de verbonden componenten; en (c) het coderen van de hoekpunt-graaf en driehoek-boom/driehoek-data die de verbonden componenten vormen in overeenstemming met rasterobject-basislagen (MOBL's) die elk 35 een vast type bitstroom hebben die onafhankelijk kunnen 1013639 98 worden gedecodeerd voor de respectievelijke verbonden componenten .
- 10. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 9, met het kenmerk, dat in stap (c) de 5 hoekpunt-graaf en de driehoek-boom/driehoek-data sequentieel zijn geordend met betrekking tot alle verbonden componenten die het polygoon 3D-raster vormen, om een data-partitie te vormen.
- 11. Progressieve en foutbestendige coderingswerkwijze 10 volgens conclusie 9, met het kenmerk, dat in stap (c) de hoekpunt-graaf die correspondeert met alle verbonden componenten die het polygoon 3D-raster vormen, eerst wordt geordend en de driehoek-boom/driehoek-data die corresponderen met alle verbonden componenten daarna worden geordend om een 15 data-partitie te vormen.
- 12. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 9, met het kenmerk, dat de informatie die de respectievelijke verbonden componenten vormt, is geconstrueerd als onafhankelijke data-partities om daarna te 20 worden gecodeerd.
- 13. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 9, met het kenmerk, dat in stap (c) de hoekpunt-graaf die correspondeert met alle verbonden componenten die het polygoon 3D-raster vormen, is geconstrueerd 25 als een data-partitie en de driehoek-boom/driehoek-data die met alle verbonden componenten corresponderen, zijn geconstrueerd als een andere data-partitie, om daarna te worden gecodeerd.
- 14. Progressieve en foutbestendige coderingswerkwijze 30 volgens conclusie 9, met het kenmerk, dat in stap (c) de hoekpunt-graaf die correspondeert met alle verbonden componenten die het polygoon 3D-raster vormen, is geconstrueerd als een data-partitie en de driehoek-boom/driehoek-data die met alle verbonden componenten corresponderen, zijn geoon-35 strueerd als onafhankelijke data-partities, waarbij de driehoek-boom/driehoek-data zijn gepartioneerd in een aantal 1013639 data-partities die onafhankelijk kunnen worden gedecodeerd, om daarna te worden gecodeerd.
- 15. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 9, met het kenmerk, dat in stap (c) de 5 hoekpunt-grafen die corresponderen met de respectievelijke verbonden componenten die het polygoon 3D-raster vormen, onafhankelijk geconstrueerd zijn als data-partities en de driehoek-boom/driehoek-data die corresponderen met de respectievelijke verbonden componenten onafhankelijk zijn 10 geconstrueerd als data-partities, om daarna te worden gecodeerd .
- 16. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 9, met het kenmerk, dat in stap (c) de hoekpunt-grafen die corresponderen met de respectievelijke 15 verbonden componenten zijn geconstrueerd als onafhankelijke data-partities om dan eerst te worden gecodeerd, en de driehoek-boom/driehoek-data die corresponderen met de respectievelijke verbonden componenten, zijn geconstrueerd als onafhankelijke data-partities, waarbij de driehoek-boom/ 20 driehoek-data van een verbonden component die groter zijn dan het verzendingspakket worden gepartitioneerd in een aantal data-partities die onafhankelijk kunnen worden gedecodeerd, om dan vervolgens te worden gecodeerd.
- 17. Progressieve en foutbestendige coderingswerkwijze 25 volgens conclusie 9, met het kenmerk, dat in stap (c) een onafhankelijke data-partitie wordt geconstrueerd door de hoekpunt-graaf die correspondeert met een verbonden component en een onafhankelijke data-partitie wordt geconstrueerd door de driehoek-boom/driehoek-data die corresponderen met 30 de verbonden component, om daarna te worden gecodeerd door de respectievelijke verbonden componenten.
- 18. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 9, met het kenmerk, dat in stap (c) een onafhankelijke data-partitie wordt geconstrueerd voor de 35 hoekpunt-graaf die correspondeert met een verbonden component en een onafhankelijke data-partitie wordt geconstrueerd 1013639 100 voor de driehoek-boom/driehoek-data die corresponderen met een verbonden component, om daarna te worden gecodeerd, waarbij de driehoek-boom/driehoek-data van een verbonden component groter zijn dan het transmissiepakket dat is 5 gepartitioneerd in een aantal afzonderlijke data-partities die onafhankelijk kunnen worden gedecodeerd, om daarna door de respectievelijke verbonden componenten te worden gecodeerd .
- 19. Progressieve en foutbestendige coderingswerkwijze 10 van een polygoon driedimensionaal (3D) rasterobject (MO), die bestaat uit de stappen: (a) het in een of meer verbonden componenten verdelen van de polygone 3D MO; (b) het genereren van een hoekpunt-graaf en een paar 15 driehoek-boom/driehoek-data voor elk van de verbonden componenten; en (c) het coderen van de hoekpunt-graaf en driehoek-boom/driehoek-data die de verbonden componenten vormen, in overeenstemming met rasterobject-basislagen (MOBL's) die elk 20 een variabel bitstroom-type hebben dat in overeenstemming met is met de te coderen informatie-eigenschappen, die onafhankelijk kunnen worden gedecodeerd voor de respectievelijke verbonden componenten.
- 20. Progressieve en foutbestendige coderingswerkwijze 25 volgens conclusie 19, met het kenmerk, dat in stap (c) de structuur van gecodeerde bitstromen wordt voorgesteld onder gebruikmakingvan enkele van de bits in een startcode van de data-partitie als een partitie-type.
- 21. Progressieve en foutbestendige coderingswerkwijze 30 volgens conclusie 20, met het kenmerk, dat het partitie-type een 0-de partitie-type (partition_type_0) bevat, waarbij de informatie die correspondeert met een of meer verbonden componenten, wordt verzameld om een data-partitie te construeren, die daarna wordt gecodeerd.
- 22. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 21, met het kenmerk, dat de MOBL waarin de O-de partitie-type is gecodeerd verder een aantal bits bevet die de aanwezigheid van verdere verbonden componenten aangeeft die moeten worden gecodeerd nadat de respectievelijke verbonden componenten zijn gecodeerd.
- 23. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 20, met het kenmerk, dat het partitie-type een eerste partitie-type (partition_type_l) bevat, waarin de hoekpunt-graaf-informatie die correspondeert met een of meer verbonden componenten wordt verzameld om een data-partitie 10 te vormen die daarna wordt gecodeerd.
- 24. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 23, met het kenmerk, dat de MOBL waarin het eerste partitie-type is gecodeerd verder een aantal bits bevat dat de aanwezigheid van verdere hoekpunt-graaf-infro- 15 matie aangeeft, die moeten worden gecodeerd nadat de hoekpunt -graaf -informatie die correspondeert met de respectievelijke verbonden componenten wordt gecodeerd.
- 25. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 20, met het kenmerk, dat een tweede parti- 20 tie-type een tweede partitie-type (partition_type_2) bevat waarin de driehoek-boom/driehoek-data zijn gepartitioneerd in data-partities om daarna te worden gecodeerd.
- 26. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 20, met het kenmerk, dat de MOBL waarin 25 het tweede partitie-type is gecodeerd, verder een identifi-cator. van de hoekpunt-graaf-informatie (codap_vg__id) bevat die correspondeert met de respectievelijke driehoek-boom/ driehoek-data in de respectievelijke data-partities.
- 27. Progressieve en foutbestendige coderingswerkwijze 30 volgens conclusie 26, met het kenmerk, dat wanneer er alleen één hoekpunt-graaf is waarnaar door de driehoek-boom/driehoek-data wordt verwezen, de identificator van de hoekpunt-graaf-informatie niet wordt gecodeerd.
- 28. Progressieve en foutbestendige coderingswerkwijze 35 volgens conclusie 25, met het kenmerk, dat het tweede partitie-type verder een start-index (codap_left_bloop_idx, 1013639 102 codap_right_bloop_idx) bevat van een grenslus-tabel voor een te herstellen driehoekenstrip.
- 29. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 25, met het kenmerk, dat de MOBL waarin 5 het tweede partitie-type is gecodeerd verder een grenslus-voorspelling-markeerteken (codap_bdry_pred) bevat, die aangeeft hoe de door twee of meer data-partities gedeelde geometrie en fotometrie worden voorspeld.
- 30. Progressieve en foutbestendige coderingswerkwijze 10 volgens conclusie 20, met het kenmerk, dat het partitie-type een derde partitie-type (partition_type_3) bevat waarin een verbonden component wordt geconstrueerd als een data-parti-tie om daarna te worden gecodeerd.
- 31. Bij het coderen van een driehoek-driedimensionaal 15 (3D) rasterobject (MO) voor incrementele opbouw en foutbe stendigheid, een werkwijze om de driehoek-3D-MO te partitio-neren in data-partities die moeten worden gepakketteerd, welke werkwijze bestaat uit de stappen: (a) het berekenen van de totale bit-genereerhoeveelhe-20 den driehoeken terwijl de in een driehoek aanwezige sequentieel worden getraverseerd; (b) het accumuleren van de in stap (a) berekende totale bit-genereerhoeveelheden; en (c) wanneer de geaccumuleerde waarde van stap (b) 25 kleiner is dan het product van een pakket-afmeting en een pakket-toekenning, het herhaaldelijk uitvoeren van de stappen (a) en (b) op de volgende getraverseerde driehoek die in de driehoeken-boom aanwezig is, en wanneer dit niet het geval is, worden driehoek-boom/driehoek-data van de getra-30 verseerde driehoeken gepartitioneerd in te pakketteren data-partities .
- 32. Partitioneerwerkwijze volgens conclusie 31, waarbij wanneer de in stap (a) getraverseerde driehoek een aftak-driehoek is, de werkwijze verder bestaat uit de stap: 35 (d) wanneer de som, die is verkregen door het optellen van de geaccumuleerde waarde van stap (b) en de bit-gene- 4 Λ 4 OC ΟΛ AUJ reer-hoeveelheid die is verkregen door het coderen van alle driehoeken die aanwezig zijn in afhankelijke bomen die door de traverseer-volgorde zijn bepaald, kleiner is dan de som van de pakketafmeting en de pakket-toekenning, het herhaal-5 delijk uitvoeren van de stappen (a) tot en met (c), en wanneer die niet het geval is, worden driehoek-boom/drie-hoek-data van de getraverseerde driehoeken gepartitioneerd in te pakketteren data-partities totdat de aftak-driehoek wordt bereikt.
- 33. Partitioneer-werkwijze volgens conclusie 31, waar bij wanneer de in stap (a) getraverseerde driehoek een aftak-driehoek is, de werkwijze verder bestaat uit de stap: (d) wanneer de som, die is verkregen door optelling van de geaccumuleerde waarde van stap (b) en de bit-genereerhoe-15 veelheid voorspeld door de afmeting van afhankelijke bomen die wordt bepaald door de traverseer-volgorde kleiner is dan de som van de pakket af meting en de pakket-toekenning, het herhaaldelijk uitvoeren van de stappen (a) tot en met (c), en wanneer dit niet het geval is, worden driehoek-boom/drie-20 hoek-data van de getraverseerde driehoeken gepartitioneerd in te pakketteren data-partities totdat de aftak-driehoek is bereikt.
- 34. Progressieve en foutbestendige coderingswerkwijze van een polygoon driedimensionaal (3D) rasterobject (MO), 25 die bestaat uit de stappen: .(a) het in een of meer verbonden componenten verdelen van de polygone 3D-MO; (b) het genereren van een hoekpunt-graaf en een paar driehoek-boom/driehoek-data voor elk van de verbonden compo- 30 nenten; en (c) het coderen van de hoekpunt-graaf die de verbonden componenten vormt; en (d) het construeren van de driehoek-boom/driehoek-data als virtueel verbonden componenten en het coderen ervan door 35 virtuele bit-paren toe te voegen aan data-partities die zijn 1013639 104 verkregen door het partioneren van de driehoek-boom/drie-hoek-data.
- 35. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat de partitionering 5 in stap (d) alleen wordt uitgevoerd bij de hoofdtak van de driehoek-boom.
- 36. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 35, met het kenmerk, dat wanneer de partitionering in stap (d) wordt uitgevoerd op een gang of blad 10 van de driehoekenboom, een virtuele verbonden component wordt geconstrueerd door een paar (1, 1) toe te voegen aan een paar (trun, tleaf).
- 37. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 35, met het kenmerk, dat de partitionering 15 in stap (d) wordt uitgevoerd op een aftak-driehoek van de driehoek-boom, een virtuele verbonden component wordt geconstrueerd door twee paren (l, 1) toe te voegen aan een paar (trun, tleaf).
- 38. Progressieve en foutbestendige coderingswerkwijze 20 volgens conclusie 34, die verder bestaat uit de stap van het reconstrueren van de polygone 3D MO tot een driehoek 3D MO, voorafgaand aan stap (a).
- 39. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 38, met het kenmerk, dat de partitionering 25 in stap (d) alleen wordt uitgevoerd bij de werkelijke rand van een polygoon raster, en de polygoonrand-informatie van de eerste driehoek die aanwezig is in een data-partitievan de driehoek-boom/driehoek-data niet gecodeerd wordt.
- 40. Progressieve en foutbestendige coderingswerkwijze 30 volgens conclusie 38, met het kenmerk, dat de partitionering in stap (d) alleen wordt uitgevoerd bij de werkelijke rand en virtuele rand van een polygoon raster, de polygoonrand-informatie van de eerste driehoek die in een 0-de partitie-type van de driehoek-boom/driehoek-data niet wordt geco-35 deerd, en polygoonrand-informatie van de eerste driehoek die 105 in de resterende partitie-typen aanwezig is, wel wordt gecodeerd.
- 41. Progressieve en £outbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat eenbits oriênta-5 tie-markeertekens aanwezig zijn in de data-partitie voor respectievelijke aftak-driehoeken die zijn gepositioneerd op de hoofdtak, tussen alle aftak-driehoeken die aanwezig zijn binnen de data-partitie die is geconstrueerd door de virtueel verbonden componenten.
- 42. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat de header van de data-partitie die is gevormd door het partitioneren van de driehoek-boom/driehoek-data een start-index van een grens-lus-tabel bevat om onafhankelijk van de eerder herstelde 15 data-partities te worden hersteld.
- 43. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 42, met het kenmerk, dat de start-index wordt bepaald door de eerste linker en rechter indicia die zijn afgeheeld in de grenslus die correspondeert met start-20 hoekpunten van driehoeken die in de grenslus-tabel achtereenvolgens worden hersteld in overeenstemming met de driehoek-boom/driehoek-data, en de indicia van de grenslus worden zo bepaald dat ze binnen het bereik van het aantal hoekpunten plus 2 liggen.
- 44. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 42, met het kenmerk, dat de start-index wordt bepaald door de eerste linker en rechter indicia die in de grenslus zijn afgeheeld en corresponderen met start-hoekpunten van driehoeken die achtereenvolgens worden her-30 steld in de grenslus-tabel die correspondeert met de driehoek-boom/driehoek-data, en de indicia van de grenslus worden bepaald in overweging van de totale raster-data.
- 45. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat de header van de 35 data-partitie gevormd door het verder partitioneren van de driehoek-boom/driehoek-data verder een ID van een hoekpunt- 1 0 1 36 39 106 graaf (codap_vg_id) bevat die correspondeert met de drie-hoek-boom/driehoek-data.
- 46. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat de door het 5 partitioneren van de driehoek-boom/driehoek-data gevormde header van de data-partitie verder een grensvoorspelling-markeerteken (codap_bdry_pred) bevat dat aangeeft hoe de door de data-partitie en de eerder gecodeerde data-partitie gedeelde geometrie en fotometrie worden voorspeld.
- 47. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat wanneer de starten eindposities van de data-partitie op de hoofdtak van de driehoek-boom liggen, de door data-partitie en de eerder gecodeerde data-partitie gedeelde geometrie en fotometrie in 15 slechts één data-partitie aanwezig zijn, en wanneer de start- en eindposities van de data-partitie op een afhankelijke boom liggen, wordt bepaald of de door data-partitie en de eerder gecodeerde data-partitie gedeelde geometrie en fotometrie al dan niet aanwezig zijn; als ze aanwezig zijn, 20 zijn de geometrie en fotometrie aanwezig in beide data-partities, als ze niet aanwezig zijn, zijn de geometrie en fotometrie slechts in één data-partitie aanwezig.
- 48. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat de in de drie- 25 hoek-boom/driehoek-data aanwezige driehoek-data verplaatsing,. geometrie en fotometrie bevat die zijn bestemd voor elke driehoek die de corresponderende driehoek-boom vormt.
- 49. Progressieve en foutbestendige coderingswerkwijze volgens conclusie 34, met het kenmerk, dat de in de drie- 30 hoek-boom/driehoek-data aanwezige driehoek-data de verplaatsing van alle driehoeken die de corresponderende driehoek-boom, geometrie van alle driehoeken en fotometrie van alle driehoeken sequentieel geordend bevat.
- 50. Progressieve en foutbestendige decoderingswerkwijze 35 van een polygoon driedimensionaal (3D) rasterobject (MO) , dat bestaat uit de stappen: 1013639 107 (a) het verdelen van ingevoerde bitstromen in eenheden van rasterobjeet-basislagen (MOBL's); (b) het bepalen van een partitie-type van de MOBL's; (c) wanneer in de MOBL's een hoekpunt-graaf aanwezig 5 is, het decoderen van de hoekpunt-graaf, om een grenslus- tabel te genereren; (d) wanneer in de MOBL's driehoek-boom/driehoek-data aanwezig zijn, het decoderen van de driehoek-boom/driehoek-data om 3D MO te genereren; en 10 (e) het herhaaldelijk uitvoeren van de stappen (a) tot en met (d) om een 3D MO te genereren.
- 51. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 50, met het kenmerk, dat stap (a) bestaat uit de stappen van het in polygone 3D MO-eenheden verdelen 15 van de ingevoerde bitstromen, waarbij het type van een in de polygone 3D MO aanwezig rasterobjeet-laag (MOL) wordt vast-gesteld, en de bitstromen in de MOL worden verdeeld in rasterobjeet-basislaag (MOBL)-eenheden wanneer de 3D MO kan worden gedecodeerd.
- 52. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 50, met het kenmerk, dat wanneer de driehoek-boom/driehoek-data wordt gedecodeerd in stap (d), de decodeer-volgorde van afhankelijke bomen die volgen nadat de aftak-driehoek is bepaald door de oriëntatie die is aangege- 25 ven in een oriêntatie-markeerteken (td_orientation) in het geval, van het decoderen van een aftak-driehoek die is gepositioneerd op de hoofdtak van de driehoeken-boom.
- 53. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 52, met het kenmerk, dat alle afhankelijke 30 bomen in dezelfde traverseer-volgorde verkeren.
- 54. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 52, met het kenmerk, dat de traverseer-volgorde van een driehoek binnen de afhankelijke bomen correspondeert met de waarde van het oriêntatie-markeerteken 35 (td_orientation). 1013639 I 108
- 55. Progressieve en foutbestendige decoderingswerJewij ze I volgens conclusie 52, met het kenmerk, dat in stap (b) het I partitie-type wordt bepaald door de waarde van de startcode I van de data-partitie. I 5 56. Progressieve en foutbestendige decoderingswerkwijze I volgens conclusie 55, met het kenmerk, dat het partitie-type I een 0-de partitie-type bevat (partition_type_0) waarbij de I informatie die correspondeert met één of meer verbonden I componenten wordt verzameld om een data-partitie te constru- 10 eren die daarna wordt gecodeerd.
- 57. Progressieve en foutbestendige decoderingswerkwijze I volgens conclusie 56, met het kenmerk, dat wanneer de MOBL I van het 0-de partitie-type wordt gecodeerd, wordt vastge- I steld of verdere te coderen verbonden componenten aanwezig 15 zijn door een vooraf bepaalde bit die achter de respectieve- I lijke verbonden componenten is geplaatst.
- 58. Progressieve en foutbestendige decoderingswerkwijze I volgens conclusie 54, met het kenmerk, dat het partitie-type I een eerste partitie-type (partition_type_l) waarin de hoek- I 20 punt-graaf-informatie die correspondeert met een of meer verbonden componenten wordt verzameld om een data-partitie I te construeren die daarna wordt geconstrueerd.
- 59. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 58, met het kenmerk, dat wanneer de MOBL 25 van het eerste partitie-type wordt gecodeerd, wordt vastge- steld. of verdere te te coderen hoekpunt-graaf-informatie aanwezig is, door middel van een vooraf bepaalde bit (codap_last_vg) die is gepositioneerd na de hoekpunt-graaf- informatie die correspondeert met de respectievelijke ver- 30 bonden componenten.
- 60. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 55, met het kenmerk, dat het partitie-type een tweede partitie-type (partition_type_2) waarin de drie- hoek-boom/driehoek-data worden gepartioneerd in data-parti- H 35 ties die daarna worden gecodeerd. 109
- 61. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 60, met het kenmerk, dat wanneer de MOBL van het tweede partitie-type wordt gecodeerd, de hoekpunt-graaf-informatie die correspondert met de respectievelijke 5 driehoek-boom/driehoek-data wordt geïdentificeerd dor een hoekpunt-graaf-ID (codap_vg_id) die is gepositioneerd voor de driehoek-boom/driehoek-data.
- 62. Progressieve en foutbestendige decoderingswerkwij ze volgens conclusie 60, met het kenmerk, dat wanneer de MOBL 10 van het tweede partitie-type wordt gecodeerd, wanneer de hoekpunt-graaf-informatie die correspondeert met de respectieve driehoek-boom/driehoek-data uniek kan worden geïdentificeerd, wordt vastgesteld dat de hoekpunt-graaf-ID niet voor de driehoek-boom/driehoek-data gepositioneerd is.
- 63. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 60, met het kenmerk, dat de MOBL van het tweede partitie-type wordt gecodeerd onafhankelijk van de vorige data-partitie, door middel van de start-index (codap_ left_bloop_idx, codap_right_bloop_idx) van de grenslus-tabel 20 die is gepositioneerd voor de driehoek-boom/driehoek-data.
- 64. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 60, met het kenmerk, dat wanneer de MOBL van het tweede partitie-type wordt gecodeerd, wordt vastgesteld hoe de door de eerder gedecodeerde data-partities 25 gedeelde geometrie en fotometrie worden voorspeld, door middel van een grensvoorspelling-markeerteken dat voor de driehoek-boom/driehoek-data is geplaatst.
- 65. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 55, met het kenmerk, dat het partitie-type 30 een derde partitie-type (partition_type_3) bevat waarin een verbonden component is geconstrueerd als een data-partitie.
- 66. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 50, met het kenmerk, dat wanneer de driehoek-boom/driehoek-data in stap (d) worden gedecodeerd, 35 wanneer een op de hoofdtak van een driehoeken-boom gepositioneerde aftak-driehoek wordt gedecodeerd, de Y-hoekpunt- 1013639 110 indicia worden bepaald door de totale afmeting-informatie (codapJbranch_len) van een afhankelijke boom gepositioneerd op een zijtak.
- 67. Progressieve en foutbestendige decoderingswerkwijze 5 van een polygoon driedimensionaal (3D) rasterobject (MO) , bestaande uit de stappen: (a) het in eenheden rasterobject-basislagen (MOBL's) verdelen van ingevoerde bitstromen; (b) het vaststellen van een partitie-type van de 10 MOBL'S; (c) wanneer in de MOBL's een hoekpunt-graaf aanwezig is, het decoderen van de hoekpunt-graaf om een grenslus-tabel te genereren; (d) wanneer in de MOBL's een hoekpunt-graaf een drie-15 hoek-boom/driehoek-data aanwezig is, het decoderen van de driehoek-boom/driehoek-data in eenheden van verbonden componenten om driehoek 3D-M0 te genereren; en (e) wanneer de verbonden componenten in de stap (d) virtuele verbonden componenten zijn, het herhaaldelijk 20 uitvoeren van de stappen (a) tot en met (d), en wanneer dit niet het geval is, het voltooien van het genereren vaneen driehoek-3D-MO.
- 68. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 67, met het kenmerk, dat de MOBL die de 25 driehoek-boom/driehoek-data in stap (d) bevat, een start-index (codap_left_bloop_idx, codap_right_bloop_idx) van een grenslus-tabel bevat, om onafhankelijk van de eerder herstelde data-partities te worden hersteld.
- 69. Progressieve en foutbestendige decoderingswerkwijze 30 volgens conclusie 68, met het kenmerk, dat de start-index wordt bepaald door de eerste linker en rechter indicia die zijn afgeheeld in de grenslus die correspondeert met start-hoekpunten van driehoeken die achtereenvolgens worden hersteld in de grenslus tabel die correspondeert met de drie-35 hoek-boom/driehoek-data, en de indicia van de grenslus worden bepaald in overweging van alle rasters. 1013639 /u. riuyiesBicve cu uci.'jucj.j.ii^dwc.ljvwxj ze volgens conclusie 68, met het kenmerk, dat de start-index wordt bepaald door de eerste linker en rechter indicia die zijn afgebeeld in de grenslus die corresponderen met start-5 hoekpunten van driehoeken die achtereenvolgens zijn hersteld in de grenslus-tabel die correspondeert met de driehoek-boom/driehoek-data, en de indicia vande grenslus zodanig zijn bepaald dat ze binnen het bereik van het aantal hoekpunten plus 2 liggen.
- 71. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 68, met het kenmerk, dat in stap (d), wanneer rechter index-linker index-1 (codap_right_bloop_ idx_codap__left_bloop_idx-l) groter is dan het totale aantal driehoeken dat wordt gegenereerd wanneer alleen de driehoe- 15 ken-boom van de MOBL wordt hersteld, wordt bepaald dat de verbonden componenten virtuele verbonden componenten zijn.
- 72. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 71, met het kenmerk, dat wanneer de derde driehoek vanaf de laatste van de driehoeken die in stap (d) 20 gedecodeerd een aftak-driehoek is, wordt bepaald dat twee virtuele driehoeken voorkomen in een paar (trim, tleaf) en als dit niet het geval is, wordt bepaald dat wel een paar virtuele driehoeken voorkomt in een paar (trim, tleaf), zodat de driehoek-data van de virtuele driehoeken niet 25 worden gecodeerd.
- 73. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 68, die verder bestaat uit de stappen van het reconstrueren van de driehoek-3D-MO tot een polygoon driehoek-3D-MO.
- 74. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 73, met het kenmerk, dat het partitione-re tijdens de codering alleen wordt uitgevoerd bij de werkelijke rand van het polygoon 3D-MO en de polygoonrand van de eerste driehoek die in de MOBL van de driehoek-boom/drie- iü .3639 112 hoek-data aanwezig is wordt vastgesteld als de werkelijke rand zonder decodering.
- 75. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 73, met het kenmerk, dat het partitione- 5 ren tijdens codering ook wordt uitgevoerd binnen het polygoon- 3D-M0 en de polygoonrand van de eerste driehoek die in de MOBLvan de driehoek-boom/driehoek-data aanwezig is, wordt vastgesteld als de werkelijke rand zonder codering.
- 76. Progressieve en foutbestendige decoderingswerkwijze 10 volgens conclusie 67, met het kenmerk, dat de decoderings- volgorde van afhankelijke bomen die volgt nadat de aftak-driehoek is bepaald door de oriëntatie die is aangegeven in een oriëntatie-markeer teken (td_orientation) in het geval van het decoderen van een aftak-driehoek, met betrekking tot 15 alle af tak-driehoeken die zich bevinden binnen de MOBL die is geconstrueerd door middel van virtuele componenten.
- 77. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 67, met het kenmerk, dat de MOBL die de driehoek-boom/driehoek-data in stap (d) bevat, een grens-20 voorspelling-markeerteken (codap_bdry_jpre) bevat die aangeeft hoe de door twee of meer MOBL's gedeelde geometrie en fotometrie worden voorspeld.
- 78. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 77, met het kenmerk, dat de waarde van 25 het grensvoorspelling-markeerteken 0 is, en er wordt vastgesteld, dat de door de actueel gedecodeerde MOBL en de eerder gedecodeerde MOBL niet aanwezig zijn in de thans gedecodeerde MOBL.
- 79. Progressieve en foutbestendige decoderingswerkwijze 30 volgens conclusie 78, met het kenmerk, dat wanneer de geometrie wordt gedecodeerd onder gebruikmaking van een voorspellingswaarde die is voorspeld door drie eerder bezochte voorlopers in de actuele data-partitie en een gecodeerde waarde ervan, welke voorspellingswaarde wordt inge-35 steld op 0 wanneer er geen voorloperwaarde toelaatbaar is, de voorspellingswaarde alleen op de voorloper-waarde wordt 1013639 ingesteld wanneer slechts één voorloper-waarde toelaatbaar is, waarbij de voorspellingswaarde wordt ingesteld op een rekenkundige gemiddelde waarde van twee toelaatbare voorlo-per-waarden wanneer de twee voorloper-waarden toelaatbaar 5 zijn en de afstanden tussen elke waarde en het actuele hoekpunt 1 bedragen, waarbij de voorspellingswaarde ofwel wordt ingesteld op toelaatbare voorloperwaarden wanneer er alleen voorloperwaarden toelaatbaar zijn en de afstand tussen elke waarde en het actuele hoekpunt 1 bedragen, en de 10 voorspellingswaarde wordt bepaald door een vooraf bepaalde voorspellingsmethode wanneer drie voorloper-waarden alle toelaatbaar zijn.
- 80. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 77, met het kenmerk, dat wanneer de 15 waarde van het grensvoorspelling-markeerteken 1 is, er wordt vastgesteld dat de door de thans gedecodeerde MOBL en de eerder gedecodeerde MOBOL ook aanwezig zijn in de actuele gedecodeerde MOBL.
- 81. Progressieve en foutbestendige decoderingswerkwijze 20 geometrie wordt gedecodeerd onder gebruikmaking van een volgens conclusie 80, met het kenmerk, dat wanneer de voor-spellingswaarde die is voorspeld door drie voorlopers die zijn bezocht in de actuele data-partitie en een gecodeerde waarde daarvan, waarbij de voorspellingswaarde wordt bepaald 25 door een vooraf bepaalde voorspellingsmethode onder de veronderstelling dat er geen hoekpunt in de vorige data-partities wordt gezocht.
- 82. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 67, met het kenmerk, dat de in de drie- 30 hoek-boom/driehoek-data aanwezige driehoek-data verplaatsing, geometrie en fotometrie bevatten die zijn bestemd voor elke driehoek die de corresponderende driehoek-boom vormt.
- 83. Progressieve en foutbestendige decoderingswerkwijze volgens conclusie 67, met het kenmerk, dat de in de drie- 35 hoek-boom/driehoek-data aanwezige driehoek-data bestaan uit de verplaatsing van alle driehoeken die de corresponderende 1013639 114 driehoek-boom vormen, de geometrie van alle driehoeken en fotometrie van alle driehoeken sequentieel zijn geordend.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR19980052327 | 1998-12-01 | ||
KR19980052327 | 1998-12-01 | ||
KR19990003649 | 1999-02-04 | ||
KR19990003649 | 1999-02-04 | ||
KR19990005239 | 1999-02-13 | ||
KR19990005239 | 1999-02-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
NL1013639A1 NL1013639A1 (nl) | 2000-06-06 |
NL1013639C2 true NL1013639C2 (nl) | 2004-04-06 |
Family
ID=27349858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
NL1013639A NL1013639C2 (nl) | 1998-12-01 | 1999-11-22 | Werkwijze voor het 3D-raster coderen/decoderen en inrichting voor foutbestendigheid en incrementele beeldconversie. |
Country Status (4)
Country | Link |
---|---|
US (1) | US6577310B1 (nl) |
JP (1) | JP3361492B2 (nl) |
FR (1) | FR2786590B1 (nl) |
NL (1) | NL1013639C2 (nl) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003518882A (ja) * | 1999-12-28 | 2003-06-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | Snrスケーラブルビデオ符号化方法及び対応する復号化方法 |
JP4758013B2 (ja) * | 2000-03-14 | 2011-08-24 | 三星電子株式会社 | 三次元シーンのノード処理方法及びその装置 |
KR100374797B1 (ko) * | 2000-03-14 | 2003-03-03 | 삼성전자주식회사 | 삼차원 장면의 노드를 처리하는 방법 및 그 장치 |
FR2811112B1 (fr) * | 2000-06-28 | 2003-01-03 | France Telecom | Procede de codage d'une image source a visualisation adaptative, procede de decodage et decodeur correspondant |
KR100612828B1 (ko) * | 2000-10-20 | 2006-08-18 | 삼성전자주식회사 | 오리엔테이션 보간 노드의 부호화 장치 및 방법 |
CA2359519C (en) * | 2000-10-20 | 2004-07-20 | Samsung Electronics Co., Ltd. | Encoding/decoding apparatus and method for orientation interpolator node data |
CA2359260C (en) * | 2000-10-20 | 2004-07-20 | Samsung Electronics Co., Ltd. | Coding apparatus and method for orientation interpolator node |
WO2002097733A2 (en) * | 2001-05-29 | 2002-12-05 | Koninklijke Philips Electronics N.V. | Video communication signal for 3d image |
US8421804B2 (en) | 2005-02-16 | 2013-04-16 | At&T Intellectual Property Ii, L.P. | System and method of streaming 3-D wireframe animations |
US7117385B2 (en) | 2003-04-21 | 2006-10-03 | International Business Machines Corporation | Method and apparatus for recovery of partitions in a logical partitioned data processing system |
US7230622B2 (en) * | 2004-11-18 | 2007-06-12 | Kenneth John Whatmough | Method and computing device for rendering graphical objects |
US20060187297A1 (en) * | 2005-02-24 | 2006-08-24 | Levent Onural | Holographic 3-d television |
TWI343047B (en) * | 2005-10-13 | 2011-06-01 | Lg Electronics Inc | Method and apparatus for encoding/ decoding |
WO2008084891A1 (en) * | 2007-01-11 | 2008-07-17 | Electronics And Telecommunications Research Institute | Method and apparatus for encoding/decoding 3d mesh information including stitching information |
KR101520649B1 (ko) * | 2008-01-21 | 2015-05-15 | 삼성전자 주식회사 | 3차원 메쉬 모델에서의 임의 접근 가능한 메쉬 데이터의압축 및 복원 방법 및 시스템 |
KR100969764B1 (ko) * | 2008-02-13 | 2010-07-13 | 삼성전자주식회사 | 메쉬 모델로 구현된 3차원 데이터의 부호화 및 복호화 방법 |
EP2261859A1 (en) | 2009-06-10 | 2010-12-15 | Thomson Licensing | Method for encoding/decoding a 3D mesh model that comprises one or more components |
KR101715962B1 (ko) * | 2009-06-23 | 2017-03-13 | 톰슨 라이센싱 | 반복된 패턴을 갖는 3d 메시의 압축 |
JP5469931B2 (ja) * | 2009-06-29 | 2014-04-16 | 株式会社日立製作所 | 動画像復号化方法、動画像符号化方法 |
US9214042B2 (en) | 2010-01-25 | 2015-12-15 | Thomson Licensing | Method for encoding normals of a 3D mesh model, method for decoding normals of a 3D mesh model, encoder and decoder |
WO2011131248A1 (en) * | 2010-04-23 | 2011-10-27 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method and apparatus for losslessly compressing/decompressing data |
CN102281440A (zh) * | 2011-06-15 | 2011-12-14 | 中山大学 | 一种基于几何图像的三维网格模型错误保护编码方法 |
US10973513B2 (en) * | 2011-09-29 | 2021-04-13 | Ethicon, Llc | Barbed suture having increased holding strength |
KR20140086998A (ko) * | 2011-11-07 | 2014-07-08 | 톰슨 라이센싱 | 예측 위치 인코딩 |
US20130336640A1 (en) * | 2012-06-15 | 2013-12-19 | Efexio, Inc. | System and method for distributing computer generated 3d visual effects over a communications network |
EP3251094B1 (en) * | 2015-01-30 | 2019-07-10 | Hewlett-Packard Development Company, L.P. | Indexing cells of n-dimensional objects |
BR112020027050A2 (pt) * | 2018-07-13 | 2021-04-20 | Panasonic Intellectual Property Corporation Of America | método de codificação de dados tridimensionais, método de decodificação de dados tridimensionais, dispositivo de codificação de dados tridimensionais e dispositivo de decodificação de dados tridimensionais |
US12108016B2 (en) | 2018-10-02 | 2024-10-01 | Sony Corporation | Image processing device and method |
CN117528077A (zh) * | 2018-10-27 | 2024-02-06 | 华为技术有限公司 | 图像预测方法及装置 |
EP3888063A1 (en) * | 2018-11-27 | 2021-10-06 | Renesas Electronics Corporation | Instruction list generation |
GB2593518B (en) * | 2020-03-26 | 2023-01-04 | Sony Interactive Entertainment Inc | Image coding system and method |
JP7504298B2 (ja) * | 2021-09-20 | 2024-06-21 | テンセント・アメリカ・エルエルシー | 3次元(3d)メッシュのuv座標を処理するための方法、装置及びコンピュータプログラム |
WO2023164603A1 (en) * | 2022-02-24 | 2023-08-31 | Innopeak Technology, Inc. | Efficient geometry component coding for dynamic mesh coding |
US20230316585A1 (en) * | 2022-03-31 | 2023-10-05 | Tencent America LLC | Atlas sampling based mesh compression with charts of general topology |
JP2024095240A (ja) * | 2022-12-28 | 2024-07-10 | Kddi株式会社 | メッシュ復号装置、メッシュ復号方法及びプログラム |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0859339A2 (en) * | 1997-02-13 | 1998-08-19 | Rockwell Science Center, LLC | Data compression for animated three dimensional objects |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5905507A (en) * | 1996-01-16 | 1999-05-18 | International Business Machines Corporation | Compression of geometric models using spanning trees |
US6262737B1 (en) * | 1998-01-30 | 2001-07-17 | University Of Southern California | 3D mesh compression and coding |
-
1999
- 1999-11-17 US US09/441,679 patent/US6577310B1/en not_active Expired - Fee Related
- 1999-11-22 NL NL1013639A patent/NL1013639C2/nl not_active IP Right Cessation
- 1999-11-26 FR FR9914938A patent/FR2786590B1/fr not_active Expired - Fee Related
- 1999-12-01 JP JP34264699A patent/JP3361492B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0859339A2 (en) * | 1997-02-13 | 1998-08-19 | Rockwell Science Center, LLC | Data compression for animated three dimensional objects |
Non-Patent Citations (3)
Title |
---|
DEERING M: "GEOMETRY COMPRESSION", COMPUTER GRAPHICS PROCEEDINGS. LOS ANGELES, AUG. 6 - 11, 1995, COMPUTER GRAPHICS PROCEEDINGS (SIGGRAPH), NEW YORK, IEEE, US, 6 August 1995 (1995-08-06), pages 13 - 20, XP000546211, ISBN: 0-89791-701-4 * |
LI J ET AL: "PROGRESSIVE CODING OF 3-D GRAPHIC MODELS", PROCEEDINGS OF THE IEEE, IEEE. NEW YORK, US, vol. 86, no. 6, June 1998 (1998-06-01), pages 1052 - 1063, XP000669753, ISSN: 0018-9219 * |
TAUBIN G ET AL: "GEOMETRIC COMPRESSION THROUGH TOPOLOGICAL SURGERY", ACM TRANSACTIONS ON GRAPHICS, ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, US, vol. 17, no. 2, 1 April 1998 (1998-04-01), pages 84 - 115, XP000754615, ISSN: 0730-0301 * |
Also Published As
Publication number | Publication date |
---|---|
FR2786590A1 (fr) | 2000-06-02 |
JP2000194843A (ja) | 2000-07-14 |
US6577310B1 (en) | 2003-06-10 |
JP3361492B2 (ja) | 2003-01-07 |
FR2786590B1 (fr) | 2006-09-22 |
NL1013639A1 (nl) | 2000-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
NL1013639C2 (nl) | Werkwijze voor het 3D-raster coderen/decoderen en inrichting voor foutbestendigheid en incrementele beeldconversie. | |
NL1012920C2 (nl) | Werkwijze en inrichting voor progressieve 3D veelhoek codering. | |
JP4452242B2 (ja) | 漸進的な三次元メッシュ情報の符号化/復号化方法及びその装置 | |
JP4295866B2 (ja) | 3次元メッシュ情報のプログレッシブ符号化/復号化方法及びその装置 | |
US6009435A (en) | Progressive compression of clustered multi-resolution polygonal models | |
KR101334173B1 (ko) | 그래픽 데이터 부호화 및 복호화 방법과 장치 | |
JP5033261B2 (ja) | 共有頂点情報を用いた低複雑度3次元メッシュ圧縮装置及び方法 | |
Taubin | 3D geometry compression and progressive transmission | |
JP4808771B2 (ja) | 3次元メッシュ情報の符号化及び復号化装置ならびにその方法 | |
KR101268508B1 (ko) | 스티칭 정보를 포함하는 3차원 메쉬 정보부호화/복호화 방법 및 장치 | |
KR20060087647A (ko) | 3차원 삼각 메쉬의 연결 정보 데이터 단순 압축및 해제의 기술. | |
CA2352292C (en) | Method and system for predictive encoding of arrays of data | |
Stewart | Tunneling for triangle strips in continuous level-of-detail meshes | |
BR112020019540A2 (pt) | Método e aparelho para codificação/decodificação de uma nuvem de pontos representando um objeto 3d | |
KR100294923B1 (ko) | 손실 탄력성을 갖는 점진적 삼차원 메쉬 정보의 부호화/복호화방법 | |
KR100490121B1 (ko) | 3차원 메쉬 모델의 압축 방법 | |
KR19990085657A (ko) | 그래픽 모델링 데이터의 연결성 정보 압축 방법 및 장치 | |
Chai et al. | A depth map representation for real-time transmission and view-based rendering of a dynamic 3D scene | |
Bajaj et al. | Compression and coding of large cad models | |
EP1316922A1 (en) | Adaptative method for displaying a graphic scene on a terminal based on wavelets coding | |
EP1160731A2 (en) | Three-dimensional image compression method | |
KR20230137234A (ko) | 옥트리 기반 삼각형 코딩을 이용하는 메시 압축 방법 및 장치 | |
WO2024008456A1 (en) | Implicit encoding of a mesh topology | |
Cheng et al. | A perceptually driven model for transmission of arbitrary 3D models over unreliable networks | |
Yan et al. | Error-resilient coding of 3D graphics based on morphing and volume splitting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AD1A | A request for search or an international type search has been filed | ||
RD2N | Patents in respect of which a decision has been taken or a report has been made (novelty report) |
Effective date: 20040205 |
|
PD2B | A search report has been drawn up | ||
VD1 | Lapsed due to non-payment of the annual fee |
Effective date: 20080601 |