Image encoding / decoding method and apparatus, and recording medium storing bit stream

By using an adaptive block segmentation method and a non-square quadrature segmentation technique, the problem of low efficiency in existing image compression techniques is solved, and a more efficient image compression effect is achieved.

CN122055962APending Publication Date: 2026-05-15LG ELECTRONICS INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
LG ELECTRONICS INC
Filing Date
2024-10-04
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

Existing image compression techniques are inefficient in high-resolution and high-quality image processing, especially in the segmentation of non-square blocks and the notification of segmentation information.

Method used

An adaptive block segmentation method is adopted, including non-square quadrilateral segmentation and tree-based block segmentation. The segmentation type is controlled by segmentation depth and context model to avoid repetitive segmentation shapes and adaptively apply non-square quadrilateral segmentation.

Benefits of technology

It improves block coding efficiency by generating coding blocks with adaptive size and shape through adaptive segmentation type, thereby enhancing image compression efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122055962A_ABST
    Figure CN122055962A_ABST
Patent Text Reader

Abstract

The image decoding / encoding method and apparatus according to the present disclosure may divide a current block on the basis of a predetermined division type, and encode a plurality of encoded blocks generated by dividing the current block. Here, the predetermined partition type may include at least one of a four-fork partition, a two-fork partition, and a three-fork partition, and the four-fork partition may include a non-square four-fork partition for partitioning a non-square encoded block into four encoded blocks.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to an image encoding / decoding method and apparatus, as well as a recording medium for storing bit streams. Background Technology

[0002] Recently, the demand for high-resolution and high-quality images, such as HD (high-definition) and UHD (ultra-high-definition) images, has been increasing in various application areas, and therefore, efficient image compression technologies are being discussed.

[0003] Various techniques exist, such as inter-frame prediction techniques that use video compression technology to predict pixel values ​​included in the current frame from frames before or after the current frame, intra-frame prediction techniques that use pixel information in the current frame to predict pixel values ​​included in the current frame, and entropy coding techniques that assign short symbols to values ​​that occur frequently and long symbols to values ​​that occur infrequently. These image compression techniques can be used to effectively compress image data and send or store it. Summary of the Invention

[0004] Technical issues

[0005] This disclosure provides an adaptive block segmentation method and apparatus based on various segmentation types.

[0006] This disclosure provides a method and apparatus for signaling segmentation information for a non-square quadrilateral segmentation.

[0007] This disclosure provides a method and apparatus for determining a context model to derive whether a block has been segmented and / or segmentation information for determining segmentation depth.

[0008] This disclosure provides a method and apparatus for restricting the application of segmentation types so that no repeated segmentation shapes occur in tree-based block segmentation using various segmentation types.

[0009] Technical solution

[0010] The image decoding method and apparatus according to this disclosure can segment a current block based on a predetermined segmentation type, and can decode multiple coded blocks generated by segmenting the current block. Here, the predetermined segmentation type may include at least one of quadrilateral segmentation, binary segmentation, or trilateral segmentation. The quadrilateral segmentation may include a non-square quadrilateral segmentation for segmenting a non-square coded block into four coded blocks.

[0011] In the image decoding method and apparatus according to this disclosure, it can be determined whether the non-square quadrilateral segmentation is allowed for the current block based on whether the size of the current block is less than or equal to a predetermined threshold size.

[0012] In the image decoding method and apparatus according to this disclosure, whether the non-square quadrilateral segmentation is allowed for the current block can be determined based on whether the ratio of the width to the height of the current block corresponds to a predefined ratio.

[0013] In the image decoding method and apparatus according to this disclosure, the predefined ratio may include at least one of 1:2, 2:1, 1:4 or 4:1.

[0014] In the image decoding method and apparatus according to this disclosure, the predefined ratio may include at least one of 1:3, 3:1, 1:5, 5:1, 1:6, 6:1, 1:7 or 7:1.

[0015] In the image decoding method and apparatus according to this disclosure, when the current block is a non-square coded block generated by segmenting the coded block based on the binary segmentation or the triangular segmentation, the non-square quadrilateral segmentation may be permitted.

[0016] In the image decoding method and apparatus according to the present disclosure, when the current block is generated by segmenting the coded block based on the non-square quadrilateral segmentation, the non-square quadrilateral segmentation may not be allowed for the current block.

[0017] In the image decoding method and apparatus according to the present disclosure, it can be determined whether the non-square quadrilateral segmentation is allowed for the current block based on the segmentation depth of the current block.

[0018] In the image decoding method and apparatus according to the present disclosure, the non-square quadrature segmentation can be performed based on a quadrature flag indicating whether the quadrature segmentation is applied to the current block.

[0019] In the image decoding method and apparatus according to this disclosure, the context model of the quadruple sign can be derived based on the segmentation depth of the current block or at least one of its neighboring blocks adjacent to the current block. Here, the segmentation depth may include at least one of a segmentation depth based on a square quadruple segmentation or a segmentation depth based on a non-square quadruple segmentation.

[0020] The image encoding method and apparatus according to this disclosure can segment a current block based on a predetermined segmentation type, and can encode multiple encoding blocks generated by segmenting the current block. Here, the predetermined segmentation type can include at least one of quadrilateral segmentation, binary segmentation, or trilateral segmentation. The quadrilateral segmentation can include a non-square quadrilateral segmentation for dividing a non-square encoding block into four encoding blocks.

[0021] A computer-readable digital storage medium is provided for storing encoded video / image information, which enables a decoding device according to the present disclosure to perform an image decoding method.

[0022] A computer-readable digital storage medium is provided for storing video / image information generated based on the image encoding method of this disclosure.

[0023] A method and apparatus are provided for transmitting video / image information generated according to the image encoding method of this disclosure.

[0024] Beneficial effects

[0025] According to this disclosure, coded blocks with adaptive size and shape can be generated by block partitioning a tree structure based on various partitioning types.

[0026] According to this disclosure, block coding efficiency can be improved by adaptively allowing / applying non-square quadrilateral partitioning.

[0027] According to this disclosure, non-square quadrature segmentation can be adaptively performed using segmentation information for square quadrature segmentation without signaling additional segmentation information for non-square quadrature segmentation.

[0028] According to this disclosure, by defining the segmentation depth according to various segmentation types, a context model can be used to derive whether a block is segmented and / or segmentation information.

[0029] According to this disclosure, when predefined conditions are met, the application of vertical or horizontal binary segmentation can be restricted to prevent the occurrence of repetitive segmentation shapes. Attached Figure Description

[0030] Figure 1 A video / image encoding system according to this disclosure is shown.

[0031] Figure 2 A schematic block diagram of an encoding apparatus to which embodiments of the present disclosure are applicable and which performs encoding of video / image signals is shown.

[0032] Figure 3 A schematic block diagram of a decoding apparatus to which embodiments of the present disclosure are applicable and which performs decoding of video / image signals is shown.

[0033] Figure 4 A decoding method performed by a decoding device 300 as an embodiment of the present disclosure is shown.

[0034] Figure 5 A schematic configuration of a decoding device 300 performing a decoding method according to the present disclosure is shown.

[0035] Figure 6 An encoding method performed by an encoding device 200 as an embodiment of the present disclosure is shown.

[0036] Figure 7 A schematic configuration of an encoding device 200 performing the encoding method according to this disclosure is shown.

[0037] Figure 8 Examples of content streaming systems to which embodiments of this disclosure can be applied are shown. Detailed Implementation

[0038] Because this disclosure can be modified in various ways and has multiple embodiments, specific embodiments will be shown in the accompanying drawings and described in detail in the specific embodiments. However, this disclosure is not intended to be limited to the specific embodiments, but should be understood to include all changes, equivalents, and substitutions included within the spirit and scope of this disclosure. Similar reference numerals are used for similar components in the description of the various figures.

[0039] Terms such as "first," "second," etc., may be used to describe various components, but components should not be limited by these terms. Terms are used only to distinguish one component from others. For example, without departing from the scope of this disclosure, a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component. Terms include any combination of one or more of the associated terms.

[0040] When a component is described as "connected" or "linked" to another component, it should be understood that it can be directly connected or linked to the other component, but the other component can exist in between. On the other hand, when a component is described as "directly connected" or "directly linked" to another component, it should be understood that there is no other component in between.

[0041] The terminology used in this application is for describing particular embodiments only and is not intended to limit this disclosure. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, it should be understood that terms such as “comprising” or “having” are intended to specify the presence of the features, quantities, steps, operations, components, portions, or combinations thereof described in this specification, but do not preclude the possibility of the presence or addition of one or more other features, quantities, steps, operations, components, portions, or combinations thereof.

[0042] This disclosure relates to video / image coding. For example, the methods / implementations disclosed herein can be applied to methods disclosed in the Multifunctional Video Coding (VVC) standard. Additionally, the methods / implementations disclosed herein can be applied to methods disclosed in the Basic Video Coding (EVC) standard, the AOMedia Video 1 (AV1) standard, the Audio Video Coding 2 (AVS2) standard, or next-generation video / image coding standards (e.g., H.267 or H.268).

[0043] This specification sets forth various implementations of video / image encoding, and unless otherwise specified, these implementations may be combined with each other.

[0044] In this article, video can refer to a collection of images over time. A frame typically refers to a unit representing an image within a specific time period, and a slice / tile is a unit that forms part of a frame during encoding. A slice / tile can include at least one Code Tree Unit (CTU). A frame can consist of at least one slice / tile. A tile is a rectangular area composed of multiple CTUs within a specific tile column and a specific tile row of a frame. A tile column is a rectangular area of ​​CTUs with a height equal to the height of the frame and a width specified by the syntax requirements of the frame parameter set. A tile row is a rectangular area of ​​CTUs with a height specified by the frame parameter set and a width equal to the width of the frame. CTUs within a tile can be arranged continuously according to CTU raster scans, and tiles within a frame can be arranged continuously according to tile raster scans. A slice can include an integer number of complete tiles of a frame that can be exclusively included in a single NAL unit, or an integer number of consecutive complete CTU rows within a tile. Furthermore, a frame can be divided into at least two sub-frames. A sub-frame can be a rectangular area of ​​at least one slice within a frame.

