No Slide Title by zn4qok8

VIEWS: 0 PAGES: 94

									Compressing
Polygon Mesh Connectivity
            with
       Degree Duality
         Prediction
         Martin Isenburg
     University of North Carolina
            at Chapel Hill
Overview
•   Background
•   Connectivity Compression
•   Coding with Degrees
•   Duality Prediction
•   Adaptive Traversal
•   Example Run
•   Conclusion
Background
  Polygon Meshes
  • connectivity
             face1 1 2 3 4
             face2 3 4 3
k v log2 (v) face3 5 2 1 3

            facef
       :k ~ 4             :k ~ 6
  • geometry
                                       4
          vertex1 ( x, y, z )
          vertex2 ( x, y, z )      5
24 ~ 96 v vertex3 ( x, y, z )

           vertexv
Mesh Compression
• Geometry Compression [Deering, 95]
  – Fast Rendering
  – Progressive Transmission
  – Maximum Compression
    Maximum Compression
    • Geometry
    • Connectivity
      Connectivity
      – Triangle Meshes
      – Polygon Meshes
        Polygon Meshes
Not Triangles … Polygons!




 Face Fixer [Isenburg & Snoeyink, 00]
Results
                 bits per vertex (bpv)
  model       Face Fixer Degree Duality   gain
triceratops     2.115        1.189        44 %
  galleon       2.595        2.093        19 %
  cessna        2.841        2.543        11 %
     …            …            …           ...
tommygun        2.611        2.258        14 %
    cow         2.213        1.781        20 %
   teapot       1.669        1.127        33 %
 min / max / average gain [%] = 11 / 55 / 26
Connectivity Compression
Connectivity Compression
assumption
• order of vertices does not matter
advantage
• no need to “preserve” indices
approach
• code only the “connectivity graph”
• re-order vertices appropriately
Connectivity Graphs
• connectivity of simple meshes is
  homeomorphic to planar graph
 enumeration
 asymptotic bounds
                    [William Tutte 62 / 63]
number of planar triangulations with
v vertices
           3.24 bpv << 6 log (v) bpv
                                  2
Spanning Tree
• Succinct Representations
  of Graphs
    [Turan, 84]
• Short encodings of planar
  graphs and maps
    [Keeler & Westbrook, 95]
• Geometric Compression
  through
  Topological Surgery
    [Taubin & Rossignac, 98]

 extends to meshes
  of non-zero genus
Region Growing
• Triangle Mesh Compression
    [Touma & Gotsman, 98]
• Cut-Border Machine
    [Gumhold & Strasser, 98]
• Edgebreaker
    [Rossignac, 99]
• Simple Sequential Encoding
    [de Floriani et al., 99]
• Dual Graph Approach
    [Lee & Kuo, 99]
• Face Fixer
    [Isenburg & Snoeyink, 00]
Classification
• code symbols are associated with
  edges, faces, or vertices:

          boundary   processed region      boundary              boundary


                         unprocessed region




       focus                            focus                 focus


edge-based            face-based                      vertex-based
Edge-Based
Compression Schemes
Edge-Based
• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
               processed region




                 unprocessed
                   region
                                  focus




... F F R
Edge-Based
• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
               processed region




                 unprocessed
                   region
                                  F



... F F R F
Edge-Based
• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
               processed region




                 unprocessed          F
                   region
                                  F



... F F R F F
Edge-Based
• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
               processed region




                                          R
                 unprocessed          F
                   region
                                  F



... F F R F F R
Edge-Based
• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
               processed region


                                      F
                                          R
                 unprocessed          F
                   region
                                  F



... F F R F F R F
Edge-Based
• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
               processed region
                                  R
                                  F
                                          R
                 unprocessed          F
                   region
                                  F



... F F R F F R F R
Edge-Based                          ?            ?   ?   ?   ?


• Dual Graph Approach, [Lee & Kuo, 99]
• Face Fixer, [Isenburg & Snoeyink, 00]
                    processed region
                                          R
                                        F F
                                                 R
                      unprocessed            F
                        region
                                         F



... F F R F F R F R F ...
... 5   4   3   6    4 ...
Face-Based
Compression Schemes
Face-Based
• Cut-Border Machine, [Gumhold & Strasser, 98]
• Edgebreaker, [Rossignac, 99]
               processed region




                 unprocessed
                   region
                                  focus




... C R
Face-Based
• Cut-Border Machine, [Gumhold & Strasser, 98]
• Edgebreaker, [Rossignac, 99]
               processed region




                 unprocessed
                   region         C




... C R C
Face-Based
• Cut-Border Machine, [Gumhold & Strasser, 98]
• Edgebreaker, [Rossignac, 99]
               processed region




                                      R
                 unprocessed
                   region         C




