Document Sample

Delphi: Geometry-based Connectivity Prediction in Triangle Mesh Compression VOLKER COORS JAREK ROSSIGNAC Stuttgart University of Applied Sciences College of Computing, IRIS and GVU Center Geomatics, Computer Science and Mathematics Georgia Institute of Technology Schellingstr. 24, D-70174 Stuttgart Atlanta, Georgia, USA coors.fbv@fht-stuttgart.de jarek@cc.gatech.edu Abstract Delphi is a new geometry-guided predictive scheme for compressing the connectivity of triangle meshes. Both compression and decompression algorithms traverse the mesh using the EdgeBreaker state machine. However, instead of encoding the EdgeBreaker clers symbols that capture connectivity explicitly, they estimate the location of the unknown vertex, v, of the next triangle. If the predicted location lies sufficiently close to the nearest vertex, w, on the boundary of the previously traversed portion of the mesh, then Delphi estimates that v coincides with w. When the guess is correct, a single confirmation bit is encoded. Otherwise, additional bits are used to encode the rectification of that prediction. When v coincides with a previously visited vertex that is not adjacent to the parent triangle (EdgeBreaker S case), the offset, which identifies the vertex v, must be encoded, mimicking the Cut- Border Machine compression proposed by Gumhold and Strasser. On models where 97% of Delphi predictions are correct, the connectivity is compressed down to 0.19 bits per triangle. Compression rates decrease with the frequency of wrong predictors, but remains below 1.50 bits per triangle for all models tested. Categories and Subject Descriptors (according to ACM CCS): I.3.2 [Computer Graphics]: Graphics Systems - distributed/network graphics; E.4 [Coding and Information Theory]: Data compaction and compression Keywords: triangle meshes, connectivity coding, geometric prediction, geometry compression Introduction and overview Due to improved tools for the design and acquisition of 3D models, to the wider acceptance of 3D technology, and to the need for higher accuracy, the number and complexity of models that are accessed over Internet connections are growing faster than network bandwidth. Consequently, it is imperative to continue increasing the terseness of 3D data transmission formats. Although several representations have been proposed for 3D models, triangle meshes remain the de facto standard for exchanging and viewing 3D models. They may be used directly to represent polyhedral surfaces or serve as control structure for subdivision surfaces. A triangle mesh may be represented by its geometry (vertex location data) and by its connectivity (triangle/vertex incidence table from which triangle/triangle adjacency may be derived). Most compression techniques encode connectivity independently of geometry. In these schemes, the connectivity and geometry of the previously decoded portion of the mesh are used to predict the location (geometry) of the next vertex. However, previously decoded geometry has, so far, not been used to explicitly predict connectivity. Already of theoretical interest forty years ago24, lossless connectivity encoding has received over the last few years an increased amount of attention1, 4, 16, 21 because of its practical importance for the transmission of 3D models. Although several recent schemes focus on progressive transmission2,3,7,10,14,22,28, the reduction of the total number of bits per triangle remains the primary and the most objective measure of the effectiveness of a compression scheme. Furthermore, single-resolution connectivity compression retains its strategic importance, because a coarse starting point of a progressive model must often be transmitted first and because in many situations where high accuracy of the model is required, single-resolution compression is more effective. In this paper, we propose a new encoding technique, called Delphi1, for the single-resolution, lossless compression of the connectivity of triangle meshes. Delphi was originally developed as an improvement of the EdgeBreaker compression16 described in some details in the next section. However, as explained later, some aspects of it (i.e. the transmission of the offset) are more aligned with the Cut-Border Machine6 approach. Nevertheless, we use the EdgeBreaker terminology to explain the details of our approach. In fact, Delphi could be easily incorporated into other compression schemes, including the Cut-Border Machine6 and also several variants of the valence-based coding23,1 approaches, originally proposed by Touma and Gotsman. In Delphi, both compression and decompression perform the same geometric prediction of the location of the tip-vertex of the next triangle. They 1 The name Delphi is inspired by the ancient Greek oracle at Delphi. Pythia, the medium of the Oracle, responded to questions in words that could only be understood by a priest of Apollo, the god of Truth. The priest translated the answers to the seeker. Coors&Rossignac: Delphi 1 / 12 estimate triangle connectivity by predicting the location of the tip vertex, v, of the next triangle. If v is too far from all boundary vertices, Delphi estimates that that the tip vertex is a new vertex (EdgeBreaker C case). Otherwise, it guesses that v is the closest boundary vertex. If the guess is correct, only the confirmation bit needs to be transmitted. If not, additional bits are transmitted to rectify the guess. The corrections are encoded using different bit-length symbols chosen to minimize the entropy. Because most Dephi's guesses are correct (up to 98% in our experiments), connectivity information is often compressed to a fraction of a bit per triangle, as reported below. For instance, for a variety of models re-sampled with the Piecewise-Regular Meshes approach26, between 96% and 98% of Delphi’s guesses are correct, resulting in an entropy of 0.3 and 0.4 bits per vertex, or equivalently, 0.15 and 0.2 bits per triangle. Previous work In this section, we review several techniques for the loss-less compression of the connectivity of triangle meshes. The connectivity of a “simple” mesh (defined as a connected, zero-genus, manifold triangle mesh) may be stored as a sequence of t triangle descriptors, each triangle been represented by 3 integer labels. Each label identifies one amongst the v vertices and hence requires log2(v) bits. Organizing triangles into strips5, where each new triangle shares an edge with the previous one, reduces the above storage by nearly half. The use of a buffer to cache a small number of labels4 may further reduce the expected cost. The Topological Surgery method of Taubin and Rossignac21 compresses both a triangle-spanning tree and its dual vertex-spanning tree by encoding the lengths of consecutive single-child nodes. Both trees suffice to decode the connectivity of the simple mesh. For complex and reasonably regular meshes, the expected cost of encoding both trees amounts to less than two bits per triangle. However, the overhead of the run length encoding may result in a significantly higher average cost for irregular or small meshes. Rossignac's EdgeBreaker compression scheme16 was the first one to propose a tight linear worst-case bound of the connectivity compression. The original method guarantees 4 bit per vertex (denoted b/v for simplicity). This guaranteed upper bound was later improved to 3.67 b/v11 and to 3.60 b/v8. This upper bound on storage does not rely on statistic-based entropy or arithmetic coding schemes, which are discussed below and, in general, perform poorly on small or irregular meshes. EdgeBreaker visits all the triangles of a mesh one at a time, walking from a previously visited triangle to one of its not-yet visited neighbors through their common edge, called the “gate”. For manifold meshes, the tip of the new triangle is either a “new” vertex (case C) that has not yet been encountered or an “old” vertex of the boundary separating the previously visited portion of the mesh from the rest. EdgeBreaker distinguishes four types of “old” vertices, depending on whether they appear in that boundary immediately before the gate (case L), immediately after the gate (case R), both (case E), or neither (case S). The succession of case types produced by this traversal are encoded as a succession of symbols from the set {C,L,E,R,S}, called the clers sequence. These situations and the associated clers symbols are shown in figure 1 (left). The arrow indicates the direction to the next triangle. Previously visited triangles are not shown. Note that in the case S, EdgeBreaker moves to the right, using a recursive call, and then to the left. Figure 1 (right) gives an example of the clers sequence of a small region of a simple mesh. A detailed description of the EdgeBreaker compression and decompression and extensions to meshes with handles and holes are discussed in16,18,29. Because half of the triangles correspond to case C in a simple mesh, one may chose to encode them using a single bit (for instance 0), while the remaining four cases may be unambiguously encoded using 3 bits each (110 for L, 101 for R, 111 for E, and 100 for S). This simple code guarantees to compress the EdgeBreaker-generated clers sequence of any zero- genus manifold mesh with exactly 4.0 bits per vertex. The clers sequence of meshes encountered in practice may be compressed even further, sometimes to less than 1.8 bits per vertex, using variable-length entropy codes17. When the mesh has a sufficiently large number of vertices and most of them have exactly six neighbors, the clers sequence can provably be compressed down to 1.62 bits per vertex19. R v v v R R T T T L C L E L C R v v S R E T T R C S E Figure 1: EdgeBreaker cases and the associated clers symbols for the triangle marked T (left). An example of the EdgeBreaker traversal generating the clers sequence: CRSRLECRRRLE For zero-genus meshes, the clers sequence is sufficient to represent the complete connectivity. It explicitly encodes the location of the tip vertex for cases C, L, E, R. For the S case, the original EdgeBreaker decompression16 Coors&Rossignac: Delphi 2 / 12 computed the offset, i.e. the number of edges that separate the gate from the tip vertex of the new triangle along the border. The computation was performed by tracking the edge-count changes imposed on the boundary portion joining the gate to the tip, by the operations that separate the S symbol from the matching E, which makes the edge- count zero. A more efficient decompression algorithm, called Wrap&Zip17, interprets the clers sequence to build a simply connected triangulated polygon, obtained by gluing the triangles along the triangle-spanning tree. During this process, it orients the border edges of that polygon in an upward direction with respect to the vertex-spanning- tree that is the dual of the triangle-spanning-tree. Each time it finds two border edges that point away from their common vertex, it zips them into an internal edge. An elegant third alternative, called Spirale Reversi9, processes the clers sequence from the end, and thus avoids the zipping process. Although developed independently, EdgeBreaker bears strong similarities with Gumhold and Strasser’s cut-border machine6. For manifold meshes without holes, the principal difference lies in the fact that cut-border explicitly encodes an offset with each S symbol, while EdgeBreaker does not. Similarly to the Topological Surgery, to EdgeBreaker, and to Cut-Border, Touma and Gotsman’s valence coding23 also encode the vertices along a vertex-spanning tree. However, instead of the five EdgeBreaker cases, they distinguish only two cases, split and add, which correspond to the EdgeBreaker's cases S and C. Instead of the other symbols, they encode the valence of each vertex, i.e., the number of incident triangles. Thus, each C symbol is associated with an integer valence and each S symbol (as in the cut-border machine) is associated with an integer offset. Their decoder keeps track of the valence defect of all border vertices. When the defect of a vertex v reaches 1, a new triangle is automatically inserted in the star of v, turning it into an interior vertex. Thus L, R, and E triangles are recovered automatically and need not be encoded. Experimental results show that this approach compresses connectivity down to less than 0.2 b/v for very regular meshes, and between 2.0 and 3.5 b/v for the less regular meshes found in practice. Alliez and Desbrun1 replace the deterministic traversal of Touma and Gotsman’s approach by an adaptive traversal that attempts to minimize the number of split operations (EdgeBreaker’s S cases). To do so, they choose the border edge bounded by vertices with the smallest number of free edges as the new gate. This optimized gate selection was further improved in Angle-Analyzer13, where Lee, Alliez and Desbrun use both connectivity and geometry to direct the mesh traversal. They select the gate using connectivity and geometry criteria, as the border- edge having the highest number of incident triangles and also the minimum angle with a neighboring border edge. The optimal combination of these two criteria dramatically decreases the frequency of S symbols. Thus, by combining the simplicity of EdgeBreaker with the statistical benefits of valence-based coding, they improve connectivity compression by 40% over the original valence coding approach23. Delphi Encoding In this section, we present Delphi, a new geometry-based predictive connectivity compression scheme for encoding the clers sequence produced by the EdgeBreaker mesh traversal. For simplicity of the exposition, we focus on simply connected meshes that are homeomorphic to a sphere. The proposed approach applies to more complex meshes as well, but the cost analysis and encoding are more complicated. The Delphi compression does not encode the clers sequence directly. Instead, it tries to guess each clers symbol and encodes the confirmation and, when necessary, the corrections to these guesses. The guess is based on the geometry and connectivity of the previously visited triangles. The Delphi decompression performs the same guesses and decodes a confirmation bit that either confirms that the guess is right or indicates that it is not, in which case a corrective string of subsequent bits will select the correct code. For cases where an S case was wrongly guessed, that corrective string will also include an encoding of the offset. Including the offset explicitly is necessary, because subsequent Delphi guesses rely on connectivity information that would not be available if one of the EdgeBreaker decompression schemes were used to estimate the offset by looking ahead along the clers string16, by delaying the zip operations17, or by reading the clers string backwards9. The sequence of confirmation bits and of corrections is called the Apollo sequence. In the following, we will explain how to guess the clers symbol of each triangle and how to encode the Apollo- sequence. Definitions A corner c is the association of the triangle c.t with one of its bounding vertices, denoted c.v. The next corner around a triangle in counterclockwise direction (with respect to the outward normal) is denoted c.n, the previous corner c.p, and the opposite corner c.o. We say that corner b is opposite to c if c.n.v=b.p.v and c.p.v=b.n.v. The Corner Table proposed in18 encodes all of the connectivity information as an array of tuples (c.v,c.o). Because entries of c.p, c, and c.n are consecutive in the Corner Table, c.n, c.p, and c.t may be trivially computed from the integer value of c by using integer division by 3. The location (i.e. geometry) of the vertex c.v associated with the corner c is denoted c.v.g. As in the original EdgeBreaker algorithm, we move from a triangle F to an adjacent triangle T at each step of the mesh traversal. F and T share a common edge, G, called the gate. Let c be the “tip” corner of T that is not incident upon any one of the vertices of G, as shown in figure 2. Let Length(G) denote the length of the gate. The Coors&Rossignac: Delphi 3 / 12 information transmitted by Delphi must identify the vertex c.v. Let g(c) be the estimate on the location of c.v.g. In practice, we compute g(c) using the parallelogram rule23: g(c) = c.n.v.g+c.p.v.g–c.o.v.g, but more elaborate estimates could be used. Let B denote the set of all border vertices in the boundary of the decoded portions of the mesh. As we have assumed that the mesh is simply connected, the vertices of B form one or several cyclic chains {c.p.v, Vr, …Vl, c.n.v}, called hereafter “loops”, along the oriented border. One of these loops contains the gate. We will call it the “active loop”. For zero-genus meshes, we know that c.v is either a new vertex or already part of the active loop. Let B’ be the set of vertices of the active loop excluding the gate vertices c.n.v and c.p.v. Let X be the vertex of B’ that is the closest to g(c). Let d:=Dist(X,g(c)) denote the distance between them. X is a prime candidate for c.v. We will use the distance d to decide whether X is our guess or whether we are guessing that c.v is a new vertex (case C). Already traversed area Active loop B’ X T g(c) d c.v v c c Vl c.n c.p Vr G c.o F Figure 2: Connectivity guessed by parallelogram prediction Connectivity prediction When the distance d between the predicted location g(c) of the tip of the next vertex and the closest border-vertex, X, exceeds a threshold, we assume a C triangle. In such a situation, the corrective vector gp = c.v.g – g(c) between the prediction g(c) and actual vertex location c.v.g will be encoded. When d is smaller than a threshold, X will be our guess. If that guess is correct, the decompression may immediately convert it to one of the four cases: L, E, R, or S, depending on whether X is V1, or Vr, or both, or neither as shown in figure 3: • If X = V1 = Vr, then we guess that T is of type E. • If X = Vr, then we guess that T is of type R. • If X = Vl, then we guess that T is of type L. • Otherwise, we guess that T is of type S. The threshold for d is proportional to the length of the gate G. More precisely, if d>τ*Length(G), we guess that T is of type C. We have established experimentally that the setting τ=0.6 consistently resulted in the most correct guesses across all models that we tested. A single confirmation bit in the transmission stream suffices to indicate whether our guess is correct. If so, we know the code of T (i.e., we have decoded its EdgeBreaker symbol using one bit), but we also know which vertex it is (even for S cases) and can thus zip the border immediately during decompression, avoiding the zip delays introduced in17 and not requiring the transmission of offsets that are associated with S triangles6, 23 to identify the tip-vertices of S triangle. If the confirmation bit indicates that the guess is wrong, we may need additional information to rectify it. Note that a false guess does not necessarily indicate a wrong symbol. We might wrongly guess c.v as X and concluded an S situation, when in fact, we do have an S case, but with a different tip vertex. In the following, we explain how we encode the rectification for each wrongly guessed symbol. The encoding depends on the guessed symbol and on the edge-count in the active border. We start with the case where we wrongly guessed a C as shown in figure 4. Then we discuss the cases where we wrongly guessed L, R, S, or E (see figure 5). Coors&Rossignac: Delphi 4 / 12 Wrong C guess If we guessed a C and in fact c.v is a vertex in B’, the confirmation bit in the transmission stream indicates that our guess was wrong. The subsequent bits specify the correct case (L, E, R, or S). • If the vertex-count, |B’|, of the active loop (not counting the gate’s vertices) is 1, the new triangle is of type E. • If |B’|=2, only two possible symbols {L, R} have to be distinguished. Thus a single bit is sufficient. • Otherwise, E situation is impossible and we only need to distinguish between the three remaining cases: L, R, or S. In an S case, we need at most log2(|B’|) additional bits to encode the offset necessary to locate c.v along the border. However, experimental results have shown that in most cases the offset is 2 or 3 (see also6) and thus can be encoded compactly. Guess C in X X g(c) g(c) Situation R Situation L X X g(c) g(c) Situation S Situation E Figure 4: Situations wrongly guessed as a C case. Wrong E guess If we wrongly guessed that the next triangle is of type E, we must be in a situation where the active loop has only 3 edges, i.e., X=V1 and X=Vr, because an E is guessed only with |B’|=1. Hence, the correct guess must be a C situation. The confirmation bit is sufficient and no additional bits are necessary to rectify the guess. Wrong R guess If we wrongly guessed that the next triangle is of type R (X=Vr), the subsequent bits are used to distinguish between the three remaining symbols {L, C, S}. An E symbol is not possible here. When the rectified symbol is an S, the offset must also be encoded. Wrong L guess If we wrongly guessed that the next triangle is of type L (X=V1), we must distinguish between the remaining symbols {R, C, S}. An E symbol is not possible. When the rectified symbol is an S, the offset must be encoded. Wrong S guess If we wrongly guessed that the next triangle is of type S, the four remaining symbols {C, L, R, S} are possible. (An E symbol is not possible here, because an E situation occurs only with | B’|=1. In which case, we would have guessed C or E, but not S.) Even if S is the correct guess, the tip-vertex might not be X. So, when the correction states that the guess of S is correct but the tip is wrong, additional bits must be transmitted to identify the correct tip-vertex in the active loop. These situations are rare because the number of S cases is relatively small and many of them are correctly identified. Impossible cases Taking into account the current length of the active border |B’|, some cases are not possible. Coors&Rossignac: Delphi 5 / 12 - If |B’|=1, only cases C and E are possible. |B’|=1 implies V1=Vr. L, R and S situations are not possible. In this case, the validation bit suffices to distinguish between the two possible cases: C or E. - If |B’|=2, then B’ only contains the vertices V1 and Vr. Neither an E nor an S situation are possible in this case. If the guess is wrong, one additional bit is sufficient to rectify the situation. For example, in case of a wrongly guessed R, one bit indicates that the guess is wrong, and an additional bit distinguishes between a C and L situation. - Finally, when |B’|=3, there is only one vertex in the active border besides V1 and Vr and thus that vertex is the only acceptable tip-vertex for an S case. There is no need to send corrective bits to identify the tip in a wrongly guessed S triangle. Furthermore, a wrongly guessed S case cannot be an S with a different tip-vertex. Guess wrong R g(c) g(c) g(c) X X X Situation L Situation C Situation S Guess wrong L g(c) g(c) g(c) X X X Situation R Situation C Situation S Guess wrong S X X X X g(c) g(c) g(c) g(c) Situation R Situation L Situation C Situation S Guess wrong E X g(c) Situation C Figure 5 Wrongly guessed non-C triangles. The gray triangle shows the actual situation. The yellow triangle visualizes the parallelogram prediction. Coors&Rossignac: Delphi 6 / 12 Using a careful analysis of these situations and exploiting the restrictions described above, we hade devised and evaluated several variable length schemes for encoding the corrective string of bits. Dephi encodes the clers sequence as a series of entries, one per symbol. An entry may have one, two, or three fields. The first field is always the confirmation bit. Hence the entry (t) indicates that the Delphi guess was right. As explained earlier, in some cases, a wrong guess may be rectified by the decompression without any additional information, thus, some entries may be of the form (f), indicating a wrong guess. Other wrong guesses may require sending the correct clers symbol, and hence will have two fields, for example (f,C) will indicate that the guessed symbol was wrong and that the correct symbol is a C. We use the notation RS to refer to the second field, which indicates how to rectify the symbol. Finally, in some cases, when the guess was wrong and the correct symbol is an S, one may also need to transmit the offset for identifying the tip of an S triangle. In such cases, the entry will have 3 fields: (f,S,o). Thus, we have only four possible forms for an entry: (t), (f), (f,S,o), or (f, RS), where RS stands for C, L, E, R, or S. Such a sequence of entries is called the Apollo sequence and is used by the Delphi decompression to interpret the connectivity guess. Figure 6 shows the Apollo sequence of the example introduced above, in figure 1. Performance and improvements of connectivity prediction In this section the complexity of the compression and decompression algorithm will be analyzed. The traversal of the mesh during compression and its reconstruction during decompression are extremely fast, especially when implemented on a Corner Table, which limits the recursive calls to only S cases and does not perform any dynamic heap storage allocation. The standard parallelogram geometric prediction is straightforward and equally inexpensive. Hence, the only cost increase due to the Delphi extension over the standard EdgeBreaker implementation lies in the computation of the vertex X of the current border loop that is the closest to the predicted location g(c) of the new tip vertex. The implementation described above requires visiting all of the vertices of the current border loop for each triangle. If k is the maximum length of the active border, this nearest neighbor search has worst case complexity of O(k). Usually, the length of the active border is small compared to the number of triangles t in the mesh. However, worst case complexity of the Delphi compression and decompression is O(k*t) and, since k may be proportional to t, it is O(t2). This quadratic worst case complexity can be avoided by restricting the search for X to a constant number N of neighbors of the gate in each direction along the active border, rather than the entire border. This simplification reduces the cost of the search for the best match to constant complexity O(1) and results in a linear worst case complexity O(t) of compression and decompression algorithm. Our experiments show that this variation has a negligible effect on compression results. Figure 6 shows the effect of the restricted search for X on the horse model (96966 triangles, see figure 8). Figure 6: Effect of restricted search for X on quality of prediction (left), number of wrongly predicted S situations (middle) and runtime (right).Runtime was measured on Toshiba Satellite Notebook, Pentium 4 1.2 GHz,512 MB RAM,Delphi implemented in Java using JDK 1.4.2 Surprisingly, the overall prediction is improved by restricting the search to a few vertices to the left and right of the gate. As you can see in figure 6 (left), best predictions are achieved with only looking at the vertices left and right of the gate. However, the number of wrongly predicted S situations drastically increases in this case (figure 6 middle). In particular, the limited search increases the number of S symbols wrongly predicted to be C and decreasing the number of C symbols wrongly predicted to be S. The runtime of the restricted search is given in the right diagram of figure 6. As expected, compared to the search of X on the entire active border, the restricted search is much more efficient. As rectified S are expensive due to the additional offset information, the number of wrongly predicted S situations should be minimized. However, due the runtime performance gain, we recommend to restrict the search for X to 4 or 5 vertices left and right to the gate. Statistical analysis on the example of the Horse model We analyze the frequency of right and wrong guesses and of the various corrections we use the example of a typical mesh with 96966 triangles and 48485 vertices that represents a horse shown in figure 8. Coors&Rossignac: Delphi 7 / 12 To gain a better understanding of the various statistics, we have also collected, for each step of the compression: the guessed symbol GS and the current length |B’| of the active loop. We report statistics for the various combinations of guessed symbol, GS, correct symbol, RS, and loop length, |B’|. Table 1 shows the distribution of correctly and wrongly guessed triangles as a function of the length of the active loop. A total of 17% of the guesses are wrong. Out of these, 98% happen when the active loop has more than 3 vertices, in addition to the vertices that bound the gate. Hence, treating short loops as special cases does not have a significant impact. P(f) 0.1710 P(|B’|=1|f ) 0.0162 P(|B’|=2|f ) 0.0025 P(|B’|>=3|f) 0.9813 Table 1: Probability of wrong guesses (top) and conditional probability of the edge-count |B’| of the border loop for wrong guesses is given for short loops. The next table shows the probability PXY of encountering a wrongly guessed symbol GS=X and its rectification RS=Y in cases where an active border length is greater than 2 PXY RS=C RS=L RS=R RS=S Sum GS=C -- 0.0033 0.5209 0.0143 0.5385 GS=L 0.0082 -- 0.0067 0.0004 0.0153 GS=R 0.2751 0.0013 -- 0.0163 0.2927 GS=S 0.0580 0.0003 0.0932 0.0020 0.1535 Sum 0.3413 0.0049 0.6208 0.0330 1.0000 Table 2 Probability of guessed and rectified symbols combinations. Figure 8: Delphi compression of the horse model (96966 triangles). Correctly predicted triangles are colored green, wrong ones red. About 83% of the connectivity is correctly guessed leading to a bit rate of 1.47 b/v. Note that 62% of the mistakes are R-type triangles. 84% of them are wrongly guessed as a C triangle. The next major source of mistakes are C-type triangles, which account for 34% of all wrong guesses. 80% of them are mistaken for R-type triangles. Thus, when a guessed C (GS=C) proves to be wrong, the correct symbol is usually R, and vice versa, in case of a wrong guess GS=R, most rectified symbols are C. An entropy encoder may exploit this bias. Another interesting fact is that a rectified symbol S occurs in only 3% of wrong guesses. Thus, when the probability of a wrong guess is 0.17, the combined probability of a wrongly guessed S symbol is only 0.51%. Therefore, the offset needs to be encoded for only one half of a percent of the triangles. Table 3 shows the distribution of that offset. The offset is 2 in 90% of the cases and is 3 in 6% of the cases. Using an arithmetic coder, the offsets are encoded with less than 1.1 bits each in these cases. Coors&Rossignac: Delphi 8 / 12 Offset 2 0.90 3 0.06 >3 (max 560) 0.04 Table 3 Offset distribution in case of RS=S The remaining 4% of the offsets are greater than 3. For the models we have tested, the offset did not exceed 560 and hence can easily be encoded with less than 10 bits each. Given that offsets longer than 3 need to be encoded for only 0.02% of the triangles, the amortized cost of encoding these longer offsets is only 0.002 bits per triangle. Figure 7: Example Apollo encoding: The first triangle was correctly guessed to be of type C. Thus, the Apollo sequence starts with the entry (t). The parallelogram rule predicts the tip of the next triangle to be at g(c), as shown top left. Since g(c) is too far from the active border (red line), we guess that the second triangle is also of type C. Unfortunately, that guess is wrong. The correct triangle, shown in gray, is of type R. Hence, the second Apollo entry is (f,R). The third triangle is correctly guessed to be of type S with the correct tip. Hence the third entry is (t). The complete Apollo sequence is ((t), (f,R), (t), (t), (t), (t), (t), (t), (t), (f,R), (t), (t), (t)). Compressing the Apollo sequence A fixed- format encoding In this sub-section, we describe a simple, fixed-format, encoding of the Apollo sequence that is not based on entropy or arithmetic codes. We analyze its performance for a typical mesh. Our simple encoding uses one confirmation bit per triangle, plus 0, 1, 2 or 3 bits for encoding RS, depending on whether the wrong guess was an S or not and depending on the length of the active loop, plus between 2 and 11 bits for the offsets, 1 bit indicating whether the offset is short (2 or 3) or long. For the example of the horse, 83% of the entries will be encoded with a single bit, because they correspond to the correct guess, (t). For 14% of the triangles (0.17*0.85) the wrong guess is not an S. In these cases, have to distinguish 3 symbols. We use 1 bit (say 0) to encode the symbol with highest probability. We use 2 bits (say 10 and 11) to encode the other two symbols. In the worst case, when all three symbols have identical probabilities, this encoding will require an average of 1.67 bits (1/3 * 1 Bit + 2/3 * 2 Bit = 1.67 Bit) This corresponds to an amortized cost of 0.241 bits per triangle. Coors&Rossignac: Delphi 9 / 12 When we wrongly guessed an S, we need to distinguish between 4 symbols (remember than an E is not possible in this case). We use 2 bits to encode RS. This adds an amortized cost of 0.051 bits per triangle (0.17*0.15*2 bits). Finally, we need to encode offsets for 0.51% of the cases. If we use 1 bit to indicate whether the offset is 2 or not, we encode 90% of the offsets with 1 bit. The amortized cost is 0.005 bits per triangle. Finally, the 10% of the longer offsets will be encoded using 11 bits (one bit to indicate that they are not equal to 2 and 10 bits to encode an offset of up to 1024). The amortize cost of the long offsets amounts to 0.006 bits per triangle. In summary, the naïve encoding described above would produce, for the horse model, the following contributions amortized in bits per triangle: - 1.000 bit: Confirmation bit - 0.241 bit: Rectify a wrong C, L, R guess - 0.051 bit: Rectify a wrong S guess - 0.005 bit: Short offsets (o=2) - 0.006 bit: Long offsets (o>2) The total is 1.30 bits per triangle, which improves significantly upon the simple codes of 2.0 and 1.8 bits per triangle compression previously achieved by using fixed-format encodings for connectivity. Statistical encoding The naïve fixed-format encoding described above may be significantly improved using a more optimal variable length coding that exploits the statistical distribution of the symbol frequencies. To do so, the streams of confirmation bits, symbol-rectification codes, and offset values are decomposed into separate layers and compressed separately using an adaptive entropy encoder, such as the range encoder used in Alliez and Desbrun1 for example. However, compression results vary using different encoders. Therefore, we adhere to the current practice in the Geometry Compression Community and report the entropy of the Apollo sequence as the sum of the entropy of these three streams. A good arithmetic encoder comes close to this entropy measure. The confirmation bit layer is a sequence of symbols in{t, f}, one per triangle. The entropy of that stream is –plog2(p)–(1–p)log2(1–p), where p is the probability of a correct guess. For instance, when p=0.83, the entropy of the confirmation bit layer is 0.66 bits per triangle. The symbol rectification layer contains the sequence of correct symbols, RS, for all wrong guesses. In the case of wrong guesses may be compressed by combining two observations: (1) some of the cases are impossible in particular combinations of guessed symbol and loop length and (2) more importantly, the majority of rectified symbols may be guessed correctly, because they are a C when the wrong guess was R and vice versa. Each rectification sub-layer is treated independently leading to the following entropies: • Sub-layer GS=C : Entropy 0.2290 (-(0.006*log20.006 + 0.9675* log2 0.9675 + 0.0265 * log2 0.0265)) • Sub-layer GS=L : Entropy 1.1409 • Sub-layer GS=R : Entropy 0.3476 • Sub-layer GS=S : Entropy 1.0398 By multiplying the entropy of each sub-layer by the probability of each sub-layer and adding the results and multiplying by the probability of having to use a rectification (0.17*(0.2290*0.5385 + 1.1409*0.0153 + 0.3476*0.2927 + 1.0398*0.1535) ), we obtain an entropy for the symbol rectification layer of 0.0684 bits per triangle. As stated above, the offset layer has an entropy of 0.011 bits per triangle. Adding all thee (0.66 + 0.0684 + 0.011), we obtain a total entropy of 0.74 bit per triangle for the horse model. Comparative analysis The first order entropy compression discussed above leads to 0.74 bits per triangle for the horse model of figure 8. The corresponding clers sequence produced by EdgeBreaker has a first order entropy of 0.88 bits per triangle. Thus, Delphi’s geometry-based prediction yields an entropy improvement of 15%. Experimental results To put the above horse example in perspective, a series of meshes (figure 9) have been tested with the Delphi compression. The connectivity compression results (Table 4) are given in bits per triangle of the calculated first order entropy encoding. The results are compared with the first order entropy of the corresponding EdgeBreaker clers sequence (EB). The results show that a good connectivity guess improves EdgeBreaker clers sequence compression. For very good connectivity guesses like the Mannequin model, the Apollo encoding improves EdgeBreaker by a factor of 3. When the probability of a wrong guess exceeds 40%, the Delphi encoding stops being advantageous. Coors&Rossignac: Delphi 10 / 12 Model #V #T Delphi bpt (p(t)) EB Horse 48485 96966 0.74 (83%) 0.88 Cow 2904 5804 0.80 (83%) 1.13 Body 711 1396 1.13 (65%) 1.30 Mannequin 11704 23402 0.19 (97%) 0.60 Venus 8268 16532 1.42 (59%) 1.43 Neferiti 299 562 1.09 (69%) 1.29 David 24085 47753 1.45 (58%) 1.40 Table 4 Compression results (in bits per triangle). The percentage of correct guesses is given for the Delphi compression. Figure 9: 3D meshes used for bit-rate measurements. Conclusion, discussion, and future work In this paper, we described a lossless, single-resolution connectivity encoding technique called Delphi. In contrast to the early connectivity compression schemes, Delphi uses the previously decoded geometry and connectivity to predict the location of the tip-vertex of the next triangle. The geometry prediction, which is based on the parallelogram rule, is not affected by the Delphi encoding and thus has identical characteristics to previously reported schemes23 for geometry compression. Although implemented as a simple variation of the EdgeBreaker code, Delphi encodes the offset of wrongly guessed S triangles, and thus, in these cases, follows the approach of the Cut-Border Machine. The significant improvements made in connectivity compression have reduced the cost of transmitting connectivity to less than 15% of the cost of transmitting geometry. So, the strategic importance of incremental improvements to connectivity compression, such as the one proposed here, could be questioned. However, these improvements are not negligible and worth taking advantage of. Furthermore, recent advances in the re-sampling of triangle meshes25, 26, 27 have reduced the cost of encoding geometry to one scalar corrector per vertex. For instance, SwingWrapper27 partitions the surface of an original mesh M into simply connected regions, called triangloids. From these, it generates a new mesh M’. Each triangle of M’ is a linear approximation of a triangloid of M. By construction, each vertex of M’ is restricted to lie on a circle that is completely defined by the border edge of a previously visited adjacent triangle. Thus, the geometry may be encoded using a single correction parameter per vertex, which reduces the cost of geometry to less than 6 bits per vertex. Similarly, the Normal Mesh approach25 restricts each vertex to lie along a line estimated from a previously decoded version of the mesh. The PRM approach26 snaps two coordinates of each vertex to a regular grid, which makes their prediction (using the parallelogram rule) extremely consistent. Delphi predicts the connectivity of the resulting meshes with an accuracy ranging between 96% and 98%, resulting in an entropy of 0.3 and 0.4 bits per vertex. Finally, we expect that the cost of encoding wrongly guessed S triangles may be further reduced by combining Delphi with a selection of the gate that attempts to avoid S cases, such as the one proposed by Lee, Alliez and Desbrun in Angle-Analzyer13. Coors&Rossignac: Delphi 11 / 12 References 1. P. Alliez, and M. Desbrun, “Valence-Driven Connectivity Encoding for 3D Meshes”. Eurographics 2001 Conference Proceedings, 2001. 2. P. Alliez, and M. Desbrun, “Progressive Encoding for Lossless Transmission of 3D Meshes”. SIGGRAPH 2001 Conference Proceedings, 2001. 3. D. Cohen-Or, D. Levin, and O. Remez, “Progressive Compression of Arbitrary Triangular Meshes”. Visualization 99 Conference Proceedings, pp 67-72, 1999. 4. M. Deering, “Geometry Compression”, Computer Graphics, Proceedings SIGGRAPH'95, 13-20, August 1995. 5. F. Evans, S. Skiena, and A. Varshney, “Optimizing Triangle Strips for Fast Rendering”, Proceedings, IEEE Vizualization'96, pp. 319--326, 1996. 6. S. Gumhold and W. Strasser, “Real Time Compression of Triangle Mesh Connectivity”, Proc. ACM SIGGRAPH, pp. 133- 140, July 1998. 7. H. Hoppe, “Progressive Meshes”. Siggraph 96 Conference Proceedings, pp 99-108, 1996 8. S. Gumhold, “Towards optimal coding and ongoing research”, 3D Geometry Compression Course Notes, SIGGRAPH 2000. 9. M. Isenburg and J. Snoeyink, “Spirale Reversi: Reverse decoding of the EdgeBreaker encoding”, Computational Geometry, vol. 20, no. 1, pp. 39-52, October 2001. 10. A. Khoddakovsky, P. Schroeder, and W. Sweldens, “Progressive Geometry Compression”. Siggraph 2000 Conference Proceedings, pp 271-278, 2000. 11. D. King and J. Rossignac, “Guaranteed 3.67V bit encoding of planar triangle graphs”, 11th Canadian Conference on Computational Geometry (CCCG'’99), pp. 146-149, Vancouver, CA, August 15-18, 1999. 12. D. King and J. Rossignac, "Connectivity Compression for Irregular Quadrilateral Meshes" Research Report GIT-GVU-99- 29, Dec 1999. 13. H. Lee, P. Alliez, and M. Desbrun, “Angle-Analyzer: A Triangle-Quad Mesh Codec”, Eurographics 2002. 14. R. Pajarola, and J. Rossignac, “Compressed Progressive Meshes.” IEEE Transactions on Visualization and Computer Graphics, pp 47-61, 1999. 15. J. Rossignac and D. Cardoze, “Matchmaker: Manifold Breps for non-manifold r-sets”, Proceedings of the ACM Symposium on Solid Modeling, pp. 31-41, June 1999. 16. J. Rossignac, "EdgeBreaker: Connectivity compression for triangle meshes", IEEE Transactions on Visualization and Computer Graphics, 5(1), 47-61, Jan-Mar 1999. 17. J. Rossignac and A. Szymczak, "Wrap&Zip decompression of the connectivity of triangle meshes compressed with EdgeBreaker", Computational Geometry, Theory and Applications, 14(1/3), 119-135, November 1999. 18. J. Rossignac, A. Safonova, and A. Syzmczak, "3D Compression Made Simple: EdgeBreaker on a Corner-Table", Invited lecture at the Shape Modeling International Conference, Genova, Italy, May 2001. 19. A. Szymczak, D. King, J. Rossignac, “An EdgeBreaker-based Efficient Compression Scheme for Connectivity of Regular Meshes”, Special issue of Journal of Computational Geometry: Theory and Applications, Vol 20, No 2, Oct 2001. 20. H. Tzschach, and G. Haßlinger, Codes für den störungsfreien Datentransfer, Oldenburg 1993 (in German). 21. G. Taubin and J. Rossignac, "Geometric Compression through Topological Surgery", ACM Transactions on Graphics, 17(2), 84-115, April 1998. 22. G. Taubin, A. Gueziec, W. Horn, F. and Lazarus, “Progressive Forest Split Compression”. SIGGRAPH 98 Conference Proceedings, pp 123-132, 1998. 23. C. Touma and C. Gotsman, “Triangle Mesh Compression”, Proceedings Graphics Interface 98, pp. 26-34, 1998. 24. W. Tutte, “A Census of Planar Triangulations”. Canadian Journal of Mathematics, 14:21-38, 1962. 25. I. Guskov, K. Vidimce, W. Sweldens, and P. Schroeder, “Normal meshes,” in Siggraph’2000 Conference Proceedings, July 2000, pp. 95–102. 26. A. Szymczak, J. Rossignac, and D. King. “Piecewise Regular Meshes: Construction and Compression.” To appear in Graphics Models, Special Issue on Processing of Large Polygonal Meshes, 2002. 27. M. Attene, B. Falcidieno, M. Spagnuolo, J. Rossignac, “SwingWrapper: Retiling Triangle Meshes for Better EdgeBreaker Compression”, Genova CNR- IMA Tech. Rep. No. 14/2001. To appear in the ACM Transactions on Graphics. Volume 22, No. 4, October 2003. 28. S. Valette, J. Rossignac, R. Prost. “An efficient subdivision inversion for Wavemesh-based progressive compression of 3d triangle meshes”, Submitted for publication. 2003. 29. H. Lopes, J. Rossignac, A. Safanova, A. Szymczak and G. Tavares. “A Simple Compression Algorithm for Surfaces with Handles”, ACM Symposium on Solid Modeling, Saarbrücken. June 2002. Coors&Rossignac: Delphi 12 / 12

DOCUMENT INFO

Shared By:

Categories:

Tags:
Delphi Programming, Borland Delphi, how to, Delphi programming language, source code, Free Pascal, Delphi Source Code, Delphi language, Delphi developers, Turbo Pascal, Delphi tutorial, Object Pascal, Delphi components, Delphi application, Visual Basic, Delphi programmers, Delphi Tutorials, Free Delphi, programming language, open source, New Delphi, integrated development environment, Delphi 7, Programming Tutorials, operating systems, Delphi code, Delphi Tips, delphi versions, Delphi Developer

Stats:

views: | 17 |

posted: | 6/3/2011 |

language: | English |

pages: | 12 |

OTHER DOCS BY sukajadi919

How are you planning on using Docstoc?
BUSINESS
PERSONAL

By registering with docstoc.com you agree to our
privacy policy and
terms of service, and to receive content and offer notifications.

Docstoc is the premier online destination to start and grow small businesses. It hosts the best quality and widest selection of professional documents (over 20 million) and resources including expert videos, articles and productivity tools to make every small business better.

Search or Browse for any specific document or resource you need for your business. Or explore our curated resources for Starting a Business, Growing a Business or for Professional Development.

Feel free to Contact Us with any questions you might have.