[0045] A pixel, or pelin, can represent the smallest unit that makes up a frame (or image). Additionally, "sample" can be used as the term corresponding to a pixel. A sample can typically represent a pixel or a pixel value, and can represent only the pixel / pixel value of the luminance component or only the pixel / pixel value of the chrominance component.

[0046] A unit can represent the basic unit of image processing. A unit may include a specific region of the image and at least one of the information associated with that region. A unit may include a luminance block and two chrominance (e.g., cb, cr) blocks. In some cases, the term "unit" may be used interchangeably with terms such as "block" or "region". In general, an M×N block may include a set (or array) of transform coefficients or samples (or sample arrays) consisting of M columns and N rows.

[0047] In this document, “A or B” can mean “A only”, “B only”, or “both A and B”. In other words, “A or B” can be interpreted as “A and / or B”. For example, “A, B or C” can mean “A only”, “B only”, “C only”, or “any combination of A, B and C”.

[0048] The forward slash ( / ) or comma used in this article can indicate "and / or". For example, "A / B" can mean "A and / or B". Therefore, "A / B" can mean "A only", "B only", or "both A and B". For example, "A, B, C" can mean "A, B, or C".

[0049] In this document, "at least one of A and B" can mean "only A", "only B" or "both A and B". Furthermore, in this document, expressions such as "at least one of A or B" or "at least one of A and / or B" can be interpreted in the same way as "at least one of A and B".

[0050] Additionally, in this document, "at least one of A, B, and C" can mean "A only", "B only", "C only" or "any combination of A, B, and C". Furthermore, "at least one of A, B, or C" or "at least one of A, B, and / or C" can mean "at least one of A, B, and C".

[0051] Additionally, the parentheses used in this document can indicate "for example". Specifically, when the indication is "prediction (intra-frame prediction)", "intra-frame prediction" can be cited as an example of "prediction". In other words, "prediction" in this document is not limited to "intra-frame prediction", and "intra-frame prediction" can be cited as an example of "prediction". Furthermore, even when the indication is "prediction (i.e., intra-frame prediction)", "intra-frame prediction" can be cited as an example of "prediction".

[0052] In this article, the technical features described individually in a single diagram can be implemented individually or simultaneously.

[0053] Figure 1 A video / image encoding system according to this disclosure is shown.

[0054] Reference Figure 1 A video / image encoding system may include a first device (source device) and a second device (receiving device).

[0055] A source device can transmit encoded video / image information or data to a receiving device in the form of a file or stream via a digital storage medium or network. The source device may include a video source, an encoding device, and a transmitting unit. The receiving device may include a receiving unit, a decoding device, and a renderer. The encoding device may be referred to as a video / image encoding device, and the decoding device may be referred to as a video / image decoding device. The transmitter may be included in the encoding device. The receiver may be included in the decoding device. The renderer may include a display unit, and the display unit may consist of a separate device or external components.

[0056] A video source can acquire video / images through processes that capture, synthesize, or generate video / images. A video source may include means for capturing video / images and means for generating video / images. Means for capturing video / images may include at least one camera, a video / image archive containing previously captured video / images, etc. Means for generating video / images may include a computer, tablet computer, smartphone, etc., and can generate video / images (electronically). For example, virtual video / images can be generated by a computer, etc., and in this case, the process of capturing video / images can be replaced by a process of generating related data.

[0057] Encoding devices can encode input video / images. They can perform a series of processes such as prediction, transformation, and quantization for compression and encoding efficiency. The encoded data (encoded video / image information) can be output as a bitstream.

[0058] The transmitting unit can send encoded video / image information or data, output in bitstream form, to the receiving unit of the receiving device in the form of a file or stream via a digital storage medium or network. The digital storage medium can include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. The transmitting unit can include elements for generating media files according to a predetermined file format, and may include elements for transmission via a broadcast / communication network. The receiving unit can receive / extract the bitstream and send it to a decoding device.

[0059] Decoding devices can decode video / images by performing a series of processes, such as dequantization, inverse transform, and prediction, that correspond to the operations of encoding devices.

[0060] The renderer can render decoded video / images. The rendered video / images can be displayed through a display unit.

[0061] Figure 2 A rough block diagram of an encoding apparatus that can be applied to embodiments of the present disclosure and perform encoding of video / image signals is shown.

[0062] Reference Figure 2The encoding device 200 may consist of an image segmenter 210, a predictor 220, a residual processor 230, an entropy encoder 240, an adder 250, a filter 260, and a memory 270. The predictor 220 may include an inter-frame predictor 221 and an intra-frame predictor 222. The residual processor 230 may include a transformer 232, a quantizer 233, a dequantizer 234, and an inverse transformer 235. The residual processor 230 may also include a subtractor 231. The adder 250 may be referred to as a reconstructor or a reconstruction block generator. According to embodiments, the image segmenter 210, predictor 220, residual processor 230, entropy encoder 240, adder 250, and filter 260 may be configured by at least one hardware component (e.g., an encoder chipset or processor). Additionally, the memory 270 may include a decoded picture buffer (DPB) and may be configured by a digital storage medium. The hardware component may also include the memory 270 as an internal / external component.

[0063] Image segmenter 210 can segment an input image (or picture or frame) input to encoding device 200 into at least one processing unit. As an example, a processing unit can be referred to as a coding unit (CU). In this case, the coding unit can be recursively segmented from coding tree unit (CTU) or maximum coding unit (LCU) according to a quadtree-binary-tritree (QTBTTT) structure.

[0064] For example, a coding unit can be segmented into multiple deeper coding units based on a quadtree, binary tree, and / or ternary tree structure. In this case, for example, a quadtree structure can be applied first, followed by a binary tree and / or ternary tree structure. Alternatively, a binary tree structure can be applied before the quadtree structure. The coding process according to this specification can be performed based on the final coding unit that is no longer segmented. In this case, based on image characteristics, coding efficiency, etc., the largest coding unit can be directly used as the final coding unit, or, if necessary, the coding unit can be recursively segmented into deeper coding units, and the coding unit with the optimal size can be used as the final coding unit. Here, the coding process can include processes such as prediction, transformation, and reconstruction, as described later.

[0065] As another example, the processing unit may also include a prediction unit (PU) or a transform unit (TU). In this case, the prediction unit and the transform unit can be divided or segmented from the aforementioned final encoding unit, respectively. The prediction unit may be a unit for predicting samples, and the transform unit may be a unit for deriving transform coefficients and / or a unit for deriving residual signals from transform coefficients.

[0066] In some cases, a unit can be used interchangeably with terms such as block or region. Generally, an M×N block can represent a set of transform coefficients or samples consisting of M columns and N rows. Samples can typically represent pixels or pixel values, and can represent only the pixel / pixel value of the luminance component, or only the pixel / pixel value of the chrominance component. Samples can be used as a term to form a frame (or image) corresponding to a pixel or cell.

[0067] Encoding device 200 can subtract the prediction signal (prediction block, prediction sample array) output from inter-frame predictor 221 or intra-frame predictor 222 from the input image signal (original block, original sample array) to generate a residual signal (residual signal, residual sample array), and the generated residual signal is sent to converter 232. In this case, the unit in encoding device 200 that subtracts the prediction signal (prediction block, prediction sample array) from the input image signal (original block, original sample array) can be called subtractor 231.

[0068] Predictor 220 can perform prediction on the block to be processed (hereinafter referred to as the current block) and generate a prediction block that includes prediction samples of the current block. Predictor 220 can determine whether to apply intra-frame prediction or inter-frame prediction on a per-block or per-unit basis. Predictor 220 can generate various information about the prediction (e.g., prediction mode information) and send it to entropy encoder 240, as described later in the description of the various prediction modes. The information about the prediction can be encoded in entropy encoder 240 and output as a bitstream.

[0069] Intra-predictor 222 can predict the current block by referencing samples within the current frame. Depending on the prediction mode, the referenced samples can be located near the current block or positioned at a specific distance away from the current block. In intra-prediction, the prediction mode can include at least one non-directional mode and multiple directional modes. The non-directional mode can include at least one of a DC mode or a planar mode. Depending on the level of detail of the prediction direction, the directional modes can include 33 or 65 directional modes. However, this is just an example; more or fewer directional modes can be used depending on the configuration. Intra-predictor 222 can determine the prediction mode applied to the current block by using prediction modes applied to neighboring blocks.

[0070] Inter-frame predictor 221 can deduce the predicted block of the current block based on a reference block (reference sample array) specified by motion vectors on a reference frame. In this case, to reduce the amount of motion information transmitted in inter-frame prediction mode, motion information can be predicted on a block, sub-block, or sample basis based on the correlation between motion information between neighboring blocks and the current block. Motion information may include motion vectors and reference frame indices. Motion information may also include inter-frame prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). For inter-frame prediction, neighboring blocks may include spatially neighboring blocks existing in the current frame and temporally neighboring blocks existing in the reference frame. The reference frame including the reference block and the reference frame including the temporally neighboring block may be the same or different. The temporally neighboring block may be referred to as a co-located reference block, a co-located CU (colCU), etc., and the reference frame including the temporally neighboring block may be referred to as a co-located frame (colPic). For example, inter-frame predictor 221 can configure a motion information candidate list based on neighboring blocks and generate information indicating which candidate to use to deduce the motion vector and / or reference frame index of the current block. Inter-frame prediction can be performed based on various prediction modes. For example, in skip mode and merge mode, the inter-frame predictor 221 can use motion information from neighboring blocks as motion information for the current block. In skip mode, unlike merge mode, residual signals may not be sent. In motion vector prediction (MVP) mode, motion vectors from surrounding blocks are used as motion vector predictors, and the motion vector difference is signaled to indicate the motion vector of the current block.

