RU2773732C1 - Geometric division mode in video coding - Google Patents
Geometric division mode in video coding Download PDFInfo
- Publication number
- RU2773732C1 RU2773732C1 RU2021129437A RU2021129437A RU2773732C1 RU 2773732 C1 RU2773732 C1 RU 2773732C1 RU 2021129437 A RU2021129437 A RU 2021129437A RU 2021129437 A RU2021129437 A RU 2021129437A RU 2773732 C1 RU2773732 C1 RU 2773732C1
- Authority
- RU
- Russia
- Prior art keywords
- current coding
- motion
- coding block
- index
- storage unit
- Prior art date
Links
- 230000014509 gene expression Effects 0.000 claims description 62
- 238000002156 mixing Methods 0.000 claims description 41
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000000875 corresponding Effects 0.000 claims description 17
- 238000006243 chemical reaction Methods 0.000 claims description 2
- 238000000926 separation method Methods 0.000 abstract description 30
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 45
- 239000000203 mixture Substances 0.000 description 42
- 238000007906 compression Methods 0.000 description 21
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 230000004927 fusion Effects 0.000 description 10
- 230000002123 temporal effect Effects 0.000 description 9
- 241000023320 Luma <angiosperm> Species 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 8
- 238000005192 partition Methods 0.000 description 8
- 230000001131 transforming Effects 0.000 description 8
- 230000003044 adaptive Effects 0.000 description 5
- 230000002457 bidirectional Effects 0.000 description 5
- 230000002093 peripheral Effects 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 230000003287 optical Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000001702 transmitter Effects 0.000 description 4
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(E)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 229940116821 SSD Drugs 0.000 description 2
- IGWHDMPTQKSDTL-JXOAFFINSA-N [(2R,3S,4R,5R)-3,4-dihydroxy-5-(5-methyl-2,4-dioxopyrimidin-1-yl)oxolan-2-yl]methyl dihydrogen phosphate Chemical compound O=C1NC(=O)C(C)=CN1[C@H]1[C@H](O)[C@H](O)[C@@H](COP(O)(O)=O)O1 IGWHDMPTQKSDTL-JXOAFFINSA-N 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000001413 cellular Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101700002690 CLIP3 Proteins 0.000 description 1
- 101710013302 CTBS Proteins 0.000 description 1
- 240000004282 Grewia occidentalis Species 0.000 description 1
- 210000002381 Plasma Anatomy 0.000 description 1
- 241001442055 Vipera berus Species 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000000295 complement Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 230000002085 persistent Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000035943 smell Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000153 supplemental Effects 0.000 description 1
Images
Abstract
Description
[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США №17/091,253 «Режим геометрического разделения при кодировании видеоданных», поданной 6 ноября 2020 года, по которой испрашивался приоритет согласно предварительной заявке на выдачу патента США №62/938,894 «Упрощение для блока с внешним предсказанием в режиме GEO/WEDGE», поданной 21 ноября 2019 года.[0001] The present application claims priority under U.S. Patent Application No. 17/091,253 "Geometric Separation Mode in Video Data Coding", filed November 6, 2020, which claimed priority under U.S. Provisional Patent Application No. 62/938,894 "Simplification for a block with external prediction in GEO/WEDGE mode”, filed on November 21, 2019.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES
[0002] Настоящее описание касается вариантов осуществления изобретения, в целом относящихся к кодированию видеоданных.[0002] The present description relates to embodiments of the invention generally related to video coding.
УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.[0003] The description of the prior art is given here to represent the overall context of the invention. The work of the authors of the invention, to the extent that it is described in this section, as well as aspects of the description that cannot be qualified as state of the art at the time of filing, neither expressly nor impliedly recognized as the state of the art for the present invention.
[0004] Кодирование и декодирование видеоданных может осуществляться с использованием внешнего предсказания изображения с компенсацией движения. Цифровое видео без сжатия может включать последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 Гб.[0004] Encoding and decoding of video data may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a sequence of images each having a spatial size of, for example, 1920×1080 luma samples and their associated chrominance samples. The image sequence may have a fixed or variable image rate (informally also referred to as frame rate), such as 60 images per second, or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (resolution of 1920x1080 luma samples at 60Hz frame rate) requires about 1.5Gbps of bandwidth. An hour of such video requires more than 600 GB of memory.
[0005] Одной целью кодирования и декодирования видеоданных может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так что реконструированный сигнал можно использовать для намеченного применения. Сжатие с потерями широко применяется для видеоданных. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями в сравнении с пользователями телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.[0005] One goal of encoding and decoding video data may be to reduce redundancy in the input video signal by compressing. Compression can help to alleviate the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. You can use both lossless and lossy compression, as well as a combination of both. Lossless compression refers to techniques for reconstructing an exact copy of the original signal from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the discrepancy between the original and reconstructed signals is small enough that the reconstructed signal can be used for the intended application. Lossy compression is widely used for video data. The amount of distortion allowed depends on the application; for example, users of some custom streaming applications may tolerate higher distortion than users of broadcast TV applications. The achievable compression ratio may reflect that a higher allowed/allowable distortion may result in a higher compression ratio.
[0006] Видеокодер и декодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.[0006] The video encoder and decoder may use techniques from several broad categories including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Технологии видеокодеков могут включать методы, известные как внешнее предсказание. Для каждой единицы кодирования с внешним предсказанием (CU, coding unit) параметры движения включают векторы движения, индексы опорных изображений и индекс использования списка опорных изображений, а также дополнительную информацию, которая должна использоваться для формирования отсчета с внешним предсказанием. Параметры движения могут сигнализироваться явным или неявным образом. Когда единица CU кодируется в режиме пропуска, единица CU ассоциируется с одной единицей предсказания (PU, prediction unit) и не имеет значимых коэффициентов остатка, кодированной дельты вектора движения или индекса опорного изображения. Указывается режим слияния, при котором параметры движения для текущей единицы CU получают из соседних единиц CU, включая пространственные и временные кандидаты, а также вводятся дополнительные списки, например, в VVC. Режим слияния может быть применен к любой предсказанной единице CU, не только для режима пропуска. Альтернативой режиму слияния является явная передача параметров движения. Вектор движения, соответствующий индекс опорного изображения для каждого списка опорных изображений, флаг использования списка опорных изображений и другая необходимая информация сигнализируются явно для каждой единицы CU.[0007] Video codec technologies may include techniques known as inter-prediction. For each inter-prediction coding unit (CU), the motion parameters include motion vectors, reference picture indices, and reference picture list usage index, as well as additional information to be used to generate the inter-prediction sample. Motion parameters can be signaled explicitly or implicitly. When a CU is encoded in skip mode, the CU is associated with one prediction unit (PU) and has no significant residual coefficients, coded motion vector delta, or reference picture index. A merge mode is specified in which motion parameters for the current CU are obtained from neighboring CUs, including spatial and temporal candidates, and additional lists are introduced, eg in VVC. The merge mode can be applied to any predicted CU, not just the skip mode. An alternative to merge mode is to pass motion parameters explicitly. The motion vector, the corresponding reference picture index for each reference picture list, the reference picture list use flag, and other necessary information are signaled explicitly for each CU.
[0008] Некоторые инструменты кодирования с внешним предсказанием включают в себя расширенное предсказание слияния, режим слияния с разностью векторов движения (MMVD, merge mode with motion vector difference), улучшенный режим предсказания вектора движения (AMVP, advanced motion vector prediction mode) с сигнализацией симметричной разности векторов движения (MVD, motion vector difference), предсказание с компенсацией аффинного движения, временное предсказание вектора движения на основе подблоков (SbTMVP, subblock-based temporal motion vector prediction), адаптивное разрешение вектора движения (AMVR, adaptive motion vector resolution), хранение поля движения (хранение MV 1/16 отсчета яркости и сжатие поля движения 8×8), двойное предсказание с взвешенным усреднением (BWA, bi-prediction with weighted averaging), двунаправленный оптический поток (BDOF, bidirectional optical flow), уточнение вектора движения на стороне декодера (DMVR, decoder side motion vector refinement), режим разделения на треугольники (TPM, triangular partitioning mode) и комбинированное внутреннее и внутреннее предсказание (CIIP, combined inter and intra prediction).[0008] Some inter-prediction coding tools include advanced merge prediction, merge mode with motion vector difference (MMVD), advanced motion vector prediction mode (AMVP) with symmetrical signaling. motion vector difference (MVD), affine motion compensation prediction, subblock-based temporal motion vector prediction (SbTMVP), adaptive motion vector resolution (AMVR), storage motion fields (
[0009] В некоторых случаях используется расширенное предсказание слияния. Список кандидатов на слияние состоит из следующих пяти типов кандидатов по порядку: (1) пространственный MVP из пространственных соседних единиц CU; (2) временной MVP из соответственно расположенных единиц CU; (3) MVP на основе истории из таблицы FIFO; (4) попарный средний MVP и (5) нулевые MV.[0009] In some cases, extended merge prediction is used. The merge candidate list consists of the following five types of candidates, in order: (1) a spatial MVP of spatial neighboring CUs; (2) a temporary MVP from appropriately located CUs; (3) MVP based on history from FIFO table; (4) pairwise average MVP and (5) zero MV.
[0010] Размер списка слияния сигнализируется в заголовке слайса, и в некоторых случаях максимально допустимый размер списка слияния составляет, например, 6. Для каждого кода CU в режиме слияния индекс лучшего кандидата на слияние кодируется с использованием усеченной унарной бинаризации (TU, truncated unary). Первый бин индекса слияния кодируется с использованием контекста, а для других бинов используется обходное кодирование.[0010] The size of the merge list is signaled in the slice header, and in some cases the maximum allowable size of the merge list is, for example, 6. For each CU code in merge mode, the index of the best merge candidate is encoded using truncated unary binarization (TU) . The first bin of the merge index is context-encoded, and the other bins are bypass-encoded.
[0011] На фиг. 1А показаны примеры позиций кандидатов на пространственное слияние. В некоторых случаях может быть выбрано до четырех кандидатов на слияние среди кандидатов, находящихся в позициях, изображенных на фиг. 1А. Порядок выбора - B1, А1, В0, А0 и В2. Кандидат в позиции В2 рассматривается только тогда, когда любая единица CU в позициях А0, В0, В1 или А1 недоступна (например, единица CU в позиции А0 принадлежит другому слайсу или тайлу) или не кодируется с помощью внешнего кодирования. После того как кандидат в позиции А1 добавлен в список кандидатов на слияние, добавление оставшихся кандидатов подлежит проверке избыточности, которая гарантирует, что кандидаты с одинаковой информацией о движении исключены из списка кандидатов на слияние, чтобы повысить эффективность кодирования.[0011] FIG. 1A shows examples of spatial fusion candidate positions. In some cases, up to four merger candidates may be selected from among the candidates in the positions depicted in FIG. 1A. The selection order is B1, A1, B0, A0 and B2. A candidate at position B2 is only considered when any CU at positions A0, B0, B1, or A1 is not available (eg, the CU at position A0 belongs to another slice or tile) or is not encoded with outer coding. After the candidate at position A1 is added to the merge candidate list, the addition of the remaining candidates is subject to a redundancy check that ensures that candidates with the same motion information are excluded from the merge candidate list to improve coding efficiency.
[0012] Фиг. 1В показывает пары кандидатов, рассматриваемые для проверки избыточности кандидатов на пространственное слияние. Чтобы уменьшить вычислительную сложность, не все возможные пары кандидатов рассматриваются при проверке избыточности. Вместо этого, рассматриваются только пары, обозначенные стрелкой на фиг. 1В, и кандидат добавляется в список кандидатов на слияние только в том случае, если соответствующий кандидат, используемый для проверки избыточности, не имеет такой же информации о движении.[0012] FIG. 1B shows pairs of candidates considered to test for redundancy of candidates for spatial fusion. To reduce computational complexity, not all possible pairs of candidates are considered in the redundancy check. Instead, only the pairs indicated by the arrow in FIG. 1B, and the candidate is added to the merge candidate list only if the corresponding candidate used for the redundancy check does not have the same motion information.
[0013] Фиг. 1С показывает масштабирование вектора движения для кандидата на временное слияние. В некоторых случаях в список кандидатов на слияние можно добавить только одного кандидата на временное слияние. В частности, при получении этого кандидата на временное слияние масштабированный вектор движения получают на основе соответственно расположенной единицы CU, принадлежащей соответственно расположенному опорному изображению. Список опорных изображений, используемый для получения соответственно расположенных единиц CU, явно сигнализируется в заголовке слайса. Масштабированный вектор движения для кандидата на временное слияние получают так, как показано пунктирной линией на фиг. 1С. Масштабированный вектор движения получают из вектора движения соответственно расположенной единицы CU с использованием расстояний tb и td для подсчета в соответствии с порядком изображений (РОС, picture order count), где tb определяется как разность РОС между опорным изображением текущего изображения и текущим изображением, a td определяется как разность РОС между опорным изображением соответственно расположенного изображения и соответственно расположенным изображением. Индекс опорного изображения кандидата на временное слияние может быть установлен равным нулю.[0013] FIG. 1C shows motion vector scaling for a temporary merge candidate. In some cases, only one temporary merger candidate can be added to the list of merger candidates. In particular, when this temporary merge candidate is obtained, a scaled motion vector is obtained based on the correspondingly located CU belonging to the correspondingly located reference picture. The reference picture list used to obtain the appropriately positioned CUs is explicitly signaled in the slice header. A scaled motion vector for a temporary merge candidate is obtained as shown by the dotted line in FIG. 1C. The scaled motion vector is obtained from the motion vector of the correspondingly located CU using the distances tb and td for counting according to the picture order count (POC), where tb is defined as the difference of the POC between the reference picture of the current picture and the current picture, and td is defined as a ROC difference between the reference image of the correspondingly located image and the correspondingly located image. The index of the reference picture of the temporary merge candidate may be set to zero.
[0014] Фиг. 1D показывает примеры позиций для кандидата на временное слияние. Кандидат на временное слияние выбирается между единицами CU в позициях С0 и С1. Если единица CU в позиции С0 недоступна, не кодирована с использованием внешнего предсказания или находится вне текущей строки блоков CTU, используется единица CU в позиции С1. В противном случае при получении кандидата на временное слияние используется единица CU в позиции С0.[0014] FIG. 1D shows example positions for a temporary merger candidate. A temporary merger candidate is selected between the CUs at positions C0 and C1. If the CU at position C0 is not available, is not inter-predicted, or is outside the current row of CTUs, the CU at position C1 is used. Otherwise, the CU at position C0 is used when obtaining a temporary merge candidate.
СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION
[0015] Аспекты изобретения предоставляют способы и устройство для кодирования и декодирования видеоданных. В некоторых примерах устройство для декодирования видеоданных включает в себя схему обработки. Схема обработки может быть сконфигурирована для приема, из битового потока кодированных видеоданных, синтаксического элемента, связанного с текущим блоком кодирования, который разделен на первую часть и вторую часть вдоль края разделения для предсказания в режиме геометрического разделения, и определения индекса веса в позиции отсчета текущего блока кодирования. Индекс веса используется для получения веса смешивания для смешивания двух сигналов предсказания, соответствующих первой части и второй части текущего блока кодирования. Схема обработки также может быть сконфигурирована для определения типа сохраненного вектора движения для первой единицы хранения движения в поле движения текущего блока кодирования на основе индекса движения первой единицы хранения движения, индекса веса в позиции отсчета текущего блока кодирования, используемого в качестве индекса движения первой единицы хранения движения, и сохранения поля движения текущего блока кодирования на основе типа сохраненного вектора движения, определенного для первой единицы хранения движения в поле движения текущего блока кодирования.[0015] Aspects of the invention provide methods and apparatus for encoding and decoding video data. In some examples, a device for decoding video data includes a processing circuit. The processing circuit may be configured to receive, from the encoded video data bitstream, a syntax element associated with the current coding block that is divided into a first part and a second part along a split edge for geometric separation mode prediction, and determine a weight index at the current block's sample position. coding. The weight index is used to obtain a mixing weight for mixing two prediction signals corresponding to the first part and the second part of the current coding block. The processing circuit may also be configured to determine the stored motion vector type for the first motion storage unit in the motion field of the current coding unit based on the motion index of the first motion storage unit, the weight index at the reference position of the current coding unit, used as the motion index of the first motion storage unit , and storing a motion field of the current coding block based on the stored motion vector type determined for the first motion storage unit in the motion field of the current coding block.
[0016] В варианте осуществления изобретения позиция отсчета текущего блока кодирования, в которой индекс веса используется в качестве индекса движения первой единицы хранения движения, представляет собой позицию отсчета в первой единице хранения движения в поле движения блока кодирования. В варианте осуществления изобретения позиция отсчета текущего блока кодирования, в которой индекс веса используется в качестве индекса движения первой единицы хранения движения, является позицией отсчета, соседней с центральной позицией первой единицы хранения движения в поле движения блока кодирования. В варианте осуществления изобретения первая единица хранения движения имеет размер 4×4 отсчетов, а позиция отсчета текущего блока кодирования, в которой индекс веса используется в качестве индекса движения первой единицы хранения движения, является позицией отсчета с координатой (2, 2) в первой единице хранения движения в поле движения блока кодирования.[0016] In an embodiment of the invention, the reference position of the current coding block in which the weight index is used as the motion index of the first motion storage unit is the reference position in the first motion storage unit in the motion field of the coding block. In an embodiment of the invention, the reference position of the current coding block in which the weight index is used as the motion index of the first motion storage unit is the reference position adjacent to the center position of the first motion storage unit in the motion field of the coding block. In an embodiment of the invention, the first motion storage unit has a size of 4×4 samples, and the sample position of the current coding block in which the weight index is used as the motion index of the first motion storage unit is the sample position with coordinate (2, 2) in the first storage unit motion in the motion field of the coding block.
[0017] В варианте осуществления изобретения первая единица хранения движения имеет размер 4×4 отсчетов и находится в позиции (xsb, ysb) в поле движения текущего блока кодирования, а позиция отсчета текущего блока кодирования имеет координату ((xsb << 2)+2, (ysb << 2)+2) в текущем блоке кодирования, при этом индекс веса в координате ((xsb << 2)+2, (ysb << 2)+2) используется в качестве индекса движения первой единицы хранения движения.[0017] In an embodiment of the invention, the first motion storage unit has a size of 4×4 samples and is located at position (x sb , y sb ) in the motion field of the current coding block, and the sample position of the current coding block has the coordinate ((x sb << 2 )+2, (y sb << 2)+2) in the current coding block, with the weight index at the coordinate ((x sb << 2)+2, (y sb << 2)+2) used as the index movement of the first movement storage unit.
[0018] В варианте осуществления изобретения упомянутая схема также может быть сконфигурирована для выполнения вычисления для преобразования индекса веса в позиции отсчета текущего блока кодирования в вес смешивания для смешивания двух сигналов предсказания. Преобразование может быть основано на линейной функции индекса веса в позиции отсчета текущего блока кодирования без использования таблицы соответствия.[0018] In an embodiment of the invention, said circuitry may also be configured to perform a calculation to convert a weight index at the sample position of the current coding block to a mixing weight for mixing the two prediction signals. The transformation may be based on a linear function of the weight index at the reference position of the current coding block without using a lookup table.
[0019] В варианте осуществления изобретения упомянутая схема также может быть сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе значения ρmargim используемого для смещения края разделения от угла текущего блока кодирования, причем значение ρmargin изменяется в зависимости от ширины или высоты текущего блока кодирования и угла края разделения.[0019] In an embodiment of the invention, said circuitry can also be configured to determine a weight index at the reference position of the current coding block based on the value of ρ margim used to offset the edge of the split from the corner of the current coding block, with the value of ρ margin changing depending on the width or height the current encoding block and the angle of the split edge.
[0020] В варианте осуществления изобретения упомянутая схема также может быть сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе выражения:[0020] In an embodiment of the invention, said circuit may also be configured to determine the weight index at the reference position of the current coding block based on the expression:
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.where wIdx denotes the weight index, x and y denote the coordinate of the sample position in the current coding block, w and h denote the width and height of the current coding unit, ϕ denotes the split edge angle, n denotes the number of distance quantization steps, and i denotes the distance quantization step index.
[0023] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе выражения:[0023] In an embodiment of the invention, said circuit is also configured to determine the weight index at the reference position of the current coding block based on the expression:
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.where wIdx denotes the weight index, x and y denote the coordinate of the sample position in the current coding block, w and h denote the width and height of the current coding unit, ϕ denotes the split edge angle, n denotes the number of distance quantization steps, and i denotes the distance quantization step index.
[0024] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе выражения:[0024] In an embodiment of the invention, said circuit is also configured to determine the weight index at the reference position of the current coding block based on the expression:
где wIdx обозначает индекс веса, х и у обозначают координату позиции отсчета в текущем блоке кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния.where wIdx denotes the weight index, x and y denote the coordinate of the sample position in the current coding block, w and h denote the width and height of the current coding unit, ϕ denotes the split edge angle, n denotes the number of distance quantization steps, and i denotes the distance quantization step index.
[0025] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе индекса веса левого или верхнего соседнего отсчета для позиции отсчета текущего блока кодирования с фиксированным значением смещения. В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса веса в позиции отсчета текущего блока кодирования на основе индекса веса в координате (0, 0) в текущем блоке кодирования.[0025] In an embodiment of the invention, said circuitry is also configured to determine a weight index at the sample position of the current coding block based on the weight index of the left or top neighbor sample for the sample position of the current coding block with a fixed offset value. In an embodiment of the invention, said circuit is also configured to determine the weight index at the reference position of the current coding block based on the weight index at the (0, 0) coordinate in the current coding block.
[0026] В варианте осуществления изобретения упомянутая схема также сконфигурирована для определения индекса движения второй единицы хранения движения в поле движения текущего блока кодирования на основе выражения:[0026] In an embodiment of the invention, said circuit is also configured to determine the motion index of the second motion storage unit in the motion field of the current coding block based on the expression:
где motionIdx обозначает индекс движения второй единицы хранения движения, xsb и ysb означают координату второй единицы хранения движения в поле движения текущего блока кодирования, w и h обозначают ширину и высоту текущего блока кодирования, ϕ обозначает угол края разделения, n обозначает количество шагов квантования расстояния, a i обозначает индекс шага квантования расстояния. where motionIdx denotes the motion index of the second motion storage unit, x sb and y sb denote the coordinate of the second motion storage unit in the motion field of the current coding block, w and h denote the width and height of the current coding unit, ϕ denotes the separation edge angle, n denotes the number of quantization steps distance, ai denotes the distance quantization step index.
[0027] Аспекты изобретения также предоставляют машиночитаемый носитель, хранящий инструкции, которые при их исполнении компьютером для декодирования видеоданных заставляют компьютер выполнять любой из способов декодирования видеоданных или их комбинацию.[0027] Aspects of the invention also provide a computer-readable medium storing instructions that, when executed by a video decoding computer, causes the computer to perform any or combination of video decoding methods.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[0028] Другие признаки, характер и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.[0028] Other features, nature and various advantages of the present invention will become apparent from the following detailed description and the accompanying drawings.
[0029] Фиг. 1А показывает примеры позиций кандидатов на пространственное слияние.[0029] FIG. 1A shows examples of spatial fusion candidate positions.
[0030] Фиг. 1В показывает примеры пар кандидатов, рассматриваемых для проверки избыточности кандидатов на пространственное слияние.[0030] FIG. 1B shows examples of candidate pairs considered for redundancy testing of candidates for spatial fusion.
[0031] Фиг. 1С показывает пример масштабирования вектора движения для кандидата на временное слияние.[0031] FIG. 1C shows an example of motion vector scaling for a temporary merge candidate.
[0032] Фиг. 1D показывает примеры позиций для кандидата на временное слияние.[0032] FIG. 1D shows example positions for a temporary merger candidate.
[0033] Фиг. 2 схематическая иллюстрация упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения.[0033] FIG. 2 is a schematic illustration of a simplified block diagram of a communication system in accordance with an embodiment of the invention.
[0034] Фиг. 3 - схематическая иллюстрация упрощенной структурной схемы системы связи в соответствии с вариантом осуществления изобретения.[0034] FIG. 3 is a schematic illustration of a simplified block diagram of a communication system in accordance with an embodiment of the invention.
[0035] Фиг. 4 схематическая иллюстрация упрощенной структурной схемы декодера в соответствии с вариантом осуществления изобретения.[0035] FIG. 4 is a schematic illustration of a simplified block diagram of a decoder according to an embodiment of the invention.
[0036] Фиг. 5 - схематическая иллюстрация упрощенной структурной схемы кодера в соответствии с вариантом осуществления изобретения.[0036] FIG. 5 is a schematic illustration of a simplified block diagram of an encoder in accordance with an embodiment of the invention.
[0037] Фиг. 6 показывает структурную схему кодера в соответствии с другим вариантом осуществления изобретения.[0037] FIG. 6 shows a block diagram of an encoder in accordance with another embodiment of the invention.
[0038] Фиг. 7 показывает структурную схему декодера в соответствии с другим вариантом осуществления изобретения.[0038] FIG. 7 shows a block diagram of a decoder in accordance with another embodiment of the invention.
[0039] Фиг. 8А и 8В показывают два примера разделений на треугольники в соответствии с некоторыми вариантами осуществления изобретения.[0039] FIG. 8A and 8B show two examples of triangulations in accordance with some embodiments of the invention.
[0040] Фиг. 9 иллюстрирует выбор вектора движения с одним предсказанием для режима разделения на треугольники в соответствии с некоторыми вариантами осуществления изобретения.[0040] FIG. 9 illustrates single prediction motion vector selection for delta mode, in accordance with some embodiments of the invention.
[0041] Фиг. 10А и 10В показывают примеры карты весов для яркости и цветности в соответствии с некоторыми вариантами осуществления изобретения.[0041] FIG. 10A and 10B show examples of weight maps for luma and chrominance in accordance with some embodiments of the invention.
[0042] Фиг. 11 показывает пример режима геометрического разделения согласно некоторым вариантам осуществления изобретения.[0042] FIG. 11 shows an example of a geometric separation mode according to some embodiments of the invention.
[0043] Фиг. 12 показывает блок-схему, описывающую пример способа в соответствии с вариантом осуществления изобретения.[0043] FIG. 12 shows a flowchart describing an example of a method according to an embodiment of the invention.
[0044] Фиг. 13 показывает схематическое изображение компьютерной системы в соответствии с вариантом осуществления изобретения.[0044] FIG. 13 shows a schematic representation of a computer system in accordance with an embodiment of the invention.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF EMBODIMENTS
[0045] I. Видеокодер и декодер[0045] I. Video encoder and decoder
[0046] На фиг. 2 показана упрощенная структурная схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)) для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в виде одного или более битовых потоков кодированных видеоданных. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.[0046] FIG. 2 shows a simplified block diagram of a communication system (200) according to an embodiment of the present invention. The communication system (200) includes a plurality of terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminals (210) and (220) interconnected via a network (250). In the example shown in FIG. 2, the first pair of terminals (210) and (220) performs a unidirectional data transfer. For example, a terminal device (210) may encode video data (eg, a video stream captured by a terminal device (210)) for transmission to another terminal device (220) via a network (250). The encoded video data may be transmitted as one or more encoded video bit streams. The terminal device (220) may receive the encoded video data from the network (250), decode the encoded video data to recover the video images, and display the video images according to the recovered video data. One-way communication may be inherent in media service applications and the like.
[0047] В другом примере система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые осуществляют двунаправленную передачу кодированных видеоданных, возникающих, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, например, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.[0047] In another example, the communication system (200) includes a second pair of terminals (230) and (240) that carry out bi-directional transmission of encoded video data occurring, for example, during a video conference. For bidirectional data transmission, for example, each terminal of terminals (230) and (240) may encode video data (eg, a video stream captured by the terminal) for transmission to the other terminal of terminals (230) and (240) via network (250). Each terminal of terminals (230) and (240) may also receive encoded video data transmitted by another terminal from terminals (230) and (240) and may decode the encoded video data to reconstruct video images and display video images on an available display device according to recovered video data.
[0048] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Примеры сетей включают телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. ля настоящего рассмотрения архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.[0048] In the example shown in FIG. 2, terminal devices (210), (220), (230), and (240) can be illustrated as servers, personal computers, and smartphones, but this does not limit the principles of the present invention. Embodiments of the present invention find application in laptop computers, tablet computers, media players and/or dedicated video conferencing equipment. Network (250) represents any number of networks that carry encoded video data between terminals (210), (220), (230) and (240), including, for example, wired and/or wireless communication networks. The communication network (250) allows data to be exchanged in a circuit-switched and/or packet-switched mode. Examples of networks include telecommunications networks, local area networks, wide area networks and/or the Internet. For the purposes of this discussion, the architecture and topology of the network (250) may not be relevant to the present invention unless specifically noted below.
[0049] На фиг. 3 показано размещение видеокодера и видеодекодера в окружении потоковой передачи, в качестве примера применения настоящего изобретения. Настоящее изобретение может в равной степени использоваться и в других применениях обработки видеоданных, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.[0049] FIG. 3 shows the placement of a video encoder and a video decoder in a streaming environment as an example of the application of the present invention. The present invention is equally applicable to other video processing applications including, for example, videoconferencing, digital television, storage of compressed video on digital media such as CD, DVD, memory card, and the like.
[0050] Система потоковой передачи может содержать подсистему (313) захвата, которая может включать источник (301) видеоданных, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает отсчеты, полученные цифровой камерой. Поток (302) видеоизображений, показанный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированных видеоданных), может обрабатываться электронным устройством (320), которое содержит видеокодер (303), подключенный к источнику (301) видеоданных. Видеокодер (303) может включать оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов настоящего изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированных видеоданных), показанные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на сервере (305) потоковой передачи для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например клиентские подсистемы (306) и (308) на фиг. 3, могут осуществлять доступ к серверу (305) потоковой передачи для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может содержать видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видеоданных) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видеоданных. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. Например, разрабатывается стандарт кодирования видеоданных под официальным названием «Универсальное кодирование видеоданных» (VVC, Versatile Video Coding). Настоящее изобретение может использоваться в контексте VVC.[0050] The streaming system may include a capture subsystem (313), which may include a source (301) of video data, such as a digital camera, creating, for example, an uncompressed video stream (302). For example, the video stream (302) includes samples taken by a digital camera. The video stream (302), shown in bold to highlight the large amount of data compared to the encoded video data (304) (or encoded video bitstreams), may be processed by an electronic device (320) that includes a video encoder (303) connected to the source ( 301) video data. The video encoder (303) may include hardware, software, or a combination thereof to provide or implement aspects of the present invention, as described in more detail below. The encoded video data (304) (or encoded video bitstream (304)), shown as a thin line to emphasize the smaller amount of data compared to the video stream (302), may be stored on the streaming server (305) for future use. One or more streaming client subsystems, such as client subsystems (306) and (308) in FIG. 3 may access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) may contain a video decoder (310), for example, in an electronic device (330). The video decoder (310) decodes the incoming copy (307) of the encoded video data and creates an outgoing video stream (311) that can be rendered on a display (312) (eg, a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (eg, video bitstreams) may be encoded according to one or another video coding/compression standard. Examples of these standards include ITU-T Rec. H.265. For example, a video coding standard is being developed officially called Versatile Video Coding (VVC). The present invention can be used in the context of VVC.
[0051] Следует отметить, что электронные устройства (320) и (330) могут содержать другие компоненты (не показаны). Например, электронное устройство (320) может содержать видеодекодер (не показан), а электронное устройство (330) также может содержать видеокодер (не показан).[0051] It should be noted that the electronic devices (320) and (330) may contain other components (not shown). For example, the electronic device (320) may include a video decoder (not shown) and the electronic device (330) may also include a video encoder (not shown).
[0052] На фиг. 4 показана структурная схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может содержать приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.[0052] FIG. 4 is a block diagram of a video decoder (410) according to an embodiment of the present invention. The video decoder (410) may be included in the electronic device (430). The electronic device (430) may include a receiver (431) (eg, receiver circuits). Video decoder (410) may be used instead of video decoder (310) in the example shown in FIG. 3.
[0053] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410), в том же или другом варианте осуществления изобретения, по одной кодированной видеопоследовательности за раз, причем декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут перенаправляться на соответствующие использующие их объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, между приемником (431) и энтропийным декодером / анализатором (420) (далее «анализатором (420)») может быть подключена буферная память (415). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других вариантах она может не входить в состав видеодекодера (410) (не показано). В прочих вариантах может иметься буферная память вне видеодекодера (410) (не показано), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления временем воспроизведения. Когда приемник (431) принимает данные от устройства хранения/перенаправления с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, в интернете, буферная память (415) может потребоваться, может быть сравнительно большой, может иметь преимущественно адаптивный размер и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).[0053] The receiver (431) may receive one or more encoded video sequences for decoding by video decoder (410), in the same or another embodiment of the invention, one encoded video sequence at a time, with the decoding of each encoded video sequence independent of other encoded video sequences. The encoded video sequence may be received from a channel (401), which may be a hardware/software link to a storage device where the encoded video data is stored. The receiver (431) may receive encoded video data with other data, such as encoded audio data and/or ancillary data streams, which may be redirected to their respective utilizing entities (not shown). The receiver (431) may separate the encoded video sequence from other data. To combat network jitter, a buffer memory (415) can be connected between the receiver (431) and the entropy decoder/analyzer (420) (hereinafter "analyzer (420)"). In some applications, the buffer memory (415) is included in the video decoder (410). In other embodiments, it may not be part of the video decoder (410) (not shown). In other embodiments, there may be a buffer memory outside the video decoder (410) (not shown), for example, to combat network jitter, in addition to another buffer memory (415) within the video decoder (410), for example, to control playback time. When the receiver (431) receives data from a storage/redirector with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use in best effort packet networks, such as the Internet, buffer memory (415) may be required, may be relatively large, may have a predominantly adaptive size, and may at least partially be implemented in an operating system or similar elements (not shown) outside video decoder (410).
[0054] Видеодекодер (410) может содержать анализатор (420) для реконструкции символов (421) из кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой видеодекодера (410), и, возможно, информацию для управления устройством визуализации, например устройством (412) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Информация управления для устройств(а) визуализации может представлять собой сообщения дополнительной информации улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации о возможности использования видео (VUI, Video Usability Information) (не показаны). Анализатор (420) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видеоданных и может следовать различным принципам, включая кодирование с переменной длиной серии, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и т.д. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Group of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Unit), блоки, единицы преобразования (TU, Transform Unit), единицы предсказания (PU, Prediction Unit) и т.д. Анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.[0054] The video decoder (410) may include an analyzer (420) for reconstructing the symbols (421) from the encoded video sequence. The categories of these symbols include information used to control the operation of the video decoder (410) and possibly information to control a rendering device, such as a rendering device (412) (e.g., a display screen) that is not an integral part of the electronic device (430), but may be connected to an electronic device (430) as shown in FIG. 4. The control information for the rendering device(s) may be Supplemental Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (not shown). The analyzer (420) may analyze/entropy decode the received encoded video sequence. The encoding of the video sequence may be in accordance with a video coding technology or standard, and may follow various principles, including variable run length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The analyzer (420) can extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOP, Group of Pictures), images, tiles, slices, macroblocks, coding units (CU, Coding Unit), blocks, transformation units (TU, Transform Unit), prediction units (PU, Prediction Unit) and etc. The analyzer (420) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.
[0055] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).[0055] The analyzer (420) may perform an entropy decoding/analysis operation of the video sequence received from the buffer memory (415) to create symbols (421).
[0056] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: изображения с внутренним и внешним кодированием, блоки с внутренним и внешним кодированием) и других факторов. Какие модули и как используются, может определяться информацией управления подгруппами, полученной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и модулями для простоты в дальнейшем не показан.[0056] Several different modules can be used for symbol reconstruction (421) depending on the type of encoded video image or parts thereof (eg: intra- and outer-coded images, intra- and outer-coded blocks) and other factors. Which modules are used and how can be determined by the subgroup management information obtained from the encoded video sequence by the analyzer (420). The flow of such subgroup control information between the analyzer (420) and the modules is not shown hereinafter for simplicity.
[0057] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально разделяться на несколько функциональных модулей, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания настоящего изобретения уместно принципиальное разделение на перечисленные ниже функциональные модули.[0057] In addition to the previously mentioned functional blocks, the video decoder (410) can be fundamentally divided into several functional modules, as described below. In practical implementation under commercial constraints, many of these modules interact closely with each other and can, at least partially, be built into one another. However, for the purpose of describing the present invention, a fundamental division into the following functional modules is appropriate.
[0058] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).[0058] The first module is the scaling/inverse transform module (451). The scaling/inverse transform module (451) receives the quantized transform coefficient as well as control information including the transform used, block size, quantization factor, quantization scaling matrices, etc. as character(s) (421) from the analyzer (420). The scaling/inverse transform module (451) can output blocks containing sample values that can be input to the aggregator (455).
[0059] В ряде случаев, выходные отсчеты блока (451) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием; то есть к блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) внутреннего предсказания изображения. В ряде случаев модуль (452) внутреннего предсказания изображения формирует блок такого же размера и формы, как у блока, подлежащего реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сформированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, предоставленную модулем (451) масштабирования / обратного преобразования.[0059] In some cases, the output samples of the block (451) scaling / inverse transformation may refer to the block with intra coding; that is, to a block that does not use predicted information from previously reconstructed images, but may use predicted information from previously reconstructed portions of the current image. Such predicted information may be provided by an intra image prediction module (452). In some cases, the intra image prediction module (452) generates a block of the same size and shape as the block to be reconstructed using previously reconstructed environment information retrieved from the current image buffer (458). The current picture buffer (458) buffers, for example, a partially reconstructed current picture and/or a fully reconstructed current picture. The aggregator (455) in some cases adds, for each sample, the prediction information generated by the intra prediction module (452) to the output sample information provided by the scaling/inverse transform module (451).
[0060] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к блоку с внутренним кодированием, возможно, с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае называемому отсчетами остатка или сигналом остатка) для формирования информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает отсчеты для предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты X, Y и компоненты опорного изображения. Компенсация движения также может включать интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.[0060] In other cases, the output samples of the scaling/inverse transform module (451) may refer to an intra-coded block, possibly with motion compensation. In such a case, the motion compensation prediction module (453) may access the reference picture memory (457) to retrieve samples used for prediction. After motion compensation has been applied to the extracted samples according to the symbols (421) associated with the block, these samples can be added by the aggregator (455) to the output signal of the scaling/inverse transform module (451) (in this case called residual samples or residual signal) to generating information of output readings. The addresses in the reference picture memory (457) from where the motion compensation prediction module (453) retrieves samples for prediction may be controlled by the motion vectors available to the motion compensation prediction module (453) in the form of symbols (421), which may have, for example , X, Y components, and reference image components. Motion compensation may also include interpolation of sample values retrieved from reference picture memory (457) when accurate sub-sample motion vectors, motion vector prediction mechanisms, etc. are used.
[0061] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видеоданных могут включать технологии контурного фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также называемую битовым потоком кодированных видеоданных) и доступных модулю (456) контурного фильтра в качестве символов (421) от анализатора (420), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.[0061] Various loop filtering methods can be applied to the aggregator (455) output samples in the loop filter module (456). Video compression technologies may include loop filter technologies driven by parameters included in the encoded video sequence (also referred to as the coded video bitstream) and available to the loop filter module (456) as symbols (421) from the analyzer (420), but may also be responsive to meta-information obtained in the course of decoding the previous (in the order of decoding) parts of the encoded image or encoded video sequence, as well as to respond to previously reconstructed and contour filtered sample values.
[0062] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем внешнем предсказании изображения.[0062] The loop filter module (456) may output a stream of samples that may be fed to the renderer (412) as well as stored in the reference picture memory (457) for use in future inter-picture prediction.
[0063] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и может повторно выделяться свежий буфер текущего изображения до начала реконструкции следующего кодированного изображения.[0063] Some encoded pictures, when fully reconstructed, can be used as reference pictures for future prediction. For example, when the encoded picture corresponding to the current picture is completely reconstructed and identified as a reference picture (e.g., by the analyzer (420)), the current picture buffer (458) may become part of the reference picture memory (457) and a fresh current picture buffer may be re-allocated. until the reconstruction of the next encoded picture starts.
[0064] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных, например, по стандарту Рекомендации МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видеоданных, так и профилей, задокументированных в технологии или стандарте сжатия видеоданных. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видеоданных. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемыми в кодированной видеопоследовательности.[0064] The video decoder (410) may perform decoding operations according to a predetermined video data compression technology, such as ITU-T Rec. H.265. The encoded video sequence may follow the syntax specified by the video compression technology or standard used, in the sense that the encoded video sequence may follow both the syntax of the video compression technology or standard and the profiles documented in the video compression technology or standard. In particular, a profile may select certain tools as tools available for use only in that profile, from among all the tools available in a video compression technology or standard. It may also be necessary for consistency that the complexity of the encoded video sequence remains within the boundaries given by the level of technology or video compression standard. In some cases, the levels limit the maximum image size, the maximum frame rate, the maximum sampling rate for reconstruction (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the levels, in some cases, may be further limited by the specifications of the Hypothetical Reference Decoder (HRD) and the metadata for managing the HRD buffer signaled in the encoded video sequence.
[0065] Согласно варианту осуществления изобретения, приемник (431) может принимать дополнительные (избыточные) данные с кодированными видеоданными. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, временные уровни улучшения, пространственные уровни улучшения или уровни улучшения отношения «сигнал/шум» (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.[0065] According to an embodiment of the invention, the receiver (431) may receive additional (redundant) data with encoded video data. Additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (410) to properly decode the data and/or more accurately reconstruct the original video data. The side data may be, for example, temporal enhancement levels, spatial enhancement levels or signal noise ratio (SNR) enhancement levels, redundant slices, redundant images, forward error correction codes, and so on.
[0066] На фиг. 5 показана структурная схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) содержит передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.[0066] FIG. 5 is a block diagram of a video encoder (503) according to an embodiment of the present invention. The video encoder (503) is included in the electronic device (520). The electronic device (520) includes a transmitter (540) (eg, a transmission circuit). Video encoder (503) may be used instead of video encoder (303) in the example shown in FIG. 3.
[0067] Видеокодер (503) может принимать отсчеты видеоданных от источника (501) видеоданных (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеоданных входит в состав электронного устройства (520).[0067] The video encoder (503) may receive video data samples from a video data source (501) (which is not part of the electronic device (520) in the example shown in FIG. 5) that may capture the video image(s) to be encoding with a video encoder (503). In another example, the source (501) of video data is included in the electronic device (520).
[0068] Источник (501) видеоданных может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифровых видеоданных любой подходящей битовой глубины (например: 8 битов, 10 битов, 12 битов, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …) и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеоданных может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (501) видеоданных может быть камера, которая захватывает информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Последующее описание посвящено отсчетам.[0068] The video data source (501) may provide the source video sequence to be encoded by the video encoder (503) in the form of a digital video data sample stream of any suitable bit depth (eg: 8 bits, 10 bits, 12 bits, ...), any color space (eg, BT.601 Y CrCB, RGB, …) and any suitable sampling structure (eg Y CrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the source (501) of video data may be a storage device where previously prepared video is stored. In a videoconferencing system, the video data source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual images that give a sense of movement when viewed in sequence. The images themselves may be organized as a spatial array of pixels, where each pixel may contain one or more samples depending on the sampling structure used, color space, and so on. It is not difficult for a person skilled in the art to understand the relationship between pixels and samples. The following description is devoted to readings.
[0069] Согласно варианту осуществления изобретения, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления изобретения контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать параметры, связанные с регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое в методах оптимизации «скорость-искажения», и т.д.), размер изображения, организацию групп изображений (GOP, group of pictures), максимальную допустимую опорную область вектора движения и т.д. Контроллер (550) может иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для конкретной конструкции системы.[0069] According to an embodiment of the invention, the video encoder (503) can encode and compress images of the original video sequence into the encoded video sequence (543) in real time or subject to any other time constraints imposed by the application. Establishing a proper coding rate is one of the functions of the controller (550). In some embodiments of the invention, the controller (550) controls other functional modules, as described below, and is operatively connected to other functional modules. The connection is not shown for simplicity. The parameters set by the controller (550) may include parameters related to frequency adjustment (picture skip, quantizer, lambda value used in rate-distortion optimization techniques, etc.), image size, grouping of pictures (GOP , group of pictures), the maximum allowable motion vector reference area, and so on. The controller (550) may have other suitable functions related to the video encoder (503) optimized for a particular system design.
[0070] В некоторых вариантах осуществления изобретения видеокодер (503) выполнен с возможностью работать в контуре кодирования. В качестве очень упрощенного описания, например, контур кодирования может включать кодер (530) источника (например, отвечающий за создание символов, например, потока символов на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированных видеоданных происходит без потерь в технологиях сжатия видеоданных, рассматриваемых в данном описании). Поток реконструированных отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, которые не зависят от положения (локального или удаленного) декодера, содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, как «видел» бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и в итоге дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.[0070] In some embodiments of the invention, the video encoder (503) is configured to operate in a coding loop. As a very simplified description, for example, an encoding loop may include a source encoder (530) (for example, responsible for creating symbols, for example, a symbol stream based on the input image to be encoded and the reference image(s)) and (local ) decoder (533) built into the video encoder (503). The decoder (533) reconstructs the symbols to create sample data in a similar manner as a (remote) decoder would (because any compression between the symbols and the encoded video bitstream is lossless in the video compression technologies discussed here). A stream of reconstructed samples (sample data) is provided to the reference image memory (534). Since decoding the symbol stream produces bit-accurate results that are independent of the position of the (local or remote) decoder, the content of the reference picture memory (534) will also be the same bit-accuracy for the local encoder and the remote encoder. In other words, the prediction portion of the encoder "sees" as reference picture samples exactly the same sample values as the decoder would "see" if using prediction during decoding. This fundamental principle of reference picture synchronism (and eventually drift if synchronism cannot be maintained, for example due to channel errors) is also used in some related fields of technology.
[0071] «Локальный» декодер (533) может действовать таким же образом, как «удаленный» декодер, например, видеодекодер (410), подробно описанный выше со ссылкой на фиг. 4. Однако опять же согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).[0071] A "local" decoder (533) may operate in the same manner as a "remote" decoder, such as the video decoder (410) detailed above with reference to FIG. 4. However, again according to FIG. 4, since the symbols are available and the encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (545) and parser (420) can be lossless, the entropy decoding portions of the video decoder (410) including the buffer memory (415) and parser (420) can be not fully implemented in the local decoder (533).
[0072] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа / энтропийного декодирования, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине настоящее изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодирования. Лишь в некоторых областях требуется более подробное описание, которое приведено ниже.[0072] In doing so, it can be concluded that any decoding technology present in a decoder, with the exception of analysis/entropy decoding, must also necessarily be present in essentially identical functional form in the corresponding encoder. For this reason, the present invention is focused on the operation of the decoder. The description of the encoding technologies can be abbreviated as they are the inverse of the decoding technologies described in detail. Only in some areas a more detailed description is required, which is given below.
[0073] Согласно некоторым примерам, в ходе работы кодер (530) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основе одного или более ранее кодированных изображений из видеопоследовательности, указанных как «опорные изображения». Таким образом, механизм (532) кодирования кодирует разности между блоками пикселей входного изображения и блоками пикселей опорного изображения(й), которое(ые) может(ут) выбираться в качестве ссылки(ок) предсказания на входное изображение.[0073] According to some examples, in operation, the source encoder (530) may perform motion-compensated predictive coding, in which an input picture is predictively encoded based on one or more previously encoded pictures from a video sequence, referred to as "reference pictures". Thus, the coding engine (532) encodes the differences between the pixel blocks of the input image and the pixel blocks of the reference image(s) that can be selected as the prediction reference(s) to the input image.
[0074] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может обеспечивать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены удаленным видеодекодером (в отсутствие ошибок передачи).[0074] The local video decoder (533) may decode the encoded video data of pictures that can be specified as reference pictures based on the symbols generated by the source encoder (530). The operations of the encoding engine (532) may be predominantly lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (533) duplicates the decoding processes that may be performed by the video decoder on the reference pictures and may store the reconstructed reference pictures in the reference picture cache (534). Thus, the video encoder (503) can locally store copies of the reconstructed reference pictures having the same content as the reconstructed reference pictures that would be received by the remote video decoder (in the absence of transmission errors).
[0075] Предсказатель (535) может осуществлять поиски предсказания для механизма (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных блоков пикселей) или конкретные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе «блоки отсчетов х блоки пикселей» для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.[0075] The predictor (535) may perform prediction searches for the encoding engine (532). Thus, for a new image to be encoded, the predictor (535) may search the reference picture memory (534) for sample data (as pixel reference block candidates) or specific metadata such as reference picture motion vectors, block shapes, etc. .d., which can serve as a proper reference for predicting new images. The predictor (535) may operate on a "sample x pixel blocks" basis to find appropriate references for prediction. In some cases, according to the search results obtained by the predictor (535), the input picture may have prediction references extracted from the plurality of reference pictures stored in the reference picture memory (534).
[0076] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установление параметров, а также параметров подгруппы, используемых для кодирования видеоданных.[0076] The controller (550) may control the encoding operations of the source encoder (530), including, for example, setting the parameters as well as the subgroup parameters used to encode the video data.
[0077] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сформированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно, например, технологиям кодирования Хаффмана, кодирования с переменной длиной серии, арифметического кодирования и т.д.[0077] The output of all of the aforementioned functional modules may be entropy encoded in an entropy encoder (545). An entropy encoder (545) translates symbols generated by various functional units into an encoded video sequence by lossless symbol compression according to, for example, Huffman coding, variable run length coding, arithmetic coding, and so on.
[0078] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную(ые) энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, с кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).[0078] The transmitter (540) may buffer the encoded video sequence(s) created by the entropy encoder (545) in preparation for transmission over a communication channel (560), which may be a hardware/software memory link where the encoded video data is stored. The transmitter (540) may combine the encoded video data from the video encoder (503) with other data to be transmitted, such as encoded audio data and/or ancillary data streams (sources not shown).
[0079] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения.[0079] The controller (550) may control the operation of the video encoder (503). During encoding, the controller (550) may assign to each encoded picture an encoded picture type, which may determine the encoding methods applicable to the corresponding picture. For example, images can often be assigned the following image types.
[0080] Изображение с внутренним кодированием (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.[0080] An intra-coded picture (I-picture) that can be encoded and decoded without using any other picture in the sequence as a source for prediction. Some video codecs allow different types of intra-coded images, including, for example, images in the Independent Decoder Refresh (IDR) format. The person skilled in the art will be aware of the varieties of I-images and their respective applications and features.
[0081] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[0081] A predictive picture (P-picture) that can be encoded and decoded using intra prediction or inter prediction using at most one motion vector and a reference index to predict sample values of each block.
[0082] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.[0082] A bidirectional predictive picture (B-picture) that can be encoded and decoded using intra prediction or inter prediction using no more than two motion vectors and reference indices to predict sample values of each block. Similarly, multi-prediction pictures may use more than two reference pictures and associated metadata to reconstruct a single block.
[0083] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки 1-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[0083] Source images typically allow for spatial division into multiple blocks of samples (eg, blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coding on a block-by-block basis. The blocks may be predictively encoded with reference to other (previously coded) blocks defined by the coding assignment applied to the respective images of those blocks. For example, blocks of 1-pictures may be encoded without prediction or predictively with reference to previously encoded blocks of the same picture (with spatial prediction or intra prediction). P-picture pixel blocks may be predictively encoded by spatial prediction or temporal prediction with reference to one previously encoded reference picture. Blocks of B-pictures may be predictively encoded by spatial prediction or temporal prediction with reference to one or two previously encoded reference pictures.
[0084] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видеоданных.[0084] The video encoder (503) may perform encoding operations according to a predetermined video coding technology or standard, such as ITU-T Rec. H.265. In operation, the video encoder (503) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Therefore, the encoded video data may follow the syntax given by the technology used or the video coding standard.
[0085] Согласно варианту осуществления изобретения, передатчик (540) может передавать дополнительные данные с кодированными видеоданными. Кодер (530) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.[0085] According to an embodiment of the invention, the transmitter (540) may transmit additional data with encoded video data. The source encoder (530) may include such data as part of the encoded video sequence. The additional data may include temporal/spatial/SNR enhancement levels, other forms of redundant data such as redundant images and slices, SEI messages, VUI parameter set fragments, and so on.
[0086] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а внешнее предсказание изображения использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.[0086] The video may be captured as a plurality of source images (video images) in time sequence. Intra-image prediction (often abbreviated as intra-image prediction) uses the spatial correlation within a given image, while inter-image prediction uses (temporal or otherwise) correlation between images. For example, a specific image to be encoded/decoded, which is called the current image, is divided into blocks. When a block in the current picture is similar to a reference block in a previously encoded and still buffered reference picture in a video, the block in the current picture may be encoded with a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension identifying the reference picture if multiple reference pictures are used.
[0087] В некоторых вариантах осуществления изобретения может использоваться метод двойного предсказания в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться посредством первого вектора движения, который указывает на первый опорный блок в первом опорном изображении, и посредством второго вектора движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться с помощью комбинации первого опорного блока и второго опорного блока.[0087] In some embodiments of the invention, a dual prediction technique may be used in inter-picture prediction. According to the double prediction method, two reference pictures are used, for example, a first reference picture and a second reference picture, both of which precede the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture may be encoded by a first motion vector that points to a first reference block in a first reference picture, and by a second motion vector that points to a second reference block in a second reference picture. The block may be predicted with a combination of the first reference block and the second reference block.
[0088] Дополнительно, способ режима слияния может использоваться во внешнем предсказании изображения для повышения эффективности кодирования.[0088] Additionally, the fusion mode method can be used in inter-picture prediction to improve coding efficiency.
[0089] Согласно некоторым вариантам осуществления изобретения предсказания, например, внешнее предсказание изображения и внутреннее предсказание изображения осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree unit) для сжатия, единицы CTU в изображении имеют одинаковый размер, например 64×64, 32×32 или 16×16 пикселей. В общем случае единица CTU включает три блока дерева кодирования (СТВ, coding tree block), а именно один блок СТВ яркости и два блока СТВ цветности. Каждая единица CTU может рекурсивно делиться на основе квадродерева на одну или более единиц кодирования (CU). Например, единица CTU размером 64×64 пикселей может делиться на одну единицу CU размером 64×64 пикселей или 4 единицы CU размером 32×32 пикселей или 16 единиц CU размером 16×16 пикселей. Например, каждая единица CU анализируется для определения типа предсказания для этой единицы CU, например, типа внешнего предсказания или типа внутреннего предсказания. Единица CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая единица PU включает блок предсказания (РВ, prediction block) яркости и два блока РВ предсказания цветности. Согласно варианту осуществления изобретения, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. В качестве примера блока предсказания, блок предсказания яркости включает матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.[0089] According to some embodiments of the invention, predictions such as inter image prediction and intra image prediction are performed block by block. For example, according to the HEVC standard, an image in a video sequence is divided into coding tree units (CTU) for compression, CTUs in an image are the same size, such as 64×64, 32×32, or 16×16 pixels. In general, a CTU includes three coding tree blocks (CTB), namely one luminance CTB and two chrominance CTBs. Each CTU may be recursively divided on a quadtree basis into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, or 4 32x32 pixel CUs, or 16 16x16 pixel CUs. For example, each CU is analyzed to determine a prediction type for that CU, such as an inter prediction type or an intra prediction type. The CU unit is divided into one or more prediction units (PU) depending on temporal and/or spatial predictability. In general, each PU includes a luminance prediction block (PB) and two chrominance prediction blocks PB. According to an embodiment of the invention, the encoding (encoding/decoding) prediction operation is performed in a prediction block unit. As an example of a prediction block, a luminance prediction block includes a matrix of values (e.g., luminance values) for pixels, e.g., 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, and the like.
[0090] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.[0090] FIG. 6 shows a diagram of a video encoder (603) according to another embodiment of the invention. The video encoder (603) is configured to receive a processing unit (eg, a prediction unit) of sample values in the current video image in the video sequence and encoding the processing unit into an encoded image that is part of the encoded video sequence. For example, video encoder (603) is used instead of video encoder (303) in the example shown in FIG. 3.
[0091] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в режиме внутреннего предсказания, режиме внешнего предсказания или режиме двойного предсказания с использованием, например, оптимизации «скорость-искажения». Когда блок обработки подлежит кодированию в режиме внутреннего предсказания, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение, а когда блок обработки подлежит кодированию в режиме внешнего предсказания или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видеоданных режим слияния может быть подрежимом внешнего предсказания изображения, в котором вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях кодирования видеоданных может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) содержит другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.[0091] In the HEVC example, video encoder (603) receives a matrix of sample values for a processing block, such as an 8×8 sample prediction block, or the like. The video encoder (603) determines whether the processing block is best encoded in intra prediction mode, inter prediction mode, or dual prediction mode using, for example, rate-distortion optimization. When the processing unit is to be coded in intra prediction mode, the video encoder (603) may use an intra prediction technique to encode the processing unit into an encoded picture, and when the processing unit is to be coded in inter prediction mode or dual prediction mode, the video encoder (603) may use an inter prediction technique. prediction or double prediction, respectively, to encode the processing block into the encoded picture. In some video coding technologies, the merge mode may be an inter-picture prediction sub-mode in which a motion vector is derived from one or more motion vector predictors without involving an encoded motion vector component outside of the predictors. In some other video coding technologies, there may be a motion vector component applicable to a given block. By way of example, the video encoder (603) includes other components, such as a mode determination module (not shown) for determining the mode of the processing units.
[0092] В примере, приведенном на фиг. 6, видеокодер (603) содержит кодер (630) внешнего кодирования, кодер (622) внутреннего кодирования, вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом так, как показано на фиг. 6.[0092] In the example shown in FIG. 6, the video encoder (603) comprises an outer encoder (630), an intra encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a common controller (621), and an entropy encoder (625), connected to each other as shown in Fig. 6.
[0093] Кодер (630) внешнего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), создания информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, блока предсказания) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.[0093] The outer encoding encoder (630) is configured to receive samples of the current block (e.g., processing block), compare the block with one or more reference blocks in reference pictures (e.g., blocks in previous pictures and later pictures), generate outer prediction (eg, descriptions of redundant information according to the inter coding method, motion vectors, merge mode information); and calculating inter prediction results (eg, prediction block) based on the inter prediction information using any suitable method. In some examples, reference pictures are decoded reference pictures that are decoded based on encoded video information.
[0094] Кодер (622) внутреннего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, формирования квантованных коэффициентов после преобразования и в ряде случаев также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, кодер (622) внутреннего кодирования также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основе информации внутреннего предсказания и опорных блоков в том же изображении.[0094] The intra coding encoder (622) is configured to receive samples of the current block (e.g., processing block), in some cases comparing the block with blocks previously encoded in the same picture, generating quantized coefficients after the transformation, and in some cases also intra-block information. prediction (eg, intra prediction direction information according to one or more intra coding methods). By way of example, the intra encoder (622) also calculates intra prediction results (eg, prediction block) based on intra prediction information and reference blocks in the same picture.
[0095] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является режимом внутреннего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата режима внутреннего кодирования для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток, а когда режим является режимом внешнего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.[0095] The common controller (621) is configured to determine common control data and control other components of the video encoder (603) based on the common control data. For example, the common controller (621) determines the mode of the block and outputs a control signal to the switch (626) based on the mode. For example, when the mode is an intra coding mode, the common controller (621) controls the switch (626) to select the result of the intra coding mode to be used by the residual calculator (623) and controls the entropy encoder (625) to select the intra prediction information and include the intra prediction information in bitstream, and when the mode is an inter-coding mode, the common controller (621) controls a switch (626) to select an inter-prediction result for use by the residual calculator (623) and controls an entropy encoder (625) to select inter-prediction information and turn on inter-prediction information to the bitstream.
[0096] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из кодера (622) внутреннего кодирования или кодера (630) внешнего кодирования. Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для формирования коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и формирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления изобретения видеокодер (603) также содержит декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться кодером (622) внутреннего кодирования и кодером (630) внешнего кодирования. Например, кодер (630) внешнего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а кодер (622) внутреннего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для формирования декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.[0096] The residual calculator (623) is configured to calculate the difference (residual data) between the received block and the prediction results selected from the intra encoder (622) or the outer encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data to generate transform coefficients. For example, the residual encoder (624) is configured to transform residual data from the spatial domain to the frequency domain and generate transform coefficients. Then, the transform coefficients are subjected to quantization processing to obtain quantized transform coefficients. In various embodiments of the invention, the video encoder (603) also contains a residual decoder (628). The residual decoder (628) is configured to perform inverse transformation and generate decoded residual data. The decoded residual data may be appropriately used by the intra encoder (622) and the outer encoder (630). For example, an inter encoder (630) may generate decoded blocks based on the decoded residual data and inter prediction information, and an intra encoder (622) may generate decoded blocks based on the decoded residual data and intra prediction information. The decoded blocks are properly processed to generate decoded pictures, and the decoded pictures can be buffered in a memory circuit (not shown) and used as reference pictures in some examples.
[0097] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока для включения кодированного блока. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Следует отметить, что, согласно изобретению, при кодировании блока в подрежиме слияния для любого из режима внешнего кодирования и режима двойного предсказания, информация остатка отсутствует.[0097] The entropy encoder (625) is configured to format the bitstream to include a coded block. The entropy encoder (625) is configured to include various information according to a suitable standard, such as the HEVC standard. For example, the entropy encoder (625) is configured to include common control data, selected prediction information (eg, intra prediction information or inter prediction information), residual information, and other appropriate information in the bitstream. It should be noted that, according to the invention, when encoding a block in the merge sub-mode for either of the inter-coding mode and the dual prediction mode, there is no residual information.
[0098] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для формирования реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.[0098] FIG. 7 shows a diagram of a video decoder (710) according to another embodiment of the invention. The video decoder (710) is configured to receive encoded pictures that are part of the encoded video sequence and decode the encoded pictures to generate reconstructed pictures. For example, video decoder (710) is used instead of video decoder (310) in the example shown in FIG. 3.
[0099] В примере, приведенном на фиг. 7, видеодекодер (710) содержит энтропийный декодер (771), декодер (780) внешнего декодирования, декодер (773) остатка, модуль (774) реконструкции и декодер (772) внутреннего декодирования, соединенные друг с другом так, как показано на фиг. 7.[0099] In the example shown in FIG. 7, the video decoder (710) comprises an entropy decoder (771), an outer decoder (780), a residual decoder (773), a reconstruction unit (774), and an inner decoder (772) connected to each other as shown in FIG. 7.
[0100] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать, например, режим кодирования блока (например, режим внутреннего кодирования, режим внешнего кодирования, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания декодером (772) внутреннего декодирования или декодером (780) внешнего декодирования, соответственно, информацию остатка в виде, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на декодер (780) внешнего декодирования, а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на декодер (772) внутреннего декодирования. Информация остатка может подвергаться обратному квантованию и поступать на декодер (773) остатка.[0100] The entropy decoder (771) may be configured to reconstruct, from the encoded image, some symbols that represent the syntax elements that form the encoded image. Such symbols may include, for example, block coding mode (eg, intra coding mode, inter coding mode, dual prediction mode, the latter two in a merge submode or other submode), prediction information (eg, intra prediction information or inter prediction information), which can identify a certain sample or metadata used for prediction by the intra decoder (772) or the outer decode decoder (780), respectively, residual information in the form of, for example, quantized transform coefficients and the like. For example, when the prediction mode is an intra prediction or dual prediction mode, the inter prediction information is supplied to the inter prediction decoder (780), and when the prediction type is the intra prediction type, the intra prediction information is supplied to the intra decoding decoder (772). The residual information may be inverse quantized and fed to the residual decoder (773).
[0101] Декодер (780) внешнего декодирования выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основе информации внешнего предсказания.[0101] The inter-decoding decoder (780) is configured to receive inter-prediction information and generate inter-prediction results based on the inter-prediction information.
[0102] Декодер (772) внутреннего декодирования выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основе информации внутреннего предсказания.[0102] The intra decoding decoder (772) is configured to receive intra prediction information and generate prediction results based on the intra prediction information.
[0103] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (для включения параметра квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).[0103] The residual decoder (773) is configured to perform inverse quantization to extract the dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require some control information (to enable the Quantizer Parameter (QP)), and this information may be provided by the entropy decoder (771) (the data path is not shown since this may only be small volume control information) .
[0104] Модуль (774) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Следует отметить, что могут осуществляться другие подходящие операции, например, операция устранения блочности и т.п., для повышения визуального качества.[0104] The reconstruction module (774) is configured to combine, in the spatial domain, the residual at the output of the residual decoder (773) and prediction results (at the output of the inter or intra prediction modules, depending on the situation) to form a reconstructed block that may be included into the reconstructed image, which, in turn, can be part of the reconstructed video. It should be noted that other suitable operations, such as a deblocking operation and the like, may be performed to improve the visual quality.
[0105] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любой подходящей технологии. Согласно варианту осуществления изобретения, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления изобретения видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые исполняют программные инструкции.[0105] It should be noted that video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using any suitable technology. According to an embodiment of the invention, video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using one or more integrated circuits. In another embodiment of the invention, video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using one or more processors that execute program instructions.
[0106] II. Режим разделения на треугольники (ТРМ, Triangle Partition Mode) для внешнего предсказания[0106] II. Triangle Partition Mode (TPM) for external prediction
[0107] В некоторых случаях режим ТРМ может поддерживаться для внешнего предсказания. Режим ТРМ может применяться только к единицам CU размером 8x8 или больше. Режим ТРМ может сигнализироваться с использованием флага уровня CU в качестве одного из видов режима слияния с другими режимами слияния, такими как обычный режим слияния, режим MMVD, режим CIIP и режим слияния подблоков.[0107] In some cases, the TPM mode may be supported for inter prediction. TPM mode can only be applied to 8x8 or larger CUs. The TPM mode may be signaled using a CU level flag as one kind of merge mode with other merge modes such as normal merge mode, MMVD mode, CIIP mode, and sub-unit merge mode.
[0108] Когда используется режим ТРМ, единица CU может быть равномерно разделена на два раздела треугольной формы с использованием либо диагонального разделения, либо антидиагонального разделения, как, например, показано на фиг. 8А и 8В. Каждый треугольный раздел в единице CU может быть предсказан посредством внешнего предсказания с использованием его собственных параметров движения. Для каждого раздела может быть разрешено только одно предсказание. То есть каждый раздел имеет один вектор движения и один опорный индекс. Ограничение движения с одним предсказанием применяется, чтобы гарантировать, что разделение на треугольники такое же, как и при обычном двойном предсказании. То есть для каждой CU необходимы только два предсказания с компенсацией движения. Движение с одним предсказанием для каждого раздела может быть получено с использованием способа, проиллюстрированного на фиг. 1A-1D.[0108] When the TPM mode is used, the CU may be evenly divided into two triangular-shaped partitions using either a diagonal split or an anti-diagonal split, as shown in FIG. 8A and 8B. Each triangular section in a CU can be predicted by inter-prediction using its own motion parameters. Only one prediction can be allowed per partition. That is, each section has one motion vector and one reference index. A single-prediction motion constraint is applied to ensure that the triangulation is the same as in normal dual prediction. That is, only two motion-compensated predictions are needed for each CU. Single prediction motion for each partition can be obtained using the method illustrated in FIG. 1A-1D.
[0109] Если режим ТРМ используется для текущей единицы CU, то также может сигнализироваться флаг, указывающий (диагональное или антидиагональное) направление ТРМ, и два индекса слияния (по одному для каждого раздела). Максимальный размер кандидата ТРМ может явно сигнализироваться на уровне слайса и указывать синтаксическую бинаризацию для индексов слияния ТМР. После предсказания каждого из треугольных разделов значения отсчетов вдоль диагонального или антидиагонального края могут быть скорректированы с использованием процесса смешивания со значениями адаптивных весов. После получения сигнала предсказания для всей единицы CU, процесс преобразования и квантования может быть также применен ко всей единице CU, как и в других режимах предсказания. Наконец, можно сохранить поле движения CU, предсказываемое с помощью ТРМ.[0109] If the TPM mode is used for the current CU, then a flag indicating the (diagonal or antidiagonal) TPM direction and two merge indexes (one for each partition) may also be signaled. The maximum size of a TMP candidate may be explicitly signaled at the slice level and indicate the syntactic binarization for TMP merge indices. After predicting each of the triangular sections, the sample values along the diagonal or anti-diagonal edge can be adjusted using a blending process with adaptive weight values. After obtaining a prediction signal for the entire CU, the transformation and quantization process can also be applied to the entire CU as in other prediction modes. Finally, the motion field of the CU predicted by the TPM can be stored.
[0110] В некоторых случаях режим ТРМ не может использоваться в сочетании с преобразованием подблока (SBT, subblock transform). То есть, когда сигнализированный режим треугольника равен 1, может быть сделан вывод, что значение cu_sbt_flag равно 0 без сигнализации.[0110] In some cases, the TPM mode cannot be used in combination with a subblock transform (SBT, subblock transform). That is, when the signaled triangle mode is 1, it can be concluded that the value of cu_sbt_flag is 0 without signaling.
[0111] II. 1 Построение списка кандидатов с одним предсказанием[0111] II. 1 Building a list of candidates with one prediction
[0112] Список кандидатов с одним предсказанием может быть получен непосредственно из списка кандидатов на слияние, созданного в соответствии с расширенным процессом предсказания слияния. Обозначим N индекс движения с одним предсказанием в списке кандидатов с одним предсказанием треугольника. Вектор движения LX N-го расширенного кандидата на слияние, где значение X равно четности N, используется в качестве N-го вектора движения с одним предсказанием для ТРМ. Эти векторы движения отмечены как «X» на фиг. 9. В случае отсутствия соответствующего вектора движения LX N-го расширенного кандидата на слияние, вектор движения L(1-X) того же кандидата используется вместо этого как вектор движения с одним предсказанием для ТРМ.[0112] The single prediction candidate list can be obtained directly from the merge candidate list generated in accordance with the extended merge prediction process. Let N be the index of the one-prediction movement in the list of triangle-prediction candidates. The motion vector LX of the N-th extended merge candidate, where the value of X is equal to the parity of N, is used as the N-th single-prediction motion vector for TPM. These motion vectors are marked as "X" in FIG. 9. In case there is no corresponding motion vector LX of the Nth extended merge candidate, the motion vector L(1-X) of the same candidate is used instead as the single prediction motion vector for TPM.
[0113] II.2 Смешивание вдоль края разделения на треугольники[0113] II.2 Blending along the triangular edge
[0114] После предсказания каждого треугольного раздела с использованием его собственных параметров движения, может быть применен процесс смешивания к двум сигналам предсказания для получения отсчетов около диагонального или антидиагонального края. В процессе смешивания используются следующие значения весов {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} для яркости и {6/8, 4/8, 2/8} для цветности, как показано на фиг. 10А и 10В.[0114] After predicting each triangular section using its own motion parameters, a mixing process can be applied to the two prediction signals to obtain samples near the diagonal or anti-diagonal edge. The blending process uses the following weights {7/8, 6/8, 5/8, 4/8, 3/8, 2/8, 1/8} for brightness and {6/8, 4/8, 2/ 8} for chrominance as shown in FIG. 10A and 10V.
[0115] В некоторых случаях векторы движения единицы CU, кодированной в режиме ТРМ, могут быть сформированы следующим образом. Если Mv1 и Mv2 взяты из разных списков опорных изображений (например, один из L0, а другой из L1), то Mv1 и Mv2 просто объединяются для формирования вектора движения с двойным предсказанием. В противном случае, если Mv1 и Mv2 из одного и того же списка, сохраняется только движение Mv2 с одним предсказанием.[0115] In some cases, motion vectors of a TPM-encoded CU may be generated as follows. If Mv1 and Mv2 are taken from different reference picture lists (eg, one from L0 and the other from L1), then Mv1 and Mv2 are simply combined to form a dual prediction motion vector. Otherwise, if Mv1 and Mv2 are from the same list, only the single-prediction Mv2 motion is kept.
[0116] III. Режим геометрического слияния (GEO)[0116] III. Geometric fusion mode (GEO)
[0117] Методы, связанные с режимом геометрического слияния (GEO), описаны в (i) Han Gao, Semih Esenlik, Elena Alshina, Anand Meher Kotra, Biao Wang, Max Blaser, Johannes Sauer, "CE4: CE4-1.1, CE4-1.2 and CE4-1.14: Geometric Merge Mode (GEO)", JVET-P0068, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 16-е заседание: Женева, Швейцария, 1-11 октября 2019; (ii) Han Gao, Semih Esenlik, Elena Alshina, Anand Meher Kotra, Biao Wang, Max Johannes Sauer, "Simplified GEO without multiplication and minimum blending mask storage", JVET-P0884, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 16-e заседание: Женева, Швейцария, 1-11 октября 2019; (iii) Kevin , Chun-Chi Chen, Han Huang, Wei-Jung Chien, Vadim Seregin, Marta Karczewicz, Ru-Ling Liao, Jie Chen, Yan Ye, Jiancong Luo, Max Johannes Sauer, ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11, 16-е заседание: Женева, Швейцария, 1-11 октября 2019. Документы JVET-P0068, JVET-P0884 и JVET-P0085 включены в настоящий документ посредством ссылки.[0117] Geometric fusion mode (GEO) related methods are described in (i) Han Gao, Semih Esenlik, Elena Alshina, Anand Meher Kotra, Biao Wang, Max Blaser, Johannes Sauer, "CE4: CE4-1.1, CE4- 1.2 and CE4-1.14: Geometric Merge Mode (GEO)", JVET-P0068, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16th session: Geneva, Switzerland, October 1-11, 2019; (ii) Han Gao, Semih Esenlik, Elena Alshina, Anand Meher Kotra, Biao Wang, Max Johannes Sauer, "Simplified GEO without multiplication and minimum blending mask storage", JVET-P0884, Joint Video Experts Team (JVET) ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16th session : Geneva, Switzerland, October 1-11, 2019; (iii) Kevin , Chun-Chi Chen, Han Huang, Wei-Jung Chien, Vadim Seregin, Marta Karczewicz, Ru-Ling Liao, Jie Chen, Yan Ye, Jiancong Luo, Max Johannes Sauer, ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16th meeting: Geneva, Switzerland, 1-11 October 2019. Documents JVET-P0068, JVET-P0884 and JVET-P0085 incorporated herein by reference.
[0118] Режим геометрического слияния (GEO), также называемый режимом геометрического разделения (GPM, geometric partitioning mode), может поддерживать множество различных способов разделения. Способ разделения может быть задан посредством углов и краев. Например, 140 различных способов разделения можно различить по 32 углам (квантованным от 0 до 360° с равным разделением 11,25°) и 5 краям относительно центра единицы CU.[0118] Geometric fusion mode (GEO), also called geometric partitioning mode (GPM), can support many different partitioning methods. The division method can be specified by corners and edges. For example, 140 different partitioning methods can be distinguished by 32 angles (quantized from 0 to 360° with an equal separation of 11.25°) and 5 edges around the center of the CU unit.
[0119] Фиг. 11 показывает пример GEO. На фиг. 11 угол ϕi представляет квантованный угол между 0 и 360 градусами, а смещение ρi расстояния представляет квантованное смещение наибольшего расстояния ρmax. Значение ρmax может быть получено геометрически с помощью выражения (5) либо для w или h, равного 8 и масштабируемого с помощью log2-масштабированной длины короткого края. Переменные h и w представляют высоту и ширину текущего блока. Когда ϕ равно 0°, значение ρmax равно w/2. Когда ϕ равно 90°, значение ρmax равно h/2. В выражении (5) ρmargin=1.0 предотвращает слишком близкое расположение границы разделения к углу текущего блока.[0119] FIG. 11 shows an example of GEO. In FIG. 11, the angle ϕ i represents a quantized angle between 0 and 360 degrees, and the distance offset ρ i represents the quantized longest distance offset ρ max . The value of ρ max can be obtained geometrically using expression (5) either for w or h equal to 8 and scaled with the log2-scaled length of the short edge. The variables h and w represent the height and width of the current box. When ϕ is 0°, the value of ρ max is equal to w/2. When ϕ is 90°, the value of ρ max is h/2. In expression (5), ρ margin =1.0 prevents the separation border from being too close to the corner of the current block.
[0120] Каждому режиму разделения (то есть паре индекса угла и индекса края) в GEO может быть назначена таблица пиксельно-адаптивных весов для смешивания отсчетов в двух разделенных частях. Значение веса отсчета может находиться в диапазоне, например, от 0 до 8 и определяться расстоянием L2 от позиции центрального пикселя до края. При назначении значений весов может соблюдаться ограничение единичного увеличения. Например, когда небольшое значение веса назначается разделению GEO, большое комплементарное значение назначается другому разделению, так что в сумме получается 8.[0120] Each split mode (ie, corner index and edge index pair) in GEO can be assigned a pixel-adaptive weights table for blending samples in the two split portions. The value of the sample weight may be in the range, for example, from 0 to 8 and is determined by the distance L2 from the position of the center pixel to the edge. When assigning weight values, the unit magnification constraint may be respected. For example, when a small weight value is assigned to the GEO division, a large complementary value is assigned to the other division, so that the total is 8.
[0121] IV. Процесс взвешенного предсказания отсчета для GEO[0121] IV. Weighted Count Prediction Process for GEO
[0122] IV.1 Расчет веса смешивания[0122] IV.1 Calculation of mixing weight
[0123] В GEO окончательный предсказатель РВ отсчета может быть получен с помощью двух 3-битовых масок смешивания (то есть значений весов или весов) W0 и W1 и двух предсказателей Р0 и P1 согласно выражению (6)[0123] In GEO, the final sample PB predictor can be obtained using two 3-bit mixing masks (i.e., weights or weights) W 0 and W 1 and two predictors P 0 and P 1 according to expression (6)
[0124] Маски W0 и W1 смешивания могут быть получены из таблицы соответствия на основе их индексов весов. Индекс веса смешивания (также называемый в некоторых контекстах весом смешивания) может быть получен на основе расстояния между позицией (х, у) отсчета и границей разделения, как показано в выражении (7).[0124] Mixing masks W 0 and W 1 can be derived from a lookup table based on their weight indices. The mixing weight index (also called mixing weight in some contexts) can be obtained based on the distance between the reference position (x, y) and the separation boundary, as shown in expression (7).
гдеwhere
[0125] В выражении (10) n представляет шаги квантования полного расстояния, a i представляет индекс шага расстояния для GEO с углом ϕ, и i<n.[0125] In expression (10), n represents the total distance quantization steps, a i represents the distance step index for GEO with angle ϕ, and i<n.
[0126] Наконец, маски W0 и W1 смешивания (или значения весов) отсчета могут быть установлены с использованием таблицы 3, обозначенной GeoFilter, как показано в выражении (11).[0126] Finally, the mix masks W 0 and W 1 (or weight values) of the sample can be set using Table 3, denoted GeoFilter, as shown in expression (11).
[0127] Пример процесса взвешенного предсказания отсчета описан ниже. Входные данные для этого процесса включают две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования, два массива predSamplesLA и predSamplesLB размера (nCbW)×(nCbH), переменную angleIdx, определяющую индекс угла геометрического разделения, переменную distanceldx, определяющую индекс расстояния геометрического разделения, и переменную cIdx, определяющую индекс компонента цвета. Выходные данные этого процесса включают массив pbSamples значений отсчетов предсказания размера (nCbW)×(nCbH) и массив motionIdx размера (nCbW>>2)×(nCbH>>2).[0127] An example of a weighted sample prediction process is described below. The input to this process includes two variables nCbW and nCbH that define the width and height of the current encoding block, two arrays predSamplesLA and predSamplesLB of size (nCbW)×(nCbH), an angleIdx variable that defines the geometric split angle index, a distanceldx variable that defines the geometric split distance index. separation, and the variable cIdx, which specifies the index of the color component. The output of this process includes an array pbSamples of size prediction samples of size (nCbW)×(nCbH) and an array of motionIdx of size (nCbW>>2)×(nCbH>>2).
[0128] Переменная bitDepth может быть получена следующим образом: cIdx=0, bitDepth=BitDepthY; в противном случае bitDepth=BitDepthC.[0128] The variable bitDepth can be obtained as follows: cIdx=0, bitDepth=BitDepthY; otherwise bitDepth=BitDepthC.
[0129] Переменные shiftl=Max(5, 17-bitDepth) и offset1=1<<(shift1-1).[0129] Variables shiftl=Max(5, 17-bitDepth) and offset1=1<<(shift1-1).
[0130] Массивы весов sampleWeightL[x][y] для яркости и sampleWeightC[x][y] для цветности с х=0…nCbW-1 и у=0…nCbH-1 могут быть получены следующим образом:[0130] Weight arrays sampleWeightL[x][y] for luma and sampleWeightC[x][y] for chrominance with x=0...nCbW-1 and y=0...nCbH-1 can be obtained as follows:
[0131] Переменные wIdx=log2(nCbW) и hIdx=log2(nCbH).[0131] Variables wIdx=log2(nCbW) and hIdx=log2(nCbH).
[0132] Переменная whRatio=(wIdx>=hIdx)?wIdx-hIdx:hIdx-wIdx, scaleIdx=(wIdx>=hIdx)?hIdx-3:wIdx-3.[0132] Variable whRatio=(wIdx>=hIdx)?wIdx-hIdx:hIdx-wIdx, scaleIdx=(wIdx>=hIdx)?hIdx-3:wIdx-3.
[0133] Переменные displacementX=angleIdx и displacementY=(displacementX+8)%32.[0133] Variables displacementX=angleIdx and displacementY=(displacementX+8)%32.
[0134] Переменная angleN=(wIdx>=hIdx)?(angleIdx>>3&l)?angleIdx%8:8-angleldx%8:(angleIdx>>3&1)?8-angleIdx%8:angleIdx%8.[0134] Variable angleN=(wIdx>=hIdx)?(angleIdx>>3&l)?angleIdx%8:8-angleldx%8:(angleIdx>>3&1)?8-angleIdx%8:angleIdx%8.
[0135] Переменная rho может быть установлена равной следующему значению с помощью таблиц соответствия, обозначенных stepDis и Dis, указанных в таблице 1 и таблице 2:[0135] The rho variable can be set to the following value using the lookup tables, denoted stepDis and Dis, shown in Table 1 and Table 2:
rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx).rho=distanceIdx*(stepDis[whRatio][angleN]<<scaleIdx)+(Dis[displacementX]<<wIdx)+(Dis[displacementY]<<hIdx).
[0136] Переменные weightIdx и weightIdxAbs могут быть вычислены с использованием таблицы 2 соответствия с x=0…nCbW-1 и у=0…nCbH-1.[0136] Variables weightIdx and weightIdxAbs can be calculated using lookup table 2 with x=0...nCbW-1 and y=0...nCbH-1.
weightIdx=((x<<1)+1)* Dis[displacementX]+((у<<1)+1))* Dis[displacementY]-rho.weightIdx=((x<<1)+1)* Dis[displacementX]+((y<<1)+1))* Dis[displacementY]-rho.
weightIdxAbs=Clip3(0, 26, (abs(weightIdx)+4)>>3).weightIdxAbs=Clip3(0, 26, (abs(weightIdx)+4)>>3).
[0137] Переменная partIdx может быть установлена равной weightIdx>0, если х=0 и у=nCbH-1.[0137] The variable partIdx can be set equal to weightIdx>0 if x=0 and y=nCbH-1.
[0138] Значение sampleWeightL[x][y] с x=0…nCbW-1 и у=0…nCbH-1 может быть установлено в соответствии с таблицей 3, обозначенной GeoFilter.[0138] The value of sampleWeightL[x][y] with x=0...nCbW-1 and y=0...nCbH-1 can be set according to Table 3, labeled GeoFilter.
[0139] Значение с и может быть установлено следующим образом:[0139] Value With and can be set like this:
[0140] IV.2 Хранение минимальной маски весов смешивания[0140] IV.2 Storing the minimum blend weight mask
[0141] Чтобы уменьшить потребность в хранении заранее рассчитанных масок смешивания, метод хранения минимальной маски смешивания может обеспечить 84-91% снижение потребности в хранении весов смешивания.[0141] In order to reduce the need to store precalculated mixing masks, the minimum mixing mask storage method can provide an 84-91% reduction in the need to store mixing weights.
[0142] Пусть представляет заранее заданные маски для весов смешивания. Предположим, что N представляет количество заранее заданных масок в каждом наборе, и N установлено как NA>>1, где NA - количество углов, поддерживаемых в GEO. М×М представляет размер заранее заданных масок для весов смешивания, а значение М устанавливается равным 128+((ND-1)×(128>>S))<<1, где ND - количество шагов, поддерживаемых в GEO, и S установлен как ND-1. Для 32 углов с настройкой в 5 этапов N установлено как 16, а М установлено как 192. Для 24 углов с настройкой в 4 этапа N установлено как 12, а М установлено как 224.[0142] Let represents predefined masks for blending weights. Suppose N represents the number of preset masks in each set, and N is set to NA>>1, where NA is the number of angles supported in GEO. M×M represents the size of the preset masks for the blending weights, and the value of M is set to 128+((ND-1)×(128>>S))<<1, where ND is the number of steps supported in GEO and S is set to like ND-1. For 32 corners with 5 steps, N is set to 16 and M is set to 192. For 24 corners with 4 steps, N is set to 12 and M is set to 224.
[0143] Для блока размера W×H с индексом K геометрического разделения, веса смешивания для отсчетов яркости получают следующим образом. Переменные угла ϕ и расстояния ρ получают из таблицы соответствия с использованием индекса K геометрического разделения. Переменные offsetX и offsetY можно рассчитать следующим образом:[0143] For a block of size W×H with a geometric division index K, blending weights for luminance samples are obtained as follows. The angle ϕ and distance ρ variables are derived from a lookup table using the index K of the geometric separation. The offsetX and offsetY variables can be calculated as follows:
[0144] Пример процесса взвешенного предсказания отсчета с сохранением минимальной маски весов смешивания для GEO описан ниже. Входные данные для этого процесса включают две переменные nCbW и nCbH, определяющие ширину и высоту текущего блока кодирования, два массива predSamplesLA и predSamplesLB размера (nCbW)×(nCbH), переменную angleIdx, определяющую индекс угла геометрического разделения, переменную distanceIdx, определяющую расстояние idx геометрического разделения, и переменную cIdx, определяющую индекс компонента цвета. Выходные данные этого процесса включают массив pbSamples размера (nCbW)×(nCbH) значений отсчетов предсказания и переменную partIdx.[0144] An example of a weighted sample prediction process while maintaining a minimum mixing weight mask for GEO is described below. The input to this process includes two variables nCbW and nCbH defining the width and height of the current coding block, two arrays predSamplesLA and predSamplesLB of size (nCbW)×(nCbH), an angleIdx variable defining the geometric split angle index, a distanceIdx variable defining the distance idx of the geometric separation, and the variable cIdx, which specifies the index of the color component. The output of this process includes an array pbSamples of size (nCbW)×(nCbH) of prediction sample values and a variable partIdx.
[0145] Переменная bitDepth может быть получена следующим образом: если cIdx=0, bitDepth=BitDepthY; в противном случае bitDepth=BitDepthC.[0145] The variable bitDepth can be obtained as follows: if cIdx=0, bitDepth=BitDepthY; otherwise bitDepth=BitDepthC.
[0146] Переменные shift1=Max(5, 17-bitDepth) и offset1=1<<(shift1-1).[0146] Variables shift1=Max(5, 17-bitDepth) and offset1=1<<(shift1-1).
[0147] Массивы весов sampleWeightL[x][y] для яркости и sampleWeightC[x][у] для цветности с и могут быть получены следующим образом:[0147] Arrays of weights sampleWeightL[x][y] for luma and sampleWeightC[x][y] for chrominance with and can be obtained as follows:
[0148] Переменная [0148] Variable
[0149] Переменные и [0149] Variables and
[0150] Переменная [0150] Variable
[0151] Переменная rho может быть установлена равной следующему значению с помощью таблицы 2 соответствия:[0151] The rho variable can be set to the following value using lookup table 2:
[0152] Переменная если выполняется одно из следующих условий: (1) и (2) и В противном случае [0152] Variable if one of the following conditions is met: (1) and 2) and Otherwise
[0153] Если [0153] If
[0154] В противном случае, если [0154] Otherwise, if
[0155] Переменные и могут быть вычислены с использованием таблицы 2 соответствия с и следующим образом:[0155] Variables and can be calculated using table 2 correspondence with and in the following way:
[0156] Значение с и может быть установлено в соответствии с таблицей 3, обозначенной GeoFilter.[0156] Value With and can be set according to table 3, labeled GeoFilter.
[0157] Значение с и может быть установлено следующим образом:[0157] Value With and can be set like this:
[0158] V. Процесс сохранения вектора движения для GEO[0158] V. Motion vector storage process for GEO
[0159] V.1 Получение вектора движения аналогично ТРМ[0159] V.1 Motion vector acquisition similar to TPM
[0160] В некоторых случаях веса отсчетов яркости в четырех углах единицы 4×4 хранения движения могут суммироваться. Сумма может сравниваться с двумя пороговыми значениями для определения, сохранена ли информация движения с одним предсказанием или с двойным предсказанием. Информация о движении с двойным предсказанием может быть получена с использованием того же процесса, что и ТРМ.[0160] In some cases, the weights of the brightness samples in the four corners of the 4x4 motion storage unit may be summed. The sum may be compared with the two thresholds to determine whether the motion information is stored with single prediction or dual prediction. The dual prediction motion information can be obtained using the same process as the TPM.
[0161] Пример процесса сохранения вектора движения для GEO описан ниже.[0161] An example of a motion vector storage process for GEO is described below.
[0162] Массив с и можно получить следующим образом:[0162] Array With and can be obtained like this:
[0163] Переменные[0163] Variables
[0164] Если с и [0164] If With and
[0165] V.2 Упрощенный процесс сохранения векторов движения[0165] V.2 Simplified motion vector storage process
[0166] В некоторых случаях процесс сохранения вектора движения дополнительно упрощается. Расстояние между центральной позицией единицы 4×4 хранения движения и границей разделения можно вычислить и сравнить с фиксированным порогом, чтобы определить, сохраняется ли информация движения с одним предсказанием или с двойным предсказанием для единицы 4×4 хранения движения. Знак расстояния указывает на то, какая информация о движении с одним предсказанием должна храниться в случае хранения с одним предсказанием. Зависимость маски смешивания и хранения движения можно устранить.[0166] In some cases, the process of storing the motion vector is further simplified. The distance between the center position of the 4×4 motion storage unit and the separation boundary can be calculated and compared with a fixed threshold to determine whether the motion information is stored with single prediction or dual prediction for the 4×4 motion storage unit. The distance sign indicates which single-prediction motion information should be stored in the case of single-prediction storage. The dependency of the blend mask and motion storage can be removed.
[0167] Если [0167] If
[0168] Переменная rho устанавливается равной следующему значению с использованием таблиц соответствия, обозначенных stepDis и Dis, указанных в таблице 1 и таблице 2:[0168] The rho variable is set to the following value using the lookup tables, denoted by stepDis and Dis, specified in Table 1 and Table 2:
[0169] Переменная motionOffset устанавливается равной следующему значению с использованием таблиц соответствия, обозначенных Dis, указанных в таблице 1 и таблице 2:[0169] The motionOffset variable is set to the following value using lookup tables, denoted by Dis, specified in Table 1 and Table 2:
[0170] Переменная motionIdx вычисляется с использованием таблицы 2 соответствия следующим образом:[0170] The motionIdx variable is calculated using lookup table 2 as follows:
[0171] Переменную sType получают следующим образом:[0171] The sType variable is obtained as follows:
если в противном случае if otherwise
[0172] V.3 Процесс сохранения минимального вектора движения[0172] V.3 Minimum Motion Vector Preservation Process
[0173] Чтобы уменьшить объем памяти, необходимой для хранения масок для хранения поля движения, в способе вся информация из заранее заданной маски может быть получена для масок хранения поля движения. Этот процесс запускается при декодировании единицы кодирования с помощью Входные данные для этого процесса включают местоположение яркости (xCb, yCb), определяющее верхний левый отсчет текущего блока кодирования относительно верхнего левого отсчета яркости текущего изображения, переменную cbWidth, определяющую ширину текущего блока кодирования в отсчетах яркости, переменную cbHeight, определяющую высоту текущего блока кодирования в отсчетах яркости, векторы mvA и mvB движения яркости с точностью 1/16 отсчета, опорные индексы refldxA и refldxB, и флаги predListFlagA и predListFlagB списка предсказания.[0173] In order to reduce the amount of memory required to store the motion field storage masks, in the method, all information from a predetermined mask can be obtained for the motion field storage masks. This process is started when a coding unit is decoded with Inputs to this process include a luma location (xCb, yCb) that defines the top-left sample of the current coding block relative to the top-left luminance sample of the current image, a cbWidth variable that defines the width of the current coding block in luma samples, a cbHeight variable that defines the height of the current coding block in luma samples, luminance motion vectors mvA and mvB with 1/16 sample precision, reference indices refldxA and refldxB, and prediction list flags predListFlagA and predListFlagB.
[0174] Переменные numSbX и numSbY, определяющие количество блоков 4×4 в текущем блоке кодирования по горизонтали и вертикали, устанавливаются равными и [0174] The variables numSbX and numSbY, which determine the number of 4x4 blocks in the current coding block horizontally and vertically, are set equal to and
[0175] Переменные [0175] Variables
[0176] Переменная shiftHor=0, если выполняется одно из следующих условий: (1) и (2) и В противном случае [0176] Variable shiftHor=0 if one of the following conditions is true: (1) and 2) and Otherwise
[0177] Переменная [0177] Variable
[0178] Если [0178] If
[0179] Значение переменной rho получают в соответствии с приведенным ниже выражением и таблицей соответствия Dis, указанной в таблице 2.[0179] The value of the variable rho is obtained in accordance with the expression below and the correspondence table Dis indicated in table 2.
[0180] Переменная motionOffset устанавливается равной следующему значению с использованием таблиц соответствия, обозначенных Dis и указанных в таблице 1 и таблице 2.[0180] The motionOffset variable is set to the following value using the lookup tables denoted by Dis and are listed in Table 1 and Table 2.
[0181] Для каждого подблока 4×4 с индексом подблока (xSbldx, ySbldx) с и переменную motionIdx вычисляют с использованием таблицы 2 соответствия следующим образом:[0181] For each 4x4 subblock with subblock index (xSbldx, ySbldx) with and the motionIdx variable is calculated using lookup table 2 as follows:
[0182] VI. Процесс смешивания и сохранение поля движения[0182] VI. Mixing process and preservation of the motion field
[0183] В GEO, как описано в разделах III, IV и V, процесс взвешенного предсказания отсчета и определение хранения поля движения требуют больших вычислительных затрат. В некоторых примерах (как описано в разделах IV.1 и V1), если веса смешивания и тип сохраненного вектора движения вычисляются "на лету", количество умножений, сдвигов и сложений для блока размера W×H отсчетов могут быть следующими:[0183] In GEO, as described in sections III, IV, and V, the process of weighted sample prediction and motion field storage determination is computationally expensive. In some examples (as described in Sections IV.1 and V1), if the blend weights and stored motion vector type are computed on the fly, the number of multiplications, shifts, and additions for a block of size W×H samples may be as follows:
- Умножение: 3+2×W×H+0×(W×H/16)- Multiplication: 3+2×W×H+0×(W×H/16)
- Сдвиг: 6+3×W×H+8×(W×H/16)- Offset: 6+3×W×H+8×(W×H/16)
- Сложение: 10+6×W×H+7×(W×H/16).- Addition: 10+6×W×H+7×(W×H/16).
Например, для блока 8×8, на один отсчет требуется 2,04 операций умножения, 3,09 операций сдвига и 6,16 операций сложения. Кроме того, в некоторых примерах для вычислений "на лету" используются три таблицы соответствия. Переменная ρ в выражении (8) представляет собой сложную функцию с операциями с плавающей запятой и реализуется с помощью таблицы соответствия. Две другие таблицы соответствия - это таблица соответствия значений cos[.] и таблица преобразования для преобразования индекса веса смешивания в значение веса смешивания. Следовательно, вычисление масок весов смешивания и масок типа вектора движения для каждого блока, кодированного GEO, "на лету" требует больших вычислительных затрат.For example, for an 8×8 block, 2.04 multiplications, 3.09 shifts, and 6.16 additions are required per sample. Also, in some examples, three lookup tables are used for on-the-fly calculations. The variable ρ in expression (8) is a complex function with floating point operations and is implemented using a lookup table. The other two lookup tables are a lookup table for cos[.] values and a lookup table for converting a mix weight index to a mix weight value. Therefore, calculating the blend weight masks and motion vector type masks for each GEO encoded block on the fly is computationally expensive.
[0184] Чтобы уменьшить вычислительную сложность, в некоторых примерах маски весов смешивания и маски типа хранения векторов движения могут быть вычислены и сохранены в памяти заранее. Однако огромный размер памяти является сложной задачей при проектировании. Взяв в качестве примера 140-режимный вариант GEO, память, необходимая для хранения этой информации, может быть рассчитана следующим образом:[0184] In order to reduce computational complexity, in some examples, the blend weight masks and the motion vector storage type masks may be computed and stored in memory in advance. However, the huge memory size is a design challenge. Taking the 140-mode version of GEO as an example, the memory required to store this information can be calculated as follows:
- Для весов смешивания: (8×8+8×16+8×32+8×64+16×8+16×16+16×32+16×64+32×8+32×16+32×32+32×64+64×8+64×16+64×32+64×64+64×128+128×64+128×128)×140×4=26,414,080 битов=3,301,760 байтов≅3.3 Мбайт- For mixing weights: (8×8+8×16+8×32+8×64+16×8+16×16+16×32+16×64+32×8+32×16+32×32+ 32×64+64×8+64×16+64×32+64×64+64×128+128×64+128×128)×140×4=26,414,080 bits=3,301,760 bytes≅3.3 MB
- Для хранения поля движения: (2×2+2×4+2×8+2×16+4×2+4×4+4×8+4×16+8×2+8×4+8×8+8×16+16×2+16×4+16×8+16×16+16×32+32×16+32×32)×140×2=825,440 битов=103,180 байтов≅103 кбайт- To store movement field: (2×2+2×4+2×8+2×16+4×2+4×4+4×8+4×16+8×2+8×4+8×8 +8×16+16×2+16×4+16×8+16×16+16×32+32×16+32×32)×140×2=825.440 bits=103.180 bytes≅103 kbytes
[0185] На основе приведенного выше расчета, требования к памяти для трех вариантов GEO приведены в таблице 4:[0185] Based on the calculation above, the memory requirements for the three GEO options are shown in Table 4:
[0186] Из-за большого количества режимов разделения может быть трудно сохранить все адаптивные веса и маски типа вектора движения для хранения поля движения для каждого размера блока и режима разделения в практических реализациях. Чтобы уменьшить объем памяти, необходимой для хранения адаптивных весов и масок типа вектора движения для хранения поля движения, можно использовать два набора заранее заданных масок, один для получения весов смешивания, а другой - для масок хранения поля движения с применением методов, описанных в разделах IV.2 и V.3. Память, необходимая для весов смешивания и маски для хранения поля движения, может быть уменьшена. Но объем необходимой памяти все еще является большим для практических реализаций. Предположим, что N установлено как NA>>1, где NA - количество углов, поддерживаемых в GEO, а М установлено как 128+((ND-1)×(128>>S))<<1, где ND - количество шагов, поддерживаемых в режиме GEO, a S установлено как ND - 1. Число битов, необходимых для хранения заранее заданных масок, указано ниже:[0186] Due to the large number of partition modes, it can be difficult to store all the adaptive weights and motion vector type masks to store the motion field for each block size and partition mode in practical implementations. To reduce the amount of memory required to store the adaptive weights and the motion vector type masks to store the motion field, two sets of predefined masks can be used, one to obtain the blend weights and the other to store the motion field masks using the methods described in sections IV. .2 and V.3. The memory required for the mix weights and mask to store the motion field can be reduced. But the amount of memory required is still large for practical implementations. Suppose N is set to N A >>1 where N A is the number of corners supported in GEO and M is set to 128+((N D -1)×(128>>S))<<1 where N D is the number of steps supported in GEO mode, and S is set to N D - 1. The number of bits required to store preset masks is as follows:
- Для весов смешивания: (М×М)×N×4- For mixing scales: (M×M)×N×4
- Для хранения поля движения: (М×М)/16×N×2- To store movement field: (M×M)/16×N×2
[0187] Требования к памяти для трех вариантов GEO приведены в таблице 5 ниже:[0187] The memory requirements for the three GEO options are shown in Table 5 below:
[0188] Варианты осуществления изобретения для дальнейшего упрощения процесса взвешенного смешивания и процесса сохранения поля движения в GEO описаны ниже. Методы в этих вариантах осуществления изобретения позволяют вычислять вес "на лету" и определять тип хранения вектора движения с помощью небольшой таблицы соответствия тригонометрических значений (например, значений косинуса).[0188] Embodiments of the invention to further simplify the weighted blending process and the GEO motion field storage process are described below. The methods in these embodiments allow on-the-fly weight calculation and motion vector storage type determination using a small lookup table of trigonometric values (eg, cosine values).
[0189] Как описано, маски весов смешивания геометрического режима слияния могут быть получены на основе расстояния между позицией отсчета и границей разделения с использованием таблиц соответствия с помощью выражений (7) и (9), приведенных ниже.[0189] As described, the blend weight masks of the fusion geometry mode can be obtained based on the distance between the reference position and the split boundary using lookup tables using expressions (7) and (9) below.
гдеwhere
[0190] В выражении (7) ϕ представляет значение угла, соответствующее краю разделения, а ρ представляет собой расстояние между центром текущего блока кодирования и границей разделения. В выражении (9) n представляет общее количество шагов квантования расстояния, a i представляет индекс шага расстояния для разделения GEO с углом ϕ. Сдвинутое назад значение ρmargin в выражении (9) необходимо, чтобы избежать слишком близкого расположения границы разделения к углу текущего блока кодирования. Например, типичное значение ρmargin для блока 8×8 в некоторых примерах может быть 1,0.[0190] In expression (7), ϕ represents the angle value corresponding to the separation edge, and ρ represents the distance between the center of the current coding block and the separation border. In expression (9), n represents the total number of distance quantization steps, ai represents the distance step index for dividing the GEO with the angle ϕ. The back-shifted value of ρ margin in expression (9) is necessary to avoid the separation boundary being too close to the corner of the current coding block. For example, a typical value of ρ margin for an 8x8 block in some examples may be 1.0.
[0191] Значение ρmargin, зависящее от блока и угла[0191] The value of ρ margin depending on the block and angle
[0192] В варианте осуществления изобретения значение ρmargin в выражении (9), которое используется, чтобы избежать того, что граница разделения (край разделения) находится слишком близко к углу блока кодирования, не является константой. Например, значение ρmargin может изменяться в зависимости от ширины и/или высоты блока и/или ϕ (угла границы разделения).[0192] In an embodiment of the invention, the value of ρ margin in expression (9), which is used to avoid that the separation boundary (separation edge) is too close to the corner of the coding block, is not a constant. For example, the value of ρ margin may vary depending on the width and/or height of the box and/or ϕ (angle of the border of the division).
[0193] Значение ρmargin может быть задано как функция угла ϕ разделения GEO, а также ширины и высоты текущего блока кодирования. Например, значение ρmargin может быть получено из следующих выражений:[0193] The value of ρ margin can be specified as a function of the GEO split angle ϕ, as well as the width and height of the current coding block. For example, the value of ρ margin can be obtained from the following expressions:
[0194] Согласно выражениям (17) и (18), смещение р расстояния можно упростить, как показано ниже.[0194] According to expressions (17) and (18), the distance offset p can be simplified as shown below.
Соответственно, вычисление смещения ρ расстояния может выполняться посредством операций сдвига, умножения и сложения в дополнение к операциям, связанным с таблицей соответствия значений косинуса. Расчет был упрощен по сравнению с использованием постоянного значения ρmargin.Accordingly, the calculation of the distance offset ρ can be performed through the operations of shift, multiplication, and addition, in addition to the operations associated with the cosine value lookup table. The calculation has been simplified compared to using a constant value of ρ margin .
[0195] Вычисление индекса веса смешивания «на лету» с помощью одной таблицы соответствия[0195] On-the-fly blend weight index calculation using a single lookup table
[0196] В варианте осуществления изобретения только таблица соответствия для вычисления косинуса используется при вычислении индекса веса смешивания. В результате все вычисления индексов весов могут быть реализованы "на лету" без проверки большой таблицы для хранения масок весов смешивания.[0196] In an embodiment of the invention, only the lookup table for calculating the cosine is used in calculating the mixing weight index. As a result, all weight index calculations can be done on the fly without checking a large table to store blend weight masks.
[0197] На основе приведенного выше выражения (18), маски смешивания GEO, полученные на основе расстояния от позиции отсчета до границы разделения, как показано в выражении (7), можно дополнительно упростить следующим образом.[0197] Based on the above expression (18), the GEO blend masks obtained based on the distance from the reference position to the separation boundary, as shown in expression (7), can be further simplified as follows.
[0198] Если номер n шага расстояния является значением степени числа 2, операции деления в выражении (21) могут быть реализованы с использованием операций сдвига вправо, как показано в выражении (22), со смещением округления перед сдвигом вправо или без него.[0198] If the distance step number n is a power of 2 value, the division operations in expression (21) can be implemented using right shift operations as shown in expression (22), with or without rounding shift before right shift.
[0199] Согласно выражению (22), индекс веса смешивания для каждого отсчета может быть получен с использованием умножителей, сумматоров и одной таблицы соответствия cos[.]. Кроме того, выражение (22) показывает, что только одна таблица cos[.] используется для индекса веса смешивания всех отсчетов в текущей единице CU. Это также указывает на то, что к этому значению cos[.] можно получить доступ один раз, а затем распространить его на все отсчеты в текущей единице CU для расчета индекса веса.[0199] According to expression (22), the mixing weight index for each sample can be obtained using multipliers, adders and one cos[.] lookup table. In addition, expression (22) shows that only one cos[.] table is used for the index of the mixing weight of all samples in the current CU. It also indicates that this cos[.] value can be accessed once and then propagated to all samples in the current CU to calculate the weight index.
[0200] Только целочисленное вычисление[0200] Only integer calculation
[0201] В варианте осуществления изобретения, чтобы избежать операций с плавающей запятой, компоненты для получения индекса веса смешивания могут быть увеличены в масштабе, что приведет к увеличенному значению индекса веса. Увеличенное значение может позже масштабироваться до его нормального диапазона значений.[0201] In an embodiment of the invention, to avoid floating point operations, the components to obtain the blend weight index can be scaled up, resulting in an increased value of the weight index. The increased value can later be scaled back to its normal range of values.
[0202] Например, каждое значение косинуса в таблице соответствия cos[.] может быть реализовано как m-битовое значение с фиксированной точкой, где m может быть положительным значением, например 6 или 3. Кроме того, центр отсчета также принимается в цифровом изображении с дискретными отсчетами для вычисления индекса веса смешивания. Индекс wIdx(x, y) веса можно масштабировать с коэффициентом масштабирования 2m+4, чтобы избежать операции с плавающей запятой и компенсировать ситуацию с дискретными отсчетами. Выражение (21), таким образом, можно переписать как выражение (23). Для сохранения относительно высокой точности может применяться смещение округления.[0202] For example, each cosine value in the lookup table cos[.] can be implemented as an m-bit fixed-point value, where m can be a positive value, such as 6 or 3. In addition, the reference center is also taken in the digital image with discrete readings to calculate the mixing weight index. The weight index wIdx(x, y) can be scaled by a scaling factor of 2 m+4 to avoid floating point operation and compensate for the situation with discrete samples. Expression (21) can thus be rewritten as expression (23). A rounding offset can be applied to maintain relatively high precision.
где cos[ϕ] и реализованы как m-битовая таблица соответствия.where cos[ϕ] and implemented as an m-bit lookup table.
[0203] Если номер n шага расстояния является значением степени числа 2, операции деления в выражении (23) могут быть реализованы с использованием операций сдвига вправо, как показано в выражении (24). Также может применяться смещение округления.[0203] If the distance step number n is a power of 2, the division operations in expression (23) can be implemented using right shift operations as shown in expression (24). A rounding offset can also be applied.
[0204] Углы в четырех квадрантах[0204] Angles in four quadrants
[0205] В варианте осуществления изобретения вычисление индекса веса может быть реализовано с использованием различных выражений в зависимости от квадранта угла ϕ границы разделения. Например, для вычисления границы разделения оба значения cos(ϕ) и могут быть положительными. Соответственно, для индекса угла разделения, соответствующего четырем различным квадрантам, можно использовать четыре различных выражения маски весов смешивания. Выражение для индекса веса смешивания для четырех различных квадрантов приведено ниже.[0205] In an embodiment of the invention, the calculation of the weight index can be implemented using different expressions depending on the quadrant of the angle ϕ of the separation boundary. For example, to calculate the separation boundary, both cos(ϕ) and may be positive. Accordingly, four different blend weight mask expressions can be used for the split angle index corresponding to four different quadrants. The expression for the mixing weight index for four different quadrants is given below.
[0206] Построчное и постолбцовое вычисление индекса веса смешивания[0206] Row and column calculation of the blend weight index
[0207] В варианте осуществления изобретения индекс веса wIdx(x, у) может вычисляться построчно, то есть значение текущей строки wIdx(x, у) получают на основе значения предыдущей строки wIdx(x, у-1). В качестве альтернативы, индекс веса wIdx(x, у) может быть вычислен столбец за столбцом, то есть индексы весов текущего столбца, wIdx(x, у), получают на основе индексов весов предыдущего столбца, wIdx(x-1, у).[0207] In an embodiment of the invention, the weight index wIdx(x, y) can be calculated row by row, i.e. the value of the current row wIdx(x, y) is obtained based on the value of the previous row wIdx(x, y-1). Alternatively, the weight index wIdx(x, y) can be computed column by column, i.e. the current column's weight indices, wIdx(x, y), are derived from the previous column's weight indices, wIdx(x-1, y).
[0208] Для позиции отсчета (х, у) маска смешивания может быть получена с использованием выражений (26)-(28) на основе выражения (23).[0208] For the reference position (x, y), the blend mask can be obtained using expressions (26)-(28) based on expression (23).
[0209] Как показано в выражении (26), индекс веса wIdx(x, y) может быть получен из индекса веса смешивания соседнего левого пикселя предыдущего столбца с фиксированным значением смещения. Фиксированное значение смещения - это значение cos(ϕ), которое представляет собой значение из простой таблицы соответствия с соответствующим индексом угла и коэффициентом масштабирования. Следовательно, для хранения маски требуется только один столбец значений индекса веса смешивания. Другие столбцы индексов весов могут быть определены с использованием значений индексов весов смешивания предыдущего столбца с фиксированным значением смещения.[0209] As shown in expression (26), the weight index wIdx(x, y) can be obtained from the blend weight index of the neighboring left pixel of the previous column with a fixed offset value. The fixed offset value is the cos(ϕ) value, which is a value from a simple lookup table with the appropriate angle index and scaling factor. Therefore, only one column of blend weight index values is required to store the mask. Other columns of weight indexes can be defined using the values of the mixing weight indexes of the previous column with a fixed offset value.
[0210] Для позиции (х, у) отсчета маска смешивания или индекс веса смешивания этого пиксельного отсчета также могут быть получены с использованием выражений (29)-(31) на основе выражения (23).[0210] For the position (x, y) of the sample, the blend mask or blend weight index of this pixel sample can also be obtained using expressions (29)-(31) based on expression (23).
[0211] В выражении (29) индекс wIdx(x, y) веса может быть получен из индекса веса смешивания верхнего соседнего пикселя в приведенной выше строке с фиксированным значением смещения. Фиксированное значение смещения может быть получено из простой таблицы соответствия cos[.] с использованием заданного индекса угла со сдвигом фазы Следовательно, только одна строка значений весов смешивания необходима для хранения маски. Другие строки могут быть реализованы с использованием значений весов смешивания предыдущей строки с фиксированным значением смещения.[0211] In expression (29), the weight index wIdx(x, y) can be obtained from the blend weight index of the top neighboring pixel in the above row with a fixed offset value. Fixed offset value can be obtained from a simple cos[.] lookup table using the given phase-shifted angle index Therefore, only one row of blend weight values is needed to store the mask. Other rows can be implemented using the blend weight values of the previous row with a fixed offset value.
[0212] Независимое получение индексов весов[0212] Independently obtaining weight indices
[0213] В варианте осуществления изобретения индекс веса в позиции (х, у) в блоке кодирования может быть получен из конкретного значения индекса wIdx(0,0) веса (которое может быть определено на основе размера блока, смещения ρ расстояния, угла ϕ разделения), в зависимости от координаты (х, у) и таблицы косинусов. Таким образом, индекс веса каждого отсчета в блоке кодирования может быть получен независимо.[0213] In an embodiment of the invention, the weight index at position (x, y) in the coding block can be obtained from a specific value of the weight index wIdx(0,0) (which can be determined based on the block size, distance offset ρ, separation angle ϕ ), depending on the coordinate (x, y) and the table of cosines. Thus, the weight index of each sample in the coding block can be obtained independently.
[0214] Из выражения (7) можно получить приведенное ниже выражение:[0214] From expression (7), the following expression can be obtained:
гдеwhere
[0215] Соответственно, после определения значения wIdx(0,0) индекс веса каждого отсчета в блоке может рассчитываться параллельно с помощью выражения (32).[0215] Accordingly, after determining the value of wIdx(0,0), the weight index of each sample in the block can be calculated in parallel using expression (32).
[0216] Преобразование индекса веса в вес смешивания без таблицы соответствия[0216] Convert weight index to blend weight without lookup table
[0217] В варианте осуществления изобретения преобразование индекса веса на основе таблицы соответствия в окончательный вес смешивания заменяется преобразованием на основе вычислений. Поскольку операции проверки таблицы соответствия были удалены, окончательный вес каждого отсчета может быть получен параллельно.[0217] In an embodiment of the invention, the transformation of the weight index based on the lookup table to the final blend weight is replaced by a calculation-based transformation. Since the lookup table check operations have been removed, the final weight of each sample can be obtained in parallel.
[0218] В некоторых примерах, таких как процесс взвешенного отсчета GEO, описанный в разделе VI, значение веса отсчета устанавливается в соответствии с таблицей соответствия (такой как таблица соответствия GeoFilter[], таблица 3). Чтобы снять ограничение, связанное с таблицей соответствия, и сделать возможным параллельное получение взвешивания, значение веса отсчета может быть получено "на лету" на основе линейной функции индекса веса. Линейная функция может преобразовывать индекс веса в вес смешивания без таблицы соответствия.[0218] In some examples, such as the GEO weighted scoring process described in Section VI, the value of the weight of the sample is set according to a lookup table (such as the GeoFilter[] lookup table, Table 3). In order to remove the restriction associated with the lookup table and enable parallel weight acquisition, the sample weight value can be obtained on the fly based on a linear function of the weight index. A linear function can convert a weight index to a mix weight without a lookup table.
[0219] В качестве примера приведенное ниже выражение (34) можно использовать для преобразования индекса веса в вес смешивания.[0219] As an example, expression (34) below can be used to convert a weight index to a blend weight.
[0220] Для вычисления на основе операции с плавающей точкой (например, выражения (21) и (22)) масштабное увеличение не используется для вычисления wIdx(x, у), a idx2wShiftBit в выражении (32) может быть «0». Вес отсчета может быть получен следующим образом:[0220] For calculation based on floating point operation (for example, expressions (21) and (22)) scaling is not used to calculate wIdx(x, y), and idx2wShiftBit in expression (32) may be "0". The sample weight can be obtained as follows:
[0221] Для вычисления на основе операции с фиксированной точкой (например, выражения (23) и (24)) idx2wShiftBit в выражении (34) можно описать, как в выражении (36):[0221] For calculation based on a fixed point operation (for example, expressions (23) and (24)) idx2wShiftBit in expression (34) can be described as in expression (36):
[0222] Вес отсчета может быть получен "на лету" с помощью операции сдвига вправо, как показано в выражении (37):[0222] The sample weight can be obtained on the fly using a right shift operation, as shown in expression (37):
[0223] Типичное значение m может быть числом битов точности таблицы косинуса. Например, в общем случае m может быть 6 или 3.[0223] A typical value of m may be the number of bits of cosine table precision. For example, in general, m can be 6 or 3.
[0224] Вычисление индекса движения без таблицы соответствия[0224] Calculation of motion index without lookup table
[0225] В варианте осуществления изобретения для определения индекса движения может использоваться способ вычисления без таблицы соответствия. Например, индекс движения единицы хранения движения в текущем блоке кодирования может быть определен, например, на основе координаты (xsb, ysb) единицы хранения движения и смещения ρ расстояния разделения (представленного n и i), угла ϕ разделения и размера блока текущего блока кодирования. В результате индексы движения motionIdx(xsb, ysb) в текущем блоке кодирования могут быть получены одновременно и независимо (параллельно).[0225] In an embodiment of the invention, a calculation method without a lookup table may be used to determine the motion index. For example, the motion index of the motion storage unit in the current coding block may be determined, for example, based on the coordinate (x sb , y sb ) of the motion storage unit and the separation distance offset ρ (represented by n and i), the separation angle ϕ, and the block size of the current block coding. As a result, motion indices motionIdx(x sb , y sb ) in the current coding block can be obtained simultaneously and independently (in parallel).
[0226] В некоторых примерах, без использования ТРМ-подобного процесса хранения движения, процесс сохранения вектора движения может быть получен "на лету" с использованием расстояния между центральной позицией единицы хранения движения (подблока) и границей разделения. Единица хранения движения может иметь размер 4×4 отсчетов или другие размеры подблока (например, 8×8 отсчетов). Центральная позиция подблока W×H может быть определена как целочисленная позиция в (W/2, Н/2) или (W/2-1, Н/2-1) или их соседние позиции. Альтернативно, позиция ((W-1)/2,0, (Н-1)/2,0) подблока может быть определена как центральная позиция. Вышеупомянутое значение расстояния сравнивается с фиксированным порогом, чтобы определить, хранится ли информация о движении с одним или двойным предсказанием для единицы хранения движения. Знак расстояния указывает на то, какая информация движения с одним предсказанием может быть сохранена в случае хранения с одним предсказанием. Таким образом, можно устранить зависимость маски смешивания и хранения движения.[0226] In some examples, without using a TPM-like motion storage process, the motion vector storage process can be obtained on the fly using the distance between the center position of the motion storage unit (subblock) and the separation boundary. A motion storage unit may be 4×4 samples or other sub-block sizes (eg, 8×8 samples). The W×H subblock center position may be defined as an integer position in (W/2, H/2) or (W/2-1, H/2-1) or their adjacent positions. Alternatively, the position ((W-1)/2.0, (H-1)/2.0) of the subblock may be defined as the center position. The above distance value is compared with a fixed threshold to determine whether single or double prediction motion information is stored for a motion storage unit. The distance sign indicates which single prediction motion information can be stored in the case of single prediction storage. In this way, the dependency of the blend mask and motion storage can be eliminated.
[0227] В примере единица хранения движения (подблок) имеет размер 4×4 отсчетов. Переменные xsb и ysb определяют позицию подблока 4×4 в текущем блоке кодирования w×h в горизонтальном и вертикальном направлениях. Переменные xsb и ysb удовлетворяют выражениям 0≤xsb<(w>>2) и 0≤ysb<(h>>2). Используя концепцию выражения (23) и подробный вывод для дискретного отсчета с масштабированием с помощью выражения (21), расстояние между центральной позицией единицы хранения движения 4×4 и границей разделения может быть получено с помощью выражения (38).[0227] In the example, a motion storage unit (subblock) has a size of 4×4 samples. The variables x sb and y sb define the position of the 4×4 sub-block in the current w×h coding block in the horizontal and vertical directions. The variables x sb and y sb satisfy the
[0228] Если номер n шага расстояния является степенью числа 2, операции деления в выражении (38) могут быть реализованы с помощью операций сдвига вправо, как показано в выражении (39). Для сохранения относительно высокой точности также может применяться смещение округления.[0228] If the distance step number n is a power of 2, the division operations in expression (38) can be implemented with right shift operations as shown in expression (39). Rounding bias can also be applied to maintain relatively high precision.
[0229] Индекс движения, полученный из индекса веса смешивания[0229] Motion index obtained from mixing weight index
[0230] В варианте осуществления изобретения индекс движения, обозначенный motionIdx(xsb, ysb), единицы хранения движения (подблока) в блоке кодирования получают непосредственно из индекса веса смешивания позиции отсчета в подблоке. Таким образом, можно уменьшить вычислительные затраты для определения индекса движения.[0230] In an embodiment of the invention, the motion index, denoted by motionIdx(x sb , y sb ), of the motion storage unit (sub-block) in the coding block is obtained directly from the index of the blend weight of the sample position in the sub-block. Thus, it is possible to reduce the computational cost for determining the motion index.
[0231] Как описано в разделе V, индекс движения может быть получен на основе расстояния между центральной позицией единицы хранения движения и границей разделения. Индекс веса смешивания также может быть получен на основе расстояния между отсчетом и границей разделения. Следовательно, индекс движения может быть аппроксимирован на основе индекса веса смешивания отсчета, который находится в соответствующем подблоке и может не находиться в центре подблока.[0231] As described in section V, a motion index may be obtained based on a distance between the center position of the motion storage unit and the separation boundary. The mixing weight index can also be derived from the distance between the reference and the separation boundary. Therefore, the motion index can be approximated based on the blend weight index of the sample that is in the corresponding sub-block and may not be in the center of the sub-block.
[0232] Например, аппроксимация может быть реализована согласно выражению (40).[0232] For example, the approximation may be implemented according to expression (40).
[0233] В выражении (40) предполагается, что единица хранения движения в поле движения блока кодирования имеет размер 4×4 отсчетов. Координата позиции отсчета в единице хранения движения представлена как (i, j). Например, для единицы хранения движения, имеющего координату (1, 0) в поле движения, и позиции отсчета, имеющего координату (2, 2) в единице хранения движения, назначенной для вычисления индекса движения, индекс веса в позиции отсчета ((1<<2)+2, (0<<2)+2), то есть (6, 2), в блоке кодирования может использоваться как индекс движения единицы хранения движения. Процесс расчета можно представить следующим образом.[0233] Expression (40) assumes that the motion storage unit in the motion field of the coding block has a size of 4×4 samples. The reference position coordinate in the motion storage unit is represented as (i, j). For example, for a motion storage unit having coordinate (1, 0) in the motion field and a reference position having coordinate (2, 2) in the motion storage unit designated for motion index calculation, the weight index at the reference position ((1<< 2)+2, (0<<2)+2), i.e. (6, 2), in the coding block can be used as the motion index of the motion storage unit. The calculation process can be represented as follows.
[0234] В различных примерах (i, j) могут быть равны (1, 1), (1, 2), (2, 1) и (2, 2), что соответствует позициям отсчета, соседним с центральной позицией (1,5, 1,5) соответствующего подблока.[0234] In various examples, (i, j) may be equal to (1, 1), (1, 2), (2, 1) and (2, 2), which correspond to the reference positions adjacent to the center position (1, 5, 1.5) of the corresponding subblock.
[0235] В более общем смысле, для единицы хранения движения, имеющей размер 2n×2n отсчетов, аппроксимация может быть реализована согласно выражению (42).[0235] More generally, for a motion storage unit having a size of 2n × 2n samples, an approximation can be implemented according to expression (42).
[0236] В выражениях (40)-(42) значение индекса веса смешивания в позиции (х, у) отсчета в блоке кодирования, обозначенное wIdx(x, у), может быть получено различными способами в различных примерах. После того как были вычислены значения индексов весов смешивания во время процесса взвешенного смешивания, индексы весов смешивания в обозначенных позициях в каждой единице хранения векторов движения могут непосредственно использоваться в качестве значений индексов движения для определения типов векторов движения, которые должны быть сохранены для каждой единицы хранения движения. По сравнению с вычислением индекса движения на основе расстояния от центральной позиции отсчета в единице хранения движения до края разделения, вычислительная сложность может быть уменьшена.[0236] In expressions (40)-(42), the value of the mixing weight index at the sample position (x, y) in the coding block, denoted by wIdx(x, y), can be obtained in various ways in various examples. Once the values of the blend weight indices have been calculated during the weighted blend process, the blend weight indices at designated positions in each motion vector storage unit can be directly used as motion index values to determine the types of motion vectors to be stored for each motion vector storage unit. . Compared with calculating the motion index based on the distance from the center reference position in the motion storage unit to the separation edge, the computational complexity can be reduced.
[0237] VII. Примеры способов режима геометрического разделения[0237] VII. Examples of Geometric Separation Mode Methods
[0238] На фиг. 12 показана блок-схема, описывающая пример способа (1200) согласно вариантам осуществления изобретения. В различных вариантах осуществления изобретения способ (1200) выполняется схемой обработки, такой как схема обработки в оконечных устройствах (210), (220), (230) и (240), схема обработки, которая выполняет функции видеодекодера (310), схема обработки, которая выполняет функции видеодекодера (410), и т.п. В некоторых вариантах осуществления изобретения способ (1200) реализован в программных инструкциях, так что при исполнении схемой обработки программных инструкций схема обработки выполняет способ (1200). Способ (1200) может начинаться на этапе (S1201) и переходить к этапу (S1210).[0238] FIG. 12 is a flow chart describing an example of a method (1200) according to embodiments of the invention. In various embodiments of the invention, the method (1200) is performed by a processing circuit, such as a processing circuit in terminal devices (210), (220), (230) and (240), a processing circuit that performs the functions of a video decoder (310), a processing circuit, which functions as a video decoder (410), and the like. In some embodiments, method (1200) is implemented in program instructions such that when the program instructions are executed by the processing circuit, the processing circuit executes method (1200). The method (1200) may start at step (S1201) and proceed to step (S1210).
[0239] На этапе (S1210) из битового потока кодированных видеоданных может приниматься синтаксический элемент. Синтаксический элемент может быть связан с текущим блоком кодирования, который разделен на первую часть и вторую часть вдоль края разделения для предсказания в режиме геометрического разделения (GPM). Например, в битовом потоке могут передаваться следующие синтаксические элементы: флаг включения GPM уровня CU, указывающий на то, что GPM включен для текущего блока кодирования; индекс GPM, указывающий режим разделения (соответствующий индексу угла разделения и индексу смещения расстояния в таблице), применяемый к текущему блоку кодирования, и два индекса слияния GPM, соответствующие первой части и второй части текущего блока кодирования.[0239] In step (S1210), a syntax element may be received from the encoded video bitstream. The syntax element may be associated with the current coding block, which is divided into a first part and a second part along a split edge for Geometric Partitioning Mode (GPM) prediction. For example, the following syntax elements may be carried in the bitstream: a CU-level GPM enable flag indicating that GPM is enabled for the current coding unit; a GPM index indicating the split mode (corresponding to the split angle index and the distance offset index in the table) applied to the current coding block, and two GPM merge indexes corresponding to the first part and the second part of the current coding block.
[0240] На этапе (S1220) может быть определен индекс веса в позиции отсчета текущего блока кодирования. Индекс веса, например, может соответствовать расстоянию от позиции отсчета до края разделения. Индекс веса впоследствии может использоваться для получения веса смешивания для смешивания двух сигналов предсказания, соответствующих первой части и второй части текущего блока кодирования. В одном примере индекс веса может быть преобразован в вес смешивания с использованием линейной функции индекса веса.[0240] In step (S1220), a weight index at the reference position of the current coding block may be determined. The weight index, for example, may correspond to the distance from the reference position to the edge of the division. The weight index may subsequently be used to obtain a mixing weight for mixing the two prediction signals corresponding to the first part and the second part of the current coding block. In one example, a weight index may be converted to a blend weight using a linear weight index function.
[0241] На этапе (S1230) тип сохраненного вектора движения для первой единицы хранения движения в поле движения текущего блока кодирования может быть определен на основе индекса движения первой единицы хранения движения. Индекс веса в позиции отсчета текущего блока кодирования, определенный на этапе (S1220), используют в качестве индекса движения первой единицы хранения движения. Например, индекс веса, определенный на этапе (S1220), может использоваться для аппроксимации индекса движения в центральной позиции первой единицы хранения движения для определения типа сохраненного вектора движения. Таким образом, могут быть уменьшены вычислительные затраты на вычисление индекса движения в центральной позиции первой единицы хранения движения. Производительность декодирования с помощью GPM может быть улучшена.[0241] In step (S1230), the stored motion vector type for the first motion storage unit in the motion field of the current coding block may be determined based on the motion index of the first motion storage unit. The weight index at the reference position of the current coding block determined in step (S1220) is used as the motion index of the first motion storage unit. For example, the weight index determined in step (S1220) may be used to approximate the motion index at the center position of the first motion storage unit to determine the stored motion vector type. Thus, the computational cost of calculating the motion index at the center position of the first motion storage unit can be reduced. The performance of decoding with GPM can be improved.
[0242] На этапе (S1240) поле движения текущего блока кодирования может быть сохранено на основе типа сохраненного вектора движения, определенного для первой единицы хранения движения в поле движения текущего блока кодирования. Например, два вектора движения, соответствующие двум индексам слияния GPM, могут быть обозначены MV1 и MV2. В зависимости от типа сохраненного вектора движения, MV1 из первой части геометрического разделения, MV2 из второй части геометрического разделения и комбинированный MV из MV1 и MV2 сохраняют в поле движения для первой единицы хранения движения. Способ (1200) может перейти к этапу (S1299) и завершиться на этапе (S1299).[0242] In step (S1240), the motion field of the current coding block may be stored based on the stored motion vector type determined for the first motion storage unit in the motion field of the current coding block. For example, two motion vectors corresponding to two GPM merge indices may be denoted MV1 and MV2. Depending on the type of motion vector stored, MV1 from the first geometric partition part, MV2 from the second geometric partition part, and the combined MV from MV1 and MV2 are stored in the motion field for the first motion storage unit. Method (1200) may proceed to step (S1299) and end at step (S1299).
[0243] VIII. Компьютерная система[0243] VIII. computer system
[0244] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 13 показана компьютерная система (1300), пригодная для осуществления некоторых вариантов осуществления изобретения.[0244] The above methods may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, in FIG. 13 shows a computer system (1300) suitable for practicing some embodiments of the invention.
[0245] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.[0245] Computer software may be coded using any suitable machine code or computer language that may be assembled, compiled, linked, or similarly processed to produce code containing instructions that can be executed directly or through interpretation, execution of microcode, etc. etc., one or more computer central processing units (CPU, central processing units), graphic processors (GPU, Graphics Processing Units), etc.
[0246] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.[0246] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, and the like.
[0247] Компоненты компьютерной системы (1300), показанные на фиг. 13, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы (1300).[0247] The computer system components (1300) shown in FIG. 13 are illustrative in nature and are not intended to impose any limitation on the scope of application or functionality of computer software implementing embodiments of the present invention. The component configuration should also not be interpreted as having any dependency or requirement in connection with any component or combination of components shown in the exemplary computer system (1300).
[0248] Компьютерная система (1300) может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).[0248] The computer system (1300) may include some human-machine interface input devices. Such an input device may be responsible for input by one or more users through, for example, tactile input (e.g., keystrokes, waving, glove movements), audio input (e.g., voice, claps), visual input (e.g., gestures), olfactory input (not shown). Interface devices may also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, external sound), images (e.g. scanned images, photographic images received from a still camera), video (eg 2D video, 3D video including stereoscopic video).
[0249] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (1301), мышь (1302), сенсорная панель (1303), сенсорный экран (1310), информационная перчатка (не показана), джойстик (1305), микрофон (1306), сканер (1307) и камера (1308).[0249] The input human-machine interface of the device may include one or more of the following (shown one at a time): keyboard (1301), mouse (1302), touch pad (1303), touch screen (1310), information glove (not shown) , joystick (1305), microphone (1306), scanner (1307) and camera (1308).
[0250] Компьютерная система (1300) также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1310), информационной перчатки (не показана) или джойстика (1305), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (1309), наушники (не показаны)), устройства визуального вывода (например, экраны (1310), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны). Эти устройства визуального вывода (такие как экраны (1310)) могут быть подключены к системной шине (1348) через графический адаптер (1350).[0250] The computer system (1300) may also include some human interface output devices. Such output devices may stimulate the senses of one or more users through, for example, tactile output, sound, light, and smell/taste. Such output devices may include tactile output devices (e.g., tactile feedback via touch screen (1310), data glove (not shown) or joystick (1305), as well as tactile feedback devices that do not serve as input devices), audio output devices (for example: speakers (1309), headphones (not shown)), visual output devices (for example, screens (1310), including CRT screens, LCD screens, plasma screens, OLED screens, each with touch screen input capabilities or without, each with or without haptic feedback capabilities, some capable of 2D visual output or more than 3D output via e.g. stereographic output, virtual reality goggles (not shown), holographic displays, smoke tanks (not shown). ) and printers (not shown) These visual output devices (such as screens (1310)) can be connected to the system bus (1348) via adapter (1350).
[0251] Компьютерная система (1300) также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD/DVD ROM/RW (1320) с носителями (1321) CD/DVD и т.п., карты (1322) флэш-памяти, сменный жесткий диск или твердотельный диск (1323), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.[0251] The computer system (1300) may also include human accessible storage devices and associated media, such as optical media including CD/DVD ROM/RW (1320) with CD/DVD media (1321) and the like, flash memory cards (1322), removable hard drive or solid state drive (1323), conventional magnetic media such as tape and magnetic disk (not shown), dedicated ROM/ASIC/PLD based devices such as security dongles (not shown). shown), etc.
[0252] Специалисты в данной области техники также должны понимать, что термин «машиночитаемые носители», используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.[0252] Those skilled in the art should also understand that the term "computer-readable media" as used in connection with the present invention does not encompass transmission media, carrier waves, or other time signals.
[0253] Компьютерная система (1300) также может включать сетевой интерфейс (1354) к одной или более сетям (1355) связи. Одна или более сетей (1355) связи могут быть, например, беспроводными, проводными, оптическими. Одна или более сетей (1355) связи могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры одной или более сетей (1355) связи включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1349) (например, USB-порты компьютерной системы (1300)); другие обычно встраиваются в ядро компьютерной системы (1300) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1300) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.[0253] The computer system (1300) may also include a network interface (1354) to one or more communication networks (1355). One or more communication networks (1355) may be, for example, wireless, wired, optical. One or more communication networks (1355) may also be local, wide area, metropolitan, transport and industrial, real time, delay tolerant, etc. Examples of one or more communication networks (1355) include local area networks, such as Ethernet, wireless LANs, cellular networks, including GSM, 3G, 4G, 5G, LTE, etc., digital wide area wired or wireless television networks, including cable TV, satellite TV and terrestrial TV, transport and industrial networks, including CANBus, etc. Some networks typically require external network interface adapters that are connected to some general purpose data ports or peripheral buses (1349) (for example, computer system USB ports (1300)); others are typically built into the core of the computer system (1300) by connecting to a system bus as described below (eg, an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1300) can communicate with other entities. Such communications may be unidirectional with receive-only capability (eg broadcast), unidirectional with transmit-only capability (eg CANbus to some CANbus devices), or bidirectional, eg to other computer systems using a local area network or a wide area digital network. Several protocols and protocol stacks may be used on each of these networks and the network interfaces described above.
[0254] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1340) компьютерной системы (1300).[0254] The aforementioned human-machine interface devices, human-accessible storage devices, and network interfaces can be connected to the core (1340) of the computer system (1300).
[0255] Ядро (1340) может включать один или более центральных процессоров (CPU) (1341), графические процессоры (GPU) (1342), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (1343), аппаратные ускорители (1344) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1345), оперативной памятью (1346), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п. (1347), могут соединяться посредством системной шины (1348). В некоторых компьютерных системах системная шина (1348) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1348) ядра, либо через периферийную шину (1349). Архитектуры периферийной шины включают PCI, USB и т.п.[0255] The core (1340) may include one or more central processing units (CPU) (1341), graphics processing units (GPU) (1342), specialized programmable processing modules in the form of field programmable gate arrays (FPGA, Field Programmable Gate Arrays) ( 1343), hardware accelerators (1344) for some tasks, etc. These devices, together with read-only memory (ROM) (1345), random access memory (1346), high-capacity internal storage such as user-inaccessible internal hard drives, SSD, etc. (1347) can be connected via the system bus (1348). In some computer systems, the system bus (1348) may be available in the form of one or more physical connectors to allow for expansions with additional CPUs, GPUs, or the like. Peripherals can be connected either directly to the system bus (1348) of the kernel, or via a peripheral bus (1349). Peripheral bus architectures include PCI, USB, and the like.
[0256] Устройства CPU (1341), GPU (1342), FPGA (1343) и ускорители (1344) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (1345) или RAM (1346). Временные данные также могут храниться в памяти RAM (1346), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1347) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (1341), GPU (1342), хранилищем (1347) данных большой емкости, памятью ROM (1345), RAM (1346) и т.п.[0256] The CPU (1341), GPU (1342), FPGA (1343), and accelerators (1344) devices may execute some instructions that together may constitute the aforementioned computer code. This computer code may be stored in ROM (1345) or RAM (1346). Temporary data may also be stored in the RAM memory (1346), while permanent data may be stored, for example, in an internal mass storage (1347). Fast storage and retrieval from any storage device can be achieved through the use of cache memory, which can be closely associated with one or more processors CPU (1341), GPU (1342), mass storage (1347), ROM memory (1345) , RAM (1346), etc.
[0257] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.[0257] Computer-readable media may store computer code for performing various computer-executable operations. The media and computer code may be specially created for the purposes of the present invention or may be well known and available to those skilled in the art of computer software.
[0258] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру (1300), и, в частности, ядро (1340) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (1340), например, внутренним хранилищем (1347) данных большой емкости или ROM (1345). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1340). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1340) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в памяти RAM (1346), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1344)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.[0258] By way of example, and not limitation of the invention, a computer system having an architecture (1300), and in particular a core (1340), can provide functionality by being executed by the processor(s) (including(and) CPU, GPU , FPGAs, accelerators, etc.) software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with the user-accessible mass storage described above, as well as some persistent kernel storage (1340), such as internal mass storage (1347) or ROM (1345). Software implementing various embodiments of the present invention may be stored on such devices and executed by the kernel (1340). The computer-readable medium may include one or more storage devices or microcircuits, in accordance with specific needs. The software may direct the core (1340), and in particular its processors (including CPUs, GPUs, FPGAs, and the like), to execute specific processes or specific portions of the specific processes described herein, including setting data structures stored in RAM memory (1346 ), and modification of such data structures according to the processes specified by the software. Additionally or alternatively, the computer system may provide functionality through logic hardwired or otherwise embodied in circuitry (e.g., an accelerator (1344)), which may operate in place of, or in conjunction with software, to perform specific processes or specific portions of the specific processes described herein. processes. A reference to software may cover logic, and vice versa when appropriate. Reference to computer-readable media may cover a circuit (eg, an integrated circuit (IC, integrated circuit)) where software is stored for execution, a circuit embodying logic for execution, or both circuits, when appropriate. The present invention encompasses any suitable combination of hardware and software.
[0259] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения.[0259] Although some embodiments of the invention have been described here, changes, permutations, and various equivalent substitutions are possible within the scope of the invention.
Приложение А: СокращенияAppendix A: Abbreviations
ASIC: специализированная интегральная схемаASIC: Application Specific Integrated Circuit
BMS: набор эталоновBMS: a set of standards
CANBus: шина сети контроллеровCANBus: controller network bus
CD: компакт-дискCD: CD
CPU: центральный процессорCPU: central processing unit
CRT: электронно-лучевая трубкаCRT: cathode ray tube
СТВ: блок дерева кодированияCTB: coding tree block
CTU: единица дерева кодированияCTU: coding tree unit
CU: единица кодированияCU: coding unit
DVD: цифровой видеодискDVD: Digital Video Disc
FPGA: программируемая вентильная матрицаFPGA: Field Programmable Gate Array
GEO: режим геометрического слиянияGEO: geometric fusion mode
GOP: группа изображенийGOP: group of images
GPU: графический процессорGPU: GPU
GSM: глобальная система мобильной связиGSM: Global System for Mobile Communications
HDR: расширенный динамический диапазонHDR: High Dynamic Range
HEVC: высокоэффективное кодирование видеоданныхHEVC: High Efficiency Video Coding
HRD: гипотетический эталонный декодерHRD: Hypothetical Reference Decoder
IC: интегральная схемаIC: integrated circuit
JEM: совместная модель исследованияJEM: Collaborative Exploration Model
JVET: объединенная группа исследования видеоJVET: Joint Video Research Group
LAN: локальная сетьLAN: local area network
LCD: жидкокристаллический дисплейLCD: liquid crystal display
LTE: система долгосрочного развитияLTE: a system for long-term development
MV: вектор движенияMV: motion vector
OLED: органический светодиодOLED: organic light emitting diode
РВ: блок предсказанияRW: prediction block
PCI: соединение периферийных компонентовPCI: Peripheral Component Connection
PLD: программируемое логическое устройствоPLD: Programmable Logic Device
PU: единица предсказанияPU: prediction unit
RAM: оперативная памятьRAM: random access memory
ROM: постоянная памятьROM: Read Only Memory
SDR: стандартный динамический диапазонSDR: standard dynamic range
SEI: дополнительная информация улучшенияSEI: Additional Enhancement Information
SNR: отношение «сигнал-шум»SNR: signal to noise ratio
SSD: твердотельный накопительSSD: solid state drive
ТРМ: режим разделения на треугольникиTPM: Triangle Mode
TU: единица преобразованияTU: conversion unit
USB: универсальная последовательная шинаUSB: Universal Serial Bus
VUI: информация о возможности использовании видеоVUI: Video Usability Information
VVC: универсальное кодирование видеоданных.VVC: Universal Video Data Coding.
Claims (35)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/938,894 | 2019-11-21 | ||
US17/091,253 | 2020-11-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2773732C1 true RU2773732C1 (en) | 2022-06-08 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2528132C2 (en) * | 2010-04-13 | 2014-09-10 | Самсунг Электроникс Ко., Лтд. | Method of encoding video and apparatus for encoding video using prediction units based on encoding units defined according to tree structure, and method of decoding video and apparatus for decoding video using prediction units based on encoding units defined according to tree structure |
RU2687294C1 (en) * | 2011-06-28 | 2019-05-13 | Самсунг Электроникс Ко., Лтд. | Method and device for encoding and decoding images using internal prediction |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2528132C2 (en) * | 2010-04-13 | 2014-09-10 | Самсунг Электроникс Ко., Лтд. | Method of encoding video and apparatus for encoding video using prediction units based on encoding units defined according to tree structure, and method of decoding video and apparatus for decoding video using prediction units based on encoding units defined according to tree structure |
RU2687294C1 (en) * | 2011-06-28 | 2019-05-13 | Самсунг Электроникс Ко., Лтд. | Method and device for encoding and decoding images using internal prediction |
Non-Patent Citations (2)
Title |
---|
KEVIN REUZE et al., CE4-related: Combination of JVET-P0264 and JVET-P0304 on GEO simplification, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC 29/WG11, JVET-P0746, 16th Meeting: Geneva, 1-11 October 2019. * |
SEMIH ESENLIK et al., Non-CE4: Geometrical partitioning for inter blocks, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, JVET- O0489, 15th Meeting: Gothenburg, 3-12 July 2019. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102458843B1 (en) | Merge List Construction in Triangular Prediction | |
KR102635957B1 (en) | Method and apparatus for video coding | |
JP7372425B2 (en) | Geometric segmentation mode in video coding | |
JP7391989B2 (en) | Video coding method and device | |
KR20200121904A (en) | Method and apparatus for video decoding | |
KR20200128583A (en) | Method and apparatus for video coding | |
KR20200139216A (en) | Method and apparatus for video coding | |
JP2022510354A (en) | Methods and equipment for the availability of adjacent blocks in video coding | |
KR20200124749A (en) | Method and apparatus for video coding | |
KR20230091171A (en) | Improvements in geometric partitioning modes with intra and inter prediction | |
KR20230085184A (en) | Correction for convergence of intra predictions | |
KR20230058479A (en) | Geometric partitioning mode using intra-block copies | |
JP2023527671A (en) | Geometry Split Mode and Merge Mode with Motion Vector Difference Signaling | |
RU2773732C1 (en) | Geometric division mode in video coding | |
RU2801587C1 (en) | Method and device for video encoding | |
RU2781275C1 (en) | Building a merge list in a triangular prediction | |
RU2784813C1 (en) | Method and apparatus for video encoding | |
RU2777394C1 (en) | Method and device for video encoding | |
RU2779931C1 (en) | Method and apparatus for transmitting information on the size of a predictor candidate list | |
RU2777392C1 (en) | Method and apparatus for encoding video data | |
RU2777377C1 (en) | Unified block vector prediction to compensate for blocks inside the image | |
RU2801586C1 (en) | Method and device for signalling flag of pass mode | |
RU2779825C1 (en) | Method and device for interaction between the internal prediction mode and the block differential pulse-code modulation mode | |
RU2793708C1 (en) | Method and device for transmitting predictor candidate list size for intra-frame block compensation | |
US20230079960A1 (en) | On propagating intra prediction mode information of ibc block by using block vector |