... C R C R
Face-Based
• Cut-Border Machine, [Gumhold & Strasser, 98]
• Edgebreaker, [Rossignac, 99]
               processed region


                                  R
                                      R
                 unprocessed
                   region         C




... C R C R R
Face-Based                          ?       ?   ?   ?   ?


• Cut-Border Machine, [Gumhold & Strasser, 98]
• Edgebreaker, [Rossignac, 99]
                    processed region


                                        R
                                  C
                                            R
                      unprocessed
                        region          C




... C R C R R C ...
... 5   4   3   6    4 ...
Vertex-Based
Compression Schemes
Vertex-based
• Triangle Mesh Compression,
                    [Touma & Gotsman, 98]
             processed region




               unprocessed
                 region
                                focus




... 6
Vertex-based
• Triangle Mesh Compression,
                    [Touma & Gotsman, 98]
             processed region




                                5
               unprocessed
                 region




... 6   5
Vertex-based
• Triangle Mesh Compression,
                    [Touma & Gotsman, 98]
             processed region




                                5
               unprocessed
                 region




... 6   5
Vertex-based
• Triangle Mesh Compression,
                    [Touma & Gotsman, 98]
             processed region




                                5
               unprocessed
                 region




... 6   5
Vertex-based                            ?       ?   ?   ?   ?


• Triangle Mesh Compression,
                    [Touma & Gotsman, 98]
                        processed region




                                6           5
                          unprocessed
                            region




... 6       5       6   ...
... 5   4       3   6    4 ...
Coding with Vertex and
Face Degrees
Coding with Degrees
while ( unprocessed faces )
   move focus to a face
    face degree
   for ( free vertices )
       case
      switch ( case )
      “add”:    vertex degree
      “split”:  offset
      “merge”:  index, offset
Example Traversal
 “add” free vertex
                                boundary



                processed region                         exit focus
        focus                                  3          end slot
                                                       unprocessed region
                                  free
                                vertices

                                                    5focus
                                    4
                                                   (widened)
        boundary slots

                                start slot
... 4       5       3       4       3      4       3

... 5           4       4       5
 free vertex “splits” boundary

        unprocessed region



                                                   S
                                        split          focus
                                       offset

                                processed region




... 4   5       3       4   3

... 5       4       4
   free vertex “merges” boundary
                             boundary in stack

                                         unprocessed region
         stack   processed region
         focus
                                     M
merge
offset                                                 processed region




... 4        5       3         4    3

  ... 5          4       4
 Resulting Code
 • two symbol sequences
    –vertex degrees (+ “split” / “merge”)
... 4   3   S   4     4   4       6       M       5       4   4 ...

    –face degrees
... 4   3   4   4    5    4   4       4       6       4   4   4 ...


 • compress with arithmetic coder
                     converges to entropy
Entropy
for a symbol sequence of t types
                   t
       Entropy =   1
                   i=
                         pi • log2( 1 ) bits
                                    pi
                                  # of type t
                           pi =    # total




 0.2 bits     1.3 bits               2.0 bits
Average Distributions

add                 4                      4




                                       3

  split         3       5
    merge                   6 7 8 9+
            2                                  5 6 7 8 9+

case        vertex degrees             face degrees
Adaptation to Regularity




      6               3               3               6               4               4


...       ...   ...       ...   ...       ...   ...       ...   ...       ...   ...       ...
 vertex           face           vertex           face           vertex           face
degrees         degrees         degrees         degrees         degrees         degrees
“Worst-case” Distribution
3                                                           3
                                 
    4                          3pi = 1
                               i=
                                             [Alliez & Desbrun, 01]
                                                3.241… bpv
                             
                              i • pi = 6
        5
                                                  [Tutte, 62]
            6
                             i =3
                7
                    8
                        9
                            ……
                              …


                vertex degrees                     face degrees
Compressing with Duality
Prediction
Degree Correlation
• high-degree faces are “likely” to
  be surrounded
  by low-degree
  vertices
• and vice-versa

  mutual
   degree
  prediction
 Face Degree Prediction

                              fdc  3.3
                 3

           focus
         (widened)
                     4

                         3.3  fdc  4.3
         3


  average degree of
    focus vertices
                         4.3  fdc  4.9
      3+4+3
fdc =       = 3.333
        3
 “face degree context”   4.9  fdc
 Vertex Degree Prediction

            6             vdc = 3


                          vdc = 4
                                4
       degree of
      focus face
                          vdc = 5
                                5

       vdc = 6

“vertex degree context”   vdc  6
                                6
Compression Gain
                  without             with
  model       bits per vertex   bits per vertex
triceratops       1.192            1.189
  galleon         2.371            2.093
  cessna          2.811            2.543
     …              …                …
tommygun          2.917            2.258
    cow           1.781            1.781
   teapot         1.632            1.127
 min / max / average gain [%] = 0 / 31 / 17