[0071] Predictor 220 can generate a prediction signal based on various prediction methods described later. For example, the predictor can not only apply intra-frame prediction or inter-frame prediction to predict a block, but can also apply both intra-frame and inter-frame prediction simultaneously. This can be referred to as the Inter-intra-frame Combined Prediction (CIIP) mode. Alternatively, the predictor can predict blocks based on the Intra-Block Copy (IBC) prediction mode, or it can predict blocks based on a palette mode. The IBC prediction mode or palette mode can be used for content image / video coding such as Screen Content Coding (SCC) in games, etc. IBC essentially performs prediction within the current frame, but it can be performed similarly to inter-frame prediction because it derives a reference block within the current frame. In other words, IBC can use at least one of the inter-frame prediction techniques described herein. The palette mode can be considered an example of intra-frame coding or intra-frame prediction. When applying a palette mode, sample values ​​within the frame can be signaled based on information about the palette table and palette index. The prediction signal generated by predictor 220 can be used to generate a reconstructed signal or a residual signal.

[0072] Transformer 232 can generate transform coefficients by applying transform techniques to the residual signal. For example, the transform techniques may include at least one of Discrete Cosine Transform (DCT), Discrete Sine Transform (DST), Karhunen–Loève Transform (KLT), Graph-Based Transform (GBT), or Conditional Nonlinear Transform (CNT). Here, GBT represents the transform obtained from a graph when the relationship information between pixels is represented as a graph. CNT represents the transform obtained based on generating a prediction signal using all previously reconstructed pixels. Furthermore, the transform processing can be applied to square pixel blocks of the same size, or it can be applied to non-square blocks of variable size.

[0073] Quantizer 233 can quantize the transform coefficients and send them to entropy encoder 240, which can encode the quantized signal (information about the quantized transform coefficients) and output it as a bitstream. This information about the quantized transform coefficients can be called residual information. Quantizer 233 can rearrange the block-form quantized transform coefficients into a one-dimensional vector based on the coefficient scan order, and can generate information about the quantized transform coefficients based on this one-dimensional vector form.

[0074] The entropy encoder 240 can perform various encoding methods such as Golomb, context-adaptive variable-length coding (CAVLC), and context-adaptive binary arithmetic coding (CABAC). The entropy encoder 240 can encode information required for video / image reconstruction other than quantization transform coefficients (e.g., values ​​of syntax elements, etc.) together or separately.

[0075] Encoded information (e.g., encoded video / image information) can be transmitted or stored in bitstream form at the Network Abstraction Layer (NAL) unit level. The video / image information may also include information about various parameter sets such as Adaptive Parameter Set (APS), Picture Parameter Set (PPS), Sequence Parameter Set (SPS), or Video Parameter Set (VPS). Additionally, the video / image information may include general constraint information. Information and / or syntax elements transmitted from the encoding device to / signaled to the decoding device may be included in the video / image information. The video / image information can be encoded and included in the bitstream through the encoding process described above. The bitstream can be transmitted over a network or stored in a digital storage medium. Here, the network may include broadcast networks and / or communication networks, and the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc. A transmitting unit (not shown) for transmitting the signal output from the entropy encoder 240 and / or a storage unit (not shown) for storing the signal may be configured as internal / external components of the encoding device 200, or the transmitting unit may also be included in the entropy encoder 240.

[0076] The quantized transform coefficients output from quantizer 233 can be used to generate a prediction signal. For example, the residual signal (residual block or residual sample) can be reconstructed by applying dequantization and inverse transform to the quantized transform coefficients via dequantizer 234 and inverse transformer 235. Adder 250 can add the reconstructed residual signal to the prediction signal output from inter-frame predictor 221 or intra-frame predictor 222 to generate a reconstructed signal (reconstructed frame, reconstructed block, reconstructed sample array). When there is no residual for the block to be processed (similar to when a skip mode is applied), the prediction block can be used as a reconstructed block. Adder 250 can be referred to as a reconstructor or reconstructed block generator. The generated reconstructed signal can be used for intra-frame prediction of the next block to be processed in the current frame, and can also be used for inter-frame prediction of the next frame by filtering, as described later. Furthermore, luminance mapping and chroma scaling (LMCS) can be applied in frame encoding and / or reconstruction processing.

[0077] Filter 260 can improve subjective / objective image quality by applying filtering to the reconstructed signal. For example, filter 260 can generate a modified reconstructed image by applying various filtering methods to the reconstructed image, and the modified reconstructed image can be stored in memory 270 (specifically, the DPB of memory 270). Various filtering methods can include deblocking filtering, sample adaptive offsetting, adaptive loop filtering, bilateral filtering, etc. Filter 260 can generate various information about the filtering and send it to entropy encoder 240. The information about the filtering can be encoded in entropy encoder 240 and output as a bitstream.

[0078] The modified reconstructed frame sent to memory 270 can be used as a reference frame in inter-frame predictor 221. When inter-frame prediction is applied through it, the encoding device can avoid prediction mismatch between the encoding device 200 and the decoding device, and can also improve encoding efficiency.

[0079] The DPB of memory 270 can store modified reconstructed frames for use as reference frames in inter-frame predictor 221. Memory 270 can store motion information of blocks in the current frame from which motion information is derived (or encoded) and / or of blocks in previously reconstructed frames. The stored motion information can be sent to inter-frame predictor 221 as motion information for spatially or temporally neighboring blocks. Memory 270 can store reconstructed samples of reconstructed blocks in the current frame and send them to intra-frame predictor 222.

[0080] Figure 3 A rough block diagram of a decoding device that can be implemented using embodiments of the present disclosure and perform decoding of video / image signals is shown.

[0081] ReferenceFigure 3 The decoding device 300 can be configured to include an entropy decoder 310, a residual processor 320, a predictor 330, an adder 340, a filter 350, and a memory 360. The predictor 330 may include an inter-frame predictor 332 and an intra-frame predictor 331. The residual processor 320 may include a dequantizer 321 and an inverse transformer 322.

[0082] According to the implementation, the entropy decoder 310, residual processor 320, predictor 330, adder 340, and filter 350 described above can be configured by a single hardware component (e.g., a decoder chipset or processor). Additionally, the memory 360 may include a decoded screen buffer (DPB) and can be configured by a digital storage medium. The hardware component may also include the memory 360 as an internal / external component.

[0083] When the input includes a bitstream containing video / image information, the decoding device 300 can respond to... Figure 2 The encoding device processes video / image information to reconstruct the image. For example, the decoding device 300 can deduce units / blocks based on block segmentation information obtained from the bitstream. The decoding device 300 can perform decoding using processing units applied in the encoding device. Therefore, the decoding processing unit can be an encoding unit, and the encoding unit can be segmented from the encoding tree unit or a larger encoding unit according to a quadtree structure, binary tree structure, and / or ternary tree structure. At least one transform unit can be derived from the encoding unit. Furthermore, the reconstructed image signal decoded and output by the decoding device 300 can be played back by a playback device.

[0084] Decoding device 300 can receive data in bitstream form from... Figure 2The signal output by the encoding device can be decoded by the entropy decoder 310. For example, the entropy decoder 310 can parse the bitstream to derive the information (e.g., video / image information) required for image reconstruction (or picture reconstruction). The video / image information may also include information about various parameter sets such as Adaptive Parameter Set (APS), Picture Parameter Set (PPS), Sequence Parameter Set (SPS), or Video Parameter Set (VPS). In addition, the video / image information may also include general constraint information. The decoding device can also decode the picture based on the information about the parameter sets and / or general constraint information. The information and / or syntax elements that are signaled / received, as described later herein, can be decoded and obtained from the bitstream through the decoding process. For example, the entropy decoder 310 can decode the information in the bitstream based on encoding methods such as Exponential Golomb coding, CAVLC, CABAC, etc., and output the values ​​of the syntax elements required for image reconstruction and the quantized values ​​of the transform coefficients of the residuals. More specifically, the CABAC entropy decoding method can receive bins corresponding to each syntax element from the bitstream, determine a context model using information about the syntax element to be decoded, decoding information of surrounding blocks and the block to be decoded, or information about symbols / bins decoded in previous steps, perform arithmetic decoding of bins by predicting the occurrence probability of bins based on the determined context model, and generate symbols corresponding to the values ​​of each syntax element. In this case, after determining the context model, the CABAC entropy decoding method can update the context model by using information about the decoded symbols / bins for the context model of the next symbol / bin. Among the information decoded in the entropy decoder 310, information about prediction is provided to the predictors (inter-frame predictor 332 and intra-frame predictor 331), and the residual values ​​(i.e., quantization transform coefficients and related parameter information) from which entropy decoding has been performed in the entropy decoder 310 can be input to the residual processor 320. The residual processor 320 can derive residual signals (residual blocks, residual samples, residual sample arrays). In addition, information about filtering from the information decoded in the entropy decoder 310 can be provided to the filter 350. Furthermore, the receiving unit (not shown) that receives the signal output from the encoding device can be further configured as an internal / external component of the decoding device 300, or the receiving unit can be a component of the entropy decoder 310.

[0085] Furthermore, the decoding device according to this specification may be referred to as a video / image / screen decoding device, and the decoding device may be divided into an information decoder (video / image / screen information decoder) and a sample decoder (video / image / screen sample decoder). The information decoder may include an entropy decoder 310, and the sample decoder may include at least one of a dequantizer 321, an inverse transformer 322, an adder 340, a filter 350, a memory 360, an inter-frame predictor 332, and an intra-frame predictor 331.

[0086] Dequantizer 321 can dequantize the quantized transform coefficients and output the transform coefficients. Dequantizer 321 can rearrange the quantized transform coefficients into two-dimensional blocks. In this case, the rearrangement can be performed based on the coefficient scan order performed in the encoding device. Dequantizer 321 can perform dequantization on the quantized transform coefficients using quantization parameters (e.g., quantization step size information) and obtain the transform coefficients.

[0087] The inverse transformer 322 performs an inverse transformation on the transformation coefficients to obtain the residual signal (residual block, residual sample array).

[0088] Predictor 320 can perform prediction on the current block and generate a prediction block that includes prediction samples of the current block. Predictor 320 can determine whether to apply intra-frame prediction or inter-frame prediction to the current block based on the prediction information output from entropy decoder 310, and determine the specific intra-frame / inter-frame prediction mode.

