Wedgelet-based coding concepts
By employing variable length code syntax elements with a prefix and suffix that adapt to coding block size, Wedgelet-based coding efficiency is enhanced, addressing inefficiencies in signaling Wedgelet separation lines for blocks of varying sizes.
Patent Information
- Application Number
- JP2022041973
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2014-01-03
- Filing Date
- 2022-03-17
- Publication Date
- 2026-01-15
- Estimated Expiration
- 2034-12-30
AI Technical Summary
Wedgelet-based coding efficiency decreases when applied to coders that support coding blocks of varying sizes, particularly due to the inefficiency in signaling the location of Wedgelet separation lines and filling information between encoder and decoder.
The use of variable length code syntax elements with a prefix and suffix, where the suffix length depends on the prefix and the size of the current coding block, allows for adaptive bipartitioning of coding blocks, enhancing coding efficiency by directly encoding or using fixed-equal-probability binary entropy coding.
This approach reduces the data rate required for Wedgelet-based coding by adapting the length of the syntax element to the actual needs of the coding block, improving coding efficiency even when context-adaptive entropy coding is not used.
Smart Images

Figure 0007799522000014 
Figure 0007799522000015 
Figure 0007799522000016
Abstract
Description
[Technical Field]
[0001] The present invention relates to a coding concept based on Wedgelets. [Background technology]
[0002] In the field of video coding, particularly depth map coding, one well-known type of block coding is Wedgelet-based coding. According to Wedgelet-based coding, a given coding block is partitioned into two halves called Wedgelets along Wedgelet separation lines, which are, for example, straight lines with a predetermined slope and a predetermined offset. Although various implementations have been described above, there is an ongoing need to further reduce the side information required for Wedgelet-based bisectioning. In particular, the location of the Wedgelet separation lines, along with information on how to fill the resulting Wedgelets, optionally, needs to be shared between the encoder and decoder.
[0003] Besides the use of Wedgelet-based coding concepts, newer video and / or image coders tend to code images in units of coding blocks of various sizes, e.g., subdivision of an image into coding blocks is signaled in a data stream, and within the units of coding blocks, e.g., prediction modes and / or prediction parameters are coded in the data stream.
[0004] The coding efficiency of Wedgelet-based coding concepts appears to decrease when applied to coders that support coding blocks of various sizes. [Prior art documents] [Non-patent literature]
[0005] [Non-Patent Document 1] H. Liu, "Description of Core Experiment 5 (CE5) on Depth Intra Modes," JCT3V-F1105, Geneva, Switzerland, November 2013. [Non-patent document 2] D. Rusanovskyy, K. Mueller, A. Vetro, "Common Test Conditions of 3DV Core Experiments," JCT3V-F1100, Geneva, Switzerland, November 2013. [Non-patent document 3] G. Tech, K. Wegner, Y. Chen, S. Yea, "3D-HEVC Draft Text 2," JCT3V-F1001, Geneva, Switzerland, November 2013. Summary of the Invention [Problem to be solved by the invention]
[0006] It is therefore an object of the present invention to provide a Wedgelet-based coding concept which, when applied to coding blocks of varying size, results in increased coding efficiency. This object is achieved by the subject matter of the independent claims. [Means for solving the problem]
[0007] It is a fundamental discovery of the present invention that Wedgelet-based coding in conjunction with the use of coding blocks of varying sizes is made even more efficient by the use of variable length code syntax elements consisting of a prefix and a suffix. The size of the suffix depends on the prefix and the size of the current coding block. By this means, it is possible to efficiently adapt the length of the variable length code syntax element controlling the bipartitioning of the current coding block to the actual needs (i.e., size) of the current coding block and to the variability of the bipartitioning by changing the Wedgelet separation line. The larger the current coding block, the longer the variable length code syntax element. This length dependency is due to the fact that the variable length code syntax element is much longer than it would be without context-adaptive entropy coding. However, it is effective enough for coding efficiency to be coded directly or using fixed-equal-probability binary entropy coding.
[0008] Advantageous embodiments are the subject of the dependent claims and preferred embodiments of the invention are described below with reference to the drawings. [Brief explanation of the drawings]
[0009] [Figure 1] FIG. 1 shows an example for a Wedgelet-based bipartitioning of coding blocks, where there are illustratively blocks of depth map provided in addition to text of an image. [Figure 2] FIG. 2 shows a schematic diagram illustrating examples of bipartitioning of coding blocks of various sizes and smaller coding blocks of coding blocks based on Wedgelet separation lines, to illustrate possible methods for bipartitioning coding blocks based on Wedgelet separation lines. [Figure 3] FIG. 3 shows a schematic diagram illustrating an indexing scheme relating the location of wedgelet separation lines with entries in a list pointed to by syntax elements for signaling the location of wedgelet separation lines. [Figure 4]FIG. 4 shows an example schematic diagram for syntax elements used as side information for Wedgelet-based coding of coding blocks according to an embodiment of the present invention. [Figure 5] FIG. 5 shows a schematic diagram illustrating the combination of the variable length code syntax elements of FIG. 4 based on prefixes and suffixes, according to a more detailed embodiment. [Figure 6] FIG. 6 shows a schematic diagram illustrating the reconstruction of a Wedgelet-based coded coding block according to an embodiment. [Figure 7] FIG. 7 shows a block diagram of a decoder according to one embodiment of the present invention. [Figure 8] FIG. 8 shows a block diagram of an encoder according to one embodiment of the present invention. [Figure 9] FIG. 9 shows the possible approximate directions / tilts that can be encoded by prefixes according to one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0010] As is well known in the art, depth maps, in addition to being known for their advantages in encoding text, also exhibit certain characteristics that lead to the introduction of a depth-map-defined block coding mode. A depth map associated with a given image, i.e., text, develops to consist of a higher number of areas whose depth map sample values can be parameterized using a constant or a linear function. Often, such areas are adjacent to each other along a representative line, e.g., the perimeter of a foreground object that separates the foreground from the background. Therefore, to code depth maps block-wise, the Wedgelet separation concept has been introduced, whereby a typically rectangular coding block is further subdivided into two wedges along a so-called Wedgelet separation line, which separates the corresponding coding block in half, i.e., into two wedges. The interiors of both wedges are then coded separately. The additional bits used to bisecting a coding block into two wedges and toggling the Wedgelet separation mode on and off are overcompensated by the advantages for coding the content of the "wedgelet-like" coding block.
[0011] FIG. 1 shows a depth map 100 associated with a picture or text image 102. The sample resolution of the depth map 100 is equal to the sample resolution of the image 102, although different sample resolutions are possible, such as a coarser sample resolution of the depth map 100 associated with the image 102. The depth map 100 is coded in coding blocks 104. That is, the depth map 100 is subdivided or partitioned into coding blocks 104, which may be rectangular or square, for example. Partitioning the depth map 100 into coding blocks 104 means that the coding blocks 104 have varying sizes. Three different sizes are shown in FIG. 1 for illustrative purposes. The available coding block sizes are: The number of wedgelets differs from those in the coding blocks 104. The coding block 104 defines the unit at which the encoder switches between different coding modes. The coding mode selected for each coding block 104 is signaled in the data stream to the decoder, which in turn decodes each coding block 104 using the signaled coding mode. One of these coding modes is a "wedgelet coding mode," according to which the coding block 104 is divided into two wedgeslets to allow the contents (i.e., sample values) of each wedgelet to be coded separately. Figure 1 illustrates this in an enlarged portion 106 for a representative coding block 104. As shown, the coding block 104 is divided into two wedgeslets 108a and 108b along a wedgelet separation line 110, which may be a straight line. The encoder signals the position of the wedgelet separation line 110 to the decoder for the coding block 104 to be assigned a wedgelet-based coding mode. There are various possibilities for signaling the position of the wedgelet separation line 110: the slope or direction 112 of the wedgelet separation line 110 along one cutoff value, such as the position of one intersection of the periphery of the block 104 with the line 110, or the positions of two intersections of the periphery of the block 104 with the line 110.
[0012] As shown in FIG. 2, the number of possible subdivisions of a coding block 104 into two Wedgelets strongly depends on the size of the block 104 measured in samples. The block 104 in FIG. 2 is shown on the left as, for example, a 4×4 block, whereas the right side is shown as a wider 8×8 sample block. As can be readily seen, due to the smaller number of samples in the 4×4 block 104, the number of distinct subdivisions of the block 104 into two Wedgelets is smaller compared to the larger coding block shown on the right. For example, a Wedgelet separation line 110 is illustratively shown to bipartition the 4×4 block 104 into two Wedgelets. The bipartitioning transformation defined by the Wedgelet separation line 110 on the block's 104 samples is performed as follows: Samples in the block 104 on one side of the wedgelet separation line 110 are assigned to one wedgelet 108a, for example, while samples in the block 104 on the other side of the line 110 are assigned to the other wedgelet 108b. This is straightforward for samples that do not intersect the line 110. However, samples that are intersected by the line 110 are assigned to one of the wedgeslets 108a and 108b depending on which side the larger half of their area lies on. That is, each sample that is intersected by the line 110 is partitioned into two parts, and the larger of these parts determines the partition to which the individual sample is assigned. That is, samples with a larger portion on one side are assigned to partition 108a, for example, and samples with a larger portion on the other side are assigned to partition 108b. Instead, the centers of each individual sample are looked at to determine each sample's assignment to either the wedgelet 108a or 108b. All samples having their centers on one side of line 110 are assigned to wedgelet 108a, while all samples having their centers on the other side of line 110 are assigned to wedgelet 108b. The diagonal lines in Figure 2 illustrate the resulting wedgelet partitioning of the 4x4 block 104.
[0013] From the above discussion, it can be seen that the accuracy of signaling the position of the wedgelet separation line 110 depends, for example, on the size of the individual blocks 104 measured in the sample: the larger the blocks, the greater the accuracy, and vice versa.
[0014] It is feasible to use a single scalar or one-dimensional index to signal the number of possible positions of the Wedgelet isolation lines in the coding block 104 to a one-dimensional list 112 of representable Wedgelet isolation line positions. For example, the index may be 2 N pieces The index is binarized using the usual binary representation covering the states of . That is, the index is the 2nd of the Wedgelet separation line with N being the bit length of the binary representation. N This allows us to distinguish between the possible positions. This is illustrated in Figure 3. 2, an index 114 signaled in the data stream for a coded block 104 has a bit length N that depends on the size of the block 104. The index 114 signaled for a block 104 determines the size of the list 112 through its bit length, which in turn determines the number of representable Wedgelet isolation line positions. The number of representable Wedgelet isolation line positions 2 N is a small block The larger the block 104, the larger the wedgelet separation line position. That is, the decoder uses index 114 as an index into list 112, as indicated by arrow 116, where a given entry in indexed list 112 is associated with a given wedgelet separation line position, such as one of those illustratively illustrated in FIG. 3 within block 104.
[0015] Although the above concept of FIG. 3 illustrates different needs for variously sized blocks as far as the number of representable Wedgelet isolation line positions or the accuracy of signaling it is concerned, even if context-adaptive coding is used to encode the bits of the signaled index 114 using a common context for all N bits of the index 114, there is still room to make the signaling of the positions of the Wedgelet isolation line 110 more efficient. The embodiments described below then achieve such an increase in coding efficiency even when not using entropy coding to encode the signaling bits. For example, the need for N to adapt to the coding block size and to find a reasonable number of available Wedgelet isolation line positions can be overcome if some signalable values of the index remain unused, or if a number greater than a reasonable number of Wedgelet isolation line positions is found to be in the 2-bit range of the index. N consumes all the signalizable values It can be realized in two capacities, each requiring one of the following:
[0016] The idea behind the concept illustrated in the embodiments outlined below is to signal the location of the Wedgelet isolation line for a given coding block (e.g., a coding block for which a Wedgelet-based coding mode is signaled) using a variable-length code syntax element with a prefix that signals the slope / direction of the Wedgelet isolation line. The prefix is followed by a suffix that signals the slope / direction of the Wedgelet isolation line and a replacement or modification of the Wedgelet isolation line. Figure 4 illustrates the concept. Figure 4 shows one coding block 104. For example, block 104 is a coding block of a depth map, although it is noted that the concept of Figure 4 can readily be applied to coding other two-dimensionally extracted data, such as text and the like. Data stream 120 in coding block 104 and the depth map containing coding block 104 are coded signals for coding block 104 and Wedgelet-based coding mode, respectively, by means of mode indicator 122. Because the coding block 104 has a Wedgelet-based coding mode type, the data stream 120 further includes a variable length code syntax element 124 that signals the location of the Wedgelet separation line 110, which bisectes the coding block 104 into two Wedgelets 108a and 108b. As outlined in more detail below, the variable length code syntax element 124 consists of a prefix 126 that signals the direction or slope 112 of the Wedgelet separation line 110 and a suffix 128 that signals the displacement positioning and refinement of the direction / slope 112 of the Wedgelet separation line 110. As outlined in more detail below, all bits of the variable length code syntax element 124 are coded without context adaptability, e.g., without entropy coding. These are written into the data stream 120 directly or using binary entropy arithmetic coding, such as binary arithmetic coding, but using a fixed equal-probability mode called bypass mode, as known for example from H.264. Also, as will be outlined in more detail below, the prefix 126 has a fixed length. Its length is independent of the size of the block 104, while the bit length of the suffix 128 depends on both the value of the prefix 126, i.e., the approximate slope / direction of the Wedgelet separation line 110, as well as the size of the coding block 104. There are then various possibilities for how the content of the coding block 104 is actually coded in the data stream 120 using the two-partitioning into partitions 108a, 108b. For example, according to one embodiment, the data stream 120 comprises a first syntax element configuration 130 for the first wedgelet 108a and a second syntax element configuration 132 for the second wedgelet 108b. For example, both syntax element configurations 130 and 132 comprise syntax elements indicating constants to which samples belonging to the wedgelet 108a or 108b, respectively, are set equal. The syntax elements are predictively coded. For example, the constant values assigned to the samples of the wedgelet 108a are spatially predicted from neighboring, already decoded / reconstructed samples adjacent to the perimeter of the block 104 to which the wedgelet 108a adjoins. The syntax element configuration 130 simply provides an offset (prediction residual) to this prediction. Similarly, the constant values assigned to the samples of the wedgelet 108b are spatially predicted from neighboring, already decoded / reconstructed samples adjacent to the perimeter of the block 104 to which the wedgelet 108b adjoins. The syntax element structure 130 simply provides an offset to this prediction. Optionally, a sample-like residual signal 134 is provided in the data stream 120.
[0017] The decoder operates as follows to decode a coding block 104 coded according to FIG. 4 . First, the decoder checks the coding mode indicator 122. If the coding block 104 has a Wedgelet-based coding mode, the decoder reads the prefix 126 from the data stream 120 and thus obtains the approximate Wedgelet separation line slope / direction 112. The decoder then reads the number of bits from the data stream 120, which depends on the size of the coding block 104 and the value of the prefix 126, to obtain the suffix 128. Using the suffix 128, the decoder refines the slope / direction 112 of the approximate Wedgelet separation line 110 to obtain the actual slope / direction 136 by replacing the position of the Wedgelet separation line 110, which also depends on the suffix 128. Thus, the located Wedgelet separation line 110 determines the division of the coding block 104 into two wedgeslets 108a and 108b. It is feasible for a decoder to use variable length code syntax element 124 to directly find, among a list of Wedgelet-based binary partitions of a block of a size corresponding to the size of the coding block 104, each binary partition that corresponds to the position of the Wedgelet separation line indicated using prefix 126 and suffix 128 as outlined above. As a result, the decoder does not actually calculate the actual slope / direction 136 and permutation length of the bit permutation, but rather directly finds a binary sample array of a size corresponding to block 104 that associates, in a binary way, each individual sample of the coding block 104 with a wedgelet 108 a or wedgelet 108 b. Instead, as outlined below, the decoder calculates the approximate direction 112 from the prefix 126 and finds a binary association array that associates each sample of the block 104 with one of the wedgelets 108a and 108b in a table of associated binary association arrays using an index that is a triplet of the size of the block 104, the approximate direction 112, and the suffix 128.
[0018] After doing this, the decoder may, for example, generate a sample of the wedgelet 108a or an associated The decoder uses syntax element configuration 130 to obtain sample values for the samples of wedgelets 108a and 108b, and syntax element configuration 132 to fill sample values for the samples of wedgelets 108a and 108b or related samples. This filled state of coding block 104 optionally represents a prediction that the decoder refines using residual signal 134 by sample-wise addition between residual signal 134 and filled wedgelets 108a and 108b. Depending on the option, residual signal 134 is lost. As a result, this filled state of coding block 104 directly represents a reconstruction of coding block 104.
[0019] The samples in the left upper and left lower sample rows of the current coding block, such as sample {F, I}, are determined for the current coding block, and the samples in the upper and lower sample rows of the current coding block are determined for the current coding block. Even if averaging is not used or even if averaging is not used, the samples ultimately used to predict the wedgelet 108a are determined for the current coding block, such as sample {F, I}. The set of neighboring samples, and the set of neighboring samples ultimately used to predict the sample of the wedgelet 108b, consists of only one neighboring sample. A selection process depending on the 2-division determined for the current coding block selects one neighboring sample for one of the wedgeslets 108a and 108b from a set of neighboring candidate samples, such as {A, D}. Similarly, a selection process depending on the 2-division determined for the current coding block selects one neighboring sample for another of the wedgeslets 108a and 108b from a set of neighboring candidate samples, such as {F, I}. The wedgelet sample is then predicted by each selected neighboring sample. Since one of the wedgeslets is isolated from all neighboring candidate samples, and therefore, for example, the wedgelet may be located in the lower right corner of the coding block, at least one of the set of neighboring candidate samples contains an initial setting constant value. A combination of the averaging process and the 1-division selection process is often used. For example, the selection process asks whether the upper-left sample of a coding block is in the same wedgelet as the upper-right sample, and whether the upper-left sample of a coding block is in the same wedgelet as the lower-left sample. If both questions are answered "yes," it is determined that the wedgelets effectively move diagonally from bottom-left to top-right. If the questions reveal that all of the top-left, top-right, and bottom-left samples are in a single wedgelet, i.e., a wedgelet is not adjacent to any of {A, D, F, I}, then a predictor for the wedgelet is determined by averaging {D, F} of one wedgelet and {A, I} of the other wedgelet, using a constant initialization value instead of the average of {A, I}, so that the initialization value is used as the predictor for the latter wedgelet.However, if the question were answered differently, it would be determined that the wedgelets would in fact move horizontally or vertically, and in the first case, adjacent sample A would be used for one wedgelet and the intermediate adjacent sample between F and I, such as G, would be used for the other wedgelet, and in the second case, adjacent sample I would be used for one wedgelet and the intermediate adjacent sample between A and D, such as C, would be used for the other wedgelet.
[0020] TIFF0007799522000002.tif21169
[0021] The advantages of the concept of FIG. 4 over the concept of FIG. 3 are as follows: As the size of the coding block 104 increases, the length of the syntax element 114 becomes larger and larger. However, with each additional bit, the representable interval range, i.e., the size of the list 112, increases exponentially. That is, quantizing the size of the syntax element 114 and adapting its length to the actual needs imposed by the size of the coding block 104 is difficult to achieve because the list 112 lists all available combinations of slopes 112 and interceptions. By using variable-length code syntax elements 124, the data rate used for all coding blocks coded using a Wedgelet-based coding mode is reduced because it is feasible to adapt the length of the suffix 128 to the actual needs. One example outlined above is that the prefix indicates the approximate direction of the Wedgelet separation line, and the length of the suffix depends on this direction as well as the size of the coding block. By this means, it is easy to adapt the length of the suffix 128 to the approximate direction 112. Approximate directions near exact horizontal or vertical extension require refinement, i.e., a lower number of suffix states. Thus, the suffix length is negatively affected by the exponential relationship between the representable states of the suffix 128 and the bit length, since the "quantization" of the suffix length in units of bits. 2. Therefore, the bit rate used for syntax element 124 more closely matches the actual optimum, as discussed with respect to FIG.
[0022] For completeness, Figure 5 shows how prefix 126 is constructed using the syntax elements described above in Section 3, resulting in a fixed-length 5-bit prefix 126. The same is true for suffix 128. As shown, prefix 126 consists of a flag 126a indicating whether the direction / slope 12 of the coarse / approximate wedgelet separation line is effectively horizontal or effectively vertical, a signal bit 126b indicating the angular direction that the slope / direction 12 of wedgelet separation line 110 deviates from the horizontal or vertical direction, and a fixed-bit-length value (absVal) 126c indicating the amount of angular deviation. Suffix 128 consists of syntax element idx. The bit length of idx, i.e., N idx is multiplied by the size of the coding block 104 as outlined above. Instead of relying on N, it also depends on the prefix 126, which in turn indicates the approximate slope / direction 112 of the wedgelet separation line. The table below shows the N of the suffix 128 for each exemplary block size. idx On the other hand, by showing the minimum and maximum values of From the indicated block size of block 104 and the slope / direction 112 on the other hand, the bit length of suffix 128, i.e., N idx Here is an example for the dependency:
[0023] In a particular embodiment, the above concepts are translated into explicit examples as follows: In doing so, "flag" 126a is wedge_dir_flag, sign 126b is wedge_dir_sign_flag, absVal 126c corresponds to wedge_dir_abs, and idx 128 corresponds to wedge_dir_tab_idx.
[0024] In that case, the relevant syntax construct contained in the data stream for a coding block 104 coded based on a given Wedgelet at x0, y0 (its location in the depth map or image) is written as follows:
[0025] [Table 1]
[0026] The length of wedge_dir_tab_idx measured in bits, i.e., the length of the variable-length syntax element suffix consisting of all listed syntax elements, is wedgeDirTabIdxBits. This length is determined depending on the size of the coding block 104, log2PbSize, and the direction of the approximate wedgelet separation line, WedgeDir, as illustrated in the table below. The relationship of the value of WedgeDir to the actual slope / direction according to this example is illustrated in Figure 9.
[0027] [Table 2]
[0028] Log2PbSize is the logarithm of the height or width of the coding block measured in samples, i.e., in the example outlined, the decoder actually determines the direction of the approximate Wedgelet separation line as follows: wedge_dir_flag[x0][y0], wedge_dir_sign_flag[x0][y0], and wedge_dir_abs[x0][y0] are used to derive WedgeDir[x0][y0] as follows: WedgeDir[x0][y0]=(3-2 * wedge_dir_flag[x0 ][y0])<<3-wedge_dir_sign_flag[x0][y0]+(1-2 * wedge_dir_sign_flag[x0][y0]) *wedge_dir_abs[x0][y0]
[0029] wedgeDir assumes values from 0 to 31, inclusive, corresponding to the 32 exemplary directions / tilts shown in FIG.
[0030] Of course, the exact formula will depend on the situation and look different, but in general the formula will interpret the meaning of wedge_dir_flag, wedge_dir_sign_flag, and wedge_dir_abs as outlined above for FIG.
[0031] The binary relationship of each sample of the current coding block to one of the two wedgelets is then indicated by an array of binary numbers, wedgePattern. In particular, the wedgePatterns are collected in a lookup table, WedgeDirPatternTable. The lookup table is three-dimensional and requires a three-dimensional index to locate the correct two-partition array. The index consists of the block size of the coding block, Log2PbSize, the approximate wedgelet separation line direction, WedgeDir, and the transmitted suffix, i.e., wedge_dir_tab_idx.
[0032] That is, the wedge pattern is probed as follows: wedgePattern=WedgeDirPatternTable[Log2PbSize][WedgeDir][wedge_dir_tab_idx]
[0033] The lookup table is illustratively derived as follows: An array WedgeDirPatternTable[log2BlkSize][dirIdx] of binary partition patterns of size (1<<log2BlkSize)×(1<<log2BlkSize), and a variable NumWedgeDirPattern[log2BlkSize][dirIdx] that defines the number of binary partition patterns in the list WedgeDirPatternTable[log2BlkSize][dirIdx] are derived as follows. For log2BlkSize ranging from 2 to the maximum size, the following applies comprehensively. Depending on log2BlkSize (equal to log2PbSize described above), a variable resShift is derived as defined in the following table.
[0034]
Table 3
[0035] A variable wBlkSize is set equal to (1<<(log2BlkSize+resShift)). For wedgeOri ranging from 0 to 5, the following steps in order apply comprehensively. Depending on wedgeOri, variables xPosS, yPosS, xPosE, yPosE, xIncS, yIncS, xIncE, and yIncE are derived as defined in the following table.
[0036]
Table 4
[0037] For m ranging from 0 to wBlkSize-1, the following applies comprehensively. For n ranging from 0 to wBlkSize-1, the following applies comprehensively. The Wedgelet pattern generation process defined below is a linear process (1< <log2BlkSize)に equal to patternSize, variable resShift, variable wedgeOri, (xPosS+m * xIncS) is equal to xS, (yPosS+m * yIncS), yS, which is equal to (xPosE+n * xE equals xIncE), and (yPosE+n * yields yE equal to yIncE). The variable wDir, which specifies the direction of curWedgePattern, is derived as specified below (i.e., the base / general direction wDir, which assumes values from 0 to 31, both inclusive, is determined here for each Wedgelet pattern and is used below for wedgeDirPatternTable[log2BlkSize][dirIdx[]]).
[0038] The variable deltaX is ((xPosE+n * xIncE)-(xPosS+m * xIncS)) and the variable deltaY is set equal to ((yPosE+n * yIncE) -(yPosS+m * yIncS)). If deltaX is equal to 0 and deltaY is equal to 0, then the following applies: If (xPosS+m * xIncS) is (yPosS+m * yIncS), wDir is set to 0, otherwise ((xPosS+m * xIncS) is (yPo sS+m * yIncS), then wDir is set to 16. Otherwise (deltaX is not equal to 0 or deltaY is not equal to 0), the following applies: verFlag=(abs(deltaY)>abs(deltaX))?1:0 if(verFlag==1){ (deltaX,deltaY)=Swap(deltaX,deltaY) } if(deltaY==0)&&(wedgeOri<4){ deltaY=1 deltaX=deltaX<<1 } lS=(deltaY<<7) / deltaX angOff=(lS<4)?0:((lS<14)?1:((lS<28)?2:((lS<44)?3:((lS<60)?4:((lS<76)?5:((lS<94)?6:((lS<115)?7:8))))))) sign=((lS<0)?-1:1) * (verFlag?1:-1) wDir=((1+2 * verFlag)<<3+sign * angOff)%32
[0039] The Wedgelet Pattern List Insertion process as defined below takes as inputs log2BlkSize, a variable wDir, and a binary division pattern curWedgePattern.
[0040] Wedgelet Pattern Generation Process The inputs to the Wedgelet pattern generation process are: a variable patternSize that defines the binary division pattern size; a resolution shift value resShift specifying the precision of the location of the start and end of the Wedgelet segment relative to the patternSize; a variable wedgeOri defining an orientation identifier for the wedgelet pattern; a variable xS defining the segment line start horizontal position; a variable yS defining the segment line start vertical position; a variable xE defining the horizontal position of the segment line end; and a variable yE that defines the vertical position of the segment line end.
[0041] The output of the Wedgelet pattern generation process is It is a binary array wedgePattern[x][y] of size (patternSize) x (patternSize). The variable curSize, which specifies the size of the current partition pattern, is derived as follows: curSize=(resShift==1)? (patternSize<<1):patternSize When resShift is equal to -1, the variables xS, yS, xE and yE are modified as specified in the following table.
[0042] [Table 5]
[0043] The values of the variable curPattern[x][y] are derived as specified by the following sequence of steps: For 1.x, y=0..curSize-1, curPattern[x][y] is set equal to 0. 2. The samples of the array curPattern that form the line between (xS, yS) and (xE, yE) are set equal to 1, as defined below.
[0044] x0=xS y0=yS x1=xE y1=yE if(abs(yE-yS)>abs(xE-xS)){ (x0,y0)=Swap(x0,y0) (x1,y1)=Swap(x1,y1) } if(x0>x1){ (x0,x1)=Swap(x0,x1) (y0,y1)=Swap(y0,y1) } sumErr=0 posY=y0 for(posX=x0;posX<=x1;posX++){ if(abs(yE-yS)>abs(xE-xS)) curPattern[posY][posX]=1 else curPattern[posX][posY]=1 sumErr+=(abs(y1-y0)<<1) if(sumErr>=(x1-x0)){ posY+=(y0 <y1)?1:-1 sumErr-=(x1-x0)<<1 } }
[0045] 3. Samples of curPattern that belong to the smaller partition are set equal to 1, as defined below. if(wedgeOri==0) for(iX=0;iX <xS;iX++) for(iY=0;curPattern[iX][iY]==0;iY++) curPattern[iX][iY]=1 else if(wedgeOri==1) for(iY=0;iY <yS;iY++) for(iX=curSize-1;curPattern[iX][iY]==0;iX--) curPattern[iX][iY]=1 else if(wedgeOri==2) for(iX=curSize-1;iX>xS;iX--) for(iY=curSize-1;curPattern[iX][iY]==0;iY--) curPattern[iX][iY]=1 else if(wedgeOri==3) for(iY=curSize-1;iY>yS;iY--) for(iX=0;curPattern[iX][iY]==0;iX++) curPattern[iX][iY]=1 else if(wedgeOri==4)&&((xS+xE) <curSize)) for(iY=0;iY <curSize;iY++) for(iX=0;curPattern[iX][iY]==0;iX+) curPattern[iX][iY]=1 else if(wedgeOri==4) for(iY=0;iY <curSize;iY++) for(iX=curSize-1;curPattern[iX][iY]==0;iX--) curPattern[iX][iY]=1 else if(wedgeOri==5)&&((yS+yE) <curSize)) for(iX=0;iX <curSize;iX++) for(iY=0;curPattern[iX][iY]==0;iY++) curPattern[iX][iY]=1 else if(wedgeOri==5) for(iX=0;iX <curSize;iX++) for(iY=curSize-1;curPattern[iX][iY]==0;iY--) curPattern[iX][iY]=1
[0046] 4. A binary wedge pattern wedgePattern[x][y] with x, y=0..patternSize-1 is derived as specified below. If resShift is equal to 1, the following applies: Depending on wedgeOri, the variables xOff and yOff are set as defined in the following table. are set as follows.
[0047]
Table 6
[0048] For x, y = 0..patternSize - 1, the following applies. wedgePattern[x][y] = curPattern[(x << 1)+xOff][(y << 1)+yOff] Otherwise (if resShift is not equal to 1), wedgePattern is set equal to curPattern.
[0049] Wavelet Pattern List Insertion Process The input to the wavelet pattern list insertion process is a variable log2BlkSize that defines the binary partition pattern size as (1 << log2BlkSize), a variable wDir that defines the direction of the wavelet pattern, and a binary partition pattern wedgePattern[x][y] with x, y = 0..(1 << log2BlkSize)-1. A variable isValidFlag that defines whether the binary partition pattern wedgePattern is added to the list WedgeDirPatternTable[log2BlkSize][wDir] is set equal to 0. The value of isValidFlag is derived as defined by the following steps in order.
[0050] 1. For x, y = 0..(1 << log2BlkSize)-1, the following applies. When wedgePattern[x][y] is not equal to wedgePattern[0][0], the flag isValidFlag is set to 1. For dir within the range from 0 to 31, the following applies comprehensively. For k = 0..NumWedgeDirPattern[log2BlkSize][dir] - 1, the following applies. The flag patIdenticalFlag is set equal to 1. For x, y = 0..(1 << log2BlkSize) - 1, the following applies. When wedgePattern[x][y] is not equal to WedgeDirPatternTable[log2BlkSize][dir][k][x][y], patIdenticalFlag is set to 0. When patIdenticalFlag is equal to 1, isValidFlag is set to 0.
[0051] For dir within the range from 2.0 to 31, the following applies comprehensively. For k = 0..NumWedgeDirPattern[log2BlkSize][dir] - 1, the following applies. The flag patInvIdenticalFlag is set to 1. For x, y = 0..(1 << log2BlkSize) - 1, the following applies. When wedgePattern[x][y] is equal to WedgeDirPatternTable[log2BlkSize][dir][k][x][y], patInvIdenticalFlag is set to 0. When patIdenticalFlag is equal to 1, isValidFlag is set to 0. When isValidFlag is equal to 1, the following applies. The pattern WedgeDirPatternTable[log2BlkSize][wDir][NumWedgeDirPattern[log2BlkSize][wDir]] is set equal to wedgePattern. The value of NumWedgeDirPattern[log2BlkSize][wDir] is increased by 1.
[0052] The above example of transmitting variable length code syntax elements is extended in the following manner to carry syntax element configurations 130 and 132. In particular, the following syntax follows the four lines identified above relating to wedge_dir_flag, wedge_dir_sign_flag, wedge_dir_abs, and wedge_dir_tab_idx.
[0053] [Table 7]
[0054] TIFF0007799522000010.tif78170
[0055] TIFF0007799522000011.tif36169
[0056] However, the way in which the samples belonging to the individual wedgelets are actually filled may be implemented in different ways.
[0057] It should be noted that in all of the above embodiments, multiple Wedgelet-based coding modes are available. One of these modes fills the samples within a Wedgelet with a constant value transmitted—exemplarily predictively encoded—through the individual syntax element structures 130 / 132, one constant value per Wedgelet. However, another mode fills the samples of each Wedgelet with a linear function, i.e., linear with respect to a two-dimensional array of samples. Additionally, one or more non-Wedgelet-based coding modes are also available. For example, such a mode simply transmits a transform coefficient array for a coding block that represents the spectral decomposition of the coding block's contents.
[0058] Furthermore, it should be noted that in all the above embodiments, the content of the coding block 104 actually represents a prediction residual, such as a prediction residual of a motion-compensated (temporal) and / or disparity-compensated (inter-view) prediction. Consequently, the decoder adds the reconstructed content of the coding block to such a motion-compensated (temporal) and / or disparity-compensated (inter-view) prediction signal to obtain a reconstruction of the content of the block 104.
[0059] Thus, with respect to Figures 1 to 6, several embodiments of the present invention for Wedgelet-based coding of coding blocks have been described. However, it should be noted that these embodiments containing different details can be modified while still providing the advantages disclosed above in the introductory part of the present specification. In the following, embodiments of the encoder and decoder are described, which, according to the embodiments, are based on the above-identified embodiments. 1. However, it may also be implemented differently due to generalizations of the above embodiments.
[0060] FIG. 7 illustrates, for example, a decoder 200 according to an embodiment. The decoder 200 supports Wedgelet-based coding of coding blocks. As described above, the coding blocks 104 are all coding blocks or a subset of coding blocks into which the image or depth map 100 / 102 is partitioned, for which the decoder 200 performs Wedgelet-based decoding. That is, the coding blocks 104, if taken together, completely cover the image or depth map 100 / 102, in spatial or other terms. For example, the decoder 200 optionally comprises a subdivider and coding block traverser 202, or means for subdividing the image / depth map 100 / 102 into coding blocks 104 and traversing the coding blocks 104, respectively. For example, the block 202 derives the subdivision of the image / depth map 100 / 102 into coding blocks 104 from subdivision information obtained from the data stream 120. As will be further described below, in addition to those coding blocks that are Wedgelet 2 partitioned, there are other coding blocks that are assigned coding modes other than the Wedgelet 2 partitioning mode described next. For example, such other coding blocks are coded in the spectral domain via quantized transform coefficients, such as DCT (Discrete Cosine Transform) coefficients. For coding blocks that are decoded based on Wedgelets, the decoder 200 includes, for example, a prefix reader 204, a suffix length determiner 206, a suffix reader 208, a Wedgelet 2 partitioner 210, and a reconstructor 212. Blocks 204 to 212 operate, for example, with block 202 for each current coding block 104 that is decoded based on Wedgelets. As mentioned above, the coding blocks 104 that are decoded based on Wedgelets may not completely cover the image 100 or the depth map 102, respectively.
[0061] The prefix reader 204 serves as a means for reading the prefix 126 (see above) of the variable length code syntax element from the data stream 120. As mentioned above, the prefix reader 204 is configured to read the prefix 126 from the data stream using a fixed bit length that is independent of the size of the current coding block, and is configured to read the prefix bits from the data stream either directly, i.e., without entropy decoding, or using fixed equal probability binary entropy decoding, i.e., with the same probability for each possible value of the prefix or for each bit of the prefix. For example, if the prefix 126 is a binary number, the prefix may be a 2-bit number. n Assume that ∑ is an n-bit prefix with n possible values. For example, the decoder can then intermittently stop subdividing the internal arithmetic probability interval width to arithmetically decode further syntax elements (excluding the prefix). However, the decoder can also participate in describing the image / depth map from the data stream with a prefix reader that reads the next n prefix bits in a row directly from the data stream 120, i.e., without changing the internal arithmetic probability interval width, or by only changing the internal arithmetic probability interval width independent of the prefix. Alternatively, the prefix reader can continue to divide the decoder's internal arithmetic probability interval width by n bits of the prefix, for example, to arithmetically decode the prefix from the data stream, another syntax element that is similarly entropy decoded, by reading bits from the data stream to see the binary values of the individual bits of the prefix, each with an internal arithmetic probability interval width of n bits. This effectively eases the reading task compared to context-based entropy coding. Also as mentioned above, the prefix reader 204 includes a flag 126a indicating the approximate direction 112 of the wedgelet separation line 110 separating the two wedgelets as being primarily horizontal or primarily vertical, and a flag 126b indicating the angular deviation of the approximate direction of the wedgelet separation line from a precisely horizontal or vertical extension. The prefix is read as a combination of a cue 126b indicating the direction and an absolute value 126c indicating the magnitude of the angular deviation. That is, as noted above, flag 126a indicates whether the angle between the horizontal axis and the wedgelet separation line is less than the angle between the wedgelet separation line and the vertical axis, or vice versa. For example, the angular deviation is measured clockwise, and therefore the cue indicates the direction of the angular deviation. The opposite is equally true. However, the "structuring" of the fixed-length n-bit prefix into horizontal / vertical flags, cue, and m-bit absolute offset (with m=n-2) is arbitrary and in practice is 2 n Approximate number of This is interpreted as an example for a specific binding of an n-bit / digit representation of an n-bit prefix onto a dicelet separation line direction / slope. n Approximate Wedgelet Separation La The input direction / slope and the n-bit prefix assumed n Another result between the possible values Attachment is also used.
[0062] Therefore, as shown in FIG. 7, the decoder 200 optionally comprises a wedgelet separation line direction determiner 214, or means for determining the approximate direction of the wedgelet separation line based on the prefixes read by the prefix reader 204.
[0063] The suffix length determiner 206 serves as a means for determining the suffix length, e.g., measured in bits, where the determination is performed based on the prefix read by the reader 204 and the size of the current coding block. As far as the suffix length determiner 206 is concerned, it is clear that the suffix length determiner 206 uses the prefix to directly or indirectly determine the length of the suffix 128 of the variable length code syntax element 124, such as by determining the suffix length based on an approximate direction, as determined by the determiner 214. In general, the determiner 206 is configured such that the length of the suffix 228 increases as the coding block size increases. Furthermore, the suffix length tends to be smaller for prefixes that match an approximate direction near the exact horizontal or vertical extension. For example, the suffix length determined by determiner 206 for a particular coding block size is smallest for approximate directions parallel to or at least similar to the horizontal or vertical axis, compared to the suffix length determined by determiner 206 for a particular coding block size in approximate directions of other Wedgelet separation lines diagonal to each of the horizontal and vertical axes, i.e., directions close to the diagonal (45°) direction. This advantage can be seen from FIG. 9. The angular density of approximate directions / slants distinguishable by prefixes varies with angle. In the example of FIG. 9, the density is highest in the horizontal and vertical directions, but this may be different in other embodiments. However, in such "high-density directions," the number of reasonably distinguishable Wedgelet separation line positions (slant offsets) can be distributed / related to a higher number of approximate slopes / directions. Thus, to distinguish between the approximate slope of a given prefix value and individual wedgelet isolation line locations of similar slope, the number of suffix states for a given prefix value identifying an approximate slope at or around such a "high density direction" is reduced compared to prefix values identifying approximate slopes further away from the high density direction in terms of angles. By this means, valuable bits of the data stream are saved.
[0064] The suffix reader 208 functions as a reader for reading the suffix of the variable length code syntax element from the data stream 120 using the length determined by the determiner 206. That is, the suffix reader reads a number of bits from the data stream determined by the suffix length determiner 206. As mentioned above, the suffix reader 208 also reads the suffix bits from the data stream 120 directly or using fixed equal probability binary entropy decoding. For example, the suffix may be a suffix that is longer than the 2 bits that the prefix assumes. m m-bit prefix with possible values Assume that the suffix is a suffix. Then, for example, the decoder can intermittently stop subdividing the internal arithmetic probability interval width to arithmetically decode further syntax elements (excluding the suffix). However, the decoder also participates in describing the image / depth map from the data stream with a suffix reader that reads the next m prefix bits in a row directly from the data stream 120, i.e., without changing the internal arithmetic probability interval width, or by only changing the internal arithmetic probability interval width independent of the suffix. Alternatively, the suffix reader continues to divide the decoder's internal arithmetic probability interval width by m bits of the suffix, for example, to arithmetically decode the suffix from the data stream, another syntax element that is similarly entropy decoded, by reading bits from the data stream to see the binary values of the individual bits of the suffix, having an internal arithmetic probability interval width for every m bits.
[0065] The wedgelet 2 partitioner 210 functions as a means for determining the bipartitioning of the current coding block into two wedges using a variable-length code syntax element. That is, the bipartitioner 210 associates each sample of the coding block with one of two wedges in such a way that a sample assigned to one of the two wedges is located on one side of the wedgelet separation line, whose position is defined by the prefix and suffix, and a sample assigned to the other of the two wedges is located on the other side of the wedgelet separation line. For example, the wedgelet 2 partitioner 210 is controlled by the suffix obtained by the suffix reader 208 and the prefix read by the prefix reader 204, i.e., directly or by the approximate direction of the wedgelet separation line, as predetermined by the determiner 214. As described above, the lookup table is executed by the bipartitioner 210 using the prefix, either directly or the approximate direction determined therefrom, the suffix, and the size of the current coding block as indexes. A table entry consists of a binary value map of the corresponding coding block size, and thus indicates the bipartition of a coding block of that size along the Wedgelet separation line corresponding to each prefix and suffix, which indexes each table entry along the coding block size. An example of how such a table is constructed is given above. Similarly, it has already been shown above that the Wedgelet bipartitioner computes the bipartition immediately, i.e., computationally, depending on the prefix, suffix, and size of the current coding block.
[0066] In summary, a decoder according to Figure 7 is as follows: A prefix reader 204 reads a prefix 126 from the data stream with a fixed bit length n that is independent of the size Z of the current coding block. n The wedgelet 2 divider 206 indexes the approximate direction of the wedgelet separation line from among the approximate directions that can be indexed. The wedgelet 2 divider 206 is configured so that two wedgelets 108a, 108b into which the current coding block 104 is divided according to the variable length code syntax element 124 are separated along a line with a slope that approaches the approximate direction indexed by the prefix and with an offset that depends on the suffix. The suffix length determiner 206 determines the length m of the suffix 128 of the variable length code syntax element 124. For each possible size of the current coding block 104, m is the approximate direction of the wedgelet separation line from among the approximate directions that can be indexed by the prefix. n The approximate direction of the indexable approximate directions is 2 n Individual indexes If the approximate direction that can be attached is the same as or adjacent to the direction with the local maximum concentration of the angle, m is determined depending on the prefix. n For each of the possible values of m, m increases monotonically with increasing size. The increase is determined depending on the size of the current coding block. n The indexable approximate directions are horizontally and vertically aligned, with the local maximum angle. In other words, P has a large concentration of 2 n Indexable approximate directions One of them, or s[1] <s[2]<…<s[2 n ] slope s[1]…s[2 n ]. Let S denote a suffix with bit length m, where m varies over both P and Z, i.e., m is m(P,Z), and Z denotes the coding block size Z. Furthermore, B P , S , Z is a function of prefix P, suffix S and coding block size Z. Let B be the bisection used in the bisection for P , S , Z is the binary coefficient B P , S , Z (x, y) and 0≦x, y≦Z, and strictly monotonic functions such as exponential or linear functions Let Z be a binary coefficient matrix L(Z) × L(Z), with L() being a function of Z. The set of all possible coding block sizes Z denotes the set of possible coding block sizes Ω. Z Omega with Z Then, each B P , S , Z is the slope s P , S , Z and offset o P , S , Z The actual wedgelet separation line (such an actual line) The L(Z) × L(Z) block is divided into two wedgelets along a line (compare Figure 2 showing line 110). For example, the actual wedgelet separation line passes through the sample center of each wedgelet and fits into another immediately adjacent wedgelet, which is where i = 2...2 n , that is, Δα[i]<Δα[i-1] for p, q, It holds true that for i where Δα[i]<Δα[i+1] or Δα[i]=Δα[i-1], ..., Δα[i]=Δα[i-p+1] with Δα[i]=Δα[i]=Δα[ip], and for i where Δα[i]=Δα[i-1], ..., Δα[i]=Δα[i+q-1] with Δα[i]=Δα[ip], there exists a local minimum P=i in the set of angular distances Δα[i]=s[i]-s[i-1]. This is wedgeDir=8 and wedgDir=24 in Figure 9. For all coding block sizes Z e ∈Ω Z For m[i, Z e ] =min P ({P=1...2 n|m[P, Z e ]}). This is wedgeDirTa This is true for both wedDir=8 and wedgeDir=24 in the above example table of bIdxBits. That is, the wedgeDirTabIdxBits corresponding to wedDir=8 and wedgeDir=24 form a minimum on each line. Furthermore, each P e =1…2 n For m[P e , 1] ≤ m[P e , 2]≦…≦m[P e , max(Ω Z )]. This means that for each row in the wedgeDirTabIdxBits table, the values of wedgeDirTabIdxBits increase strictly monotonically from top to bottom. As can be seen in the above table of wedgeDirTabIdxBits, m is 0 for some or one coding block sizes, and is approximately in direction P, i.e., height angle density direction i, or about that direction, for some or one coding block sizes.
[0067] To date, only one embodiment has been provided in which the wedgelet separation line is straight and defined by a slope and an offset. For example, the slope measures the angle between the straight wedgelet separation line and a horizontal axis. For example, the offset measures the displacement of the wedgelet separation line along the horizontal and / or vertical axis relative to the position of the wedgelet separation line across the lower left corner of the current coding block.
[0068] However, as already described above, embodiments of the present invention are not limited to straight Wedgelet separation-lines. For example, the Wedgelet separation-lines signaled via prefixes and suffixes include curved Wedgelet separation-lines. In that case, for example, the prefix still indicates / signals the proper direction of the Wedgelet separation-line, i.e., the average slope of the Wedgelet separation-line within the current coding block. The suffix further defines the curvature of the Wedgelet separation-line and any displacement within the current coding block. Here, the suffix length depends on the coding block size as well as the prefix to account for the different variability of the two partitions resulting from varying the curvature and displacement with respect to the respective approximate slopes. Instead, the prefix already provides the following information about the average slope, curvature, and displacement: The suffixes are used to distinguish between several approximate curvatures of the Wedgelet separation-line, which refine the Wedgelet separation-line position. The suffix length is advantageously selected depending on both the coding block size as well as the prefix value to account for differences in the number of distinguishable binary divisions that can be signaled by the latter refinement. Other options for the Wedgelet separation-line are also possible, such as allowing the Wedgelet separation-line to have varying curvatures along its extension.
[0069] The reconstructor 212 functions as a means for reconstructing the current coding block using the bipartitioning determined by the Wedgelet bipartitioner 210. That is, the bipartitioning obtained by the Wedgelet bipartitioner 210 associates each sample in the current coding block with one of two Wedgelets in the current coding block. As described above, the reconstructor 212 is configured to individually fill the sample values of the two Wedgelets of the current coding block determined by the bipartitioning from the bipartitioner 210 with constant values coded in the data stream. For example, predictive coding is used. That is, for example, the reconstructor 212 spatially predicts a constant value for each of the two Wedgelets of the current coding block, and then refines the predicted constant value thus obtained using syntax elements in the data stream 120 by filling the Wedgelets with the refined constant value, respectively. Further details are described above with reference to FIG. 6. However, other possibilities exist as well, such as filling both Wedgelets by temporal prediction or spatial extrapolation from neighboring already reconstructed samples or the like. Figure 7 illustrates that the decoder 200 is a hybrid decoder configured to use the reconstruction of the current coding block obtained by the reconstructor 212 as a prediction residual of a motion- and / or imbalance-compensated prediction signal. Figure 7 therefore shows that the decoder 200 comprises a prediction reconstructor 216 that switches between different prediction modes, such as motion-compensated, imbalance, and / or intra prediction modes, to obtain a prediction signal for the image 100 or the depth map 102, optionally within units of prediction blocks that either match or do not match the decoding block 104 at block boundaries, using the reconstruction of the current coding block obtained by the reconstructor 212 as a prediction residual of this prediction signal, i.e., to combine both to improve the prediction signal.
[0070] Furthermore, as will become clear from the above discussion, decoder 200 is a depth decoder with motion video, in which case, for example, the Wedgelet-based coding mode provided by blocks 204 through 212 discussed above is only used by decoder 200 insofar as decoding of the depth map is relevant to excluding this mode in decoding the text of image 100.
[0071] The blocks of decoder 200 shown in Figure 7 are, for example, various portions of a computer program that, when executed on a computer, implements decoder 200. Similar statements apply to Figure 8.
[0072] For completeness, FIG. 8 shows an encoder 300 that matches the decoder 200 of FIG. 7. The reference numbers used to designate the blocks / elements of the encoder 300 are the same as those assigned to the elements of the decoder of FIG. 7, except that they are deviated by an increment of 100. Accordingly, the encoder 300 of FIG. 8 comprises a subdivision, a coding block traversal 302, a prefix writer 304, a suffix length determiner 306, a suffix writer 308, a Wedgelet 2 partitioner 310, a coding block coder 312, a rough direction determiner 314, and a predictive coder 316. Block 302 functions as block 202, as far as the encoder 300 is concerned, with the difference that the subdivision is selected depending on the image / depth map optimization scheme. Similarly, blocks 304 to 312 are associated with their current coding block and are coded based on Wedgelets, as discussed above. The coding block encoder 312 then encodes the actual fill of samples within the wedgelets of the current coding block, and for this purpose writes individual syntax elements, such as the constant value refinement, into the data stream 120. The predictive encoder 316 similarly performs emulated hybrid prediction using versions of the coded blocks as reconstructable from the data stream 120 based on syntax elements written into the data stream 120 by blocks 304 through 312 as prediction residuals, as previously described, if provided by the predictive reconstructor 216, but additionally by selecting individual coding parameters for these prediction blocks by individual optimization schemes. In other words, the analysis-by-synthesis nature of the encoder 300 requires, for example, that the encoder make a reconstructable version of the image / depth map available for further prediction, to be performed by the predictive encoder 316. Thus, the encoder 300 is an MVD encoder, and reference is made to the above discussion of the decoder side for all other details used to further implement the encoder 300 of FIG. 8.
[0073] The above embodiment is used to transform the DMM1 Wedgelet mode of the HTM-9.0 of the HEVC extension, Mutual Alias (AKA), prior to the priority date of this application. In this case, the transformed signal of the DMM1 Wedgelet pattern is based on the 32 directions of the angular interior modes. The fixed-length CABAC binarization scheme of the Wedgelet pattern list index is replaced by a binarization using bypass coding. The resulting transformed scheme signals the direction of the Wedgelet separation line plus the refinement index.
[0074] Specifically, in HTM-9.0, the DMM1 Wedgelet pattern is signaled as an index into a Wedgelet pattern list corresponding to the block size. This index is binarized by fixed-length coding with one CABAC context. This solution does not benefit very well from CABAC context adaptation. However, the binarization scheme for signaling DMM1 Wedgelet segmentation pattern information uses a bypass instead of CABAC context coding based on the 32 directions of the angle internal mode, as would result from designing the pattern information according to the above embodiment.
[0075] In a specific example, taking advantage of the above embodiment, for example, the DMM1 encoding concept works as follows: In the first step, the interior direction corresponding to the direction of the wedgelet isolation line is signaled. For this purpose, the slope of the wedgelet line is associated with one of the 32 directions defined for the angle interior mode during wedgelet pattern list initialization. Given the direction of the DMM1 block, binarization works as follows: A flag is sent to specify whether the direction is in the horizontal or vertical domain (H or V in FIG. 9). The slope direction offset to either HOR_IDX (10) or VER_IDX (26) is signaled as a marker (+ or - in FIG. 9) and an absolute value absVal (0 to 7 in FIG. 9), using one and three bypass encoding bins, respectively. From these three elements, the direction dir (corresponding to wedgeDir-2 and having a value range of 2...34) is calculated using the following formula: dir=((flag)?10:26)+((sign)?-1:1) * absVal --sign
[0076] In the second step, the refinement index idx of the direction-dependent Wedgelet list is signaled using N bypass coding bins. The number of bins N depends on the length of the pre-determined list for each direction and block size. At the decoder, the Wedgelet pattern used for the reconstruction of the DMM1 block is consequently defined as a search in the array of the direction-dependent Wedgelet list wDirLists: pattern=wDirLists[dir-2][idx].
[0077] According to the CE5 description in JCT3V-F1105 (Non-Patent Document 1) and the common test conditions in JCT3V-F1100 (Non-Patent Document 2), this modified DMM1 design is evaluated for all internal configurations with random access (CTC) and HTM9.0r1. The results are summarized in the following table.
[0078] [Table 8]
[0079] [Table 9]
[0080] The modification requires modifying the specifications in Appendix H of JCT3V-F1001 (Non-Patent Document 3). Possible modifications are derived from the above description and possible fragments to amend the specifications also shown above.
[0081] The results in the latter table show that the modified binarization scheme for DMM1 Wedgelet segmentation pattern information results in a coding gain of approximately 0.1%. Coding performance is improved for all sequences with CTC, as well as for all internal configurations. At the same time, the proposed method reduces the number of CABAC coding containers to zero, without introducing higher complexity.
[0082] Although some aspects are described in the context of an apparatus, it is clear that these aspects also represent a description of the corresponding method. Here, a block or apparatus corresponds to a method step or a feature of a method step. Analogously, an aspect described in the context of a method step also represents a description of the corresponding block or item or feature of the corresponding apparatus. Some or all of the method steps may be performed by (or using) a hardware apparatus, such as, for example, a microprocessor or a programmable computer or electronic circuitry. In some embodiments, one or more of the most important method steps are performed by such an apparatus.
[0083] Depending on the requirements of a particular implementation, embodiments of the invention may be implemented in hardware or software. Implementation may be performed using a digital storage medium, such as a floppy disk, DVD, Blu-ray, CD, ROM, PROM, EPROM, EEPROM, or flash memory, having electronically readable control signals stored thereon that cooperate (or may cooperate) with a programmable computer system such that the particular method is performed. The digital storage medium is therefore computer readable.
[0084] Some embodiments according to the invention comprise a data carrier having electronically readable control signals that may cooperate with a programmable computer system to perform one of the methods described herein.
[0085] Generally, embodiments of the present invention are implemented as a computer program product having program code that operates to perform one of the methods when the computer program product is run on a computer, for example the program code being stored on a machine-readable carrier.
[0086] Another embodiment comprises the computer program for performing one of the methods described herein, stored on a machine readable carrier.
[0087] A method embodiment of the invention is therefore a computer program having a program code for performing one of the methods described herein, when the computer program runs on a computer.
[0088] A further embodiment of the inventive method is therefore a data carrier (or digital storage medium or computer readable medium) comprising, recorded thereon, a computer program for performing one of the methods described herein. The data carrier or digital storage medium or recorded medium is generally tangible and / or non-transient.
[0089] A further embodiment of the inventive method is, therefore, a data stream or sequence of signals representing the computer program for performing one of the methods described herein, the data stream or sequence of signals being adapted to be transmitted over a data communication connection, e.g. via the Internet.
[0090] A further embodiment comprises a processing means, for example a computer, or a programmable logic device, configured to or adapted to perform one of the methods described herein.
[0091] A further embodiment comprises a computer having installed thereon the computer program for performing one of the methods described herein.
[0092] A further embodiment according to the invention comprises an apparatus or system configured to transfer (e.g., electronically or optically) a computer program for performing one of the methods described herein to a receiver. For example, the receiver is a computer or a mobile device or a memory device or the like. For example, the apparatus or system comprises a file server for transferring the computer program to the receiver.
[0093] In some embodiments, a programmable logic device (e.g., a field programmable gate array) is used to perform some or all of the functions of the methods described herein. In some embodiments, the field programmable gate array cooperates with a microprocessor to perform one of the methods described herein. In general, the methods are preferably performed by any hardware apparatus.
[0094] The apparatus described herein may be implemented using a hardware apparatus, or using a computer, or using a combination of a hardware apparatus and a computer.
[0095] The methods described herein may be performed using a hardware apparatus, or using a computer, or using a combination of a hardware apparatus and a computer.
[0096] The above described embodiments are described merely for the principles of the present invention. It is understood that modifications and variations of the arrangements and details described herein will be apparent to those skilled in the art. It is the intention, therefore, to be limited only by the scope of the appended claims and not by the specific details provided through the description and illustration of the embodiments herein.
[0097] References [1] H. Liu, "Description of Core Experiment 5 (CE5) on Depth Intra Modes," JCT3V-F1105, Geneva, Switzerland, November 2013. [2] D. Rusanovskyy, K. Mueller, A. Vetro, “Common Test Conditions of 3DV Core Experiments," JCT3V-F1100, Geneva, Switzerland, November 2013. [3] G. Tech, K. Wegner, Y. Chen, S. Yea, "3D-HEVC Draft Text 2," JCT3V-F1001, Geneva, Switzerland, November 2013.
Claims
1. 1. A decoder that supports Wedgelet-based decoding of a current coding block, comprising: a reader configured to read a variable length code syntax element from a data stream using entropy decoding, wherein the variable length code syntax element indicates a Wedgelet bipartitioner for determining a bipartitioning of the current coding block into two Wedgelets; the variable length code syntax element indexes one entry of a lookup table, each entry corresponding to a wedgelet separation line separating the two wedges, the separation line comprising a slope of the wedgelet separation line among a plurality of slopes and an offset of the separation line, wherein the slope measures the angle between the wedgelet separation line, which is a straight line, and a horizontal axis, and the offset measures the translation of the wedgelet separation line along the horizontal axis and / or the vertical axis; A reader and a reconstructor configured to reconstruct the current coding block according to the bipartitioning indicated by the Wedgelet bipartitioner; A decoder containing
2. 2. The decoder of claim 1, wherein the length of the variable length code syntax elements increases as the size of the current coding block increases.
3. 1. An encoder that supports Wedgelet-based coding of a current coding block, comprising: a writer configured to write variable length code syntax elements into a data stream using entropy coding, the variable length code syntax elements indicating a Wedgelet bipartitioner for determining a bipartitioning of the current coding block into two Wedgelets, the variable length code syntax elements indexing one entry of a lookup table, each entry corresponding to a Wedgelet separation line separating the two Wedgelets, the separation line comprising a slope of the Wedgelet separation line among a plurality of slopes and an offset of the separation line, wherein the slope measures an angle between the Wedgelet separation line, which is a straight line, and a horizontal axis, and the offset measures a translation of the Wedgelet separation line along the horizontal axis and / or a vertical axis; a coder configured to encode the current coding block according to the bipartitioning indicated by the Wedgelet bipartitioner; Encoder including.
4. The encoder of claim 3 , wherein the length of the variable length code syntax element increases as the size of the current coding block increases.
5. 1. A method for supporting Wedgelet-based decoding of a current coding block, the method comprising: reading a variable length code syntax element from the data stream using entropy decoding, the variable length code syntax element indicating a Wedgelet bipartitioner for determining a bipartitioning of the current coding block into two Wedgelets; the variable length code syntax element indexing one entry of a lookup table, each entry corresponding to a wedgelet separation line separating the two wedges, the separation line comprising a slope of the wedgelet separation line among a plurality of slopes and an offset of the separation line, wherein the slope measures the angle between the wedgelet separation line, which is a straight line, and a horizontal axis, and the offset measures the translation of the wedgelet separation line along the horizontal and vertical axes; reconstructing the current coding block according to the bipartitioning indicated by the Wedgelet bipartitioner; A method comprising:
6. 1. A method for supporting Wedgelet-based coding of a current coding block, the method comprising: using entropy coding, writing a variable length code syntax element into a data stream, the variable length code syntax element indicating a Wedgelet bipartitioner for determining a bipartitioning of the current coding block into two Wedgelets, the variable length code syntax element indexing one entry of a lookup table, each entry corresponding to a Wedgelet separation line separating the two Wedgelets, the separation line comprising a slope of the Wedgelet separation line among a plurality of slopes and an offset of the separation line, where the slope measures an angle between the Wedgelet separation line, which is a straight line, and a horizontal axis, and the offset measures a translation of the Wedgelet separation line along the horizontal and / or vertical axis; encoding the current coding block according to the bipartitioning indicated by the Wedgelet bipartitioner; A method comprising:
7. A computer program for causing a computer to carry out the method according to claim 6.