Method and apparatus for encoding and decoding images - Patents.com

New partition modes for coding units at image boundaries address inefficiencies in HEVC and JEM by enabling asymmetric and triple splits, improving encoding/decoding efficiency and reducing signaling costs while maintaining image quality.

JP7785154B2Active Publication Date: 2025-12-12INTERDIGITAL VC HOLDINGS INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024212587
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2017-03-27
Filing Date
2024-12-05
Publication Date
2025-12-12
Estimated Expiration
2038-03-13

AI Technical Summary

Technical Problem

Existing video coding standards like HEVC and JEM face inefficiencies in encoding and decoding blocks located at image boundaries due to limited partition modes, leading to degraded quality and increased signaling costs, especially for blocks extending outside the image.

Method used

Implementing new partition modes that allow for asymmetric and triple split divisions of coding units, determining allowed split modes by checking co-location with image boundaries and minimum block sizes, and encoding/decoding these modes efficiently to reduce signaling costs while maintaining image quality.

Benefits of technology

Enhances encoding and decoding efficiency at image boundaries by allowing flexible partitioning, reducing signaling costs, and maintaining image quality without degrading reconstructed images.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007785154000002
    Figure 0007785154000002
  • Figure 0007785154000003
    Figure 0007785154000003
  • Figure 0007785154000004
    Figure 0007785154000004
Patent Text Reader

Abstract

To provide a method and apparatus for encoding and decoding an image block at an image boundary.SOLUTION: A decoding method includes: determining whether a current block of an image extends beyond a boundary of the image; determining for each split mode of a plurality of split modes whether the current block is allowed to undergo splitting according to the split mode by checking whether at least one of split lines is co-located with one of image boundaries or whether a size of a block part inside the image along the image boundary is a multiple of a minimum block size; decoding, from a bitstream, a current split mode of the current block responsive to the allowed split modes; and decoding the current block according to the current split mode.SELECTED DRAWING: Figure 11
Need to check novelty before this filing date? Find Prior Art

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 boundaries. [Background technology]