[0089] Predictor 320 can generate prediction signals based on various prediction methods described later. For example, predictor 320 can not only apply intra-frame prediction or inter-frame prediction to predict a block, but can also apply intra-frame prediction and inter-frame prediction simultaneously. This can be referred to as the Inter-Frame Intra-Frame Combined Prediction (CIIP) mode. Alternatively, the predictor can predict blocks based on the Intra-Frame Block Copy (IBC) prediction mode, or it can predict blocks based on a palette mode. The IBC prediction mode or palette mode can be used for content image / video coding such as Screen Content Coding (SCC) in games, etc. IBC essentially performs prediction within the current frame, but it can be performed similarly to inter-frame prediction because it derives a reference block within the current frame. In other words, IBC can use at least one of the inter-frame prediction techniques described herein. The palette mode can be considered an example of intra-frame coding or intra-frame prediction. When the palette mode is applied, information about the palette table and palette index can be included in the video / image information and signaled.

[0090] Intra-predictor 331 can predict the current block by referencing samples within the current frame. Depending on the prediction mode, the referenced samples can be located near the current block or at a specific distance away. In intra-prediction, the prediction mode can include at least one non-directional mode and multiple directional modes. Intra-predictor 331 can determine the prediction mode applied to the current block by using prediction modes applied to neighboring blocks.

[0091] Inter-frame predictor 332 can deduce the predicted block of the current block based on a reference block (reference sample array) specified by motion vectors on a reference frame. In this case, to reduce the amount of motion information transmitted in inter-frame prediction mode, motion information can be predicted on a block, sub-block, or sample basis based on the correlation of motion information between neighboring blocks and the current block. Motion information may include motion vectors and reference frame indices. Motion information may also include inter-frame prediction direction information (L0 prediction, L1 prediction, Bi prediction, etc.). For inter-frame prediction, neighboring blocks may include spatially neighboring blocks existing in the current frame and temporally neighboring blocks existing in the reference frame. For example, inter-frame predictor 332 can configure a motion information candidate list based on neighboring blocks and deduce the motion vector and / or reference frame index of the current block based on the received candidate selection information. Inter-frame prediction can be performed based on various prediction modes, and the information about the prediction may include information indicating the inter-frame prediction mode of the current block.

[0092] Adder 340 can add the obtained residual signal to the prediction signal (prediction block, prediction sample array) output from the predictor (including inter-frame predictor 332 and / or intra-frame predictor 331) to generate a reconstruction signal (reconstructed frame, reconstruction block, reconstruction sample array). When there is no residual for the block to be processed (similar to when a skip mode is applied), the prediction block can be used as a reconstruction block.

[0093] Adder 340 can be referred to as a reconstructor or reconstruction block generator. The generated reconstructed signal can be used for intra-frame prediction of the next block to be processed in the current frame, can be output through filtering as described later, or can be used for inter-frame prediction of the next frame. In addition, luminance mapping and chroma scaling (LMCS) can be applied in the frame decoding process.

[0094] Filter 350 can improve subjective / objective image quality by applying filtering to the reconstructed signal. For example, filter 350 can generate a modified reconstructed image by applying various filtering methods to the reconstructed image and send the modified reconstructed image to memory 360 (specifically, the DPB of memory 360). Various filtering methods may include deblocking filtering, sample adaptive offset, adaptive loop filter, bilateral filter, etc.

[0095] The (modified) reconstructed frame stored in the DPB of memory 360 can be used as a reference frame in inter-frame predictor 332. Memory 360 can store motion information of blocks in the current frame from which motion information is derived (or decoded) and / or motion information of blocks in previously reconstructed frames. The stored motion information can be sent to inter-frame predictor 332 as motion information of spatially or temporally neighboring blocks. Memory 360 can store reconstructed samples of reconstructed blocks in the current frame and send them to intra-frame predictor 331.

[0096] The embodiments described in this document in the filter 260, inter-frame predictor 221 and intra-frame predictor 222 of the encoding device 200 can also be applied equivalently or correspondingly to the filter 350, inter-frame predictor 332 and intra-frame predictor 331 of the decoding device 300, respectively.

[0097] Figure 4 A decoding method performed by a decoding device 300 as an embodiment of the present disclosure is shown.

[0098] Reference Figure 4 The coded block can be segmented based on a predetermined segmentation type (S400).

[0099] Here, a coding block may refer to a coding tree block. Alternatively, it may refer to a coding block generated by block segmentation based on a predetermined segmentation type. The segmentation type according to this disclosure may include at least one of quadruple segmentation, binary segmentation, or triad segmentation. As an example, a coding block may be one of four coding blocks generated by quadruple segmentation. Alternatively, a coding block may be one of multiple coding blocks generated by binary or triad segmentation.

[0100] Furthermore, the coded tree block according to this disclosure can be defined as a square block. However, this disclosure is not limited to this, and the coded tree block can also be defined as a non-square block. Additionally, the coded block generated by block segmentation based on a predetermined segmentation type can be a square block or a non-square block. As an example, depending on the shape of the coded block to be segmented (hereinafter referred to as the current block), the coded block generated by quad-segmentation can be a square block or a non-square block. Depending on the shape of the current block, the number or range of segmentation types allowed / applied to the current block can vary. The segmentation types according to this disclosure will be described in detail below.

[0101] 1. Quadruple partitioning

[0102] Quad-branch partitioning can refer to a partitioning type that divides the current block into four coded blocks. As an example, quad-branch partitioning can divide the current block into four coded blocks using a horizontal line and a vertical line intersecting the center of the block. Here, the four coded blocks can have the same size. Quad-branch partitioning can be applied to square blocks or non-square blocks. According to this disclosure, quad-branch partitioning can be classified as square quad-branch partitioning that divides a square block into four and non-square quad-branch partitioning that divides a non-square block into four.

[0103] Non-square quadrilateral partitioning can be applied when the width and height of the current block are different from each other. The width and height of the four encoded blocks generated by the non-square quadrilateral partitioning can be different from each other. Non-square quadrilateral partitioning can be applied when the width-to-height ratio of the current block is 1:N or N:1. Here, N can be an integer of 2, 3, 4, 5, 6, 7 or larger.

[0104] As an example, when the width-to-height ratio of the current block is 1:2 or 2:1, the current block can be divided into four non-square coding blocks based on quad-segmentation. In this case, when the width and height of the current block are defined as cuWidth and cuHeight respectively, the width and height of the four non-square coding blocks generated by quad-segmentation can be cuWidth / 2 and cuHeight / 2.

[0105] Alternatively, when the width-to-height ratio of the current block is 1:4 or 4:1, the current block can be divided into four non-square coding blocks based on quad-segmentation. In this case, when the width and height of the current block are defined as cuWidth and cuHeight respectively, the width and height of the four non-square coding blocks generated by quad-segmentation can be cuWidth / 2 and cuHeight / 2.

[0106] Alternatively, the non-square quadrilateral segmentation is not limited to being applied to non-square blocks with a width-to-height ratio of 1:2, 2:1, 1:4, or 4:1, and can be extended to be applied to non-square blocks with a width-to-height ratio of 1:3, 3:1, 1:5, 5:1, 1:6, 6:1, 1:7, or 7:1.

[0107] Whether to allow and / or apply non-square quadrilateral segmentation can be determined based on the encoding parameters of the current block. The encoding parameters of the current block can include at least one of the size, shape, position, tree type, component type, or segmentation type of the encoding block to which the current block belongs. Here, the size of the current block can be represented by at least one of width, height, the maximum / minimum value of width and height, the product of width and height, the sum of width and height, or the ratio of width to height. The shape of the current block can indicate whether the width and height of the current block are the same. The position of the current block can indicate whether the current block is located at the edge of the frame.

[0108] As an example, non-square quadrilateral segmentation can be allowed or applied when the size of the current block is greater than or equal to a predetermined threshold size (condition 1). Conversely, non-square quadrilateral segmentation is not allowed or not applied to the current block when the size of the current block is less than the predetermined threshold size. The threshold size can refer to the minimum block size that allows non-square quadrilateral segmentation. Alternatively, the threshold size can refer to the minimum block size for which non-square quadrilateral segmentation has been applied. Information about the minimum block size for non-square quadrilateral segmentation can be signaled using at least one of the high-level syntaxes such as Sequence Parameter Set (SPS), Picture Parameter Set (PPS), or Slice Header (SH). Alternatively, the minimum block size for non-square quadrilateral segmentation can be a predefined value in both the encoding and decoding devices, and can be an integer of 8, 16, 32, 64, or larger.

[0109] As an example, non-square quadrilateral partitions can be allowed or applied when the width and height of the current block are different from each other (condition 2). Conversely, non-square quadrilateral partitions are not allowed when the width and height of the current block are the same as each other.

[0110] For example, even when the width and height of the current block are different from each other, non-square quadrilateral partitioning may be allowed or applied when the ratio of the width and height of the current block corresponds to a predefined ratio (condition 3). Conversely, non-square quadrilateral partitioning may not be allowed for the current block when the ratio of the width and height of the current block does not correspond to a predefined ratio. In this document, the predefined ratio may be expressed as 1:M or M:1, and may include at least one of 1:2, 2:1, 1:3, 3:1, 1:4, 4:1, 1:5, 5:1, 1:6, 6:1, 1:7, or 7:1. For example, non-square quadrilateral partitioning may be allowed or applied when the ratio of the width and height of the current block is 1:2 or 2:1. Additionally, non-square quadrilateral partitioning may be allowed or applied when the ratio of the width and height of the current block is 1:4 or 4:1. Additionally, when segmenting coded blocks, asymmetric binary splits, which will be described later, can be allowed, and in this case, non-square quadrilateral splits can also be allowed or applied for the current block with a width-to-height ratio of 1:3 or 3:1.

