valence-based connectivity coding

131
Valence-based Connectivity Valence-based Connectivity Coding Coding Hu Jianwei 2007-11-07

Upload: lawrence-meadows

Post on 03-Jan-2016

29 views

Category:

Documents


0 download

DESCRIPTION

Valence-based Connectivity Coding. Hu Jianwei 2007-11-07. Why Mesh Compression. Slow networks require data compression to reduce the latency Small storage devices need data compression to save space. Surface Based Meshes. Connectivity How the vertices connect with each other Geometry - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Valence-based Connectivity Coding

Valence-based Connectivity CodingValence-based Connectivity Coding

Hu Jianwei2007-11-07

Page 2: Valence-based Connectivity Coding

Why Mesh CompressionWhy Mesh Compression

• Slow networks require data compression to reduce the latency

• Small storage devices need data compression to save space

Page 3: Valence-based Connectivity Coding

Surface Based MeshesSurface Based Meshes

• Connectivity– How the vertices connect with each other

• Geometry– Coordinates of the vertices

face1 1 2 3 4face2 3 4 3face3 5 2 1 3

facef

vertex1 ( x, y, z )vertex2 ( x, y, z )vertex3 ( x, y, z )

vertexv

Page 4: Valence-based Connectivity Coding

ClassificationClassification

• Connectivity encoding

• Geometry encoding

• Single-rate compression

• Progressive compression

Page 5: Valence-based Connectivity Coding

Valence-based CompressionValence-based Compression

• Triangle Mesh Compression [98 Touma & Gotsman]

• Valence-Driven Connectivity Encoding for 3D Meshes [01 Alliez & Desbrun]

• Near-Optimal Connectivity Encoding of 2-Manifold Polygon Meshes [02 Khodakovsky et al.]

• Compressing Polygon Mesh Connectivity with Degree Duality Prediction [02 Isenburg]

Page 6: Valence-based Connectivity Coding

Key ObservationKey Observation

• A genus-0 manifold mesh is topologically equivalent to a planar graph

• The vertices incident on any mesh vertex may be ordered

98 Touma & Gotsman

Page 7: Valence-based Connectivity Coding

Code WordsCode Words

• The topology may be encoded with:– add<degree>– split<offset>– merge<index><offset>

• Then entropy encoded– Huffman– arithmetic– run-length

98 Touma & Gotsman

Page 8: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 9: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 10: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 11: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 12: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 13: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 14: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 15: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 16: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 17: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 18: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 19: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 20: Valence-based Connectivity Coding

Example TraversalExample Traversal98 Touma & Gotsman

Page 21: Valence-based Connectivity Coding

Add dummy vertices98 Touma & Gotsman

Page 22: Valence-based Connectivity Coding

Example TraversalTraversal98 Touma & Gotsman

Page 23: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Page 24: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Page 25: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ;

Page 26: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ;

Page 27: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ;

Page 28: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ;

Page 29: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ;

Page 30: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ;

Page 31: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 (focus full) ;

Page 32: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ;

Page 33: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ;

Page 34: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ;

Page 35: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ;

Page 36: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ;

Page 37: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ;

Page 38: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ;

Page 39: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 (focus full) ;

Page 40: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ;

Page 41: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ;

Page 42: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ;

Page 43: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4 (focus full);

Page 44: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4 ; (focus full)

Page 45: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 46: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 47: Valence-based Connectivity Coding

Encoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Huffman codingrun-length

coding

Page 48: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 49: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 50: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 51: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 52: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 (focus full); Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 53: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 54: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 55: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 56: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 (focus full); Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 57: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 58: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 59: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 (focus full); Add Dummy 6 ; Add 4;

Page 60: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 61: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 (list full, pop list); Add 4;

Page 62: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4 (focus full);

Page 63: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4; (focus full)

Page 64: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4; (focus full, list full)

Page 65: Valence-based Connectivity Coding

Decoding98 Touma & Gotsman

Add 6; Add 7 ; Add 4 ; Add 4 ; Add 8 ; Add 5 ; Add 5 ; Add 4 ; Add 5 ; Split 5 ; Add 4 ; Add 4 ; Add Dummy 6 ; Add 4;

Page 66: Valence-based Connectivity Coding

ExampleExample98 Touma & Gotsman

Page 67: Valence-based Connectivity Coding

ResultsResults

Model #tri bits/tri

Eight 1536 0.2

Triceratops 5666 1.4

Cow 5804 1.1

Beethoven 5028 1.4

Dodge 16646 0.9

Starship 8152 0.5

Average 0.9

98 Touma & Gotsman

Less than 1.5 bits per vertex on the average

