Inter-prediction in geometric partitioning using non-rectilinear non-rectangular partitioning.
By using a decoder circuit that splits video blocks into non-rectangular regions through exponential division mode and determines motion vectors for these regions, the challenges of video compression are addressed, resulting in improved compression efficiency and video quality.
Patent Information
- Application Number
- JP2023091577
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-01-28
- Filing Date
- 2023-06-02
- Publication Date
- 2025-03-25
- Estimated Expiration
- 2040-01-28
AI Technical Summary
Existing video compression technologies face challenges in efficiently encoding and decoding video frames, particularly in accurately reconstructing original video quality due to insufficient information and sensitivity to data loss and error.
The implementation of a decoder circuit that employs exponential division mode to split current blocks into non-rectangular regions, allowing for the determination of motion vectors through candidate list construction and decoding of blocks using these vectors.
This approach enhances compression efficiency by reducing motion-compensated prediction errors and residuals, thereby improving video quality and reducing encoding complexity.
Smart Images

Figure 0007650526000001 
Figure 0007650526000002 
Figure 0007650526000003
Abstract
Description
[Technical field]
[0001] This application was filed on January 28, 2019 and is incorporated herein by reference in its entirety. This application claims the benefit of priority to U.S. Provisional Patent Application No. 62 / 797,816, entitled "EXPONENTIAL PARTITIONING," which is incorporated herein by reference in its entirety.
[0002] The present invention relates generally to the field of video compression. In particular, the present invention is directed to inter prediction in exponential partitioning. [Background technology]
[0003] A video codec may include electronic circuitry or software that compresses or decompresses digital video. It can convert uncompressed video to a compressed format, or vice versa. In the context of video compression, a device that compresses video (and / or performs some of the functions thereof) may typically be called an encoder, and a device that decompresses video (and / or performs some of the functions thereof) may be called a decoder.
[0004] The format of the compressed data can conform to standard video compression specifications. The compression can be lossy, in that the compressed video lacks certain information present in the original video. Consequences of this can include that the decompressed video may have lower quality than the original uncompressed video, since insufficient information exists to exactly reconstruct the original video.
[0005] There can be a complex relationship between video quality, the amount of data used to represent the video (e.g., determined by bit rate), the complexity of the encoding and decoding algorithms, sensitivity to data loss and errors, ease of editing, random access, end-to-end delay (e.g., latency), and the like. Summary of the Invention [Means for solving the problem]
[0006] In one aspect, a decoder includes circuitry configured to receive a bitstream, divide a current block into a first region and a second region via an exponential partitioning mode, determine a motion vector associated with a region of the first region or the second region, where determining includes building a candidate list, and decode the current block using the determined motion vector.
[0007] In another aspect, a method includes a decoder receiving a bitstream; the decoder dividing a current block into a first region and a second region via an exponential partitioning mode; the decoder determining a motion vector associated with a region of the first region or the second region, where determining includes building a candidate list; and the decoder decoding the current block using the determined motion vector.
[0008] The details of one or more variations of the subject matter described herein are set forth in the accompanying drawings and the description below. Other features and advantages of the subject matter described herein will be apparent from the description and drawings, and from the claims. The present invention provides, for example, the following: (Item 1) 10. A decoder, the decoder comprising a circuit, the circuit comprising: receiving a bitstream; Dividing the current block into a first region and a second region via an exponential division mode; determining a motion vector associated with a region of the first region or the second region, where determining includes building a candidate list; decoding the current block using the determined motion vector; A decoder configured to: (Item 2) 2. The decoder of claim 1, wherein constructing the candidate list includes evaluating a bottom-left candidate, a left candidate, a top-left candidate, a top candidate, and a top-right candidate. (Item 3) the determined motion vector is relative to the first region; the exponential splitting mode includes a curved line segment between a first luma location and a second luma location; the bottom-left candidate is located in a third luma location immediately to the left and below the second luma location; the left candidate is located in a fourth luma location immediately to the left of the second luma location; the top-left candidate is located at a fifth luma location immediately above and to the left of the top-left most luma location of the first region; the top candidate is located in a sixth luma location directly above the first luma location; 3. The decoder of claim 2, wherein the top right candidate is located at a seventh luma location immediately above the rightmost luma location of the second region. (Item 4) the determined motion vector relates to the second region; the exponential splitting mode includes a curved line segment between a first luma location and a second luma location; the bottom-left candidate is located in a third luma location immediately to the left of and directly below the bottom-left most luma location of the second region; the left candidate is located in a fourth luma location immediately to the left of the bottom-left luma location of the second region; the top-left candidate is located at a fifth luma location immediately above and to the left of the first location; the top candidate is located in a sixth luma location immediately above the top right most luma location of the second region; 3. The decoder of claim 2, wherein the top-right candidate is located at a seventh luma location immediately above and to the right of the top-right most luma location of the second region. (Item 5) 3. The decoder of claim 2, wherein the determined motion vector relates to the second region, the decoder being further configured to mark a candidate as unavailable in response to determining that the candidate is co-located with the first region. (Item 6) 3. The decoder of claim 2, wherein the determined motion vector relates to the second region, and the decoder is further configured to automatically mark the top-left candidate as unavailable in response to determining that the exponential partitioning mode is enabled. (Item 7) 3. The decoder of claim 2, wherein the determined motion vector relates to the first region, and the decoder is further configured to automatically mark the top-right candidate as unavailable in response to determining that the exponential partitioning mode is enabled. (Item 8) 3. The decoder of claim 2, wherein the determined motion vector relates to the first region, and the decoder is further configured to automatically mark the bottom-left candidate as unavailable in response to determining that the exponential partitioning mode is enabled. (Item 9) 2. The decoder of claim 1, wherein the exponential partitioning mode further comprises a geometric partitioning mode. (Item 10) 2. The decoder of claim 1, further configured to determine that a merge mode is enabled for the first region. (Item 11) 2. The decoder of claim 1, further configured to reconstruct pixel data of the current block, wherein the first region and the second region are non-rectangular. (Item 12) 2. The decoder of claim 1, wherein the exponential partitioning mode is signaled within the bitstream. (Item 13) 2. The decoder of claim 1, wherein dividing the current block into the first region and the second region via the exponential division mode includes dividing the current block using a curve characterized by a predetermined template. (Item 14) Item 14. The decoder of item 13, wherein the curve dividing the current block into the first region and the second region is characterized by predetermined coefficient values. (Item 15) 2. The decoder of claim 1, wherein the exponential decomposition mode is available for block sizes of 8x8 luma samples or larger. (Item 16) an entropy decoder processor configured to receive the bitstream and decode the bitstream into quantized coefficients; an inverse quantization and inverse transform processor configured to process the quantized coefficients, including performing an inverse discrete cosine transform; A deblocking filter; A frame buffer; Intra prediction processor Item 1. The decoder of item 1, further comprising: (Item 17) 2. The decoder of claim 1, wherein the bitstream includes a parameter indicating whether the exponential partitioning mode is enabled for the current block. (Item 18) 2. The decoder of claim 1, wherein the current block forms part of a quad tree plus a binary decision tree. (Item 19) 20. The decoder of claim 18, wherein the current block is a non-leaf node of the quad tree plus binary decision tree. (Item 20) 2. The decoder of claim 1, wherein the current block is a coding tree unit or a coding unit. (Item 21) 2. The decoder of claim 1, wherein the first region is a coding unit or a prediction unit. (Item 22) 1. A method, comprising: A decoder receives a bitstream; said decoder dividing a current block into a first region and a second region via an exponential division mode; the decoder determining a motion vector associated with a region of the first region or the second region, the determining including building a candidate list; the decoder decodes the current block using the determined motion vector; A method comprising: (Item 23) 23. The method of claim 22, wherein constructing the candidate list includes evaluating a bottom left candidate, a left candidate, a top left candidate, a top candidate, and a top right candidate. (Item 24) the determined motion vector relates to the first region; the exponential splitting mode includes a curved line segment between a first luma location and a second luma location; the bottom-left candidate is located in a third luma location immediately to the left and below the second luma location; the left candidate is located in a fourth luma location immediately to the left of the second luma location; the top-left candidate is located at a fifth luma location immediately above and to the left of the top-left most luma location of the first region; the top candidate is located in a sixth luma location directly above the first luma location; 24. The method of claim 23, wherein the top right candidate is located at a seventh luma location immediately above the rightmost luma location of the second region. (Item 25) the determined motion vector relates to the second region, and the exponential partitioning mode includes a curved line segment between a first luma location and a second luma location; the bottom-left candidate is located in a third luma location immediately to the left of and directly below the bottom-left most luma location of the second region; the left candidate is located in a fourth luma location immediately to the left of the bottom-left luma location of the second region; the top-left candidate is located at a fifth luma location immediately above and to the left of the first location; the top candidate is located in a sixth luma location immediately above the top right most luma location of the second region; 24. The method of claim 23, wherein the top right candidate is located at a seventh luma location immediately above and to the right of the top right most luma location of the second region. (Item 26) 24. The method of claim 23, further comprising marking a candidate as unavailable in response to determining that the determined motion vector relates to the second region and that the candidate is co-located with the first region. (Item 27) 24. The method of claim 23, wherein the determined motion vector relates to the second region, and the method further includes automatically marking the top-left candidate as unavailable in response to determining that the exponential partitioning mode is enabled. (Item 28) 24. The method of claim 23, wherein the determined motion vector relates to the first region, and the method further includes automatically marking the top right candidate as unavailable in response to determining that the exponential partitioning mode is enabled. (Item 29) 24. The method of claim 23, wherein the determined motion vector relates to the first region, and the method further includes automatically marking the bottom-left candidate as unavailable in response to determining that the exponential partitioning mode is enabled. (Item 30) 23. The method of claim 22, wherein the exponential division mode further comprises a geometric division mode. (Item 31) 23. The method of claim 22, further comprising determining that a merge mode or an advanced motion vector prediction mode is enabled for the first region. (Item 32) 23. The method of claim 22, further comprising reconstructing pixel data of the current block, wherein the first region and the second region are non-rectangular. (Item 33) 23. The method of claim 22, wherein the exponential partitioning mode is signaled within the bitstream. (Item 34) 23. The method of claim 22, wherein dividing the current block into the first region and the second region via the exponential division mode includes dividing the current block using a curve characterized by a predetermined template. (Item 35) Item 34. The method of item 33, wherein the curve dividing the current block into the first region and the second region is characterized by a predetermined coefficient value. (Item 36) 23. The method of claim 22, wherein the exponential decomposition mode is available for block sizes of 8x8 luma samples or greater. (Item 37) The decoder further comprises: an entropy decoder processor configured to receive the bitstream and decode the bitstream into quantized coefficients; an inverse quantization and inverse transform processor configured to process the quantized coefficients, including performing an inverse discrete cosine transform; A deblocking filter; A frame buffer; Intra prediction processor 23. The method of claim 22, comprising: (Item 38) 23. The method of claim 22, wherein the bitstream includes a parameter indicating whether the exponential partitioning mode is enabled for the current block. (Item 39) 23. The method of claim 22, wherein the current block forms part of a quad tree plus a binary decision tree. (Item 40) 39. The method of claim 38, wherein the current block is a non-leaf node of the quad tree plus binary decision tree. (Item 41) 23. The method according to claim 22, wherein the current block is a coding tree unit or a coding unit. (Item 42) 23. The method of claim 22, wherein the first region is a coding unit or a prediction unit. [Brief description of the drawings]
[0009] For the purpose of illustrating the invention, the drawings show aspects of one or more embodiments of the invention, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown in the drawings.
[0010] [Figure 1] FIG. 1 is a diagram illustrating an example of block division of pixels.
[0011] [Diagram 2] FIG. 2 is a diagram illustrating an example of a geometric division.
[0012] [Diagram 3] FIG. 3 illustrates an image containing an apple that may not be efficiently segmented by straight line segments.
[0013] [Figure 4A] FIG. 4A is a diagram illustrating one example of exponential partitioning in accordance with some aspects of the present subject matter that can increase compression efficiency.
[0014] [Figure 4B] FIG. 4B is a series of diagrams illustrating an exemplary template exponential splitting.
[0015] [Figure 4C] FIG. 4C illustrates an example curve associated with four predetermined coefficients that may define an example exponential function.
[0016] [Figure 4D] FIG. 4D illustrates another example block showing different start point P1 and end point P2 indexes dividing a rectangular block.
[0017] [Diagram 5] FIG. 5 is a diagram illustrating example locations of potential motion vector candidates for an example current block that is divided according to an exponential division.
[0018] [Figure 6] FIG. 6 illustrates FIG. 5 with annotations indicating luma locations including the top-left most luma location of the first region and the top-right most luma location of the second region.
[0019] [Figure 7] FIG. 7 is a diagram illustrating the locations of potential motion vector candidates for an example current block that is divided according to an exponential division.
[0020] [Figure 8] FIG. 8 illustrates FIG. 7 with annotations indicating luma locations including the bottom-left most luma location of the second region and the top-right most luma location of the second region.
[0021] [Figure 9] FIG. 9 is a system block diagram illustrating an example video encoder capable of encoding video using inter prediction with exponential partitioning.
[0022] [Figure 10] FIG. 10 illustrates an example of QTBT division of a frame.
[0023] [Figure 11] FIG. 11 illustrates an example of exponential division at the CU level of the QTBT illustrated in FIG.
[0024] [Figure 12] FIG. 12 is a process flow diagram illustrating an example process for encoding video using exponential split inter prediction in accordance with some aspects of the present subject matter, which can increase compression efficiency while reducing encoding complexity.
[0025] [Figure 13] FIG. 13 is a system block diagram illustrating an example decoder capable of decoding a bitstream using exponential partitioning and inter prediction in accordance with some aspects of the present subject matter.
[0026] [Figure 14] FIG. 14 is a process flow diagram illustrating an example process for decoding a bitstream using exponential partitioning and using inter prediction in accordance with some aspects of the present subject matter.
[0027] [Figure 15] FIG. 15 is a block diagram of a computing system that may be used to implement any one or more of the methods, or any one or more portions thereof, disclosed herein.
[0028] The drawings are not necessarily to scale and may be illustrated by phantom lines, schematic representations, and partial views. In some instances, details that are not necessary for an understanding of the embodiments or that make other details difficult to perceive may be omitted. Like reference symbols in the various drawings indicate like elements. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0029] Some implementations of the present subject matter include performing inter prediction using non-rectangular regions partitioned with a curve, which may or may not be a straight line. Performing inter prediction using non-rectangular blocks partitioned with a curve allows the partitioning to follow object boundaries closer, which may result in lower motion compensation prediction error, smaller residuals, and therefore improved compression efficiency. During inter prediction, motion compensation may be performed using motion vectors predicted for blocks (e.g., coding units, prediction units, etc.) determined according to an exponential partitioning mode. Motion vectors may be predicted using advanced motion vector prediction (AMVP) and / or via a merge mode, where the motion vector is selected from a list of motion vector candidates without encoding the motion vector difference.
[0030] In exponential partitioning, rectangular blocks may be partitioned into non-rectangular regions using curves, which may include straight line segments in the case of geometric partitioning, or in the more general case may be non-linear curves. Using non-linear curves to partition blocks may allow the partitioning to follow object boundaries closer, resulting in lower motion compensation prediction errors, smaller residuals, and thus improved compression efficiency. In some implementations, the curves may be characterized by exponential functions. The curves (e.g., exponential functions) may be determined using predefined coefficients that may be signaled in the bitstream for use by the decoder. In some implementations, exponential partitioning may be available for 8×8 or more luma samples. By partitioning rectangular blocks using curves, the present subject matter may achieve compression efficiency for certain objects that exceeds techniques that are limited to straight line segment partitioning, such as those using geometric partitioning.
[0031] Motion compensation may include an approach for predicting a video frame or a portion thereof given previous and / or future frames by considering the motion of the camera and / or objects in the video. Motion compensation may be employed in encoding and decoding video data for video compression, for example, in encoding and decoding using the Moving Picture Experts Group (MPEG)-2 (also referred to as Advanced Video Coding (AVC)) standard. Motion compensation may describe a picture in terms of a transformation of a reference picture to a current picture. The reference picture may be from an earlier or future time compared to the current picture. Compression efficiency can be improved when pictures can be accurately synthesized from previously transmitted and / or stored pictures.
[0032] Block partitioning may refer to a method in video coding to find regions of similar motion. Some forms of block partitioning may be found in video codec standards, including MPEG-2, H.264 (also referred to as AVC or MPEG-4 Part 10), and H.265 (also referred to as High Efficiency Video Coding (HEVC)). In an exemplary block partitioning approach, non-overlapping blocks of a video frame may be divided into rectangular sub-blocks to find block partitions containing pixels with similar motion. This approach may work well when all pixels of a block partition have similar motion. The motion of pixels within a block may be determined with respect to a previously coded frame.
[0033] FIG. 1 is a diagram illustrating one example of block division of pixels. An initial rectangular picture or block 100, which may itself be a subblock (e.g., a node in a coding tree), may be divided into rectangular subblocks. For example, at 110, block 100 is divided into two rectangular subblocks 110a and 110b. Subblocks 110a and 110b may then be processed separately. As another example, at 120, block 100 is divided into four rectangular subblocks 120a, 120b, 120c, and 120d. The subblocks may themselves be further divided until it is determined that the pixels within the subblock share the same motion, a minimum block size is reached, or another criterion is met. When pixels within a subblock have similar motion, a motion vector may describe the motion of all pixels within that region.
[0034] Continuing to refer to FIG. 1, some approaches to video coding may include geometric partitioning, which may be in the form of exponential partitioning, where a rectangular block (e.g., as illustrated in FIG. 1) may be further divided into two regions, which may be non-rectangular, by a straight line segment. For example, FIG. 2 is a diagram illustrating an example of geometric partitioning. An example rectangular block 200 (having a width of M pixels and a height of N pixels, which may be represented as M×N pixels) may be divided into two regions (region 0 and region 1) along a straight line segment P1P2 205. When pixels in region 0 have similar motion, a motion vector may describe the motion of all pixels in that region. The motion vector may be used to compress region 0. Similarly, when pixels in region 1 have similar motion, an associated motion vector may describe the motion of pixels in region 1. Such a geometric partitioning may be signaled to a receiver (e.g., a decoder) by encoding positions P1 and P2 (or a representation of positions P1 and P2) in the video bitstream.
[0035] Continuing with reference to FIG. 2, when encoding video data utilizing geometric partitioning, straight line segments 205 (or, more specifically, points P1 and P2) may be determined. However, straight line segments may not be able to divide the block in a manner that reflects the object boundary. As a result, partitioning with straight line segments may not be able to divide the block in an efficient manner (e.g., such that any resulting residual is small). This may be the case when the block may contain pixels (e.g., luma samples) that represent objects or boundaries that have curved (e.g., non-linear) boundaries. For example, FIG. 3 illustrates one example embodiment of an image containing an apple that may not be efficiently partitioned by straight line segments; the illustrated ring image includes several rectangular blocks that represent portions of the image, and if it is partitioned using straight line segments according to the geometric partitioning, the partitioning may not follow close to the curved object (e.g., apple) boundary illustrated in FIG. 3.
[0036] 4A is a diagram illustrating a non-limiting example of exponential division using a non-linear curve, defined for purposes of this disclosure as a curve that is not a straight line, according to some aspects of the present subject matter, that may increase compression efficiency. Rectangular block 400 may include pixels (e.g., luma samples). Rectangular block 400 may have a size of 8×8 pixels (e.g., luma samples) or more, as a non-limiting example provided for illustrative purposes only.
[0037] In FIG. 4A, rectangular block 400 may be divided into two or more regions, illustrated for illustrative purposes in FIG. 4A as region 0, represented by 410, and region 1, represented by 415, by curved line 405. All luma samples within each region so defined may be considered to have similar motion and therefore representable using the same motion vector. To illustrate for illustrative purposes, all luma samples within region 410 may be considered to have the same or similar motion and may be represented by the same motion vector. Similarly, all luma samples within region 415 may be considered to have the same or similar motion and may be represented by the same motion vector. The respective motion vectors may be determined according to an AMVP mode or a merge mode, as described more fully below. In some implementations, for purposes of discussion, all luma samples to the left or above the curved line segment 405 that divides rectangular block 400 may be considered to belong to region 0 (410). In some implementations, all luma samples to the right or below the curved line segment 405 that divides rectangular block 400 may be considered to belong to region 1 (415). In some implementations, all luma samples through which the curved line segment dividing the rectangular block 400 passes (i.e., luma samples that are on and / or intersected by the line segment) belong to region 0 (410). In some implementations, all luma samples through which the curved line segment dividing the rectangular block 400 passes may be considered to belong to region 1 (415). Other implementations may be possible, as will occur to those of skill in the art upon review of this disclosure in its entirety.
[0038] Continuing with reference to FIG. 4A, exponential divisions may be represented in the bitstream. In some implementations, an exponential division mode may be utilized and appropriate parameters may be signaled in the bitstream. For example, exponential divisions may be represented in the bitstream by signaling a predefined exponential division template. FIG. 4B is a series of diagrams illustrating non-limiting examples of template divisions 420-435. In some implementations, the signaling may be performed by including an index into one or more of these predefined regular (e.g., template) exponential divisions. These regular exponential divisions may define a set of predefined orientations. For example, FIG. 4C illustrates non-limiting example curves associated with four predefined templates (1, 2, 3, 4). The number of template curvatures may vary in some implementations.
[0039] With continued reference to FIG. 4B , as another non-limiting example, the exponential division may be represented in the bitstream by signaling predetermined coefficients, such as coefficients of an exponential function, where the coefficients indicate the degree of curvature, which may allow for additional exponential functions:
[0040] In some implementations, with continued reference to FIG. 4B, a given template of the plurality of templates 420-435 used in the exponential splitting mode may represent a straight line segment. For example, in FIG. 4C, the segment indexed by factor 1 is a straight line, which can be considered as a special case of exponential splitting, which is a geometric splitting, as described above.
[0041] In some implementations, both orientation templates, e.g., as illustrated in FIG. 4B , and predefined templates, e.g., as illustrated in FIG. 4C , may be utilized to efficiently signal any exponential pattern of a multitude of potential exponential divisions; for example, a template may provide curve options 440, including, but not limited to, line segment 1 and / or one or more non-linear curves 2-4 (which may include exponential curves), any of which may be selected by an encoder, a user, and / or an automated process to create a division as described in this disclosure.
[0042] In some implementations, referring again to FIG. 4A, the start and end indexes may be predefined. For example, FIG. 4A illustrates an example curved segment that starts at the bottom left corner of the rectangular block 400 and ends at the top right corner of the rectangular block 400. Such predefined start and end indexes may be stored in the memory of the decoder. Alternatively, or in addition, in some implementations, the start and end indexes may be explicitly signaled in the bitstream. For example, FIG. 4D illustrates another example block showing different start and end indexes P1 and P2 that divide the rectangular block 400. The start and end indexes P1 and P2 may be directly signaled or may be indicated by indexes into a set of predefined values. Other parameters are possible, as would occur to one of ordinary skill in the art upon review of the entirety of this disclosure.
[0043] Continuing to refer to FIG. 4A, inter prediction may be performed using exponentially divided regions. Motion vectors for motion compensation may be derived using AMVP or merge mode. In AMVP, motion vector prediction may be performed by signaling an index into a motion vector candidate list, and the motion vector difference (e.g., residual) may be encoded and included in the bitstream. In merge mode, a motion vector is selected from a list of motion vector candidates without encoding the motion vector difference, thereby allowing the current block to adopt the motion information of another previously decoded block. In both AMVP and merge mode, a candidate list may be constructed by both the encoder and the decoder, and an index into the candidate list may be signaled in the bitstream.
[0044] FIG. 5 is a diagram illustrating a non-limiting example of the locations of potential spatial motion vector candidates for an exemplary current block 1100 divided according to an exponential division. The potential spatial motion vector candidates may be considered for building a motion vector candidate list during AMVP mode or merge mode. As a non-limiting example, the current block 1100 may be divided into two regions (region S0 and region S1) by a curve between points P0 and P1. Each of regions S0 and S1 may be predicted unidirectionally or bidirectionally. The spatial candidates for the first region (region S0) are illustrated in FIG. 5 for illustrative purposes and may include, but are not limited to, bottom-left candidate A0, left candidate A1, top-left candidate B2, top candidate B1, and top-right candidate B0.
[0045] As illustrated in FIG. 5, in some implementations, each location (A0, A1, B2, B1, and B0) may represent a block at the respective location. For example, but not limited to, top-left candidate B2 may represent a block located at a location immediately to the left and directly above region S0, e.g., if the luma location of the top-left corner of S0 is (0,0), top-left candidate B2 may be located at location (-1,-1). Bottom-left candidate A0 may be located immediately to the left and below P1, e.g., but not limited to, if the luma location of P1 is (P1x, P1y), bottom-left candidate A0 may be located at location (P1x-1, P1y+1). Left candidate A1 may be located immediately to the left of P1, e.g., left candidate A1 may be located at location (P1x-1, P1y). The top candidate B1 may be located directly above P0, e.g., if the luma location of P0 is (P0x, P0y), the top candidate B1 is located at (P0x, P0y-1). The top right candidate B0 may be located directly above the upper and rightmost luma location in the second region S1, e.g., if the upper right corner of S1 is located at (S0_width+S1_width-1,0), the top right candidate B0 may be located at (S0_width+S1_width-1,-1), where M=S0_width+S1_width. Other locations are possible, as will occur to those skilled in the art upon review of this disclosure in its entirety. Figure 6 illustrates Figure 5 with annotations showing luma locations including the upper and leftmost luma location of the first region S0 and the upper and rightmost luma location of the second region S1.
[0046] In some implementations, still referring to FIG. 6, when an exponential division exists, such division may be performed for divided regions (or objects) in a frame having different motion information, so that when constructing a candidate list for region S0, some of the potential candidates may be automatically marked as unavailable and removed from the list. Thus, it may be inferred that blocks associated with those candidates are likely to represent another object having a different motion, and thus these candidates may be automatically marked as unavailable (e.g., not considered further, removed from the list, etc.). As a non-limiting example, as illustrated above in FIG. 5, for region S0, bottom-left candidate A0 may be automatically marked as unavailable because region S0 is likely to not share motion information with blocks located at bottom-left candidate A0. Similarly, for region S0, top-right candidate B0 may be automatically marked as unavailable because region S0 is likely to not share motion information with blocks located at top-right candidate B0.
[0047] FIG. 7 is a diagram illustrating a non-limiting example of the positions of potential motion vector candidates for an exemplary current block 1400 divided according to an exponential division. The potential motion vector candidates may be considered for building a candidate list during AMVP mode or merge mode. The current block 1400 may be divided into two regions (region S0 and region S1) by a curve between positions P0 and P1. Each of regions S0 and S1 may be predicted unidirectionally or bidirectionally. Candidates for the second region (region S1) are illustrated in FIG. 7 and may include a bottom-left candidate A0, a left candidate A1, a top-left candidate B2, an upper candidate B1, and a top-right candidate B0.
[0048] As illustrated, in FIG. 7, each location (A0, A1, B2, B1, and B0) may represent a block at the respective location. For example, the top-left candidate B2 may be a block located at the luma location immediately to the left and directly above the region S1, e.g., if the top-left corner luma location of S1 is adjacent to P0 with luma location coordinates (P0x+1, P0y), the top-left candidate B2 may be located at location (P0x, P0y-1). The bottom-left candidate A0 may be located at the leftmost and bottom of the lower and leftmost luma location of S1, e.g., if the lower and leftmost luma location of S1 is luma location (0, S0_height+S1_height-1), the bottom-left candidate A0 may be located at location (-1, S0_height+S1_height), where N=S0_height+S1_height. The left candidate A1 may be located immediately to the left of the lower and leftmost luma location of S1 (e.g., the lower left corner of S1), for example, if the lower and leftmost luma location of S1 is luma location (0,S0_height+S1_height-1), then the left candidate A1 may be at luma location (-1,S0_height+1_height-1). The top candidate B1 may be located just above the upper and rightmost luma location of S1, for example, if the upper and rightmost luma location of S1 is (S0_width+S1_width-1,0), then the top candidate B1 may be located at (S0_width+S1_width-1,-1), where M=S0_width+S1_width. The top right candidate B0 may be located just above and to the right of the upper and rightmost luma location of the second region S1, for example, if the upper and rightmost luma location of S1 (e.g., the top right corner) is located at (S0_width+S1_width-1,0), then the top right candidate B0 may be located at (S0_width+S1_width,-1). Figure 8 illustrates Figure 7 with annotations showing luma locations including the lower and leftmost luma location of the second region S1 and the upper and rightmost luma location of the second region S1.
[0049] In some implementations, still referring to FIG. 8, when constructing a candidate list for region S1, if an exponential division exists, some potential candidates may be automatically marked as unavailable and removed from the list because such division may be performed on divided regions (or objects) in a frame with different motion information. Thus, it may be inferred that blocks associated with those candidates are likely to represent different objects with different motion, and therefore these candidates may be automatically marked as unavailable (e.g., not considered further, removed from the list, etc.). In the example of FIG. 7, for region S1, top-left candidate B2 may be automatically marked as unavailable because region S1 is likely not to share motion information with blocks located in top-left candidate B2.
[0050] FIG. 9 is a system block diagram illustrating a non-limiting example of a video encoder 900 capable of encoding video using inter prediction with exponential partitioning. The exemplary video encoder 900 receives an input video 905, which may first be segmented or divided according to a processing scheme such as a tree-structured coding block partitioning scheme (e.g., quad tree plus binary decision tree (QTBT)). An example of a tree-structured coding block partitioning scheme may include partitioning a picture frame into large block elements called coding tree units (CTUs). In some implementations, each CTU may be further partitioned one or more times into several sub-blocks called coding units (CUs). The end result of this partitioning may include a group of sub-blocks that may be called prediction units (PUs). Transform units (TUs) may also be utilized. Such partitioning schemes may include performing exponential partitioning in accordance with some aspects of the present subject matter. FIG. 8 illustrates an example of a frame QTBT division, and FIG. 11 illustrates an example of an exponential division at the CU level of the QTBT illustrated in FIG.
[0051] Continuing to refer to FIG. 9, an exemplary video encoder 900 may include an intra prediction processor 915, a motion estimation / compensation processor 920 (also referred to as an inter prediction processor) capable of supporting exponential partitioning, including AMVP and merge modes, a transform / quantization processor 925, an inverse quantization / inverse transform processor 930, an in-loop filter 935, a decoded picture buffer 940, and an entropy coding processor 945. In some implementations, the motion estimation / compensation processor 920 may perform inter prediction using exponential partitioning, including the use of AMVP and merge modes. Bitstream parameters signaling the exponential partitioning mode, AMVP mode, and merge mode may be input to the entropy coding processor 945 for inclusion in the output bitstream 950.
[0052] In operation, and continuing to refer to Figure 9, for each block of a frame of the input video 905, it may be determined whether the block should be processed via intra-picture prediction or using motion estimation / compensation. The block may be provided to an intra-prediction processor 910 or a motion estimation / compensation processor 920. If the block is to be processed via intra-prediction, the intra-prediction processor 910 may perform processing and output a predictor. If the block is to be processed via motion estimation / compensation, the motion estimation / compensation processor 920 may perform processing including the use of exponential partitioning with AMVP mode and merge mode and output a predictor.
[0053] Continuing to refer to FIG. 9, a residual may be formed by subtracting a predictor from the input video. The residual may be received by a transform / quantization processor 925, which may perform a transform process (e.g., a discrete cosine transform (DCT)) to generate coefficients, which may be quantized. The quantized coefficients and any associated signaling information may be provided to an entropy coding processor 945 for entropy encoding and inclusion in the output bitstream 950. The entropy encoding processor 945 may assist in encoding signaling information associated with the exponential partitioning mode, the AMVP mode, and the merge mode. In addition, the quantized coefficients may be provided to the inverse quantization / inverse transform processor 930, which may reconstruct the pixels, which may be combined with the predictor and processed by the in-loop filter 935, the output of which may be stored in the decoded picture buffer 940 for use by the motion estimation / compensation processor 920, which is capable of supporting exponential partitioning, AMVP, and merge modes.
[0054] FIG. 12 is a process flow diagram illustrating an example process 1200 for encoding video using exponential partitioning inter prediction according to some aspects of the present subject matter, which can reduce encoding complexity while increasing compression efficiency. At step 1210, a video frame may undergo initial block segmentation using a tree-structured coding block partitioning scheme, which may include, for example, partitioning a picture frame into CTUs and CUs. At step 1220, a block may be selected for exponential partitioning, which may include geometric partitioning or exponential partitioning using a nonlinear curve. The selection may include identifying, according to a metric rule, that the block should be processed according to the exponential partitioning mode.
[0055] At step 1230, with continued reference to Figure 12, an exponential division may be determined. Curves and / or curved line segments (e.g., 405) and / or straight lines and / or straight line segments may be determined that separate the pixels contained within a block into two non-rectangular regions (e.g., Region 0 and Region 1) according to their inter-frame motion, such that pixels (e.g., luma samples) in one of the regions (e.g., Region 0) have similar motion and pixels in the other region (e.g., Region 1) have similar motion.
[0056] Continuing with reference to FIG. 12, at step 1240, motion information of each non-rectangular region may be determined and processed using AMVP mode or merge mode. When processing a region using AMVP mode, a candidate list may be constructed by considering both spatial and temporal candidates, including spatial candidates as described above, where considering the candidates includes marking some candidates as unavailable. A motion vector may be selected from the list of motion vector candidates as a motion vector prediction, and a motion vector difference (e.g., residual) may be calculated. An index into the candidate list may be determined. In merge mode, a candidate list may be constructed by considering both spatial and temporal candidates, including spatial candidates as described above, where considering the candidates includes marking some candidates as unavailable. A motion vector may be selected from the list of motion vector candidates for the region to adopt the motion information of another block. An index into the candidate list may be determined.
[0057] At step 1250, with continued reference to FIG. 12, the determined exponential split and motion information may be signaled in the bitstream. Signaling the exponential split in the bitstream may include, for example, including an index to one or more predefined templates and / or coefficients. Signaling the motion information when processing a region using AMVP may include including a motion vector difference (e.g., residual) and an index to motion vector candidates in the bitstream. Signaling the motion information when processing a region using merge mode may include including an index to motion vector candidates in the bitstream.
[0058] 13 is a system block diagram illustrating an example decoder 600 capable of decoding a bitstream 1370 using exponential partitioning and inter prediction in accordance with some aspects of the present subject matter. The decoder 600 may include an entropy decoder processor 1310, an inverse quantization and inverse transform processor 1320, a deblocking filter 1330, a frame buffer 1340, a motion compensation processor 1350, and an intra prediction processor 1360. In some implementations, the bitstream 1370 includes parameters signaling an exponential partitioning mode, an AMVP mode, and a merge mode. The motion compensation processor 1350 may reconstruct pixel information using exponential partitioning and inter prediction as described in this disclosure.
[0059] In operation, a bitstream 1370 may be received by the decoder 600 and input to the entropy decoder processor 1310, which entropy decodes the bitstream into quantized coefficients. The quantized coefficients may be provided to the inverse quantization and inverse transform processor 1320, which may perform inverse quantization and inverse transform to create a residual signal, which may be added to the output of the motion compensation processor 1350 or the intra-prediction processor 1360, depending on the processing mode. The output of the motion compensation processor 1350 and the intra-prediction processor 1360 may include block predictions based on previously decoded blocks. The sum of the predictions and residuals may be processed by the deblocking filter 1330 and stored in the frame buffer 1340. For a given block (e.g., CU or PU), when the bitstream 1370 signals that the partitioning mode is exponential partitioning, the motion compensation processor 1350 may build a prediction based on the exponential partitioning approach described herein using either AMVP or merge mode as described herein.
[0060] 14 is a process flow diagram illustrating an example process 1400 for decoding a bitstream using exponential partitioning and using inter prediction in accordance with some aspects of the present subject matter. At step 1410, a bitstream is received. Receiving may include extracting and / or parsing the bitstream and associated signaling information from the bitstream, including parsing the current block and associated signaling information from the bitstream.
[0061] At step 1420, with continued reference to FIG. 14, the current block may be partitioned into a first region and a second region via an exponential partitioning mode. The partitioning may include determining whether the exponential partitioning mode is enabled (e.g., true) for the block, indicating the use of exponential partitioning using a non-linear curve. If the exponential partitioning mode is not enabled (e.g., false), the decoder may process the block using an alternative exponential partitioning mode, such as geometric partitioning, and parameters related to the geometric partitioning, including, but not limited to, line segment endpoints, coefficients, or the like, may be received from the bitstream as described above. If the exponential partitioning mode is enabled (e.g., true), the decoder may extract or determine one or more parameters that characterize the exponential partitioning. These parameters may include, for example, exponential coefficient indexes, exponential coefficient values, orientation template indexes, and / or indexes of the start and end points of the curve (e.g., P1P2). The extraction or determination may include identifying and retrieving the parameters from the bitstream (eg, parsing the bitstream).
[0062] Continuing with reference to FIG. 14, at step 1430, a motion vector associated with a region of the first region or the second region may be determined. Determining the motion vector may include determining whether the motion information of the region should be determined using the AMVP mode or the merge mode. When processing the region using the AMVP mode, a candidate list may be constructed by considering both spatial and temporal candidates, including the spatial candidates described above, and considering the candidates includes marking some candidates as unavailable. A motion vector may be selected from the list of motion vector candidates as a motion vector prediction, and a motion vector difference (e.g., residual) may be calculated. In the merge mode, determining may include constructing a candidate list of spatial and temporal candidates for each region. The spatial candidates for each region may be spatial candidates as described above with respect to FIGS. 5-8. Constructing the candidate list may include automatically marking candidates as unavailable and removing the unavailable candidates from the candidate list. An index into the constructed candidate list may be parsed from the bitstream and used to select a final candidate from the candidate list. The motion information for the current region may be determined to be identical to the motion information of the final candidate (eg, the motion vectors for the region may be taken from the final candidate).
[0063] In step 1440, with continued reference to FIG. 14, the current block may be decoded using the determined motion vector.
[0064] 14, a few variations have been described in detail above, but other modifications or additions are possible. For example, in some implementations, exponential division may be applied to symmetric blocks (8x8, 16x16, 32x32, 64x64, 128x128, and the like) and various asymmetric blocks (8x4, 16x8, and the like).
[0065] Continuing with reference to FIG. 14, the partitioning may be signaled in the bitstream based on a rate-distortion decision at the encoder. The coding may be based on a combination of a regular predefined partition (e.g., a template), temporal and spatial prediction of the partition, and an additive offset. Each exponentially partitioned region may utilize motion compensated or intra prediction. The boundaries of the predicted regions may be smoothed before the residual is added. For residual coding, the encoder may choose between a regular rectangular DCT for the entire block and a shape-adaptive DCT for each region.
[0066] Continuing to refer to FIG. 14, in some implementations, a quad tree plus binary decision tree (QTBT) may be implemented. In QTBT, at the coding tree unit level, the splitting parameters of QTBT may be dynamically derived to fit local characteristics without transmitting any overhead. Subsequently, at the coding unit (CU) level, a joint classifier decision tree structure may eliminate unnecessary iterations and control the risk of erroneous prediction. In some implementations, exponential splitting may be available as an additional splitting option available at all leaf nodes of QTBT. In some implementations, exponential splitting is available as an additional coding tool at the CU level of QTBT splitting. For example, FIG. 8 illustrates an example of QTBT splitting of a frame, and FIG. 11 illustrates an example of exponential splitting at the CU level of QTBT illustrated in FIG. 8.
[0067] In some implementations, the decoder includes an exponential split processor, which generates an exponential split for the current block and can provide all split-related information for the dependent processes. The exponential split processor can directly affect motion compensation, since motion compensation can be performed on a segment-by-segment basis when a block is split exponentially. Additionally, the processor can provide shape information to the intra-prediction processor and the transform coding processor.
[0068] In some implementations, additional syntax elements may be signaled at different hierarchical levels of the bitstream. An enable flag may be coded in the sequence parameter set (SPS) to enable exponential splitting for the entire sequence. Additionally, a CTU flag may be coded at the coding tree unit (CTU) level to indicate whether any coding unit (CU) uses exponential splitting. A CU flag may be coded to indicate whether the current coding unit utilizes exponential splitting. Parameters that define the curve on the block may be coded. For each region, a flag that specifies whether the current region is inter-predicted or intra-predicted may be decoded.
[0069] In some implementations, a minimum region size may be defined.
[0070] The subject matter described herein provides many technical advantages. For example, some implementations of the present subject matter may provide block splitting that increases compression efficiency. In some implementations, by implementing the splitting in a manner that more closely follows object boundaries, effective visual effects can be achieved. Similarly, in some implementations, by implementing the splitting in a manner that more closely follows object boundaries, blocking artifacts at object boundaries can be reduced.
[0071] It should be noted that any one or more of the aspects and embodiments described herein may be conveniently implemented using digital electronic circuitry, integrated circuits, specially designed application specific integrated circuits (ASICs), field programmable gate array (FPGA) computer hardware, firmware, software, and / or combinations thereof, realized and / or implemented in one or more machines programmed according to the teachings herein (e.g., one or more computing devices utilized as user computing devices for electronic documents, one or more server devices such as document servers, etc.), as would be apparent to one skilled in the computer arts. These various aspects or features may include implementation in one or more computer programs and / or software executable and / or readable on a programmable system including at least one programmable processor, which may be dedicated or general purpose, coupled to receive data and instructions from and transmit data and instructions to a storage system, at least one input device, and at least one output device. Appropriate software coding may be readily prepared by skilled programmers based on the teachings of the present disclosure, as would be apparent to one skilled in the software arts. The aspects and implementations discussed above that employ software and / or software modules may also include suitable hardware to assist in implementing the machine-executable instructions of the software and / or software modules.
[0072] Such software may be a computer program product employing a machine-readable storage medium. A machine-readable storage medium may be any medium capable of storing and / or encoding a sequence of instructions for execution by a machine (e.g., a computing device) and causing the machine to perform any one of the methods and / or embodiments described herein. Examples of machine-readable storage media include, but are not limited to, magnetic disks, optical disks (e.g., CDs, CD-Rs, DVDs, DVD-Rs, etc.), magneto-optical disks, read-only memory "ROM" devices, random access memory "RAM" devices, magnetic cards, optical cards, solid-state memory devices, EPROMs, EEPROMs, programmable logic devices (PLDs), and / or any combination thereof. Machine-readable media, as used herein, is intended to include a single medium as well as a collection of physically separate media, such as, for example, a collection of compact discs or one or more hard disk drives in combination with a computer memory. As used herein, machine-readable storage media does not include a transitory form of signal transmission.
[0073] Such software may also include information (e.g., data) carried as a data signal on a data carrier, such as a carrier wave. For example, machine-executable information may be included as a data carrying signal embodied in a data carrier, which signal encodes a sequence of instructions, or a portion thereof, for execution by a machine (e.g., a computing device), as well as any associated information (e.g., data structures and data) that causes the machine to perform any one of the methods and / or embodiments described herein.
[0074] Examples of computing devices include, but are not limited to, e-book reading devices, computer workstations, terminal computers, server computers, handheld devices (e.g., tablet computers, smart phones, etc.), web appliances, network routers, network switches, network bridges, any machine capable of executing a sequence of instructions that define actions to be taken by the machine, and any combination thereof. In one example, a computing device may include and / or be included within a kiosk.
[0075] 15 shows a diagrammatic representation of one embodiment of a computing device as an exemplary form of a computer system 1500 on which a set of instructions for causing a control system to perform any one or more of the aspects and / or methods of the present disclosure may be executed. It is also contemplated that multiple computing devices may be utilized to implement a set of instructions specifically configured to cause one or more of the devices to perform any one or more of the aspects and / or methods of the present disclosure. The computer system 1500 includes a processor 1504 and a memory 1508, which communicate with each other and with other components via a bus 1512. The bus 1512 may include any of several types of bus structures, including, but not limited to, a memory bus, a memory controller, a peripheral bus, a local bus, and any combination thereof using any of a variety of bus architectures.
[0076] The memory 1508 may include a variety of components (e.g., machine-readable media), including, but not limited to, random access memory components, read-only components, and any combination thereof. In one example, a basic input / output system 1516 (BIOS), containing the basic routines that help to transfer information between elements within the computer system 1500, such as during start-up, may be stored in the memory 1508. The memory 1508 may also include (e.g., stored on one or more machine-readable media) instructions (e.g., software) 1520 that embody any one or more of the aspects and / or methods of the present disclosure. In another example, the memory 1508 may further include any number of program modules, including, but not limited to, an operating system, one or more application programs, other program modules, program data, and any combination thereof.
[0077] The computer system 1500 may also include a storage device 1524. Examples of storage devices (e.g., storage device 1524) include, but are not limited to, hard disk drives, magnetic disk drives, optical disk drives combined with optical media, solid-state memory devices, and any combination thereof. The storage device 1524 may be connected to the bus 1512 by an appropriate interface (not shown). Exemplary interfaces include, but are not limited to, SCSI, Advanced Technology Attachment (ATA), Serial ATA, Universal Serial Bus (USB), IEEE 1394 (FIREWIRE®), and any combination thereof. In one example, the storage device 1524 (or one or more components thereof) may be removably interfaced with the computer system 1500 (e.g., via an external port connector (not shown)). In particular, the storage device 1524 and associated machine-readable media 1528 may provide non-volatile and / or volatile storage of machine-readable instructions, data structures, program modules, and / or other data for the computer system 1500. In one example, the software 1520 may reside, completely or partially, within the machine-readable medium 1528. In another example, the software 1520 may reside, completely or partially, within the processor 1504.
[0078] The computer system 1500 may also include input devices 1532. In one example, a user of the computer system 1500 may type commands and / or other information into the computer system 1500 via the input devices 1532. Examples of the input devices 1532 include, but are not limited to, an alphanumeric input device (e.g., a keyboard), a pointing device, a joystick, a gamepad, an audio input device (e.g., a microphone, a voice response system, etc.), a cursor control device (e.g., a mouse), a touchpad, an optical scanner, a video capture device (e.g., a still camera, a video camera), a touch screen, and any combination thereof. The input devices 1532 may be interfaced to the bus 1512 via any of a variety of interfaces (not shown), including, but not limited to, a serial interface, a parallel interface, a game port, a USB interface, a FIREWIRE® interface, an interface directly to the bus 1512, and any combination thereof. The input devices 1532 may include a touch screen interface, which may be part of or separate from the display 1536, discussed further below. The input device 1532 may be utilized as a user selection device for selecting one or more graphical representations in a graphical interface as described above.
[0079] A user may also input commands and / or other information to the computer system 1500 via a storage device 1524 (e.g., a removable disk drive, a flash drive, etc.) and / or a network interface device 1540. A network interface device, such as the network interface device 1540, may be utilized to connect the computer system 1500 to one or more of a variety of networks, such as the network 1544, and one or more remote devices 1548 connected thereto. Examples of network interface devices include, but are not limited to, a network interface card (e.g., a mobile network interface card, a LAN card), a modem, and any combination thereof. Examples of networks include, but are not limited to, a wide area network (e.g., the Internet, a corporate network), a local area network (e.g., a network associated with an office, a building, a campus, or other relatively small geographic space), a telephone network, a data network associated with a telephone / voice provider (e.g., a data and / or voice network of a mobile communications provider), a direct connection between two computing devices, and any combination thereof. A network, such as the network 1544, may employ wired and / or wireless modes of communication. In general, any network topology may be used. Information (eg, data, software 1520 , etc.) may be communicated to and / or from computer system 1500 via network interface device 1540 .
[0080] The computer system 1500 may further include a video display adapter 1552 for communicating images displayable on a display device, such as the display device 1536. Examples of display devices include, but are not limited to, a liquid crystal display (LCD), a cathode ray tube (CRT), a plasma display, a light emitting diode (LED) display, and any combination thereof. The display adapter 1552 and the display device 1536 may be utilized in combination with the processor 1504 to provide graphical representations of aspects of the disclosure. In addition to a display device, the computer system 1500 may include one or more other peripheral output devices, including, but not limited to, audio speakers, a printer, and any combination thereof. Such peripheral output devices may be connected to the bus 1512 via a peripheral interface 1556. Examples of peripheral interfaces include, but are not limited to, a serial port, a USB connection, a FIREWIRE® connection, a parallel connection, and any combination thereof.
[0081] The foregoing is a detailed description of exemplary embodiments of the present invention. Various modifications and additions may be made without departing from the spirit and scope of the present invention. The features of each of the various embodiments described above may be combined with features of other described embodiments as appropriate to provide a combination of features in a related new embodiment. Furthermore, while the foregoing describes several separate embodiments, what is described herein is merely illustrative of the application of the principles of the present invention. In addition, although certain methods herein may be illustrated and / or described as being performed in a specific order, the order may be varied considerably within ordinary skill in order to achieve the embodiments as disclosed herein. Thus, this description is intended to be taken only as an example, and is not intended to otherwise limit the scope of the present invention.
[0082] In the above description and in the claims, phrases such as "at least one of" or "one or more of" may occur followed by a conjunctive enumeration of elements or features. The term "and / or" may also occur within a list of two or more elements or features. Unless otherwise implied or explicitly contradicted by the context in which such a phrase is used, this is intended to mean any of the elements or features listed individually or in combination with any of the other listed elements or features. For example, the phrases "at least one of A and B," "one or more of A and B," and "A and / or B" are each intended to mean "A only, B only, or both A and B." A similar interpretation is intended with respect to lists containing more than two items. For example, the phrases "at least one of A, B, and C," "one or more of A, B, and C," and "A, B, and / or C" are each intended to mean "A only, B only, C only, both A and B, both A and C, both B and C, or both A, B and C." Additionally, use of the term "based on" above and in the claims is intended to mean "based at least on," such that unrecited features or elements are also allowed.
[0083] The subject matter described herein may be embodied as a system, an apparatus, a method, and / or an article, depending on the desired configuration. The implementations described in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the subject matter described. Although some variations have been described in detail above, other modifications or additions are possible. In particular, further features and / or variations may be provided in addition to those described herein. For example, the implementations described above may be directed to various combinations and subcombinations of the disclosed features and / or combinations and subcombinations of some further features disclosed above. In addition, the logic flow depicted in the accompanying figures and / or described herein does not necessarily require the particular order or sequential order shown to achieve the desired results. Other implementations may be within the scope of the following claims.
Claims
1. receiving a bitstream including a coded picture, the coded picture including a block of coded pixels and signaling information, the signaling information including a first partition index useful for determining a start point of a non-linear, non-rectangular partition and a second partition index useful for determining an end point of the non-linear, non-rectangular partition; determining a start point of a non-linear, non-rectangular division in the block using the first division index, the start point being located on a first side of the block at a first offset distance from a first corner of the block; determining an end point of the non-linear, non-rectangular partition in the block using the second partition index, the end point being located on a second side of the block at a second offset distance from a second corner of the block; generating a first predicted pixel value in a first region on a first side of the non-linear, non-rectangular partition; generating a second predicted pixel value in a second region on a second side of the non-linear, non-rectangular partition; decoding the block using the first predicted pixel value and the second predicted pixel value; a decoder configured to:
2. 2. The decoder of claim 1, wherein a first motion vector selected from a first set of motion vector candidates is used to generate the first predicted pixel value and a second motion vector selected from a second set of motion vector candidates is used to generate the second predicted pixel value.
3. The decoder comprises: smoothing the first predicted pixel value and the second predicted pixel value across the non-linear, non-rectangular partition; decoding the coded block by adding residual pixel values to the smoothed first and second predicted pixel values; A decoder according to claim 1.
4. The decoder of claim 1 , wherein the blocks are coding tree units.
5. 2. The decoder of claim 1, wherein the blocks are N×N, where N is one of 128, 64, or 32.
6. 2. The decoder of claim 1, wherein the non-linear, non-rectangular divisions are curvilinear.
7. receiving a bitstream including a coded picture, the coded picture including a coding tree unit including a plurality of coding units, and signaling information, the signaling information including a first partition index useful for determining a start point of a non-linear, non-rectangular partition in the coding tree unit, and a second partition index useful for determining an end point of the non-linear, non-rectangular partition in the coding tree unit; determining a start point and an end point of the non-linear, non-rectangular partition in the coding tree unit using the first partition index and the second partition index; generating a first predicted pixel value in a first region on a first side of the non-linear, non-rectangular partition using a first motion vector from a first set of candidate motion vectors; generating a second predicted pixel value in a second region on a second side of the non-linear, non-rectangular partition using a second motion vector from a second set of candidate motion vectors; smoothing the first predicted pixel value and the second predicted pixel value across the non-linear, non-rectangular partition; decoding the coding tree unit by adding residual pixel values to the smoothed first and second predicted pixel values; a decoder configured to:
8. the bitstream includes a first motion vector candidate index used to identify the first motion vector from the first set of motion vector candidates; the bitstream includes a second motion vector candidate index used to identify the second motion vector from the second set of motion vector candidates. A decoder according to claim 7.
Citation Information
Patent Citations
Method and Apparatus for Adaptive Geometric Segmentation for Video Decoding Process
JP2009545919A
Parallel-friendly merge candidates for video coding
JP2014517658A
Adaptive Geometric Partitioning For Video Encoding
US20090196342A1
Parallelization friendly merge candidates for video coding
US20130077691A1