[0111] As an example, when the current block is in the frame, a non-square quadrilateral segmentation (condition 4) may be allowed or applied. Conversely, when the current block is at the frame boundary, a non-square quadrilateral segmentation may not be allowed or applied for the current block. In other words, a non-square quadrilateral segmentation is not allowed for the current block when its right boundary exceeds the right boundary of the frame and / or its bottom boundary exceeds the bottom boundary of the frame. Alternatively, a non-square quadrilateral segmentation may be allowed or applied when the current block is in the frame, or when its boundary exceeds both the right and bottom boundaries of the frame. Conversely, a non-square quadrilateral segmentation is not allowed when its boundary exceeds only one of the right or bottom boundaries of the frame. Alternatively, a non-square quadrilateral segmentation may be allowed or applied when the current block is in the frame, or when its boundary exceeds only one of the right or bottom boundaries of the frame. Conversely, a non-square quadrilateral segmentation is not allowed when its boundary exceeds both the right and bottom boundaries of the frame. However, this disclosure is not limited thereto, and non-square quadrilaterals may be allowed for the current block even when the right boundary of the current block exceeds the right boundary of the screen and / or the bottom boundary of the current block exceeds the bottom boundary of the screen.

[0112] For example, when a non-square coded block is generated by performing at least one or more splits based on a binary or ternary split of the coded block to which the current block belongs, a non-square quadrilateral split can be allowed or applied to the corresponding non-square coded block (condition 5). That is, when the current block is a non-square coded block generated based on a binary or ternary split, a non-square split can be allowed or applied to the current block.

[0113] This paper proposes the application of non-square quadrilateral partitioning to various non-square coding blocks that can be generated using a Multi-Type Tree (MTT) partitioning structure. Specifically, non-square coding blocks can be generated by performing binary partitioning on square coding blocks, and non-square quadrilateral partitioning can be permitted or applied to the generated non-square coding blocks. Alternatively, non-square coding blocks can be generated by performing triangular partitioning on square coding blocks, and non-square quadrilateral partitioning can be permitted or applied to the generated non-square coding blocks. In this case, non-square quadrilateral partitioning can be permitted or applied to the coding block at the center position of the three coding blocks generated by triangular partitioning, and non-square quadrilateral partitioning can be restricted so that it is not permitted or applied to the remaining coding blocks. Alternatively, non-square quadrilateral partitioning can be permitted or applied to each of the three coding blocks generated by triangular partitioning.

[0114] For example, when a non-square coded block is divided into multiple sub-blocks based on non-square quadrature partitioning, non-square quadrature partitioning can be restricted so that it is no longer allowed or applied in the corresponding sub-blocks (condition 6). That is, if the current block is any of the four sub-blocks generated by the non-square quadrature partitioned coded block, non-square quadrature partitioning can be disallowed or not applied for the current block. Since non-square quadrature partitioning is no longer allowed or applied in the four sub-blocks generated by non-square quadrature partitioning, it is not possible to signal the split_qt_flag (described later) for the sub-blocks.

[0115] Specifically, a non-square coded block can be divided into four first sub-blocks based on a non-square quadrature partition. At least one of the four first sub-blocks can be divided into four second sub-blocks based on the non-square quadrature partition. However, by means of predefined rules in the encoding and decoding devices, when a non-square coded block is divided into four first sub-blocks based on a non-square quadrature partition, it can be restricted such that the non-square quadrature partition is no longer permitted or applied for the first sub-blocks.

[0116] Alternatively, the non-square quadrilateral segmentation can be restricted to be performed within a predetermined number of times. Here, the predetermined number of times can be an integer greater than or equal to 1 (e.g., 1, 2, 3). The predetermined number of times can be a value predefined in both the encoding and decoding devices. Alternatively, information indicating the predetermined number of times can be signaled. The corresponding information can be signaled in at least one of the Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Picture Header (PH), or Slice Header (SH), or a higher-level syntax.

[0117] For example, a variable (nqtDepth) can be defined to represent the number of times a non-square quadrupole partition is applied. When a non-square quadrupole partition is applied to a coded block with an nqtDepth of 0, the coded block can be divided into four first sub-blocks. In this case, the value of nqtDepth increases to 1, and the four first sub-blocks have an nqtDepth value of 1. When the predetermined number is 1, since the nqtDepth of the first sub-block is equal to the predetermined number, non-square quadrupole partitioning is no longer allowed or applied to the first sub-block. However, when the predetermined number is 2, since the nqtDepth of the first sub-block is less than the predetermined number, non-square quadrupole partitioning can be additionally allowed or applied to the first sub-block. When a non-square quadrupole partition is applied to the first sub-block, the first sub-block can be divided into four second sub-blocks. In this case, the value of nqtDepth increases to 2, and the four second sub-blocks have an nqtDepth value of 2. Since the nqtDepth of the second sub-block is equal to the predetermined number of times, non-square quadrilateral partitioning is no longer allowed or applied to the second sub-block.

[0118] However, while additional non-square quadrilateral partitioning is restricted for sub-blocks generated by non-square quadrilateral partitioning, binary and / or ternary partitioning can be permitted or applied to the corresponding sub-blocks. In this case, binary partitioning may be disallowed or not applied to the corresponding sub-block when the partitioning depth of the sub-block is equal to the maximum partitioning depth or when the size of the block generated by binary partitioning is less than the minimum binary partitioning size. Similarly, ternary partitioning may be disallowed or not applied when the partitioning depth of the sub-block is equal to the maximum partitioning depth or when the size of the block generated by ternary partitioning is less than the minimum ternary partitioning size.

[0119] For example, restrictions can be imposed such that non-square quadruple partitioning is not allowed or not applied based on the partition depth of the current block (condition 7). Non-square partitioning is not allowed or not applied to the current block when the partition depth (Multi-type Tree Depth MTTD) of the current block is greater than a predetermined threshold. On the other hand, non-square partitioning can be allowed or applied to the current block when the partition depth of the current block is less than or equal to the predetermined threshold. Here, partition depth can refer to partition depth based on binary and ternary partitioning. However, it is not limited to this, and partition depth can refer to partition depth based on either binary or ternary partitioning. Alternatively, partition depth can refer to partition depth based on quadruple, binary, and ternary partitioning. The threshold can refer to the maximum partition depth that allows non-square quadruple partitioning. The threshold can be a value predefined in both the encoding and decoding devices. Alternatively, information for specifying the threshold can be signaled via the bitstream. The corresponding information can be signaled in at least one of the Sequence Parameter Set (SPS), Picture Parameter Set (PPS), Picture Header (PH), or Slice Header (SH), or a higher-level syntax. The threshold can be an integer greater than or equal to 1.

[0120] For example, a 4N×4N coded block can be divided into two 4N×2N first sub-blocks based on horizontal binary splitting. Assuming the splitting depth of the 4N×4N coded block is 0, the splitting depth of the two first sub-blocks can be set to 1. Either of the two first sub-blocks can be divided into three second sub-blocks based on ternary splitting. The splitting depth of the second sub-blocks can be set to 2. The block at the center of the three second sub-blocks can be divided into two third sub-blocks based on binary splitting. The splitting depth of the two third sub-blocks can be set to 3. Assuming a threshold of 2, since the splitting depth of the third sub-block is greater than the threshold, non-square quadrilateral splitting is not allowed or not applied to the third sub-block. On the other hand, since the splitting depth of the other of the two first sub-blocks is 1, which is less than the threshold, non-square quadrilateral splitting can be allowed or applied to the corresponding first sub-block.

[0121] However, when the segmentation depth of the sub-block to be segmented is equal to the maximum segmentation depth or the size of the block generated by non-square quadrature segmentation is less than the minimum block size, non-square quadrature segmentation may not be allowed or may not be applied to the corresponding sub-block.

[0122] Non-square quadrilateral segmentation according to this disclosure may be permitted or applied when the same predefined conditions are met in both the encoding and decoding devices. Here, the predefined conditions may include at least one of the aforementioned conditions 1 to 7. Non-square quadrilateral segmentation is permitted or applied only when all predefined conditions are met. Alternatively, non-square quadrilateral segmentation may be permitted or applied when any one of the predefined conditions is met.

[0123] Quad splitting can be performed adaptively based on the quad flag (split_qt_flag). When the value of split_qt_flag is equal to 1, the current block can be split into four coded blocks, and when the value of split_qt_flag is equal to 0, the current block can be left unsplit into four coded blocks.

[0124] The quad-pole flag can be used to indicate whether a square quad-pole partitioning has been applied. Additionally, without signaling or deriving additional flags to indicate whether a non-square quad-pole partitioning has been applied, the quad-pole flag can be used to indicate whether a non-square quad-pole partitioning has been applied. For example, when the current block is square, the quad-pole flag can indicate whether the square current block has been partitioned into four square coding blocks. When the current block is non-square, the quad-pole flag can indicate whether the non-square current block has been partitioned into four non-square coding blocks.

[0125] When using square quadruple segmentation or non-square quadruple segmentation adaptively based on syntax (i.e., quadruple tags), a context model for the quadruple tags of the current block can be derived based on the segmentation depth of at least one of the current block or neighboring blocks. Neighboring blocks can be blocks encoded before the current block and can include at least one of the upper neighboring block, left neighboring block, upper-left neighboring block, lower-left block, or upper-right block.

[0126] For example, when the current block is a square coded block, a context model for square quadrilateral segmentation of the current block can be derived based on the segmentation depth of the current block or at least one of its neighboring blocks. Here, segmentation depth can refer to the segmentation depth based on quadrilateral segmentation. The segmentation depth based on quadrilateral segmentation can be a value obtained by summing the segmentation depth based on square quadrilateral segmentation and the segmentation depth based on non-square quadrilateral segmentation.

[0127] Alternatively, when the current block is a non-square coded block, a context model for non-square quadrilateral segmentation of the current block can be derived based on the segmentation depth of the current block or at least one of its neighboring blocks. Here, segmentation depth can refer to the segmentation depth based on quadrilateral segmentation. The segmentation depth based on quadrilateral segmentation can be a value obtained by summing the segmentation depth based on square quadrilateral segmentation and the segmentation depth based on non-square quadrilateral segmentation.