[0002] To achieve high compression efficiency, video coding schemes typically employ prediction and transformation to exploit spatial and temporal redundancy in video content. Generally, 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 the 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 64×64, 128×128, or 256×256. 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 (also 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, such as 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, ISO / IEC JTC1 / SC29 / WG11 Joint Video Exploration Team, 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 ISO / IEC JTC1 / SC29 / WG11 Joint Video Exploration Team. 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 Figure 1, where solid lines indicate the quad-tree partitioning of CUs and dotted lines indicate the binary-tree partitioning, and is further illustrated in Figure 2. In Figure 2, solid lines represent quadtree partitions, and dotted lines represent bipartitions that are spatially embedded within the leaves of the quadtree. In this figure, a value of 1 corresponds to a vertical bipartition, and a value of 0 corresponds to a horizontal bipartition.

[0005] The division of a 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 rectangular shape. The size of the coding unit is always a power of two, typically between 4 and 128. The QTBT decomposition of a CTU involves two stages: first, the CTU is 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, a CU is not further divided into PUs or TUs. In other words, once the division of a 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 a CU, as illustrated in FIG. 3. FIG. 3 shows four division modes allowed by QTBT. The mode NO_SPLIT indicates that the CU is not further divided. The 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. The mode HOR indicates that the CU is divided horizontally into two CUs of equal size by one division line. The 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, the Joint Video Exploration Team (JVET) of ITU-T SG16 WP3 and ISO / IEC JTC1 / SC29 / WG11, 4th Meeting, Chengdu, China, October 15–21, 2016, introduces a new asymmetric split mode to QTBT. A CU can be split horizontally into two coding units with rectangular dimensions (w, h / 4) and (w, 3h / 4), respectively, or vertically into two coding units with rectangular dimensions (w / 4, h) and (3w / 4, h), respectively, as shown in Figure 4. Furthermore, CUs whose width or height is a multiple of three can be further split horizontally or vertically in a bisection fashion if they are identical in size. 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, October 15–21, 2016, a new triple split mode is introduced. A CU can therefore be split horizontally into three coding units with rectangular sizes (w, h / 4), (w, h / 2), and (w, h / 4), respectively, or vertically into three coding units with 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 dividing lines, 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 division modes, determining whether that division mode is allowed for the current block by checking whether at least one of the division lines is co-located with one of the image boundaries or whether the size of the block portion within the image along the image boundaries, i.e. the remaining portion resulting from the division, is a multiple of the 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 configured to decode a current block comprising at least a portion of an image is disclosed, the device comprising: - means for determining whether the current block extends beyond the image boundary; means for determining, for each of the 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the 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, which includes at least a portion of an image, extends beyond the boundaries 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the 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 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; - vertically dividing the block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; - horizontal division of 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 the specific characteristics, the minimum block size in at least one of the height and width is equal to 4.

[0016] An encoding method is disclosed for encoding a current block comprising at least a portion of an image, 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the 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 the image boundary; means for determining, for each of the 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the 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 the current partitioning mode; Includes.

[0018] An encoding device is disclosed that includes a communication interface configured to access at least a current block that includes at least a portion of an image. - determining whether the current block being accessed extends beyond the boundaries 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the 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 representing 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the minimum block size. It is judged by.

[0020] A persistent processor-readable medium having a bitstream stored thereon, the bitstream comprising: - coded data representing 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 boundaries or whether the size of the block portion within the image along the image boundary is a multiple of the minimum block size. It is judged by.

[0021] A transmission method and apparatus for transmitting the aforementioned bitstream is 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; - vertically dividing the block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; - horizontal division of 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 the specific characteristics, the minimum block size in at least one of the height and width is equal to 4. [Brief explanation 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. [Figure 2] The division of the coding tree unit in Figure 1 is represented in the form of a tree. [Figure 3] The symmetric bisection mode is illustrated in addition to the quadtree and no-section modes. [Figure 4] 1 illustrates an asymmetric split mode. [Figure 5] Illustrates a symmetrical three-way mode. [Figure 6] 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 according to a specific, non-limiting embodiment. [Figure 8] 1 illustrates an exemplary video encoder according to a specific, non-limiting embodiment. [Figure 9] 1 illustrates an exemplary architecture of a receiver configured to decode images in a bitstream according to a specific, non-limiting embodiment. [Figure 10] 1 illustrates an exemplary video decoder according to a specific, non-limiting embodiment. [Figure 11] 1 illustrates a flow diagram of a method for decoding blocks 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 blocks of an image into a bitstream according to a specific, non-limiting embodiment. DETAILED DESCRIPTION OF THE INVENTION

[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 for purposes of clarity, many other elements found in a typical encoding and / or decoding device have been omitted. While the terms first and second may be used herein to describe various elements, it should be understood that 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 within 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 an integer basic coding unit, such as an HEVC coding tree unit or an H.264 macroblock unit. A slice can consist of a complete image or a portion thereof. Each slice can 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 sub-blocks as specified in H.264 / AVC or other video coding standards, or more generally to refer to arrays of samples of various sizes. Because a CU is a block of samples to which the same transform and prediction information is applied, JEM does not distinguish between CU, PU, ​​and TU. A CU can be divided into several coding units according to a partition mode. The lines separating coding units within a larger coding unit are called partition lines.

[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 encoding / decoding entire images or entire sequences 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 would dramatically increase signaling costs. Therefore, there is a need for an improved syntax without degrading the quality of the reconstructed image. Blocks entirely within the image may use all types of partition modes. However, for blocks located on the borders / edges 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 partially extends outside the image, the block is necessarily partitioned according to the quadtree shown in Figure 6. In this case, there is no need to signal the partition mode, since only a single partition mode is allowed for these partially outside blocks. In fact, once a block is determined to partially extend outside the image, the partition mode for this block is inferred to be quadtree partitioning (e.g., QT_SPLIT). However, inferring the partition mode to be quadtree partitioning may degrade the quality of blocks reconstructed at the image border, as the number of partition modes for encoding that block is dramatically limited. Additionally, such methods require that the image width and height be 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 within 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 exemplary 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, GPU, and / or DSP (an English acronym for digital signal processor), along with internal memory 1030 (e.g., RAM, ROM, and / or EPROM). The transmitter 1000 includes one or more communication interface(s) 1010 (e.g., a 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 supply 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 different embodiments, 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 device, a ROM, a flash memory, an optical disk or a magnetic carrier, 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, non-limiting embodiment, the Transmitter 1000 further includes a computer program stored in the memory 1030. The computer program includes instructions that, when executed by the Transmitter 1000, and in particular by the processor 1005, enable the Transmitter 1000 to perform 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 includes 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 (e.g., "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 coding devices / equipment, -Still image server, and -Video servers (e.g. broadcast servers, video-on-demand servers or web servers) 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] For encoding, 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 coding standards. It will be understood that although the terms CTU and CTB are used herein to describe encoding / decoding methods and encoding / decoding apparatuses, these methods and apparatuses 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 with a prediction mode flag. A residual is calculated by subtracting (110) a predicted sample block (also known as a predictor) from the original image block.

[0042] CUs in intra modes can be predicted from reconstructed neighboring samples within 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 prediction blocks as in HEVC. Inter prediction is performed at the PB level, and the corresponding PU includes information on 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 4x4 TU basis. The encoder may also bypass both the transform and quantization, i.e., the residual is coded directly 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, which decodes coded blocks and provides references for further prediction. Quantized transform coefficients are inverse quantized (140) and inverse transformed (150) to decode the residual. Image blocks are reconstructed by combining the decoded residual and predicted sample blocks (155). 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 (the 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 supply 2020, which may be external to the receiver 2000. The receiver 2000 may also include one or more network interface(s) (not shown). A 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, which according to different embodiments 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 transmitted 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 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.

[0050] According to a specific, non-limiting embodiment, the receiver 2000 further includes a computer program stored in the memory 2030. The computer program includes instructions that, when executed by the receiver 2000, and in particular by the processor 2005, enable the receiver to perform 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 known in the art, such as a HDD, a CD-ROM, a DVD, a read-only and / or DVD drive and / or a DVD read / write drive. The receiver 2000 therefore includes 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 (e.g., "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 -Decryption 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 decoding pass reciprocal 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 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 with a predicted sample block (also known as a predictor) (255) 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 an 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 X position of the current block, e.g., the X coordinate of the block's top-left pixel, blkPosY is the Y position 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, the block is completely inside the image; if Diff_X>0 && Diff_Y<=0, the right part of the block is outside the image; if Diff_X>0 && Diff_Y<=0, the bottom part of the block is outside the image; otherwise, 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 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 allowed for the block (e.g., 4 pixels), vertical split mode is not allowed. Similarly, if the height of the block is equal to the minimum height allowed for the block (e.g., 4 pixels), horizontal split mode is not allowed. In addition, some split modes may be disabled by high-level syntax elements, for example, for some specific profiles. In this latter case, the disabled split mode is not allowed for all blocks of the image, or perhaps 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 mode is allowed except for QT_SPLIT mode.

[0058] In step S230, for each 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, and VER_RIGHT. Typically, but not necessarily, partition modes other than QT_SPLIT mode are considered only if partitioning according to 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 triplet mode or the asymmetrical bipartite mode, many different partitions may be available to reach the image edge. In this embodiment, the asymmetrical bipartite mode is allowed for the current block at the image edge if the partition line is exactly on the image edge. The split-by-three mode is allowed at the edge of the image for the current block if the first or second split line is exactly 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 (or left, 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, and in the case where the block extends beyond the image boundary on the bottom, if the image edge and the horizontal dividing 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 block does 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 block does not extend beyond the image boundary at the bottom, and in cases where the block extends beyond the image boundary on the right, if the image edge and the vertical dividing 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] The mode HOR_TRIPLE is allowed if the block does not extend beyond the image boundary on the right, and in the case where the block extends beyond the image boundary on the bottom, if the image edge is co-located with one of the horizontal dividing lines resulting from the HOR_TRIPLE division, i.e., if blkPosY+height / 4 equals frameHeight or if blkPosY+3*height / 4 equals 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 boundary on the bottom, and in the case where the block extends beyond the image boundary on the right, if the image edge is co-located with one of the vertical dividing lines resulting from the VER_TRIPLE division, i.e., if blkPosX+width / 4 equals frameWidth or if blkPosX+3*width / 4 equals 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 boundary on the right, and in cases where the block extends beyond the image boundary on the bottom, if the image edge is co-located with the horizontal dividing line resulting from the HOR_UP division, i.e., blkPosY+height / 4 equals frameHeight. The flag horUpAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.

[0067] HOR_DOWN is allowed if the block does not extend beyond the image boundary on the right, and in cases where the block extends beyond the image boundary on the bottom, if the image edge is co-located with the horizontal dividing 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 boundary on the bottom, and in cases where the block extends beyond the image boundary on the right, if the image edge is co-located with the vertical dividing line resulting from the VER_LEFT split, i.e., blkPosX+width / 4 equals frameWidth. The flag verLeftAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.

[0069] VER_RIGHT is allowed if the block does not extend beyond the image boundary on the bottom, and in cases where the block extends beyond the image boundary on the right, if the image edge is co-located with the vertical dividing 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 modes determined in step S230. Indeed, knowing the allowed modes for the current block allows for simplifying signaling and therefore saving bits. An example is provided by the syntax of Table 1 in conjunction with FIG. 12. In Table 1 and 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 equal to 1, and a syntax element that is false is the same as a syntax element equal to 0. In Table 1, 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 shown.

[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-split / 3-split 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-split 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 (bisect / tripartite splitting 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 bi-split orientation (horizontal or vertical). If neither horizontal nor vertical split is allowed, this syntax element (btSplitOrientation) is not decoded. In this latter case, the bi-split orientation 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 be HOR_UP if horDownAllowed is false, or to be 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 partitioning 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 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 be VER_LEFT if verRightAllowed is false, or 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 Figure 13, the binary tree syntax can be pruned to remove unnecessary splits, as shown in Figure 14. In this example, only VER_TRIPLE and VER_RIGHT are allowed, so only one flag, asymmetricSplitFlag, is needed to decode the splits. In the same way as shown in Figure 15, for the bottom-left block of Figure 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 provide 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 provide the same partition of the block, only one is allowed. Figures 14 and 15 are graphical representations of the syntax as defined in Table 1. A method according to the present principles therefore allows competition between quad-tree splitting and bi- / tri-splitting at the edges of an 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 a plurality of division modes by checking whether the size of the remaining part of the block after division (i.e., width in the case of vertical division or height in the 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 located inside the image along the image boundary, i.e., the sub-block resulting from the division. As an example, in the first step, it is checked whether the edge of the image is located in the same position as one of the division lines, and if not, it is checked whether the size of the remaining part after division (width in the case of vertical division or height in the 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 located in the same position as one of the division lines. In Figure 16, the 64x64 block is divided vertically into a 16x64 left portion, a 32x64 center portion and a remaining right portion of size 8x64 identified by the shaded block.

[0094] Equivalently, 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 boundary on the right side. 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 side, if the image edge and the horizontal dividing 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, if the image edge and the vertical dividing 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] The mode HOR_TRIPLE is allowed if the block does not extend beyond the image boundary on the right, and in the case where the block extends beyond the image boundary on the bottom, if the image edge is co-located with one of the horizontal dividing lines resulting from the HOR_TRIPLE division, i.e., if blkPosY+height / 4 equals frameHeight, or if blkPosY+3*height / 4 equals 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] The mode VER_TRIPLE 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, if the image edge is co-located with one of the vertical dividing lines resulting from the VER_TRIPLE division, i.e., if blkPosX+width / 4 equals frameWidth, or if blkPosX+3*width / 4 equals 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 boundary on the right, and in cases where the block extends beyond the image boundary on the bottom, if the image edge is co-located with the horizontal dividing line resulting from the HOR_UP division, i.e., if blkPosY+height / 4 equals 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 horUpAllowed is set to 1 to indicate that the corresponding division mode is allowed for the current block.

[0102] HOR_DOWN is allowed if the block does not extend beyond the image boundary on the right, and in cases where the block extends beyond the image boundary on the bottom, if the image edge is co-located with the horizontal dividing line resulting from the HOR_DOWN split, i.e., if blkPosY+3*height / 4 equals 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 boundary on the bottom, and in cases where the block extends beyond the image boundary on the right, if the image edge is co-located with the vertical dividing line resulting from the VER_LEFT split, i.e., if blkPosX+width / 4 equals frameWidth, or if the width of the remaining part of the block after the split is a multiple of the minimum block size. The flag verLeftAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.

[0104] VER_RIGHT is allowed if the block does not extend beyond the image boundary on the bottom, and in cases where the block extends beyond the image boundary on the right, if the image edge is co-located with the vertical dividing line resulting from the VER_RIGHT split, i.e., if blkPosX+3*width / 4 equals frameWidth, or if the width of the remaining part of the block after the split is a multiple of the minimum block size. The flag verRightAllowed is set to 1 to indicate that the corresponding split mode is allowed for the current block.

[0105] In a second variant of S230, if the current block partially extends 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 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, such as quadtree. In certain embodiments, no other partition modes, either 2-way or 3-way, 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 remainder of size 4x16, NO_SPLIT is allowed for the current block, since a block of size 4x16 can be transformed with 1D transformations of sizes 4 and 16. In this second variant, the NO_SPLIT mode can therefore be allowed even for blocks that extend beyond the boundaries of the image.

[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 following conversion. Size 3×2 N Such transformations are available when asymmetric splitting is enabled. When asymmetric splitting is disabled, only power-of-two transformations are available. In this latter case, blocks 12x16 are necessarily split, i.e., 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 partitioning mode. For this purpose, each sub-block of the block obtained by partitioning the current block according to the partitioning 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 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 a 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 embodiments and variations disclosed with respect to 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 for the current block into the bitstream. 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 may be 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 the current partitioning mode. For this purpose, the current block may be divided into several sub-blocks according to the partitioning 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 the 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 described in the context of only one type of embodiment (e.g., described only as a method or apparatus), the described feature implementation 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 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 computers, mobile phones, handheld / personal digital assistants ("PDAs"), and the like, 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, mobile phones, PDAs, and other communication devices. Of course, the devices may be mobile, even located in moving vehicles.

[0117] Additionally, the methods may be implemented by instructions being executed by a processor, and such instructions (and / or data values ​​produced by an embodiment) 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, compact diskette ("CD"), optical disk (e.g., DVD, often called a digital versatile disk or digital video disk), random access memory ("RAM"), or 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 (e.g., a storage device) having instructions for executing a process. Furthermore, a processor-readable medium may store data values ​​produced by an embodiment in addition to, or in place of, instructions.

[0118] As will be apparent to those skilled in the art, implementations may generate a variety of signals formatted to convey information that may, for example, be stored or transmitted. The information may include, for example, instructions for performing a method or data generated by one of the described implementations. For example, a signal may be formatted to convey rules for writing or reading syntax of the described implementations as data, or to convey the actual syntax values ​​written by the described implementations 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 conveyed by the signal 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 understand that other structures and processes may be substituted for those disclosed, with the resulting embodiment performing at least substantially the same function(s), in at least substantially the same way(s), and achieving at least substantially the same result(s) as the disclosed embodiments. Accordingly, these and other embodiments are contemplated by this application.

Claims

1. 1. A decoding method comprising: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; decoding the current block according to the determined current partitioning mode; Including, Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: decoding information to determine the current partition mode of a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a single boundary of the picture; the information includes a flag indicating the number of second blocks resulting from division of the current block according to the current division mode; The set of partition modes includes the plurality of partition modes.

2. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 2. The decoding method of claim 1, comprising at least two of:

3. if the current block does not cross a picture boundary on the right or left side, it is permitted to divide the current block horizontally into two sub-blocks of height h / 2; 2. The decoding method of claim 1, wherein vertical division of the current block into two sub-blocks of width w / 2 is permitted if the current block does not cross a picture boundary below or above.

4. 1. An encoding method comprising: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; encoding the current block of video data according to the determined current partition mode; Including, Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: selecting the current partition mode from a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a boundary of the picture; the set of division modes includes the plurality of division modes, encoding the current block of the video data includes decoding information to determine the current partition mode; The information includes a flag indicating the number of second blocks resulting from division of the current block according to the current division mode.

5. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 5. The encoding method of claim 4, comprising at least two of:

6. if the current block does not cross a picture boundary on the right or left side, it is permitted to divide the current block horizontally into two sub-blocks of height h / 2; 5. The method of claim 4, wherein vertical division of the current block into two sub-blocks of width w / 2 is permitted if the current block does not cross a picture boundary below or above.

7. A decoding device, comprising: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; decoding the current block according to the determined current partitioning mode; an electronic circuit configured to: Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: decoding information to determine the current partition mode of a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a single boundary of the picture; the information includes a flag indicating the number of second blocks resulting from division of the current block according to the current division mode; The set of partition modes includes the plurality of partition modes.

8. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 8. The decoding device of claim 7, comprising at least two of:

9. if the current block does not cross a picture boundary on the right or left side, it is permitted to divide the current block horizontally into two sub-blocks of height h / 2; 8. The decoding device of claim 7, wherein the current block is allowed to be vertically divided into two sub-blocks of width w / 2 if the current block does not cross a picture boundary at the bottom or top.

10. 1. An encoding device, comprising: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; encoding the current block of video data according to the determined current partition mode; an electronic circuit configured to: Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: selecting the current partition mode from a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a boundary of the picture; the set of division modes includes the plurality of division modes, encoding the current block of the video data includes decoding information to determine the current partition mode; The information includes a flag indicating the number of second blocks resulting from dividing the current block according to the current division mode.

11. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 11. The encoding device of claim 10, comprising at least two of:

12. if the current block does not cross a picture boundary on the right or left side, it is permitted to divide the current block horizontally into two sub-blocks of height h / 2; 11. The encoding device of claim 10, wherein the current block is allowed to be vertically divided into two sub-blocks of width w / 2 if the current block does not cross a picture boundary below or above.

13. A non-transitory machine-readable medium having machine-executable instructions stored thereon, the machine-executable instructions, when executed by at least one processor, causing the at least one processor to: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; decoding the current block according to the determined current partitioning mode; Execute Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: decoding information to determine the current partition mode of a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a single boundary of the picture; the information includes a flag indicating the number of second blocks resulting from division of the current block according to the current division mode; The set of partition modes includes the plurality of partition modes.

14. A non-transitory machine-readable medium having machine-executable instructions stored thereon, the machine-executable instructions, when executed by at least one processor, causing the at least one processor to: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; encoding the current block of video data according to the determined current partition mode; Execute Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: selecting the current partition mode from a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a boundary of the picture; the set of division modes includes the plurality of division modes, encoding the current block of the video data includes decoding information to determine the current partition mode; The information includes a flag indicating the number of second blocks that result from dividing the current block according to the current division mode.

15. 1. An apparatus comprising: at least one processor; a memory; The memory, when executed by the at least one processor, causes the at least one processor to: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; decoding the current block according to the determined current partitioning mode; and storing instructions to execute the Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: decoding information to determine the current partition mode of a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a single boundary of the picture; the information includes a flag indicating the number of second blocks resulting from division of the current block according to the current division mode; The set of partition modes includes the plurality of partition modes.

16. 1. An apparatus comprising: at least one processor; a memory; The memory, when executed by the at least one processor, causes the at least one processor to: Getting the current block, and determining a current partitioning mode to be applied to the current block from a set of partitioning modes, each partitioning mode of the set specifying a single partitioning of a first block into a plurality of second blocks, each second block having a width that is the same as a width of the first block or a width corresponding to a predetermined sub-division of the width of the first block, and each second block having a height that is the same as a height of the first block or a height corresponding to a predetermined sub-division of the height of the first block; encoding the current block of video data according to the determined current partition mode; and storing instructions to execute the Determining the current partition mode in response to the current block crossing a single boundary of a picture includes: selecting the current partition mode from a plurality of partition modes, wherein a partition direction for the current partition mode is parallel to a direction of a boundary of the picture; the set of division modes includes the plurality of division modes, encoding the current block of the video data includes decoding information to determine the current partition mode; The apparatus, wherein the information includes a flag indicating the number of second blocks that result from dividing the current block according to the current division mode.

17. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 14. The non-transitory machine-readable medium of claim 13, comprising at least two of:

18. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 15. The non-transitory machine-readable medium of claim 14, comprising at least two of:

19. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 16. The apparatus of claim 15, comprising at least two of:

20. h is the height of the first block, w is the width of the first block, The plurality of division modes include the following division modes: horizontally dividing said first block into one upper sub-block of height h / 4 and one lower sub-block of height 3h / 4; horizontally dividing said first block into one lower sub-block of height h / 4 and one upper sub-block of height 3h / 4; vertically dividing said first block into one left sub-block of width w / 4 and one right sub-block of width 3w / 4; vertically dividing said first block into one right sub-block of width w / 4 and one left sub-block of width 3w / 4; dividing said first 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; vertically dividing said first block 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 first block into two sub-blocks of height h / 2; and vertically dividing the first block into two sub-blocks of width w / 2; 17. The apparatus of claim 16, comprising at least two of:

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