Page 68: Valence-based Connectivity Coding

ObstacleObstacle

• The number of split codes and the range of their offsets turn out to seriously impede the compression ratios

• This is a serious obstacle to guarantee a linear worst case bit-rate complexity

01 Alliez & Desbrun

Page 69: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

Page 70: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

Page 71: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

Page 72: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

Page 73: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

processed region

unprocessed region

Page 74: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

processed region

unprocessed region

Page 75: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

processed region

unprocessed region

Page 76: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

unprocessed region

processed region

Page 77: Valence-based Connectivity Coding

Occurrence of “splits”Occurrence of “splits”01 Alliez & Desbrun

unprocessed region

split

processed region

Page 78: Valence-based Connectivity Coding

The Best Pivot CandidateThe Best Pivot Candidate01 Alliez & Desbrun

Page 79: Valence-based Connectivity Coding

How to ChooseHow to Choose

• The minimum free edges as the next pivot

• An adaptive mean number of free edges to select the next pivot vertex

01 Alliez & Desbrun

Page 80: Valence-based Connectivity Coding

Getting Rid of the SplitsGetting Rid of the Splits01 Alliez & Desbrun

Page 81: Valence-based Connectivity Coding

The Resulting ConquestThe Resulting Conquest01 Alliez & Desbrun

98 Touma & Gotsman

01 Alliez & Desbrun

Page 82: Valence-based Connectivity Coding

Compression resultsCompression results01 Alliez & Desbrun

Page 83: Valence-based Connectivity Coding

Not Triangles … Polygons!Not Triangles … Polygons!02 Isenburg

Page 84: Valence-based Connectivity Coding

Add Free Vertices and FacesAdd Free Vertices and Faces

focusprocessed region

unprocessed region

boundary

boundary slots

45

3

4

34 45. . .. . .

focus(widened)

start slot

end slotfreevertices

5

5

4

4

3

3 exit focus

02 Isenburg

Page 85: Valence-based Connectivity Coding

Free Vertex Splits BoundaryFree Vertex Splits Boundary

focus

processed region

unprocessed region

45

3

4

34 45. . .. . .

Ssplitoffset

02 Isenburg

Page 86: Valence-based Connectivity Coding

Free Vertex Merges BoundaryFree Vertex Merges Boundary

stackfocus

processed region

processed region

unprocessed region

boundary in stack

mergeoffset

45

3

4

34 45. . .. . .

M

02 Isenburg

Page 87: Valence-based Connectivity Coding

Resulting CodeResulting Code

• Two symbol sequences

– vertex degrees (+ “split” / “merge”)

– face degrees

• Compress with arithmetic coder

02 Isenburg

3. . . . . .64 4 44 M 5 44S

4 5. . . . . .3 64 4 4 4 4 4 4 4

Page 88: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 89: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 90: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

focus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

6

Page 91: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

3

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

freevertex

Page 92: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

exitfocus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

6

Page 93: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

5

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

free vertices

Page 94: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

5

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

3

Page 95: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

5

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

3

Page 96: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

exitfocus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 97: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

4

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 98: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

4

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

5

Page 99: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

exitfocus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 100: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

focus(widened)

startslot

endslot

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

5

3

3

Page 101: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

4

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 102: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

exitfocus

4

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

5

Page 103: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

focus(widened)

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 104: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

4

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 105: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

focus

exitfocus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 106: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

3

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 107: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

exitfocus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 108: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

focus(widened)

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 109: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

6

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 110: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

6

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

2

Page 111: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

6

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 112: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

exitfocus

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

4

Page 113: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

focus(widened)

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

Page 114: Valence-based Connectivity Coding

Example Decoding RunExample Decoding Run02 Isenburg

5

45

3 . . .64 4 4 45 2

. . .3 64 4

6 3 5 444

3 5

. . . . . .

Page 115: Valence-based Connectivity Coding

Average Distributions Average Distributions

2

3

4

56 7 8 9+

vertex degrees

3

4

5 6 7 8 9+

face degrees

add

mergesplit

case

02 Isenburg

Page 116: Valence-based Connectivity Coding

Degree CorrelationDegree Correlation02 Isenburg

Page 117: Valence-based Connectivity Coding

Face Degree Prediction Face Degree Prediction 02 Isenburg

focus(widened)

4

3

3

3 + 4 + 3=

33.333

average degree offocus vertices

“face degree context”

fdc =

fdc 3.3

3.3 fdc 4.3

4.3 fdc 4.9

4.9 fdc

Page 118: Valence-based Connectivity Coding