[0128] Alternatively, a context model for a square quadrature segmentation of the current block can be derived based on the segmentation depth of at least one of the current block or its neighboring blocks. Here, segmentation depth can refer to the segmentation depth based on quadrature segmentation. The segmentation depth based on quadrature segmentation can represent the segmentation depth based on square quadrature segmentation.

[0129] Alternatively, a context model for a non-square quadrature segmentation of the current block can be derived based on the segmentation depth of at least one of the current block or its neighboring blocks. Here, segmentation depth can refer to the segmentation depth based on quadrature segmentation. Segmentation depth based on quadrature segmentation can refer to the segmentation depth based on a non-square quadrature segmentation.

[0130] 2. Binary and Triangular Partitions

[0131] Binary splitting refers to a splitting type where the current block is divided into two coded blocks. Binary splitting can be achieved by dividing the current block into two coded blocks using a single horizontal or vertical line. As an example, binary splitting can be classified as symmetric binary splitting and asymmetric binary splitting. In symmetric binary splitting, a single horizontal or vertical line passes through the center of the block, while in asymmetric binary splitting, a single horizontal or vertical line does not pass through the center of the block.

[0132] In the case of symmetric binary partitioning, the current block can be divided into two coded blocks of the same size, while in the case of asymmetric binary partitioning, the current block can be divided into two coded blocks of different sizes. Binary partitioning can be applied to square blocks and can also be applied to non-square blocks. Asymmetric binary partitioning can be applied to square blocks and can also be excluded from application to non-square blocks. Alternatively, asymmetric binary partitioning can be applied to non-square blocks and can also be excluded from application to square blocks. Alternatively, asymmetric binary partitioning can be applied regardless of the block shape.

[0133] Tri-branch splitting refers to a splitting type where the current block is divided into three coded blocks. As an example, tri-branch splitting can be achieved by dividing the current block into three coded blocks using three horizontal or vertical lines that do not cross the center of the block. Here, the width or height ratio of the three coded blocks can be 1:2:1. Tri-branch splitting can be applied to square blocks as well as non-square blocks.

[0134] Binary and ternary splits can be performed adaptively based on a binary flag (split_binary_flag). This flag indicates whether a coded block is split into two blocks. For example, when the binary flag is 1, the block is split into two based on binary splits, and when the flag is 0, the block is split into three based on ternary splits.

[0135] A segmentation direction flag can also be used to indicate the segmentation direction of a binary or ternary split. Based on the segmentation direction flag, the current block can be split into two coding blocks based on a horizontal or vertical binary split. Similarly, based on the segmentation direction flag, the current block can be split into three coding blocks based on a horizontal or vertical ternary split. The segmentation direction flag can be signaled before or after the binary flag.

[0136] Alternatively, index information can be used to specify the position of the split line for asymmetric binary splits. The index information can specify any of the same predefined candidate positions in both the encoding and decoding devices. The index information can be obtained when it is determined that a binary split is applied to the current block. In this case, the predefined candidate positions can include the positions of split lines for symmetric binary splits. Alternatively, even when it is determined that a binary split is applied to the current block, the index information can be obtained only when it is determined that an asymmetric binary split is applied to the current block. In this case, the predefined candidate positions can exclude the positions of split lines for symmetric binary splits and can include the positions of split lines for asymmetric binary splits.

[0137] On the other hand, when the binary splitting according to this disclosure is applied multiple times to a coding block, it may result in the block being split into the same shape as a square or non-square quadrilateral split. To prevent such block splitting of the same shape from occurring, binary splitting can be restricted to be allowed when it corresponds to predefined conditions.

[0138] For example, when two coding blocks are generated by applying a horizontal binary split to a square or non-square coding block, and a vertical binary split is applied to each of the two coding blocks, a block split with the same shape as the square or non-square split may occur.

[0139] Thus, when a coding block is divided into two coding blocks by horizontal binary splitting (condition 1), and vertical binary splitting is applied to the upper coding block of the two coding blocks (condition 2), a restriction can be imposed so that vertical binary splitting is not applied to the lower coding block of the two coding blocks. For this purpose, the splitting information for the lower coding block can be notified without signaling. Here, the splitting information may include at least one of a binary flag or a splitting direction flag.

[0140] Even when a coding block is divided into two coding blocks by horizontal binary splitting (condition 1), vertical binary splitting can still be applied to the lower coding block of the two coding blocks if it is not applied to the upper coding block. Furthermore, the splitting information for the lower coding block can be signaled for this purpose. In other words, restrictions can be imposed so that vertical binary splitting is not applied to the lower coding block when conditions 1 and 2 are met.

[0141] Alternatively, when two coding blocks are generated by applying a vertical binary split to a square or non-square coding block, and a horizontal binary split is applied to each of the two coding blocks, a block split having the same shape as a square or non-square quadrature split may occur.

[0142] Thus, when a coding block is divided into two coding blocks by a vertical binary split (condition 3), and a horizontal binary split is applied to the left coding block of the two coding blocks (condition 4), a restriction can be imposed so that the horizontal binary split is not applied to the right coding block of the two coding blocks. For this purpose, the splitting information for the right coding block can be notified without a signal. Here, the splitting information may include at least one of a binary flag or a splitting direction flag.

[0143] Even when a coding block is divided into two coding blocks by vertical binary splitting (condition 3), horizontal binary splitting can be applied to the right coding block of the two coding blocks, provided that it is not applied to the left coding block. Furthermore, the splitting information for the right coding block can be signaled for this purpose. In other words, restrictions can be imposed such that horizontal binary splitting is not applied to the right coding block when conditions 3 and 4 are met.

[0144] The restrictions can be applied adaptively based on at least one of the size of the coding tree unit (CTU) or the size of the current block. For example, when the size of the coding tree unit is 256×256, restrictions can be applied when the size of the current block is 64×64 or 128×128. Alternatively, when the size of the coding tree unit is 128×128, restrictions can be applied when the size of the current block is 32×32, 64×64, or 128×128.

[0145] The following section describes a method for signaling segmentation information for block segmentation based on the above segmentation types.

[0146] Information regarding non-square quadrature segmentation of the current block can be signaled using information for square quadrature segmentation. In image encoding / decoding methods and devices using various block segmentation techniques, signaling may be required when using additional segmentation types. However, this disclosure proposes a method for signaling information regarding non-square quadrature segmentation using existing syntax, without requiring signaling of additional syntax for non-square quadrature segmentation.

[0147] For example, by using the aforementioned quadrature flag (split_qt_flag), in addition to information on square quadrature partitions, information on non-square quadrature partitions can also be signaled.

[0148] Specifically, a split flag (split_cu_flag) indicating whether the current block has been split into multiple coded blocks can be used to signal whether the current block has been split into multiple coded blocks. When the split flag indicates that the current block has not been split, the current block can be identified as a leaf node of the split tree. When the current block has not been split into multiple coded blocks, no additional split information for the current block needs to be signaled, and the current block can be identified as a leaf node of a quadtree, binary tree, or ternary tree. On the other hand, when the split flag indicates that the current block has been split into multiple coded blocks, additional split information for the current block can be signaled. Here, the split information may include at least one of the following: quadtree flag, binary tree flag, split direction flag, flag indicating whether a non-square quadtree split is applied, flag indicating whether an asymmetric binary tree split is applied, or index information for asymmetric binary tree split.

[0149] When the segmentation flag indicates that the current block is to be segmented into multiple coded blocks, a signal can be used to notify the quad-signal for the current block. When the quad-signal indicates that quad-segmentation should be applied to the current block, the current block can be segmented into four sub-blocks of the same size. Here, if the current block is a square coded block, it can be segmented into four square sub-blocks. If the current block is a non-square coded block, it can be segmented into four non-square sub-blocks. That is, when the quad-signal indicates that quad-segmentation should be applied to the current block, either square quad-segmentation or non-square quad-segmentation can be selectively applied based on whether the current block is square. Either square quad-segmentation or non-square quad-segmentation can be selectively applied to the current block based on its size. When a quad sign indicates that a quad segmentation should be applied to the current block, a square quad segmentation dividing the current block into four N×N coded blocks can be applied to a 2N×2N current block; a non-square quad segmentation dividing the current block into four N×(1 / 2N) coded blocks can be applied to a 2N×N current block; and a non-square quad segmentation dividing the current block into four (1 / 2N)×N coded blocks can be applied to an N×2N current block. In other words, according to this disclosure, when a quad sign is used, block segmentation of different shapes can be performed based on the size of the current block.

[0150] Even when the quad sign of the current block indicates that a quad split should be applied to the current block, a non-square quad split can only be applied if a non-square quad split is allowed for the current block. The cases where a non-square quad split is allowed for the current block correspond to the cases that satisfy the predefined conditions described above.

[0151] On the other hand, when the quad-pole flag indicates that quad-pole partitioning is not applied to the current block, the current block may not be partitioned into four sub-blocks. Furthermore, when the quad-pole flag indicates that quad-pole partitioning is not applied to the current block, this may indicate that the current block is partitioned based on a partitioning type other than quad-pole partitioning. Therefore, partitioning information regarding partitioning types other than quad-pole partitioning can be signaled.

[0152] A split direction flag (mtt_split_cu_vertical_flag) can be used to indicate the splitting direction of a binary or ternary split. A split direction flag with a first value (or true) indicates that the current block is split in the vertical direction, while a split direction flag with a second value (or false) indicates that the current block is split in the horizontal direction. Conversely, a split direction flag with a first value (or true) indicates that the current block is split in the horizontal direction, while a split direction flag with a second value (or false) indicates that the current block is split in the vertical direction.

[0153] A binary flag (mtt_split_cu_binary_flag) indicating whether the current block is split into two coded blocks based on a binary split can be additionally signaled. A binary flag with a first value (or true) indicates that the current block is split into two coded blocks based on a binary split, and a binary flag with a second value (or false) indicates that the current block is not split based on a binary split. Alternatively, a binary flag with a second value (or false) indicates that the current block is split into three coded blocks based on a ternary split. Conversely, a binary flag with a first value (or true) indicates that the current block is not split based on a binary split. Alternatively, a binary flag with a first value (or true) indicates that the current block is split into three coded blocks based on a ternary split, and a binary flag with a second value (or false) indicates that the current block is split into two coded blocks based on a binary split.