Reducing the Number of
Splits
Occurance of “splits”
Occurance of “splits”
Occurance of “splits”
Occurance of “splits”
Occurance of “splits”
                    unprocessed region




        processed region
Occurance of “splits”
                    unprocessed region




        processed region
Occurance of “splits”
                    unprocessed region




        processed region
Occurance of “splits”
                    unprocessed region




        processed region
Occurance of “splits”
                    unprocessed region
                                         split




        processed region
Adaptive Traversal
• Valence-driven connectivity encoding for
  3D meshes [Alliez & Desbrun, 01]
        avoid creation of cavities
             exit
            focus




             focus
Compression Gain
                  without            with
  model        splits  bpv     splits     bpv
triceratops     53   1.311     25      1.189
  galleon       78   2.309     18      2.093
  cessna       172   2.882     28      2.543
     …          …     …        …        …
tommygun       131   2.449     32      2.258
    cow        154   2.313     13      1.781
   teapot       10   1.167      3      1.127
 min / max / average gain [%] = 4 / 23 / 10
Example Decoding Run
    Example Decoding Run




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                                 4




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                         focus
                                     6

4   6    6   3   3   4   5       4       5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




              free                3
             vertex


4   6    6   3   3    4   5           4   5   4   4   2   4   4   ...
3    5   4   4    4   3       6       5 ...
    Example Decoding Run




                          exit
                         focus

                     6



4   6    6   3   3   4     5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3         6   5 ...
    Example Decoding Run

                     free vertices




                           5




4   6    6   3   3   4     5       4   5   4   4   2   4   4   ...
3    5   4   4   4     3       6   5 ...
    Example Decoding Run




                     3       5




4   6    6   3   3       4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4       3       6   5 ...
    Example Decoding Run



                         3

                         5




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run

                                  exit
                                 focus

                                      4




4   6    6   3   3   4   5        4       5   4   4   2   4   4   ...
3    5   4   4   4   3       6     5 ...
    Example Decoding Run


                                 4




4   6    6   3   3   4   5           4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6       5 ...
    Example Decoding Run
                     5

                                 4




4   6    6   3   3   4   5           4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6       5 ...
    Example Decoding Run

                                     4

                                          exit
                                         focus




4   6    6   3   3   4   5       4   5    4      4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run

               end     5
               slot
                  focus
                (widened)
                                 3

                         3
             start
             slot




4   6    6    3      3       4   5       4   5   4   4   2   4   4   ...
3    5   4     4     4       3       6   5 ...
    Example Decoding Run


                     4




4   6    6   3   3       4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4       3       6   5 ...
    Example Decoding Run

              exit
             focus
                          4
              5




4   6    6     3      3       4   5       4   5   4   4   2   4   4   ...
3    5   4        4   4       3       6   5 ...
    Example Decoding Run




           focus
         (widened)




4   6    6   3   3       4   5       4   5   4   4   2   4   4   ...
3    5   4   4       4   3       6   5 ...
    Example Decoding Run




                 4




4   6    6   3       3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4       4   3       6   5 ...
    Example Decoding Run




      exit
     focus
                                         focus
             4


4   6    6       3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4       4   4   3       6   5 ...
    Example Decoding Run




                                     3



4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                                         4

                                       exit
                                      focus
4   6    6   3   3   4   5       4   5 4 4    2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                                       focus
                                     (widened)




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                                         6




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                                         2
                                         6




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run



                                                 4
                                         6




4   6    6   3   3   4   5       4   5   4   4   2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run




                                                     4
                                             exit
                                             focus

4   6    6   3   3   4   5       4   5   4    4      2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run


                                           focus
                                         (widened)




4   6    6   3   3   4   5       4   5     4   4     2   4   4   ...
3    5   4   4   4   3       6   5 ...
    Example Decoding Run


                                                       ......
                                           5




4   6    6   3   3   4   5       4   5     4   4   2    4   4   ...
3    5   4   4   4   3       6   5   ...
Conclusion
 Summary
 • degree coding for polygonal
   connectivity
 • duality prediction
 • adaptive traversal
 • proof-of-concept
   implementation
   using Shout3D
http://www.cs.unc.edu/~isenburg/degreedualitycoder/
Similar Result
• Near-Optimal Connectivity Coding of
  2-manifold polygon meshes
 [Khodakovsky, Alliez, Desbrun, Schröder]

  analysis of worst-case face degree
   and vertex degree distribution
         entropy  Tutte’s bounds
         Martin  France
Current Work           (w. Pierre Alliez)
• use polygons for better predictive
  geometry coding

  “fairly planar & convex”

• extend degree coding to volume
  mesh connectivity

          “edge degrees”
Thank You!

								
To top