Vertex Degree Prediction Vertex Degree Prediction 02 Isenburg

6

=

degree offocus face

“vertex degree context”

vdc 6

vdc 6

vdc =

vdc = 4

vdc = 5

4

5

3

6

Page 119: Valence-based Connectivity Coding

Compression Gain Compression Gain 02 Isenburg

triceratopsgalleoncessna

…tommygun

cowteapot

withoutbits per vertexmodel

min / max / average gain [%] = 0 / 31 / 17

withbits per vertex

1.1892.0932.543

…2.2581.7811.127

1.1922.3712.811

…2.9171.7811.632

Page 120: Valence-based Connectivity Coding

Compression Gain Compression Gain 02 Isenburg

vs. Face Fixer coder [00 Isenburg & Snoeyink]

Page 121: Valence-based Connectivity Coding

Reducing the Number of SplitsReducing the Number of Splits02 Isenburg

• A simple version of [Alliez & Desbrun]’s stratege – Only move the focus if the smallest number of slots is 0

or 1

focus

exitfocus

Page 122: Valence-based Connectivity Coding

Compression Gain Compression Gain 02 Isenburg

Page 123: Valence-based Connectivity Coding

Valence-based CompressionValence-based Compression

• Valence-based coding is widely considered to be the best connectivity coding method available

• If valence-based coding is not optimal, it is probably not far from this

Page 124: Valence-based Connectivity Coding
Page 125: Valence-based Connectivity Coding

Arithmetic CodingArithmetic Coding

• Arithmetic coding is a method for lossless data compression

• It is a form of variable-length entropy encoding

• Arithmetic coding encodes the entire message into a single number, a fraction n where (0.0 ≤ n < 1.0)

Page 126: Valence-based Connectivity Coding

Arithmetic Coding ExampleArithmetic Coding Example

• Four-symbol model– 60% chance of symbol NEUTRAL – 20% chance of symbol POSITIVE– 10% chance of symbol NEGATIVE– 10% chance of symbol END-OF-DATA

• Decoding of 0.538

Page 127: Valence-based Connectivity Coding

Arithmetic Coding ExampleArithmetic Coding Example

• The interval for NEUTRAL would be [0, 0.6)

• The interval for POSITIVE would be [0.6, 0.8)

• The interval for NEGATIVE would be [0.8, 0.9)

• The interval for END-OF-DATA would be [0.9, 1)

Page 128: Valence-based Connectivity Coding

Arithmetic Coding ExampleArithmetic Coding Example

0.538 falls into the sub-interval for NEUTRAL, [0, 0.6)• The interval for NEUTRAL would be [0, 0.36) -- 60% of [0, 0.6)

• The interval for POSITIVE would be [0.36, 0.48) -- 20% of [0, 0.6)

• The interval for NEGATIVE would be [0.48, 0.54) -- 10% of [0, 0.6)

• The interval for END-OF-DATA would be [0.54, 0.6). -- 10% of [0, 0.6)

A diagram showing decoding of 0.538

Page 129: Valence-based Connectivity Coding

Arithmetic Coding ExampleArithmetic Coding Example

0.538 falls into the sub-interval for NEUTRAL, [0, 0.6)• The interval for NEUTRAL would be [0, 0.36) -- 60% of [0, 0.6)

• The interval for POSITIVE would be [0.36, 0.48) -- 20% of [0, 0.6)

• The interval for NEGATIVE would be [0.48, 0.54) -- 10% of [0, 0.6)

• The interval for END-OF-DATA would be [0.54, 0.6). -- 10% of [0, 0.6)

A diagram showing decoding of 0.538

Page 130: Valence-based Connectivity Coding

Arithmetic Coding ExampleArithmetic Coding Example

0.538 falls into the sub-interval for NEGATIVE, [0.48, 0.54)• The interval for NEUTRAL would be [0.48, 0.516) -- 60% of [0.48, 0.54)

• The interval for POSITIVE would be [0.516, 0.528) -- 20% of [0.48, 0.54)

• The interval for NEGATIVE would be [0.528, 0.534) -- 10% of [0.48, 0.54)

• The interval for END-OF-DATA would be [0.534, 0.540) -- 10% of [0.48, 0.54)

A diagram showing decoding of 0.538

Page 131: Valence-based Connectivity Coding

Arithmetic Coding ExampleArithmetic Coding Example

0.538 falls into the sub-interval for END-OF-DATA, [0.534, 0.540)

Decoding is complete

A diagram showing decoding of 0.538

The same message could have been encoded by the equally short fractions .534, .535, .536, .537 or .539.