[0154] The binary segmentation flag can be signaled after the segmentation direction flag. Alternatively, the binary segmentation flag can be signaled before the segmentation direction flag. When only one of binary or ternary segmentation is used in the encoding and decoding devices, the segmentation type of the current block can be determined without signaling the binary segmentation flag.

[0155] Reference Figure 4 Multiple coding blocks generated by dividing coding blocks can be decoded sequentially according to a predetermined coding order (S410).

[0156] Figure 5 A schematic configuration of a decoding device 300 performing a decoding method according to the present disclosure is shown.

[0157] Reference Figure 5 The decoding device 300 may include a block splitter 500 and a block decoder 510. The block splitter 500 may be configured in the entropy decoder 310, or it may be configured in the decoding device 300 as a separate module connected to the entropy decoder 310.

[0158] The block splitter 500 can split coded blocks based on a predetermined splitting type. For specific splitting methods, please refer to [reference needed]. Figure 4 The detailed description of it will be omitted here.

[0159] The block splitter 500 can split coded blocks by using at least one of quadruple splitting, binary splitting, or triangular splitting. Here, quadruple splitting can be classified as square quadruple splitting for splitting square blocks into four and non-square quadruple splitting for splitting non-square blocks into four. In addition, binary splitting can include at least one of symmetric binary splitting or asymmetric binary splitting.

[0160] The block splitter 500 can use predetermined segmentation information for block segmentation based on a predetermined segmentation type. Here, the segmentation information may include at least one of a segmentation flag, a quadruple flag, a binary flag, a segmentation direction flag, a flag indicating whether a non-square quadruple segmentation is applied, a flag indicating whether an asymmetric binary segmentation is applied, or index information for asymmetric binary segmentation. The segmentation information may be information signaled via a bitstream, or it may be information deduced in the decoding device 300.

[0161] Furthermore, when the binary splitting according to this disclosure is applied multiple times to a single coding block, it is possible that the coding block may be split into the same shape as a non-square quadrilateral split. To prevent the occurrence of block splits of the same shape, the block splitter 500 can restrict the binary splitting to be allowed when corresponding to predefined conditions.

[0162] The block decoder 510 can sequentially decode multiple encoded blocks generated by the block splitter 500 according to a predetermined encoding order.

[0163] Figure 6 An encoding method performed by an encoding device 200 as an embodiment of the present disclosure is shown.

[0164] Reference Figure 6 The coded block can be segmented based on a predetermined segmentation type (S600).

[0165] Here, a coded block may refer to a coded tree block. Alternatively, it may refer to a coded block generated by block segmentation based on a predetermined segmentation type. The segmentation type according to this disclosure may include at least one of quadruple segmentation, binary segmentation, or triangular segmentation.

[0166] Furthermore, the coded tree block according to this disclosure can be defined as a square block. However, this disclosure is not limited to this, and the coded tree block can also be defined as a non-square block. Additionally, the coded block generated by block segmentation based on a predetermined segmentation type can be a square block or a non-square block. Depending on the shape of the current block, the number or range of segmentation types allowed / applied for the current block can vary. (See also...) Figure 4 The segmentation types according to this disclosure are described, and repeated descriptions will be omitted herein.

[0167] According to this disclosure, quadrilateral segmentation can be classified into square quadrilateral segmentation for dividing a square block into four quadrilaterals and non-square quadrilateral segmentation for dividing a non-square block into four quadrilaterals. When the width and height of the current block are different from each other, it can be determined whether non-square quadrilateral segmentation is allowed / applied to the current block. As an example, when the width-to-height ratio of the current block is 1:N or N:1, it can be determined that non-square quadrilateral segmentation is allowed / applied. Here, N can be an integer of 2, 3, 4, 5, 6, or greater.

[0168] Whether to allow and / or apply non-square quadrilateral partitioning can be determined based on the encoding parameters of the current block. The encoding parameters of the current block can include at least one of the following: size, shape, position, tree type, component type, or partition type of the encoding block to which the current block belongs. This is similar to the reference... Figure 4 As described above, and redundant descriptions of it will be omitted here.

[0169] When quad splitting is determined, the quad flag (split_qt_flag) can be encoded into the bitstream. When the value of split_qt_flag is 1, the value of split_qt_flag is encoded as 1 when the current block is split into four coded blocks, and the value of split_qt_flag can be encoded as 0 when the current block is not split into four coded blocks.

[0170] The quad-point flag can be encoded to indicate whether a square quad-point partitioning is applied. Furthermore, without signaling or deriving additional flags to indicate whether a non-square quad-point partitioning is applied, the quad-point flag can be encoded to indicate whether a non-square quad-point partitioning is applied. For example, when the current block is square, the quad-point flag can indicate whether the square current block is partitioned into four square coded blocks. When the current block is non-square, the square flag can indicate whether the non-square current block is partitioned into four non-square coded blocks.

[0171] On the other hand, the context model of the quad sign of the current block can be derived based on the segmentation depth of the current block or at least one of the neighboring blocks. This is consistent with the reference... Figure 4 As described.

[0172] According to this disclosure, a binary split can mean a split type that divides the current block into two coded blocks, and a ternary split can mean a split type that divides the current block into three coded blocks.

[0173] When it is determined whether to apply binary or ternary splitting, the binary flag (split_binary_flag) can be encoded into the bitstream. When a coded block is split into two blocks, the binary flag can be encoded as 1, and when a coded block is split into three blocks, the binary flag can be encoded as 0. A split direction flag, indicating the direction of the binary or ternary split, can be further encoded. The split direction flag can be encoded before or after the binary flag is encoded. The binary flag can be encoded when the aforementioned quaternary flag (split_qt_flag) is 0.

[0174] Additionally, when asymmetric binary splitting is permitted / applied, index information specifying the position of the split line used for asymmetric binary splitting can be further encoded. The index information can specify any of the predefined candidate positions that are identically defined for both the encoding and decoding devices. In this case, the predefined candidate positions can include the positions of the split lines for symmetric binary splitting. Alternatively, the index information can be encoded only when it is determined that asymmetric binary splitting is being applied to the current block, or even at the moment it is determined that binary splitting is being applied to the current block. In this case, the predefined candidate positions can include the positions of the split lines for asymmetric binary splitting, but not the positions of the split lines for symmetric binary splitting.

[0175] On the other hand, when the binary split according to this disclosure is applied multiple times to a coding block, it is possible that the block may be split into the same shape as a square or non-square quadrilateral split. To prevent such identical block splits from occurring, when the binary split corresponds to predefined conditions, the allowance of binary splits can be restricted, as described in reference... Figure 4 As described.

[0176] The segmentation information of the current block can be encoded. For example, it can be determined whether the current block is segmented into multiple coded blocks. Based on this determination, the segmentation flag (split_cu_flag) can be encoded. When it is determined that the current block is not segmented, the current block can be identified as a leaf node of the segmentation tree. When the current block is not segmented into multiple coded blocks, the additional segmentation information may not be encoded for the current block, and the current block may be identified as a leaf node of a quadtree, binary tree, or ternary tree. On the other hand, when it is determined that the current block is segmented into multiple coded blocks, the additional segmentation information for the current block can be encoded. Here, the segmentation information may include at least one of the following: quadtree flag, binary tree flag, segmentation direction flag, flag indicating whether a non-square quadtree segmentation is applied, flag indicating whether asymmetric binary tree segmentation is applied, or index information for asymmetric binary tree segmentation.

[0177] When a segmentation flag indicates that the current block is to be divided into multiple coded blocks, it can be determined whether to apply quad-segmentation to the current block, and the quad-segment flag for the current block can be encoded based on this determination. When it is determined that quad-segmentation should be applied to the current block, the current block can be divided into four sub-blocks of the same size. Here, when the current block is a square coded block, the current block can be divided into four square sub-blocks. When the current block is a non-square coded block, the current block can be divided into four non-square sub-blocks. That is, when it is determined that quad-segmentation should be applied to the current block, either square quad-segmentation or non-square quad-segmentation can be selectively applied based on whether the shape of the current block is square. Either square quad-segmentation or non-square quad-segmentation can be selectively applied to the current block based on its size. When it is determined that a quad-branch partitioning should be applied to the current block, a square quad-branch partitioning divided into four N×N coded blocks can be applied to a 2N×2N current block, a non-square quad-branch partitioning divided into four N×(1 / 2N) coded blocks can be applied to a 2N×N current block, and a non-square quad-branch partitioning divided into four (1 / 2N)×N coded blocks can be applied to an N×2N current block. That is, according to this disclosure, while encoding a quad-branch flag, block partitioning of different shapes can be performed based on the size of the current block.

[0178] A non-square quadrilateral partition can only be applied if non-square quadrilateral partitions are permitted for the current block. The case where non-square quadrilateral partitions are permitted for the current block corresponds to the case that satisfies the predefined conditions mentioned above, and this is as described in the reference. Figure 4 As described.

[0179] On the other hand, when it is determined that quad-partitioning is not applied to the current block, the current block may not be divided into four sub-blocks. Furthermore, when it is determined that quad-partitioning is not applied to the current block, the current block can be divided based on a partitioning type other than quad-partitioning. For this purpose, partitioning information regarding partitioning types other than quad-partitioning can be encoded.

[0180] The split direction flag (mtt_split_cu_vertical_flag), which indicates the splitting direction of a binary or ternary split, can be encoded. The binary flag (mtt_split_cu_binary_flag), indicating whether the current block is split into two coded blocks based on a binary split, can be encoded separately. The binary flag can be encoded after the split direction flag. Alternatively, the binary flag can be encoded before the split direction flag. When only one of binary or ternary splits is used in both the encoding and decoding devices, the splitting type of the current block can be determined without encoding the binary flag.

[0181] ReferenceFigure 6 Multiple coding blocks generated by dividing coding blocks can be encoded sequentially according to a predetermined coding order (S610).

