Method and apparatus for image encoding and decoding
Patent Information
- Application Number
- JP2024212587
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2017-03-27
- Filing Date
- 2024-12-05
- Publication Date
- 2025-03-11
- Estimated Expiration
- 2038-03-13
Smart Images

Figure 2025032230000001_ABST
Abstract
Description
[Technical field]
[0001] The present principles relate generally to methods and apparatus for encoding and decoding images, and more particularly to methods and apparatus for encoding and decoding image blocks at image borders. [Background technology]
[0002] To achieve high compression efficiency, video coding schemes usually employ prediction and transformation to exploit spatial and temporal redundancy in video content. In general, intra- or inter-prediction is used to exploit intra- or inter-frame correlation, and then the difference between the original and predicted image, often denoted as residual, is transformed, quantized, and entropy coded. To reconstruct the video, the compressed data is decoded by an inverse process corresponding to prediction, transformation, quantization, and entropy coding.
[0003] In HEVC coding ("ITU-T H.265 Telecommunication standardization sector of ITU (10 / 2014), series H: audiovisual and multimedia systems, infrastructure of audiovisual services-coding of moving video, High efficiency video coding, Recommendation ITU-T H.265"), an image is divided into square coding tree units (CTUs) of configurable size, typically 64x64, 128x128, or 256x256. The CTUs are the root of a quadtree division into coding units (CUs). For each CU, a prediction mode is signaled indicating whether the CU is coded using intra or inter prediction. The coding units are divided into one or more prediction units (PUs) to form the root of a quadtree (known as a transform tree) division into transform units (TUs). A PU may have a square or rectangular shape, while a TU has a square shape. Each PU is assigned some prediction information, e.g., motion information, spatial intra prediction, etc.
[0004] The QTBT (Quad-Tree plus Binary-Tree) coding tool ("Algorithm Description of Joint Exploration Test Model 3", Document JVET-C1001_v3, Joint Video Exploration Team of ISO / IEC JTC1 / SC29 / WG11, 3rd Meeting, May 26-June 1, 2015, Geneva, Switzerland) is a new coding tool that provides a more flexible CTU representation than the CU / PU / TU arrangement in the HEVC standard. This coding tool was introduced in the Joint Exploration Model (JEM), the reference software for the Joint Video Exploration Team of ISO / IEC JTC1 / SC29 / WG11. The QTBT coding tool defines a coding tree in which coding units can be partitioned in both quad-tree and binary-tree ways. Such a coding tree representation of a coding tree unit is illustrated in FIG. 1, where the solid lines indicate the quad-tree partitioning of the CU and the dotted lines indicate the binary-tree partitioning, and is further illustrated in FIG. 2. In Figure 2, the solid lines represent quadtree partitions, and the dotted lines represent halves that are spatially embedded within the leaves of the quadtree. In this figure, a value of 1 corresponds to a vertical bisection, and a value of 0 corresponds to a horizontal bisection.
[0005] The division of the CTU into coding units is determined at the encoder side, for example through a rate-distortion optimization procedure that consists of determining the QTBT representation of the CTU at the minimum rate-distortion cost. In the QTBT representation, the CUs have either a square or a rectangle. The size of the coding units is always a power of two, typically between 4 and 128. The QTBT decomposition of the CTU includes two stages, i.e., the CTU is first divided into four CUs in a quadtree manner, and then each quadtree leaf can be further divided into two CUs in a bisection manner or into four CUs in a quadtree manner, as illustrated in FIG. 2.
[0006] In the QTBT representation, the CU is not further divided into PUs or TUs. In other words, once the division of the CTU is determined, each CU is considered as a single prediction unit and a single transform unit. However, such a QTBT representation only allows symmetric division of the CU, as illustrated in FIG. 3. FIG. 3 shows four division modes allowed by QTBT. Mode NO_SPLIT indicates that the CU is not further divided. Mode QT_SPLIT indicates that the CU is divided into four quadrants according to a quadtree, and the quadrants are separated by two division lines. Mode HOR indicates that the CU is divided horizontally into two CUs of equal size by one division line. Mode VER indicates that the CU is divided vertically into two CUs of equal size by one division line. The division lines are represented by dashed lines in FIG. 3.
[0007] In "Asymmetric Coding Units in QTBT", Document: JVET-D0064, Joint Video Exploration Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11, 4th Meeting: Chengdu, China, 15-21 October 2016, a new asymmetric split mode is introduced in QTBT. A CU can thus be split horizontally into two coding units with rectangular sizes (w,h / 4) and (w,3h / 4), respectively, or vertically into two coding units with rectangular sizes (w / 4,h) and (3w / 4,h), respectively, as shown in Figure 4. Moreover, a CU whose size is a multiple of 3 in width or height can be further split in a bisection manner horizontally or vertically if the sizes are identical. The two coding units are separated by a single split line, represented by a dashed line in Figure 4.
[0008] In "Multi-Type-Tree", Document: JVET-D0117-r1, Joint Video Exploration Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11, 4th Meeting: Chengdu, China, 15-21 October 2016, a new triple split mode is introduced. A CU can thus be split horizontally into three coding units of rectangular sizes (w,h / 4), (w,h / 2) and (w,h / 4) respectively, or vertically into three coding units of rectangular sizes (w / 4,h), (w / 2,h) and (w / 4,h) respectively, as shown in Figure 5. The three coding units are separated by two split lines, which are represented by dashed lines in Figure 5.
[0009] In HEVC and JEM, most of these modes are not allowed for blocks located at the edge of the diagram, and therefore they cannot be coded efficiently. Summary of the Invention
[0010] A decoding method for decoding a current block comprising at least a portion of an image is disclosed, the method comprising: - determining whether the current block extends beyond the image boundary; - for each of the plurality of partition modes, determining whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether the size of the block portion within the image along the image border, i.e. the remainder resulting from the partition, is a multiple of a minimum block size; - decoding a current partition mode of the current block from the bitstream in response to the allowed partition modes; and - Decrypting the current block according to the current partitioning mode Includes.
[0011] A decoding device is disclosed that is configured to decode a current block, the current block comprising at least a portion of an image, the device comprising: - means for determining whether the current block extends beyond an image boundary; - means for determining, for each of a plurality of partition modes, whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether a size of the block portion within the image along the image border is a multiple of a minimum block size; means for decoding a current partition mode of a current block from the bitstream in response to an allowed partition mode; and - means for decrypting the current block according to the current partitioning mode; Includes.
[0012] A decoding device is disclosed, the device comprising at least a communication interface configured to access a bitstream; - determining whether a current block, comprising at least a portion of an image, extends beyond a boundary of the image; - for each partition mode of the plurality of partition modes, determining whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether a size of the block portion within the image along the image border is a multiple of a minimum block size; - decoding a current partition mode of the current block from the accessed bitstream in response to the allowed partition mode; and - Decrypting the current block according to the current partitioning mode At least one processor configured to: Includes.
[0013] The following embodiments are applied to the decoding method and the decoding device disclosed above.
[0014] According to a particular embodiment, the plurality of splitting modes includes at least two of the following splitting modes, where h is the height of the current block and w is the width of the current block: - horizontal division of the block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; - horizontal division of the block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; - dividing the block vertically into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; - dividing the block vertically into one right sub-block of width w / 4 and one left sub-block of width 3w / 4, - horizontally dividing the block into one sub-block of height h / 4, one central sub-block of height h / 2 and one sub-block of height h / 4, - dividing the block vertically into one sub-block of width w / 4, one central sub-block of width w / 2 and one sub-block of width w / 4, - horizontally dividing the block into two sub-blocks of height h / 2, and - Dividing the block vertically into two sub-blocks of width w / 2.
[0015] According to a specific characteristic, the minimum block size in at least one of the height and width is equal to 4.
[0016] An encoding method for encoding a current block comprising at least a portion of an image is disclosed, the method comprising: - determining whether the current block extends beyond the image boundary; - for each partition mode of the plurality of partition modes, determining whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether a size of the block portion within the image along the image border is a multiple of a minimum block size; - encoding into the bitstream a current partition mode of the current block determined in response to the allowed partition modes; and - encoding the current block into a bitstream according to the current partitioning mode; Includes.
[0017] An encoding device is disclosed that is configured to encode a current block comprising at least a portion of an image, the device comprising: - means for determining whether the current block extends beyond an image boundary; - means for determining, for each of a plurality of partition modes, whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether a size of the block portion within the image along the image border is a multiple of a minimum block size; - means for encoding into a bitstream a current partition mode of the current block determined in response to the allowed partition modes; and - means for encoding the current block into a bitstream according to a current partitioning mode; Includes.
[0018] An encoding device is disclosed that includes a communication interface configured to at least access a current block that includes at least a portion of an image. determining whether the current block being accessed extends beyond an image boundary; - for each partition mode of the plurality of partition modes, determining whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether a size of the block portion within the image along the image border is a multiple of a minimum block size; - encoding into the bitstream a current partition mode of the current block determined in response to the allowed partition modes; and - encoding the current accessed block into a bitstream according to the current partitioning mode; The method further includes at least one processor configured to:
[0019] A bitstream is disclosed, the bitstream comprising: - coded data representative of a current partition mode of a current block determined in response to the allowed partition modes, the current block comprising at least a portion of an image; - encoded data representing the current block encoded according to the current partitioning mode Including, The allowed split modes are: - determining whether the current block extends beyond the image boundary; - for each of the plurality of partition modes, determining whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether the size of the block portion within the image along the image border is a multiple of the minimum block size. It is judged by.
[0020] 1. A non-transitory processor-readable medium having a bitstream stored thereon, the bitstream comprising: - coded data representative of a current partition mode of a current block determined in response to the allowed partition modes, the current block comprising at least a portion of an image; - encoded data representing the current block encoded according to the current partitioning mode Including, The allowed split modes are: - determining whether the current block extends beyond the image boundary; - for each of the plurality of partition modes, determining whether that partition mode is allowed for the current block by checking whether at least one of the partition lines is co-located with one of the image borders or whether the size of the block portion within the image along the image border is a multiple of the minimum block size. It is judged by.
[0021] A transmission method and apparatus for transmitting the aforementioned bitstream are also disclosed.
[0022] The following embodiments apply to the encoding method, encoding device, bitstream, processor-readable medium, transmitting method and transmitting device disclosed above.
[0023] The multiple split modes include at least two of the following split modes, where h is the height of the current block and w is the width of the current block: - horizontal division of the block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; - horizontal division of the block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; - dividing the block vertically into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; - dividing the block vertically into one right sub-block of width w / 4 and one left sub-block of width 3w / 4, - horizontally dividing the block into one sub-block of height h / 4, one central sub-block of height h / 2 and one sub-block of height h / 4, - dividing the block vertically into one sub-block of width w / 4, one central sub-block of width w / 2 and one sub-block of width w / 4, - horizontally dividing the block into two sub-blocks of height h / 2, and - Dividing the block vertically into two sub-blocks of width w / 2.
[0024] According to a specific characteristic, the minimum block size in at least one of the height and width is equal to 4. [Brief description of the drawings]
[0025] [Figure 1] 1 represents a coding tree unit that has been split into smaller coding units according to various splitting modes. [Diagram 2] The division of the coding tree unit in FIG. 1 is represented in the form of a tree. [Diagram 3] A symmetric bisection mode is illustrated in addition to the quadtree and no-split modes. [Figure 4] 3 illustrates an asymmetric split mode. [Diagram 5] Illustrates the symmetrical three-way mode. [Figure 6] It represents blocks divided by quadtrees that extend beyond the image boundary. [Figure 7] 1 illustrates an exemplary architecture of a transmitter configured to encode an image into a bitstream in accordance with a specific, non-limiting embodiment. [Figure 8] 1 illustrates an exemplary video encoder in accordance with a specific, non-limiting embodiment. [Figure 9] 1 illustrates an exemplary architecture of a receiver configured to decode images in a bitstream in accordance with a specific, non-limiting embodiment. [Figure 10] 1 illustrates an exemplary video decoder according to a specific, non-limiting embodiment. [Figure 11] 2 illustrates a flow diagram of a method for decoding a block of an image from a bitstream according to a specific, non-limiting embodiment. [Figure 12] 1 illustrates a flow diagram of a method for decoding syntax according to a specific, non-limiting embodiment. [Figure 13] Represents a division of a block that extends beyond an image boundary. [Figure 14-15] Illustrates syntactic pruning. [Figure 16] Represents a division of a block that extends beyond an image boundary. [Figure 17] 1 illustrates a flow diagram of a method for encoding a block of an image into a bitstream according to a specific, non-limiting embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0026] It should be understood that the figures and descriptions are simplified to illustrate elements suitable for a clear understanding of the present principles, while many other elements found in a typical encoding and / or decoding device are omitted for the sake of clarity. It should be understood that although the terms first and second may be used herein to describe various elements, these elements should not be limited by these terms. These terms are used only to distinguish one element from another.
[0027] An image is an array of luma samples in monochrome format, or two corresponding arrays of luma samples and chroma samples in 4:2:0, 4:2:2, and 4:4:4 color formats. In general, a "block" addresses a specific region in the sample array (e.g., luma Y), and a "unit" includes arranged blocks of all color components (luma Y and possibly chroma Cb and chroma Cr). A slice is a basic coding unit of an integer number, such as an HEVC coding tree unit or an H.264 macroblock unit. A slice may consist of a complete image as well as a portion of it. Each slice may include one or more slice fragments.
[0028] In the following, the term "block" or "image block" can be used to refer to any one of CTU, CU, PU, TU, CB, PB, and TB. In addition, the term "block" or "image block" can be used to refer to macroblocks, partitions, and subblocks as specified in H.264 / AVC or other video coding standards, and more generally to arrays of samples of various sizes. JEM does not distinguish between CU, PU, and TU, since a CU is a block of samples to which the same transform and prediction information is applied. A CU may be divided into several coding units according to a partition mode. A line dividing a coding unit within a larger coding unit is called a partition line.
[0029] In the following, the terms "reconstructed" and "decoded" may be used interchangeably. Usually, but not necessarily, "reconstructed" is used on the encoder side, while "decoded" is used on the decoder side. It should be noted that the terms "decoded" or "reconstructed" may mean that the bitstream is partially "decoded" or "reconstructed", e.g., the signal obtained after deblocking filtering and before SAO filtering, and the reconstructed samples may differ from the final decoded output used for display. The terms "picture", "image", and "frame" may also be used interchangeably. The terms "edge" and "boundary" may be used interchangeably.
[0030] Various embodiments are described with respect to the HEVC standard. However, the present principles are not limited to HEVC and may be applied to other standards, recommendations, and extensions thereof, including, for example, HEVC or HEVC extensions such as Format Range (RExt), Scalability (SHVC), Multi-View (MV-HEVC) extensions, and H.266. Various embodiments are described with respect to encoding / decoding slices. They may be applied to encode / decode an entire image or an entire sequence of images.
[0031] Various methods have been described above, each of which includes one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for proper operation of the method, the order and / or use of specific steps and / or actions may be varied or combined.
[0032] Enabling new partition modes as shown in Figures 3, 4 and 5 may dramatically increase the signaling cost. Therefore, there is a need to improve the syntax without degrading the quality of the reconstructed image. Blocks completely inside the image may use all types of partition modes. However, for blocks located on the border / edge of the image, especially on the right and bottom borders of the image (in the case of classical raster scan order or Z-scan), some of the partition modes may not be allowed, especially if the block extends outside the image. In HEVC and JEM, if a block extends partially outside the image, it is necessarily partitioned according to the quadtree shown in Figure 6. In this case, there is no need to signal a partition mode, since only a single partition mode is allowed for these partially outside blocks. Indeed, once it is determined that a block extends partially outside the image, the partition mode for this block is inferred to be quadtree partitioning (e.g., QT_SPLIT). However, by inferring the partition mode to be quadtree partitioning, the quality of the reconstructed blocks at the border of the image may be degraded, since the number of partition modes for coding that block is dramatically limited. In addition, such methods require that the image width and height are multiples of the minimum coding block size (typically 4 pixels) to ensure that the image edges are reached by successive quadtree divisions. In the case of multiple tiles or slices in a frame, the same problem will arise at the tile / slice boundaries. This can lead to similar quality issues at the tile / slice edges, especially when used with certain layouts for 360° video.
[0033] FIG. 7 illustrates an example architecture of a transmitter 1000 configured to encode images into a bitstream according to a specific, non-limiting embodiment.
[0034] The transmitter 1000 includes one or more processor(s) 1005, which may include, for example, a CPU, a GPU, and / or a DSP (English acronym for digital signal processor), together with an internal memory 1030 (e.g., RAM, ROM, and / or EPROM). The transmitter 1000 includes one or more communication interface(s) 1010 (e.g., keyboard, mouse, touchpad, webcam), each adapted to display output information and / or allow a user to input commands and / or data, as well as a power source 1020, which may be external to the transmitter 1000. The transmitter 1000 may also include one or more network interface(s) (not shown). The encoder module 1040 represents a module that may be included within a device to perform encoding functions. Additionally, the encoder module 1040 may be implemented as a separate element of the transmitter 1000, or may be incorporated within the processor(s) 1005 as a combination of hardware and software, as is known to those skilled in the art.
[0035] The image may be acquired from a source. According to a different embodiment, the source may be: -Local memory, e.g. video memory, RAM, flash memory, hard disk, - storage interfaces, e.g. interfaces with mass storage, ROM, optical disks or magnetic supports; a communication interface, such as a wired interface (e.g. a bus interface, a wide area network interface, a local area network interface) or a wireless interface (such as an IEEE 802.11 interface or a Bluetooth interface), and - Image capture circuitry (e.g. sensors such as CCD (or Charge Coupled Device) or CMOS (or Complementary Metal Oxide Semiconductor)) It can be, but is not limited to,
[0036] According to different embodiments, the bitstream can be transmitted to a destination. As an example, the bitstream is stored in a remote or local memory, for example a video memory or RAM, a hard disk. In a variant, the bitstream is transmitted to a storage interface, for example an interface with a mass storage, a ROM, a flash memory, an optical disk or a magnetic support, and / or transmitted through a communication interface, for example an interface to a point-to-point link, a communication bus, a point-to-multipoint link or a broadcast network.
[0037] According to an exemplary and non-limiting embodiment, the transmitter 1000 further comprises a computer program stored in the memory 1030. The computer program comprises instructions that, when executed by the transmitter 1000, in particular by the processor 1005, enable the transmitter 1000 to carry out the encoding method described with reference to FIG. 17. According to a variant, the computer program is stored on a persistent digital data support external to the transmitter 1000, for example on an external storage medium, such as a HDD, a CD-ROM, a DVD, a read-only and / or DVD drive and / or a DVD read / write drive, all known in the art. The transmitter 1000 therefore comprises a mechanism for reading the computer program. Furthermore, the transmitter 1000 may have access through a USB port (not shown) corresponding to one or more Universal Serial Bus (USB) type storage devices (for example, "memory sticks").
[0038] According to an exemplary and non-limiting embodiment, the transmitter 1000 comprises: -Mobile devices, -Communication devices, -Game consoles, - a tablet (or tablet computer), -Laptop, -Still camera, -Video camera, - Coding chips or devices / equipment, -Still image servers, and -Video server (e.g. broadcast server, video-on-demand server or web server) It can be, but is not limited to,
[0039] Figure 8 shows an exemplary video encoder 100, for example an HEVC video encoder or a JEM type encoder, adapted to perform the encoding method of Figure 17. The encoder 100 is an example of a transmitter 1000 or part of such a transmitter 1000.
[0040] To encode, an image is typically divided into basic coding units, e.g., coding tree units (CTUs) in HEVC or macroblock units in H.264. A set of possibly consecutive basic coding units is grouped into a slice. A basic coding unit includes basic coding blocks of all color components. In HEVC, the minimum CTB size of 16x16 corresponds to the macroblock size as used in previous video encoding standards. It will be understood that although the terms CTU and CTB are used herein to describe encoding / decoding methods and encoding / decoding apparatus, these methods and apparatus may be represented differently (e.g., macroblocks) in other standards such as H.264 and should not be limited by these particular terms.
[0041] In the exemplary encoder 100, an image is encoded by the encoder elements as described below. The image to be encoded is processed in units of CUs, which can be square as in HEVC, or rectangular as in JEM. Each CU is encoded using either intra or inter mode. If a CU is encoded in intra mode, it performs intra prediction (160). In inter mode, motion estimation (175) and compensation (170) are performed. The encoder decides (105) whether to use intra or inter mode to encode the CU, and indicates the intra / inter decision by a prediction mode flag. The residual is calculated by subtracting (110) the predicted sample block (also known as the predictor) from the original image block.
[0042] CUs in intra modes can be predicted from reconstructed neighboring samples in the same slice. A set of 35 intra prediction modes is available in HEVC, including one DC, one planar, and 33 angular prediction modes. The intra prediction reference is reconstructed from rows and columns adjacent to the current block.
[0043] For an inter CU, the corresponding coding block may be further divided into one or more predictive blocks as in HEVC. Inter prediction is performed at the PB level, and the corresponding PU includes information about how inter prediction is performed.
[0044] The residual is transformed (125) and quantized (130). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy coded (145) to output a bitstream. The encoder may also skip the transform and apply quantization directly to the untransformed residual signal on a 4×4 TU basis. The encoder may also bypass both transform and quantization, i.e., the residual is directly coded without applying the transform and quantization processes. In direct PCM coding, no prediction is applied and coding unit samples are coded directly into the bitstream.
[0045] The encoder includes a decoding loop, thus decoding the coding blocks to provide references for further prediction. The quantized transform coefficients are inverse quantized (140) and inverse transformed (150) to decode the residual. An image block is reconstructed by combining (155) the decoded residual and the predicted sample block. An in-loop filter (165) is applied to the reconstructed image to perform, for example, deblocking / sample adaptive offset (SAO) filtering to reduce coding artifacts. The filtered image is stored in a reference image buffer (180) and can be used as a reference for other images.
[0046] FIG. 9 illustrates an exemplary architecture of a receiver 2000 configured to decode an image from a bitstream to obtain a decoded image according to a specific, non-limiting embodiment.
[0047] The receiver 2000 includes one or more processor(s) 2005, which may include, for example, a CPU, GPU, and / or DSP (English acronym for digital signal processor), along with internal memory 2030 (e.g., RAM, ROM, and / or EPROM). The receiver 2000 includes one or more communication interface(s) 2010 (e.g., keyboard, mouse, touchpad, webcam), each adapted to display output information and / or allow a user to input commands and / or data (e.g., decoded images), as well as a power source 2020, which may be external to the receiver 2000. The receiver 2000 may also include one or more network interface(s) (not shown). The decoder module 2040 represents a module that may be included within the device to perform decoding functions. Additionally, the decoder module 2040 may be implemented as a separate element of the receiver 2000 or may be incorporated within the processor(s) 2005 as a combination of hardware and software, as is known to those skilled in the art.
[0048] The bitstream may be obtained from a source. According to a different embodiment, the source may be: -Local memory, e.g. video memory, RAM, flash memory, hard disk, - storage interfaces, e.g. interfaces with mass storage, ROM, optical disks or magnetic supports; a communication interface, such as a wired interface (e.g. a bus interface, a wide area network interface, a local area network interface) or a wireless interface (such as an IEEE 802.11 interface or a Bluetooth interface), and - Image capture circuitry (e.g. sensors such as CCD (or Charge Coupled Device) or CMOS (or Complementary Metal Oxide Semiconductor)) It can be, but is not limited to,
[0049] According to different embodiments, the decoded image can be sent to a destination, for example, a display device. As an example, the decoded image is stored in a remote or local memory, for example, a video memory or RAM, a hard disk. In a variant, the decoded image is sent to a storage interface, for example, an interface with a mass storage, a ROM, a flash memory, an optical disk or a magnetic support, and / or is sent through a communication interface, for example, an interface to a point-to-point link, a communication bus, a point-to-multipoint link or a broadcast network.
[0050] According to a particular, non-limiting embodiment, the receiver 2000 further comprises a computer program stored in the memory 2030. The computer program comprises instructions that, when executed by the receiver 2000, in particular by the processor 2005, enable the receiver to carry out the decoding method described with reference to FIG. 11. According to a variant, the computer program is stored on a persistent digital data support external to the receiver 2000, for example on an external storage medium, such as a HDD, a CD-ROM, a DVD, a read-only and / or DVD drive and / or a DVD read / write drive, all known in the art. The receiver 2000 therefore comprises a mechanism for reading the computer program. Furthermore, the receiver 2000 may have access through a USB port (not shown) corresponding to one or more Universal Serial Bus (USB) type storage devices (for example "memory sticks").
[0051] According to an exemplary and non-limiting embodiment, the receiver 2000 comprises: -Mobile devices, -Communication devices, -Game consoles, -Set-top boxes, -TV sets, - a tablet (or tablet computer), -Laptop, -Video players, e.g. Blu-ray players, DVD players, -Display, and -Decoding chip or decoding device / equipment It can be, but is not limited to,
[0052] Figure 10 shows a block diagram of an exemplary video decoder 200, e.g., an HEVC video decoder or a JEM type decoder, adapted to perform the decoding method of Figure 11. The video decoder 200 is an example of a receiver 2000 or part of such a receiver 2000. In the exemplary decoder 200, the bitstream is decoded by decoder elements as described below. The video decoder 200 generally performs a reciprocal decoding pass to the encoding pass as described in Figure 8, which performs video decoding as part of the encoding of the video data.
[0053] Specifically, the decoder input includes a video bitstream, which may be generated by the video encoder 100. The bitstream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other coding information. The transform coefficients are inverse quantized (240) and inverse transformed (250) to decode the residual. The decoded residual is then combined (255) with a predicted sample block (also known as a predictor) to obtain a decoded / reconstructed image block. The predicted sample block may be obtained from intra prediction (260) or motion compensated prediction (i.e., inter prediction) (275) (270). An in-loop filter (265) is applied to the reconstructed image. The in-loop filter may include a deblocking filter and a SAO filter. The filtered image is stored in a reference image buffer (280).
[0054] FIG. 11 illustrates a flow diagram of a method for decoding a current block from a bitstream according to a specific, non-limiting embodiment, where the current block includes at least a portion of an image.
[0055] The method begins at step S200. At step S210, a receiver 2000, such as a decoder 200, accesses the bitstream.
[0056] In step S220, the receiver determines whether the current block to be decoded is partially outside the image, i.e., extends beyond one boundary of the image. This may be determined by calculating Diff_X and Diff_Y as follows: Diff_X=blkPosX+width-frameWidth; and Diff_Y=blkPosY+height-frameHeight where blkPosX is the position in X of the current block, e.g., the X coordinate of the block's top-left pixel, blkPosY is the position in Y of the current block, e.g., the Y coordinate of the block's top-left pixel, width is the block's width, height is the block's height, frameWidth is the image's width, and frameHeight is the image's height. If Diff_X<=0 and Diff_Y<=0 then the block is completely inside the image, if Diff_X>0 && Diff_Y<=0 then the right part of the block is outside the image, if Diff_X>0 && Diff_Y<=0 then the bottom part of the block is outside the image, else the right and bottom parts of the block are outside the image.
[0057] If the current block is partially outside the image, the method continues with step S230; otherwise, the method continues with step S240. In this latter case, the block is completely inside the image and all split modes may be allowed. In this specific case, some of the split modes may not be allowed for a block that is completely inside the image. For example, if the width of the block is equal to the minimum width authorized for the block (e.g., 4 pixels), the vertical split mode is not allowed. Similarly, if the height of the block is equal to the minimum height authorized for the block (e.g., 4 pixels), the horizontal split mode is not allowed. In addition, some of the split modes may be disabled by high-level syntax elements, for example, for some specific profiles. In this latter case, the disabled split modes are not allowed for all blocks of the image, or possibly for all blocks of the video. In the specific case where the current block is horizontally and vertically outside the image, for example, the bottom right block in FIG. 6, no split modes are allowed, except for the QT_SPLIT mode.
[0058] In step S230, for each partition mode of the plurality of partition modes, the receiver determines whether the current block is allowed to be partitioned according to this partition mode by checking whether at least one of the partition lines is co-located with one of the image edges. In an exemplary embodiment, the plurality of partition modes includes the following partition modes: HOR_UP, HOR_DOWN, HOR_TRIPLE, HOR, VER_TRIPLE, VER, VER_LEFT, VER_RIGHT. Usually, but not necessarily, partition modes other than the QT_SPLIT mode are considered only if a partition according to the QT_SPLIT mode is determined. In a variant, the plurality of partition modes includes a subset of the partition modes previously listed. With the introduction of the 3 partition mode or the asymmetric 2 partition mode, many different partitions may be available to reach the image edge. In this embodiment, the asymmetric 2 partition mode is allowed at the image edge for the current block if the partition line is strictly on the image edge. The split-by-three mode is allowed at the edge of the image for the current block if the first split line or the second split line is strictly on the edge of the frame.
[0059] In a particular embodiment, the allowed split modes are specified as follows:
[0060] The mode NO_SPLIT is allowed only if the block is completely inside the image, otherwise this mode is not allowed. The flag noSplitAllowed is set to 1 (or true) to indicate that the NO_SPLIT mode is allowed.
[0061] Mode HOR is allowed if the block does not extend beyond the image boundary on the right side (or on the left side, depending on the scan order). In a variant, mode HOR is allowed if the right part of the block does not extend beyond the image boundary on the right side, and in the case where the block extends beyond the image boundary on the bottom, if the image edge and the horizontal division line resulting from the HOR division are co-located. In this case, the flag binaryHorAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0062] Mode VER is allowed if the blocks do not extend beyond the image boundary at the bottom (or above, depending on the scan order). In a variant, mode VER is allowed if the blocks do not extend beyond the image boundary at the bottom, and in cases where the blocks extend beyond the image boundary on the right side, if the image edge and the vertical division line resulting from the VER division are co-located.
[0063] In this case, the flag binaryVerAllowed is set to 1 to indicate that the corresponding partitioning mode is allowed for the current block.
[0064] Mode HOR_TRIPLE is allowed if the block does not extend beyond the image border on the right, and in the cases where the block extends beyond the image border on the bottom, if the image edge is co-located with one of the horizontal division lines resulting from the HOR_TRIPLE division, i.e. if blkPosY+height / 4 is equal to frameHeight or if blkPosY+3*height / 4 is equal to frameHeight. The flag horizontalTripleAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0065] The mode VER_TRIPLE is allowed if the block does not extend beyond the image border on the bottom, and in the case where the block extends beyond the image border on the right, if the image edge is co-located with one of the vertical division lines resulting from the VER_TRIPLE division, i.e., if blkPosX+width / 4 is equal to frameWidth or if blkPosX+3*width / 4 is equal to frameWidth. The flag verticalTripleAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0066] HOR_UP is allowed if the block does not extend beyond the image border on the right, and in cases where the block extends beyond the image border on the bottom, if the image edge is co-located with the horizontal split line resulting from the HOR_UP split, i.e., blkPosY+height / 4 equals frameHeight. The flag horUpAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.
[0067] HOR_DOWN is allowed if the block does not extend beyond the image border on the right, and in cases where the block extends beyond the image border on the bottom, if the image edge is co-located with the horizontal split line resulting from the HOR_DOWN split, i.e., blkPosY+3*height / 4 equals frameHeight. The flag horDownAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.
[0068] VER_LEFT is allowed if the block does not extend beyond the image border on the bottom, and in cases where the block extends beyond the image border on the right, if the image edge is co-located with the vertical division line resulting from the VER_LEFT division, i.e., blkPosX+width / 4 equals frameWidth. The flag verLeftAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0069] VER_RIGHT is allowed if the block does not extend beyond the image border on the bottom, and in the case where the block extends beyond the image border on the right, if the image edge is co-located with the vertical division line resulting from the VER_RIGHT division, i.e., blkPosX+3*width / 4 equals frameWidth. The flag verRightAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0070] In a variation, additional partitioning constraints may be added to the above admissibility determination.
[0071] The horBinaryOrTripleAllowed flag is set to 1 if at least one of the HOR and HOR_TRIPLE split modes is allowed.
[0072] The verBinaryOrTripleAllowed flag is set to 1 if at least one of the VER and VER_TRIPLE split modes is allowed.
[0073] If at least one of the vertical split modes is allowed, the verticalSplitAllowed flag is set to 1. If at least one of the horizontal split modes is allowed, the horizontalSplitAllowed flag is set to 1.
[0074] The horizontalAsymmetricAllowed flag is set to 1 if at least one of the asymmetric horizontal split modes is allowed.
[0075] The verticalAsymmetricAllowed flag is set to 1 if at least one of the asymmetric vertical split modes is allowed.
[0076] In step S240, the receiver decodes the current partitioning mode for the current block from the accessed bitstream in response to the allowed partitioning mode determined in step S230. Indeed, knowing the allowed modes for the current block makes it possible to simplify signaling and thus save bits. An example is provided by the syntax of Table 1 in conjunction with FIG. 12. In Table 1 and in FIG. 12, by convention, the value true is equal to 1 and the value false is equal to 0. Hence, a syntax element that is true is the same as a syntax element that is equal to 1 and a syntax element that is false is the same as a syntax element that is equal to 0. In Table 1, the syntax elements decoded from the bitstream are shown in bold. [Table 1]
[0077] In FIG. 12, only the steps related to the bipartition mode of decoding the current block are depicted.
[0078] In step S1020, the receiver checks whether bisection or trisection and NO_SPLIT mode are allowed for the current block being decoded. Checking whether bisection / trisection is allowed (btSplitAllowed()) typically consists of checking whether the current block width (w) or the current block height (h) is higher than a threshold (minBTSize). A typical minimum rectangular block size in width or height is minBTSize=4.
[0079] If 2-way / 3-way splitting is not allowed, the block is not split (btSplitMode is set to NO_SPLIT in step S1045) and any other syntax elements related to splitting are not decoded. If both 2-way and NO_SPLIT modes are allowed, a flag btSplitFlag indicating whether the current block is split or not is decoded from the bitstream in step S1030.
[0080] Otherwise (2 / 3 split is allowed and NO_SPLIT mode is not allowed), btSplitFlag is not decoded and is inferred to be equal to 1 (or true) and the method continues from step S1050. For the current block that extends partially beyond the image boundary, NO_SPLIT mode is not allowed and therefore btSplitFlag is not decoded and is inferred to be equal to 1.
[0081] In step S1040, the receiver checks whether the current block is split. If the current block is not split (e.g., btSplitFlag is false in step S1040), any other syntax elements related to splitting are not decoded. In step S1045, btSplitMode is set to NO_SPLIT.
[0082] In the case where the current block is split (btSplitFlag is True in step S1040), the receiver determines in step S1050 whether both horizontal and vertical split modes are allowed for the current block. If both horizontal and vertical split modes are allowed, then in step S1060 a syntax element (btSplitOrientation) is decoded to indicate the orientation of the two-part split (horizontal or vertical). If neither horizontal nor vertical split is allowed, then this syntax element (btSplitOrientation) is not decoded. In this latter case, the orientation of the two-part split is inferred. If horizontal split is not allowed (horizontalSplitAllowed is equal to 0 or False), then btSplitOrientation is inferred to be equal to OrientationVER. Otherwise, if vertical split is not allowed (verticalSplitAllowed is equal to 0 or False), then btSplitOrientation is inferred to be equal to OrientationHOR.
[0083] The receiver then checks in step S1070 whether both flags horizontalAsymmetricAllowed and horizontalBinOrTripleAllowed are true. If both flags are true, the syntax element (asymmetricSplitFlag) is decoded in step S1090 and the method continues with step S1100. If horizontalAsymmetricAllowed is true and horizontalBinOrTripleAllowed is false, then asymmetricSplitFlag is inferred to be equal to true and the method continues with step S1100. Otherwise (horizontalAsymmetricAllowed is false and horizontalBinOrTripleAllowed is true), then asymmetricSplitFlag is inferred to be equal to false and the method continues with step S1100.
[0084] In step S1100, the receiver checks whether the flag asymmetricSplitFlag is true or false. If asymmetricSplitFlag is true, the method continues with step S1110, otherwise the method continues with step S1120.
[0085] In step S1110, the receiver checks whether both flags horUpAllowed and horDownAllowed are true. If both flags are true, the syntax element horizontalAsymmetricType is decoded in step S1112, otherwise (one of the flags is false), the partitioning mode of the block is inferred to HOR_UP if horDownAllowed is false, or to HOR_DOWN if horUpAllowed is false.
[0086] In step S1120, the receiver checks whether both flags binaryHorAllowed and horizontalTripleAllowed are true. If both flags are true, the syntax element horizontalTripleFlag is decoded in step S1122, otherwise (one of the flags is false), the partition mode of the block is inferred to HOR_TRIPLE if binaryHorAllowed is false, or to HOR if horizontalTripleAllowed is false.
[0087] The receiver proceeds in the same manner for a vertical orientation.
[0088] The receiver checks whether both flags verticalAsymmetricAllowed and verticalBinOrTripleAllowed are true in step S1080. If both flags are true, the syntax element (asymmetricSplitFlag) is decoded in step S1090 and the method continues with step S1200. If verticalAsymmetricAllowed is true and verticalBinOrTripleAllowed is false, then asymmetricSplitFlag is inferred to be equal to true and the method continues with step S1200. Otherwise (verticalAsymmetricAllowed is false and verticalBinOrTripleAllowed is true), then asymmetricSplitFlag is inferred to be equal to false and the method continues with step S1200.
[0089] In step S1200, the receiver checks whether the flag asymmetricSplitFlag is true or false. If asymmetricSplitFlag is true, the method continues with step S1210, otherwise the method continues with step S1220.
[0090] In step S1210, the receiver checks whether both flags verLeftAllowed and verRightAllowed are true. If both flags are true, the syntax element verticalAsymmetricType is decoded in step S1212, otherwise (one of the flags is false), the split mode btSplitMode of the block is inferred to VER_LEFT if verRightAllowed is false, or to VER_RIGHT if verLeftAllowed is false.
[0091] In step S1220, the receiver checks whether both flags binaryVerAllowed and verticalTripleAllowed are true. If both flags are true, the syntax element verticalTripleFlag is decoded in step S1222, otherwise (one of the flags is false), the split mode of the block btSplitMode is inferred to VER_TRIPLE if binaryVerAllowed is false, or to VER if verticalTripleAllowed is false.
[0092] As an example, for the top right block of FIG. 13, the binary tree syntax can be pruned as shown in FIG. 14 to remove unnecessary splits. In this example, only VER_TRIPLE and VER_RIGHT are allowed, so that only one flag, asymmetricSplitFlag, is needed to decode the splits. In the same way as shown in FIG. 15, for the bottom left block of FIG. 13, the binary tree syntax can be pruned to remove unnecessary splits. In this example, only HOR_TRIPLE and HOR_UP are available. These two split modes give the same partition for the bottom left block, so one of the two splits can be removed. More generally, in cases where two different split modes give the same partition of the block, only one is allowed. FIGS. 14 and 15 are graphical representations of the syntax as defined in Table 1. The method according to the present principles therefore allows a competition between quad-tree splitting and bi- / tri-splitting at the edges of the image, with improved rate-distortion performance.
[0093] In a first variant of step S230, the receiver determines whether the current block is allowed to be divided according to at least one of the division modes by checking whether the size of the remaining part of the block after division (i.e. width in case of vertical division or height in case of horizontal division) is a multiple of the minimum block size (typically 4 pixels). This embodiment can be combined with the previous embodiment. The remaining part is the part of the block that is located inside the image along the border of the image, i.e. the sub-block resulting from the division. As an example, in a first step it is checked whether the edge of the image is co-located with one of the division lines, and if not, it is checked whether the size of the remaining part after division (width in case of vertical division or height in case of horizontal division) is a multiple of the minimum block size. In this embodiment, the three-way division mode can be used even if the edge of the image is not co-located with one of the division lines. In FIG. 16, the 64×64 block is split vertically with a left portion of 16×64, a center portion of 32×64 and a remaining right portion of size 8×64 identified by the shaded block.
[0094] Equivalently, an asymmetric bisection is allowed if the size of the remainder along the border of the image (width in the case of a vertical division or height in the case of a horizontal division) is still a multiple of the minimum block size (e.g., 4).
[0095] This second embodiment may be advantageously combined with the first embodiment as disclosed below.
[0096] The mode NO_SPLIT is allowed only if the block is completely inside the image, otherwise this mode is not allowed. The flag noSplitAllowed is set to 1 to indicate that the NO_SPLIT mode is allowed.
[0097] Mode HOR is allowed if the block does not extend beyond the image border on the right side. In a variant, mode HOR is allowed if the right part of the block does not extend beyond the image border on the right side, and in the case where the block extends beyond the image border on the bottom side, if the image edge and the horizontal division line resulting from the HOR division are co-located or if the height of the remaining part of the block after division is a multiple of the minimum block size. In this case, the flag binaryHorAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0098] Mode VER is allowed if the block does not extend beyond the image boundary on the bottom. In a variant, mode VER is allowed if the block does not extend beyond the image boundary on the bottom, and in the case where the block extends beyond the image boundary on the right side, if the image edge and the vertical division line resulting from the VER division are co-located or if the width of the remaining part of the block after division is a multiple of the minimum block size. In this case, the flag binaryVerAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0099] Mode HOR_TRIPLE is allowed if the block does not extend beyond the image border on the right, and in the case where the block extends beyond the image border on the bottom, if the image edge is co-located with one of the horizontal division lines resulting from the HOR_TRIPLE division, i.e. if blkPosY+height / 4 is equal to frameHeight, or if blkPosY+3*height / 4 is equal to frameHeight, or if the height of the remaining part of the block after the division is a multiple of the minimum block size. The flag horizontalTripleAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0100] Mode VER_TRIPLE is allowed if the block does not extend beyond the image border on the bottom, and in the case where the block extends beyond the image border on the right, if the image edge is co-located with one of the vertical division lines resulting from the VER_TRIPLE division, i.e. if blkPosX+width / 4 is equal to frameWidth, or if blkPosX+3*width / 4 is equal to frameWidth, or if the width of the remaining part of the block after the division is a multiple of the minimum block size. The flag verticalTripleAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0101] HOR_UP is allowed if the block does not extend beyond the image border on the right, and in cases where the block extends beyond the image border on the bottom, if the image edge is co-located with the horizontal split line resulting from the HOR_UP split, i.e., blkPosY+height / 4 is equal to frameHeight, or the height of the remaining part of the block after the split is a multiple of the minimum block size. The flag horUpAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.
[0102] HOR_DOWN is allowed if the block does not extend beyond the image border on the right, and in cases where the block extends beyond the image border on the bottom, if the image edge is co-located with the horizontal split line resulting from the HOR_DOWN split, i.e., if blkPosY+3*height / 4 is equal to frameHeight, or if the height of the remaining part of the block after the split is a multiple of the minimum block size. The flag horDownAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.
[0103] VER_LEFT is allowed if the block does not extend beyond the image border on the bottom, and in cases where the block extends beyond the image border on the right, if the image edge is co-located with the vertical division line resulting from a VER_LEFT division, i.e., if blkPosX+width / 4 is equal to frameWidth, or if the width of the remaining part of the block after the division is a multiple of the minimum block size. The flag verLeftAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0104] VER_RIGHT is allowed if the block does not extend beyond the image border on the bottom, and in the case where the block extends beyond the image border on the right, if the image edge is co-located with the vertical division line resulting from a VER_RIGHT division, i.e., if blkPosX+3*width / 4 is equal to frameWidth, or if the width of the remaining part of the block after the division is a multiple of the minimum block size. The flag verRightAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.
[0105] In a second variant of S230, if the current block extends partially beyond the image boundary, the size of the remaining part of the current block is calculated. Then, it is checked whether a transform (e.g., DCT or DST) is available to transform the remaining part into a block of coefficients. If such a transform is available, the current block can be coded without further splitting. In this case, the partition mode NO_SPLIT is indicated as being allowed by setting the flag noSplitAllowed to 1. In this latter case, the flag is decoded to indicate whether the block is effectively not split or whether the block is further split according to a partition mode, e.g., quadtree. In a particular embodiment, no other partition modes, either bipartition or tripartition, are allowed for such a block. In the variant, all these partition modes are allowed in addition to the quadtree partition mode.
[0106] As an example, for a current block of size 16x16 with a remaining part of size 4x16, NO_SPLIT is allowed for the current block since a block of size 4x16 can be transformed with 1D transforms of sizes 4 and 16. In this second variant, the NO_SPLIT mode can therefore be allowed even for blocks that extend beyond the image borders.
[0107] In another example, for a current block of size 16x16 with a remainder of size 12x16, NO_SPLIT is allowed for the current block only if asymmetric splitting is enabled. Indeed, in this case, a 12x16 block of size 3x2 N It can be converted by the conversion of size 3×2 N Such transformations are available if asymmetric splitting is enabled. If asymmetric splitting is disabled, only power-of-two transformations are available. In this latter case, a block 12x16 would necessarily be split, i.e., the NO_SPLIT mode is therefore not allowed. Asymmetric splitting can be disabled by higher level syntax elements, e.g., some profiles.
[0108] In step S250, the current block is decoded according to the current partition mode. For this purpose, each sub-block of the block obtained by partitioning the current block according to the partition mode is decoded.
[0109] Decoding a block, e.g., one of the sub-blocks of the current block, typically, but not necessarily, involves entropy decoding a portion of the bitstream representing the block to obtain a block of transform coefficients, inverse quantizing and inverse transforming the block of transform coefficients to obtain a block of residuals, and adding a predictor to the block of residuals to obtain a decoded block.
[0110] FIG. 17 illustrates a flow diagram of a method for encoding blocks of an image into a bitstream according to a specific, non-limiting embodiment.
[0111] The method begins at step S100. In step S110, a transmitter, such as the encoder 100, accesses a current block that includes at least a portion of an image. In step S120, the transmitter determines whether the current block is partially outside the image, i.e., extends beyond one boundary of the image. This step is identical to step S220 of the decoding method.
[0112] If the current block is partially outside the image, the method continues with step S130; otherwise, the method continues with step S140. In this latter case, the block is completely inside the image and all partition modes may be allowed. In step S130, the transmitter determines for each partition mode of the plurality of partition modes whether the current block is allowed to be partitioned according to this partition mode by checking whether at least one of the partition lines is co-located with one of the image edges. This step is identical to step S230 of the decoding method. All the embodiments and variants disclosed for the decoding method also apply to the encoding method. In step S140, the transmitter determines a current partition mode for the accessed block in response to the allowed partition modes and encodes the current block mode into the bitstream for the current block. The partition mode may be selected from the allowed modes based on a rate-distortion criterion. Each allowed partition mode may be tested and the one offering the best rate-distortion compromise is selected as the partition mode for encoding the current block.
[0113] In step S150, the transmitter encodes the accessed block into a bitstream according to a current partition mode. For this purpose, the current block may be divided into several sub-blocks according to the partition mode. Encoding a block, for example a sub-block, typically, but not necessarily, includes subtracting a predictor from the block to obtain a block of residuals, transforming the block of residuals into a block of transform coefficients, quantizing the block of coefficients with a quantization step size QP to obtain a quantized block of transform coefficients, and entropy coding the quantized block of transform coefficients into a bitstream. Reconstructing the block at the encoder side typically, but not necessarily, includes dequantizing and inverse transforming the quantized block of transform coefficients to obtain a block of residuals, and adding a predictor to the block of residuals to obtain a decoded block.
[0114] The method ends in step S180.
[0115] The embodiments disclosed herein may be implemented, for example, as a method or process, an apparatus, a software program, a data stream, or a signal. Even if only described in the context of a single form of embodiment (e.g., described only as a method or apparatus), the described embodiment of the features may also be implemented in other forms (e.g., a program). An apparatus may be implemented, for example, in appropriate hardware, software, and firmware. The method may be implemented, for example, in an apparatus, such as, for example, a processor, commonly referred to as a processing device, including, for example, a computer, a microprocessor, an integrated circuit, or a programmable logic circuit. Processors also include communication devices, such as, for example, computers, mobile phones, handheld / personal digital assistants ("PDAs"), that facilitate the transfer of information between end users.
[0116] Implementations of the various processes and features described herein may be embodied in a variety of different devices or applications, particularly, for example, devices or applications. Examples of such devices include encoders, decoders, post-processors that process output from decoders, pre-processors that provide input to encoders, video encoders, video decoders, video codecs, web servers, set-top boxes, laptops, personal computers, cell phones, PDAs, and other communication devices. Of course, the devices may be mobile and even located in moving vehicles.
[0117] Additionally, the method may be implemented by instructions being executed by a processor, and such instructions (and / or data values generated by the implementation) may be stored on a processor-readable storage medium, such as an integrated circuit, software carrier, or other storage device, such as, for example, a hard disk, a compact diskette ("CD"), an optical disk (e.g., DVD, often referred to as a digital versatile disk or digital video disk), a random access memory ("RAM"), or a read-only memory ("ROM"). The instructions may form an application program tangibly embodied on the processor-readable medium. The instructions may be, for example, hardware, firmware, software, or a combination. The instructions may be found, for example, in an operating system, a separate application, or a combination of the two. A processor may thus be characterized as both, for example, a device configured to execute a process and a device that includes a processor-readable medium (such as a storage device) having instructions for executing a process. Furthermore, the processor-readable medium may store data values generated by the implementation in addition to or in place of instructions.
[0118] As will be apparent to one skilled in the art, the embodiments may generate various signals formatted to convey information that may be, for example, stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the described embodiments. For example, the signal may be formatted to convey rules for writing or reading the syntax of the described embodiments as data, or to convey the actual syntax values written by the described embodiments as data. Such a signal may be formatted, for example, as an electromagnetic wave (e.g., using the radio frequency portion of the spectrum) or as a baseband signal. Formatting may include, for example, encoding a data stream and modulating a carrier wave with the encoded data stream. The information that the signal conveys may be, for example, analog or digital information. The signal may be transmitted over a variety of different wired or wireless links, as is well known. The signal may be stored on a processor-readable medium.
[0119] Several embodiments have been described. Nevertheless, it will be understood that various modifications may be made. For example, elements of different embodiments may be combined, supplemented, modified, or removed to produce other embodiments. Additionally, those skilled in the art will appreciate that other structures and processes may be substituted for those disclosed, with the resulting embodiments performing at least substantially the same function(s) and in at least substantially the same way(s) to achieve at least substantially the same result(s) as the disclosed embodiments. Accordingly, these and other embodiments are contemplated by the present application.
Claims
1. 1. A decoding method for decoding a current block of an image, comprising the steps of: determining whether the current block extends beyond a boundary of the image; for each partition mode of a plurality of partition modes, whether the partition mode is permitted for the current block; by enabling said split mode if at least one of said split lines is co-located with one of said image borders, otherwise by allowing said partitioning mode if the size of a block portion of said image interior along said image border is a multiple of a minimum block size; To judge and decoding a current partition mode of the current block from a bitstream in response to the allowed partition mode; decoding the current block according to the current partition mode; A method of decoding comprising:
2. h is the height of the current block, w is the width of the current block, and the plurality of partition modes include the following partition modes: dividing said block horizontally into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; dividing said block horizontally into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said block horizontally into one sub-block of height h / 4, one central sub-block of height h / 2 and one sub-block of height h / 4; dividing said block vertically into one sub-block of width w / 4, one central sub-block of width w / 2 and one sub-block of width w / 4; horizontally dividing said block into two sub-blocks of height h / 2; and dividing said block vertically into two sub-blocks of width w / 2; The method of claim 1 , further comprising at least two of:
3. 3. The method of claim 1, wherein the minimum block size in at least one of height and width is equal to four.
4. 1. A coding method for coding a current block of an image, comprising the steps of: determining whether the current block extends beyond a boundary of the image; for each partition mode of a plurality of partition modes, whether the partition mode is permitted for the current block; by enabling said split mode if at least one of said split lines is co-located with one of said image borders, otherwise by allowing said partitioning mode if the size of a block portion of said image interior along said image border is a multiple of a minimum block size; To judge and encoding into a bitstream a current partition mode of the current block determined in response to the allowed partition modes; encoding the current block into the bitstream according to the current partition mode; 13. An encoding method comprising:
5. h is the height of the current block, w is the width of the current block, and the plurality of partition modes include the following partition modes: dividing said block horizontally into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; dividing said block horizontally into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said block horizontally into one sub-block of height h / 4, one central sub-block of height h / 2 and one sub-block of height h / 4; dividing said block vertically into one sub-block of width w / 4, one central sub-block of width w / 2 and one sub-block of width w / 4; horizontally dividing said block into two sub-blocks of height h / 2; and dividing said block vertically into two sub-blocks of width w / 2; The method of claim 4, further comprising at least two of the steps:
6. Coding method according to claim 4 or 5, wherein said minimum block size in at least one of height and width is equal to four.
7. 1. A decoding device configured to decode a current block of an image, comprising: means for determining whether the current block extends beyond a boundary of the image; for each partition mode of a plurality of partition modes, whether the partition mode is permitted for the current block; by enabling said split mode if at least one of said split lines is co-located with one of said image borders, otherwise by allowing said partitioning mode if the size of a block portion of said image interior along said image border is a multiple of a minimum block size; The means for determining means for decoding a current partition mode of the current block from a bitstream in response to the allowed partition modes; means for decoding the current block according to the current partition mode; A decoding device comprising:
8. h is the height of the current block, w is the width of the current block, and the plurality of partition modes include the following partition modes: dividing said block horizontally into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; dividing said block horizontally into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said block horizontally into one sub-block of height h / 4, one central sub-block of height h / 2 and one sub-block of height h / 4; dividing said block vertically into one sub-block of width w / 4, one central sub-block of width w / 2 and one sub-block of width w / 4; horizontally dividing said block into two sub-blocks of height h / 2; and dividing said block vertically into two sub-blocks of width w / 2; The decoding device of claim 7, comprising at least two of:
9. Decoding device according to claim 7 or 8, wherein the minimum block size in at least one of height and width is equal to four.
10. 1. A coding device configured to code a current block of an image, comprising: means for determining whether the current block extends beyond a boundary of the image; for each partition mode of a plurality of partition modes, whether the partition mode is permitted for the current block; by enabling said split mode if at least one of said split lines is co-located with one of said image borders, otherwise by allowing said partitioning mode if the size of a block portion of said image interior along said image border is a multiple of a minimum block size; The means for determining means for encoding into a bitstream a current partition mode of the current block determined in response to the allowed partition modes; means for encoding the current block into the bitstream according to the current partition mode; An encoding device comprising:
11. h is the height of the current block, w is the width of the current block, and the plurality of partition modes include the following partition modes: dividing said block horizontally into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; dividing said block horizontally into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said block horizontally into one sub-block of height h / 4, one central sub-block of height h / 2 and one sub-block of height h / 4; dividing said block vertically into one sub-block of width w / 4, one central sub-block of width w / 2 and one sub-block of width w / 4; horizontally dividing said block into two sub-blocks of height h / 2; and dividing said block vertically into two sub-blocks of width w / 2; The encoding device of claim 10, comprising at least two of the following:
12. Encoding device according to claim 10 or 11, wherein the minimum block size in at least one of height and width is equal to four.
13. 1. A machine-readable medium having machine-executable instructions stored thereon that, when executed, implements a method for decoding a current block of an image, the method comprising: determining whether the current block extends beyond a boundary of the image; for each partition mode of a plurality of partition modes, whether the partition mode is permitted for the current block; by enabling said split mode if at least one of said split lines is co-located with one of said image borders, otherwise by allowing said partitioning mode if the size of a block portion of said image interior along said image border is a multiple of a minimum block size; To judge and decoding a current partition mode of the current block from a bitstream in response to the allowed partition mode; decoding the current block according to the current partition mode; A machine-readable medium comprising:
14. 1. A machine-readable medium having machine-executable instructions stored thereon, the machine-readable instructions, when executed, implementing a method for encoding a current block of an image, the method comprising: determining whether the current block extends beyond a boundary of the image; for each partition mode of a plurality of partition modes, whether the partition mode is permitted for the current block; by enabling said split mode if at least one of said split lines is co-located with one of said image borders, otherwise by allowing said partitioning mode if the size of a block portion of said image interior along said image border is a multiple of a minimum block size; To judge and encoding into a bitstream a current partition mode of the current block determined in response to the allowed partition modes; encoding the current block into the bitstream according to the current partition mode; A machine-readable medium comprising:
15. A bitstream formatted to include encoded data representing blocks of an image, said encoded data being encoded according to any of claims 4 to 6.
Citation Information
Patent Citations
Image encoding device and image encoding method, and image decoding device and image decoding method
JP2011223303A
Method and apparatus for encoding and decoding coding unit of picture boundary
WO2011053050A2
Block-based video coding using a mixture of square and rectangular blocks
WO2016209757A1
Method and device for encoding or decoding encoding unit of picture outline
WO2018070550A1