[0182] Figure 7 A schematic configuration of an encoding device 200 performing the encoding method according to this disclosure is shown.

[0183] Reference Figure 7 The encoding device 200 may include a block segmenter 700 and a block encoder 710. The block segmenter 700 may be configured in the image segmenter 210 or may be configured as a separate module within the encoding device 200.

[0184] The block splitter 700 can split coded blocks based on a predetermined splitting type. For specific splitting methods, please refer to [reference needed]. Figure 4 The detailed description of it will be omitted here.

[0185] The block splitter 700 can split coded blocks by using at least one of quadruple splitting, binary splitting, or triangular splitting. Here, quadruple splitting can be classified as square quadruple splitting for splitting square blocks into four and non-square quadruple splitting for splitting non-square blocks into four. In addition, binary splitting can include at least one of symmetric binary splitting or asymmetric binary splitting.

[0186] The block divider 700 can generate predetermined segmentation information for block segmentation based on a predetermined segmentation type. Here, the segmentation information may include at least one of the following: a segmentation flag, a quadruple flag, a binary flag, a segmentation direction flag, a flag indicating whether a non-square quadruple segmentation is applied, a flag indicating whether an asymmetric binary segmentation is applied, or index information for asymmetric binary segmentation. The segmentation information can be encoded in the entropy encoder 240 and signaled via a bitstream. The encoding method of the segmentation information is as described in [reference]. Figure 6 As stated above.

[0187] On the other hand, when the binary split according to this disclosure is applied multiple times to a coding block, it is possible for the block to be split into the same shape as a non-square quadrilateral split. To prevent such block splits of the same shape from occurring, the block splitter 700 can restrict the binary split from being allowed when the binary split corresponds to a predefined condition.

[0188] The block encoder 710 can sequentially encode multiple encoded blocks generated by the block divider 700 according to a predetermined encoding order.

[0189] In the above embodiments, the method is described based on a flowchart as a series of steps or blocks. However, the corresponding embodiments are not limited to this order of steps. Some steps may occur simultaneously with other steps or in a different order, as described above. In addition, those skilled in the art will understand that the steps shown in the flowchart are not exclusive. Other steps may be included, or one or more steps in the flowchart may be deleted, without affecting the scope of the embodiments of this disclosure.

[0190] The methods described above according to embodiments of the present disclosure can be implemented in software, and the encoding and / or decoding devices according to the present disclosure can be included in an apparatus for performing image processing, such as a TV, computer, smartphone, set-top box, display device, etc.

[0191] In this disclosure, when the implementation is implemented as software, the above-described method can be implemented as a module (process, function, etc.) performing the above-described functions. The module can be stored in memory and can be executed by a processor. The memory can be internal or external to the processor and can be connected to the processor by various well-known means. The processor may include an application-specific integrated circuit (ASIC), another chipset, logic circuitry, and / or data processing devices. The memory may include read-only memory (ROM), random access memory (RAM), flash memory, memory cards, storage media, and / or other storage devices. In other words, the implementations described herein can be executed by implementation on a processor, microprocessor, controller, or chip. For example, the functional units shown in the various figures can be executed by implementation on a computer, processor, microprocessor, controller, or chip. In this case, information for implementation (e.g., information about instructions) or algorithms can be stored in a digital storage medium.

[0192] Furthermore, decoding and encoding devices employing embodiments of this disclosure can be included in multimedia broadcasting transmitting and receiving devices, mobile communication terminals, home theater video devices, digital cinema video devices, surveillance cameras, video conferencing devices, real-time communication devices similar to video communication, mobile streaming devices, storage media, cameras, devices for providing video-on-demand (VOD) services, OTT (over-the-top) video devices, devices for providing internet streaming services, three-dimensional (3D) video devices, virtual reality (VR) devices, augmented reality (AR) devices, video telephony devices, transportation terminals (e.g., vehicle (including autonomous vehicle) terminals, aircraft terminals, ship terminals, etc.), and medical video devices, and can be used to process video signals or data signals. For example, OTT (over-the-top) video devices can include game consoles, Blu-ray players, internet-connected televisions, home theater systems, smartphones, tablet PCs, digital video recorders (DVRs), etc.

[0193] Furthermore, the processing methods applying the embodiments of this disclosure can be generated in the form of a computer-executable program and can be stored in a computer-readable recording medium. Multimedia data with data structures according to the embodiments of this disclosure can also be stored in a computer-readable recording medium. Computer-readable recording media include all types of storage devices and distributed storage devices that store computer-readable data. Computer-readable recording media can include, for example, Blu-ray discs (BD), Universal Serial Bus (USB), ROM, PROM, EPROM, EEPROM, RAM, CD-ROM, magnetic tape, floppy disks, and optical media storage devices. Additionally, computer-readable recording media include media implemented in the form of carrier waves (e.g., transmission via the Internet). Furthermore, bitstreams generated by encoding methods can be stored in computer-readable recording media or transmitted via wired / wireless communication networks.

[0194] Furthermore, the embodiments of this disclosure can be implemented by a computer program product using program code, and the program code can be executed on a computer using the embodiments of this disclosure. The program code can be stored on a computer-readable medium.

[0195] Figure 8 Examples of content streaming systems to which embodiments of this disclosure can be applied are shown.

[0196] Reference Figure 8 A content streaming system that applies embodiments of the present disclosure may generally include an encoding server, a streaming server, a network server, a media storage device, a user device, and a multimedia input device.

[0197] An encoding server generates a bitstream by compressing content input from multimedia input devices such as smartphones, cameras, and camcorders into digital data and then sends it to a streaming server. As another example, when multimedia input devices such as smartphones, cameras, and camcorders directly generate bitstreams, the encoding server can be omitted.

[0198] A bitstream can be generated by an encoding method or bitstream generation method that applies the embodiments of this disclosure, and the streaming server can temporarily store the bitstream during the sending or receiving of the bitstream.

[0199] A streaming server sends multimedia data to a user device via a web server based on a user request, and the web server acts as a medium to inform the user what services are available. When a user requests a desired service from the web server, the web server transmits the request to the streaming server, and the streaming server sends the multimedia data to the user. In this scenario, the content streaming system may include a separate control server, which controls the commands / responses between the various devices in the content streaming system.

[0200] A streaming server can receive content from media storage and / or encoding servers. For example, when receiving content from an encoding server, the content can be received in real time. In this case, to provide a smooth streaming service, the streaming server can store the bitstream for a specific time period.

[0201] Examples of user devices may include mobile phones, smartphones, laptops, digital broadcasting terminals, personal digital assistants (PDAs), portable multimedia players (PMPs), navigators, touchscreen PCs, tablet PCs, ultrabooks, wearable devices (e.g., smartwatches, smart glasses, head-mounted displays (HMDs)), digital TVs, desktop computers, digital signage, etc.

[0202] In a content streaming system, each server can operate as a distributed server, and in this case, the data received from each server can be distributed and processed.

[0203] The claims set forth herein can be combined in various ways. For example, the technical features of the method claims of this disclosure can be combined and implemented as an apparatus, and the technical features of the apparatus claims of this disclosure can be combined and implemented as a method. Furthermore, the technical features of the method claims and the apparatus claims of this disclosure can be combined and implemented as an apparatus, and the technical features of the method claims and the apparatus claims of this disclosure can be combined and implemented as a method.

Claims

1. A method, the method comprising: The current block is segmented based on a predetermined segmentation type; as well as Decode the multiple encoded blocks generated by segmenting the current block. The predetermined segmentation type includes at least one of quadrilateral segmentation, binary segmentation, or trilateral segmentation, and The quad-segmentation includes a non-square quad-segmentation method for dividing a non-square coding block into four coding blocks.

2. The method according to claim 1, wherein, Whether the non-square quadrilateral partitioning is allowed for the current block is determined based on whether the size of the current block is less than or equal to a predetermined threshold size.

3. The method according to claim 1, wherein, Whether the non-square quadrilateral segmentation is allowed for the current block is determined based on whether the ratio of the width to the height of the current block corresponds to a predefined ratio.

4. The method according to claim 3, wherein, The predefined ratio includes at least one of 1:2, 2:1, 1:4, or 4:

1.

5. The method according to claim 3, wherein, The predefined ratio includes at least one of 1:3, 3:1, 1:5, 5:1, 1:6, 6:1, 1:7, or 7:

1.

6. The method according to claim 1, wherein, When the current block is a non-square coded block generated by dividing the coded block based on the binary or ternary partitioning, the non-square quadrilateral partitioning is allowed.

7. The method according to claim 1, wherein, When the current block is generated by segmenting the encoded block based on the non-square quadrilateral segment, the non-square quadrilateral segment is not allowed to be used for the current block.

8. The method according to claim 1, wherein, The non-square quadrilateral segmentation is determined based on the segmentation depth of the current block.

9. The method according to claim 1, wherein, The non-square quadrilateral segmentation is performed based on a quadrilateral flag indicating whether the quadrilateral segmentation is applied to the current block.

10. The method according to claim 9, wherein, The context model of the quadblock is derived based on the segmentation depth of the current block or at least one of its neighboring blocks. The segmentation depth includes at least one of a segmentation depth based on a square quadrature or a segmentation depth based on a non-square quadrature.

11. A method, the method comprising: The current block is segmented based on a predetermined segmentation type; as well as Encode the multiple coded blocks generated by segmenting the current block. The predetermined segmentation type includes at least one of quadrilateral segmentation, binary segmentation, or trilateral segmentation, and The quad-segmentation includes a non-square quad-segmentation method for dividing a non-square coding block into four coding blocks.

12. A computer-readable storage medium storing a bit stream generated by the method according to claim 11.

13. A method, the method comprising: Obtain a bitstream of image information, wherein the bitstream is generated based on the following steps: segmenting the current block according to a predetermined segmentation type, and encoding multiple coded blocks generated by segmenting the current block; and Send data including the bit stream. The predetermined segmentation type includes at least one of quadrilateral segmentation, binary segmentation, or trilateral segmentation, and The quad-segmentation includes a non-square quad-segmentation method for dividing a non-square coding block into four coding blocks.