RU2821337C2 - Encoder, decoder and corresponding methods harmonizing matrix-based intra prediction and secondary transformation kernel selection - Google Patents
Encoder, decoder and corresponding methods harmonizing matrix-based intra prediction and secondary transformation kernel selection Download PDFInfo
- Publication number
- RU2821337C2 RU2821337C2 RU2021130025A RU2021130025A RU2821337C2 RU 2821337 C2 RU2821337 C2 RU 2821337C2 RU 2021130025 A RU2021130025 A RU 2021130025A RU 2021130025 A RU2021130025 A RU 2021130025A RU 2821337 C2 RU2821337 C2 RU 2821337C2
- Authority
- RU
- Russia
- Prior art keywords
- transform
- kernels
- intra prediction
- current block
- intrapredmode
- Prior art date
Links
- 230000009466 transformation Effects 0.000 title claims abstract description 152
- 238000000034 method Methods 0.000 title claims description 126
- 239000011159 matrix material Substances 0.000 title claims description 57
- 238000012545 processing Methods 0.000 claims description 61
- 238000006243 chemical reaction Methods 0.000 claims description 32
- 238000000844 transformation Methods 0.000 claims description 27
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 18
- 241000023320 Luma <angiosperm> Species 0.000 claims description 16
- 230000002829 reductive effect Effects 0.000 claims description 15
- 238000010801 machine learning Methods 0.000 claims description 5
- 238000012549 training Methods 0.000 claims description 5
- 230000001131 transforming effect Effects 0.000 claims description 5
- 239000000126 substance Substances 0.000 abstract 1
- 238000013139 quantization Methods 0.000 description 79
- 239000013598 vector Substances 0.000 description 38
- 230000006854 communication Effects 0.000 description 32
- 238000004891 communication Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 20
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 239000000872 buffer Substances 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 17
- 238000000638 solvent extraction Methods 0.000 description 13
- 238000005192 partition Methods 0.000 description 11
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 10
- 238000003491 array Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 230000000295 complement effect Effects 0.000 description 8
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 238000001914 filtration Methods 0.000 description 8
- 230000002441 reversible effect Effects 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- FZEIVUHEODGHML-UHFFFAOYSA-N 2-phenyl-3,6-dimethylmorpholine Chemical compound O1C(C)CNC(C)C1C1=CC=CC=C1 FZEIVUHEODGHML-UHFFFAOYSA-N 0.000 description 1
- QEDQZYNGDXULGO-UHFFFAOYSA-N 3-methyl-2-(3-methylphenyl)morpholine Chemical compound CC1NCCOC1C1=CC=CC(C)=C1 QEDQZYNGDXULGO-UHFFFAOYSA-N 0.000 description 1
- 101150114515 CTBS gene Proteins 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Abstract
Description
Перекрестная ссылка на связанные заявкиCross reference to related applications
Данная патентная заявка испрашивает приоритет по предварительной патентной заявке США № US 62/835487, поданной 17 апреля 2019 г. Раскрытие вышеупомянутой патентной заявки включается в данный документ в полном объеме путем ссылки. This patent application claims priority to U.S. Provisional Patent Application No. US 62/835487, filed April 17, 2019. The disclosure of the above patent application is incorporated herein by reference in its entirety.
Область техники, к которой относится изобретениеField of technology to which the invention relates
Варианты осуществления настоящей заявки (раскрытие) в целом относятся к области обработки изображений и, в частности, к внутреннему предсказанию. Embodiments of the present application (disclosure) generally relate to the field of image processing and, in particular, to intra prediction.
Уровень техникиState of the art
Видеокодирование (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray дисках, системах сбора и редактирования видеоконтента, а также и видеокамерах приложений безопасности. Video encoding (video encoding and decoding) is used in a wide range of digital video applications, such as digital broadcast television, video transmission over the Internet and mobile networks, real-time conversational applications such as video chat, video conferencing, DVD and Blu-ray discs, systems for collecting and editing video content, as well as video cameras for security applications.
Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные способы сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них. The amount of video data required to present even a relatively short video can be significant, which can lead to difficulties when the data must be streamed or otherwise transmitted over a communications network with limited bandwidth. Thus, video data is typically compressed before being transmitted over modern telecommunications networks. Video size can also be an issue when the video is stored on a storage device, as memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent digital video images. The compressed data is then received by the recipient's video decompressor, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques are desired that improve compression rates with little or no loss in image quality.
Сущность изобретенияThe essence of the invention
Настоящее раскрытие пытается смягчить или решить вышеупомянутую проблему. The present disclosure attempts to mitigate or solve the above problem.
Варианты осуществления настоящей заявки обеспечивают устройства и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения. Embodiments of the present application provide devices and methods for encoding and decoding according to independent claims.
Настоящее раскрытие раскрывает способ кодирования, реализуемый устройством декодирования или устройством кодирования, содержащий: определение режима внутреннего предсказания текущего блока; и определение выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. The present disclosure discloses an encoding method implemented by a decoding device or an encoding device, comprising: determining an intra prediction mode of a current block; and determining a selection of a secondary transform of the current block based on the intra prediction mode determined for the current block.
Таким образом, способ согласно настоящему раскрытию определяет режим внутреннего предсказания текущего блока и определяет, следует ли и как выполнять вторичное преобразование текущего блока, на основе определенного режима внутреннего предсказания. That is, the method according to the present disclosure determines the intra prediction mode of the current block and determines whether and how to perform secondary transformation of the current block based on the determined intra prediction mode.
В способе, как описано выше, определение выбора ядра вторичного преобразования для вторичного преобразования текущего блока может быть основано на индексе режима внутреннего предсказания текущего блока. In the method as described above, determining the selection of a secondary transform kernel for secondary transforming the current block may be based on the intra prediction mode index of the current block.
В способе, описанном выше, в случае, если текущий блок не предсказывается с использованием режима MIP, внутреннего предсказания на основе матрицы, ядро вторичного преобразования может быть выбрано для вторичного преобразования текущего блока. In the method described above, in case the current block is not predicted using the MIP mode, matrix-based intra prediction, a secondary transform kernel may be selected to secondary transform the current block.
Таким образом, в случае, если блок с внутренним предсказанием предсказывается с использованием режима MIP, например, значение флага MIP может использоваться, чтобы указать, предсказывается ли блок с использованием режима MIP или нет, вторичное преобразование отключено для этого блока с внутренним предсказанием, другими словами, значение индекса вторичного преобразования установлено в 0, или индекс вторичного преобразования не нужно декодировать из битового потока. Таким образом, достигается гармонизация инструмента MIP и инструмента RST в смысле выбора ядра вторичного преобразования. Thus, in case an intra prediction block is predicted using MIP mode, for example, the value of the MIP flag can be used to indicate whether the block is predicted using MIP mode or not, secondary mapping is disabled for that intra prediction block, in other words , the secondary transform index value is set to 0, or the secondary transform index does not need to be decoded from the bitstream. Thus, harmonization of the MIP tool and the RST tool in terms of the choice of the secondary transformation kernel is achieved.
Вышеописанный способ может дополнительно содержать: отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.The above-described method may further comprise: disabling secondary transformation of the current block when the current block is predicted using the MIP mode.
В способе, как описано выше, отключение вторичного преобразования текущего блока может содержать: установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию. In the method as described above, disabling the secondary conversion of the current block may comprise: setting the value of the secondary conversion indication information for the current block to a default value.
В способе, как описано выше, может быть указано, предсказывается ли текущий блок с использованием режима MIP, согласно значению информации указания MIP. In the method as described above, it may be indicated whether the current block is predicted using the MIP mode according to the value of the MIP indication information.
В способе, описанном выше, в случае, если текущий блок не предсказывается с использованием режима MIP, вторичное преобразование может быть выбрано в соответствии со следующей таблицей.In the method described above, in case the current block is not predicted using the MIP mode, a secondary transform can be selected according to the following table.
при этом:wherein:
sps_lfnst_enabled_flag, равный 1, указывает, что lfnst_idx может присутствовать в синтаксисе единицы внутреннего кодирования; при этом sps_lfnst_enabled_fag, равный 0, указывает, что lfnst_idx не присутствует в синтаксисе единицы внутреннего кодирования; sps_lfnst_enabled_flag equal to 1 indicates that lfnst_idx can be present in the inner encoding unit syntax; where sps_lfnst_enabled_fag equal to 0 indicates that lfnst_idx is not present in the internal encoding unit syntax;
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является внутренним предсказанием на основе матрицы. intra_mip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является внутренним предсказанием на основе матрицы; при этом, когда intra_mip_flag[ x0 ][ y0 ] отсутствует, предполагается, что он равен 0; intra_mip_flag [ x0 ][ y0 ] equal to 1 indicates that the intra prediction type for luma samples is matrix-based intra prediction. intra_mip_flag[ x0 ][ y0 ] equal to 0 indicates that the intra prediction type for luma samples is not matrix-based intra prediction; however, when intra_mip_flag[ x0 ][ y0 ] is missing, it is assumed to be 0;
lfnst_idx указывает, используется ли и какое из двух ядер низкочастотного неразделимого преобразования в выбранном наборе преобразований. lfnst_idx, равное 0, указывает, что низкочастотное неразделимое преобразование не используется в текущей единице кодирования; при этом, когда lfnst_idx отсутствует, предполагается, что он равен 0; lfnst_idx indicates whether and which of the two low-frequency non-separable transform kernels is used in the selected transform set. lfnst_idx equal to 0 indicates that the low frequency inseparable transform is not used in the current encoding unit; however, when lfnst_idx is missing, it is assumed to be 0;
transform_skip_flag[ x0 ][ y0 ][ cIdx ] указывает, применяется ли преобразование к соответствующему блоку преобразования или нет. transform_skip_flag [ x0 ][ y0 ][ cIdx ] indicates whether the transform is applied to the corresponding transform block or not.
Вышеописанный способ может дополнительно содержать: получение индекса режима внутреннего предсказания текущего блока в соответствии с внутренним предсказанием на основе матрицы, MIP, индексом режима текущего блока и размером текущего блока; выбор ядра вторичного преобразования для вторичного преобразования текущего блока на основе индекса режима внутреннего предсказания текущего блока. The above-described method may further comprise: obtaining an intra prediction mode index of the current block according to the matrix-based intra prediction, MIP, mode index of the current block, and the size of the current block; selecting a secondary transform kernel to secondary transform the current block based on the intra prediction mode index of the current block.
Таким образом, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, один из набора ядер вторичного преобразования считается используемым для этого блока. Thus, during the secondary transform kernel selection process, when a block is predicted using the MIP mode, one of the set of secondary transform kernels is considered to be used for that block.
В способе, описанном выше, индекс режима внутреннего предсказания текущего блока может быть получен согласно соотношению отображения среди индекса режима MIP, размера текущего блока, соотношение отображения может быть указано согласно заранее определенной таблице. In the method described above, the intra prediction mode index of the current block can be obtained according to the mapping ratio among the MIP mode index, the size of the current block, the mapping ratio can be specified according to a predetermined table.
Вышеописанный способ может дополнительно содержать использование ядра вторичного преобразования для вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима внутреннего предсказания на основе матрицы, MIP. The above-described method may further comprise using a secondary transform kernel to secondary transform the current block when the current block is predicted using a matrix-based intra prediction mode, MIP.
В способе, описанном выше, ядро вторичного преобразования может быть одним из ядер вторичного преобразования, которые используются для не-MIP режимов. In the method described above, the secondary transform core may be one of the secondary transform cores that are used for non-MIP modes.
В способе, описанном выше, ядро вторичного преобразования может отличаться от любого из ядер вторичного преобразования, которые используются для не-MIP режимов. In the method described above, the secondary transform kernel may be different from any of the secondary transform kernels that are used for non-MIP modes.
В способе, как описано выше, в котором в случае, если текущий блок предсказывается с использованием режима MIP, таблица соответствия может использоваться для отображения индекса режима MIP в индекс обычного внутреннего режима, и набор ядер вторичного преобразования может быть выбран на основе этого индекса обычного внутреннего режима. In the method as described above, in which in case the current block is predicted using a MIP mode, a lookup table may be used to map the MIP mode index to a regular internal mode index, and a set of secondary conversion kernels may be selected based on this regular internal mode index. mode.
В способе, описанном выше, индекс режима MIP может быть отображен в индекс обычного внутреннего режима на основе следующей таблицы: In the method described above, the MIP mode index can be mapped to the normal internal mode index based on the following table:
при этом выбор набора вторичных преобразований может выполняться в соответствии со следующей таблицей: in this case, the selection of a set of secondary transformations can be performed in accordance with the following table:
Вышеописанный способ может дополнительно содержать: предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований может содержать два преобразования; выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из четырех наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом: если текущий внутренний блок предсказывается с использованием режима кросс-компонентной линейной модели, CCLM, или с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований; в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы: The above-described method may further comprise: providing four sets of transformation kernels having an index of 0, 1, 2, 3 of the transformation kernel set, respectively, wherein each set of transformation kernels of the four sets of transformation kernels may contain two transformations; selecting a reduced secondary transform matrix, RST, by determining a set of transform kernels from four sets of transform kernels to be applied to the current block according to the current block's intra prediction mode, as follows: if the current internal block is predicted using the cross-component linear mode model, CCLM, or using MIP mode, selecting the set of transformation kernels having transformation kernel set index 0; otherwise, select a set of transformation kernels using the current block's intra prediction mode index value and the following table:
Описанный способ может дополнительно содержить: предоставление четырех наборов ядер преобразований, имеющих индекс 0, 1, 2, 3 набора ядер преобразований, соответственно, при этом каждый набор ядер преобразований из четырех наборов ядер преобразований может содержать два преобразования; предоставление пятого набора ядер преобразований, имеющего индекс 4 набора ядер преобразований, при этом пятый набор ядер преобразований имеет те же размеры, что и наборы ядер преобразований, имеющие индекс 0-3 набора ядер преобразований; при этом пятый набор ядер преобразований обучается заново на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP. выбор матрицы сокращенного вторичного преобразования, RST, путем определения набора ядер преобразований из пяти наборов ядер преобразований, который должен быть применен к текущему блоку в соответствии с режимом внутреннего предсказания текущего блока, следующим образом: если текущий внутренний блок предсказывается c использованием режима кросс-компонентной линейной модели, CCLM, выбор набора ядер преобразований, имеющего индекс 0 набора ядер преобразований; если текущий внутренний блок предсказывается с использованием режима MIP, выбор набора ядер преобразований, имеющего индекс 4 набора ядер преобразований; в противном случае выбор набора ядер преобразований с использованием значения индекса режима внутреннего предсказания текущего блока и следующей таблицы: The described method may further comprise: providing four sets of transformation kernels having index 0, 1, 2, 3 of the transformation kernel set, respectively, wherein each set of transformation kernels of the four sets of transformation kernels may contain two transformations; providing a fifth set of transformation kernels having a set of transformation kernels index 4, wherein the fifth set of transformation kernels has the same dimensions as the sets of transformation kernels having a set of transformation kernels index 0-3; wherein the fifth set of transformation kernels is retrained based on the same machine learning method and the input training set for the MIP mode. selecting a reduced secondary transform matrix, RST, by determining a set of transform kernels from five sets of transform kernels to be applied to the current block according to the current block's intra prediction mode, as follows: if the current internal block is predicted using the cross-component linear mode models, CCLM, selecting a set of transformation kernels having index 0 of the set of transformation kernels; if the current internal block is predicted using the MIP mode, selecting a set of transformation kernels having a set of transformation kernels index 4; otherwise, select a set of transformation kernels using the current block's intra prediction mode index value and the following table:
Таким образом, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, считается, что для этого блока используется обученный набор ядер вторичного преобразования. Обученный набор ядер вторичного преобразования может отличаться от набора ядер преобразования в приведенных выше примерах. Thus, during the secondary transform kernel selection process, when a block is predicted using the MIP mode, a trained set of secondary transform kernels is considered to be used for that block. The trained set of secondary transformation kernels may be different from the set of transformation kernels in the examples above.
Настоящее раскрытие дополнительно предоставляет кодер, содержащий схему обработки для выполнения описанного выше способа, когда он реализован устройством кодирования. The present disclosure further provides an encoder including processing circuitry for performing the method described above when implemented by an encoding apparatus.
Настоящее раскрытие дополнительно предоставляет декодер, содержащий схему обработки для выполнения способа, как описано выше, когда он реализован устройством декодирования. The present disclosure further provides a decoder including processing circuitry for performing the method as described above when implemented by a decoding apparatus.
Настоящее раскрытие дополнительно предоставляет компьютерный программный продукт, содержащий программный код для выполнения способа, как описано выше. The present disclosure further provides a computer program product containing program code for performing the method as described above.
Настоящее раскрытие дополнительно предоставляет декодер, содержащий: один или несколько процессоров; и не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, при этом программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа, как описано выше, когда реализуется устройством декодирования.The present disclosure further provides a decoder comprising: one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform the method as described above when implemented by a decoding apparatus.
Настоящее раскрытие дополнительно предоставляет кодер, содержащий: один или несколько процессоров; и не кратковременный считываемый компьютером носитель данных, соединенный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа, как описано выше, когда реализуется устройством кодирования.The present disclosure further provides an encoder comprising: one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures the encoder to perform the method as described above when implemented by the encoder.
Настоящее раскрытие дополнительно предоставляет декодер, содержащий: блок определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока; и блок выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока.The present disclosure further provides a decoder comprising: a determination block configured to determine an intra prediction mode of the current block; and a selector configured to determine a secondary transform selection of the current block based on an intra prediction mode determined for the current block.
Настоящее раскрытие дополнительно предоставляет кодер, содержащий: блок определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока; и блок выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. The present disclosure further provides an encoder comprising: a determination block configured to determine an intra prediction mode of the current block; and a selector configured to determine a secondary transform selection of the current block based on an intra prediction mode determined for the current block.
Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур. The above and other goals are achieved by the invention according to independent claims. Additional forms of implementation are obvious from the dependent claims, description and figures.
Способ согласно первому аспекту изобретения может быть выполнен устройством согласно третьему аспекту изобретения. Дополнительные признаки и формы реализации способа согласно третьему аспекту изобретения соответствуют особенностям и формам реализации устройства согласно первому аспекту изобретения. The method according to the first aspect of the invention can be carried out by a device according to the third aspect of the invention. Additional features and forms of implementation of the method according to the third aspect of the invention correspond to the features and forms of implementation of the device according to the first aspect of the invention.
Способ согласно второму аспекту изобретения может быть выполнен устройством согласно четвертому аспекту изобретения. Дополнительные признаки и формы реализации способа согласно четвертому аспекту изобретения соответствуют особенностям и формам реализации устройства согласно второму аспекту изобретения. The method according to the second aspect of the invention can be carried out by the device according to the fourth aspect of the invention. Additional features and forms of implementation of the method according to the fourth aspect of the invention correspond to the features and forms of implementation of the device according to the second aspect of the invention.
Согласно пятому аспекту изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно первому аспекту. According to a fifth aspect, the invention relates to an apparatus for decoding a video stream, including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the first aspect.
Согласно шестому аспекту изобретение относится к устройству для кодирования видеопотока, включающему в себя процессор и память. В памяти хранятся инструкции, которые предписывают процессору выполнять способ согласно второму аспекту. According to a sixth aspect, the invention relates to an apparatus for encoding a video stream including a processor and a memory. The memory stores instructions that cause the processor to execute the method according to the second aspect.
Согласно седьмому аспекту предложен считываемый компьютером носитель, на котором хранятся инструкции, которые при исполнении обеспечивают работу одного или более процессоров, выполненных с возможностью кодирования видеоданных. Инструкции побуждают один или более процессоров выполнять способ согласно первому или второму аспекту или любому возможному варианту осуществления первого или второго аспекта. According to a seventh aspect, there is provided a computer-readable medium on which instructions are stored that, when executed, cause operation of one or more processors configured to encode video data. The instructions cause one or more processors to perform a method according to the first or second aspect or any possible embodiment of the first or second aspect.
Согласно восьмому аспекту изобретение относится к компьютерной программе, содержащей программный код для выполнения способа согласно первому или второму аспекту или любому возможному варианту осуществления первого или второго аспекта при исполнении на компьютере. According to an eighth aspect, the invention relates to a computer program containing program code for performing a method according to the first or second aspect or any possible embodiment of the first or second aspect when executed on a computer.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения. Details of one or more embodiments are set forth in the accompanying drawings and in the following description. Other features, objects and advantages will be apparent from the description, drawings and claims.
Краткое описание чертежейBrief description of drawings
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых: In the following embodiments, the inventions are described in more detail with reference to the accompanying figures and drawings, in which:
Фиг. 1A является блок-схемой, показывающей пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения; Fig. 1A is a block diagram showing an example of a video encoding system configured to implement embodiments of the invention;
Фиг. 1B является блок-схемой, показывающей другой пример системы кодирования видео, выполненной с возможностью реализации вариантов осуществления изобретения; Fig. 1B is a block diagram showing another example of a video encoding system configured to implement embodiments of the invention;
Фиг. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения; Fig. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention;
Фиг. 3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения; Fig. 3 is a block diagram showing an example of a structure of a video decoder configured to implement embodiments of the invention;
Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования; Fig. 4 is a block diagram illustrating an example of an encoding device or a decoding device;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования; Fig. 5 is a block diagram illustrating another example of an encoding device or a decoding device;
Фиг. 6 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 4×4Fig. 6 is a block diagram illustrating an example of MIP mode matrix multiplication for a 4×4 block
Фиг. 7 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 8×8Fig. 7 is a block diagram illustrating an example of MIP mode matrix multiplication for an 8×8 block
Фиг. 8 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 8×4Fig. 8 is a block diagram illustrating an example of MIP mode matrix multiplication for an 8×4 block
Фиг. 9 является блок-схемой, иллюстрирующей пример матричного умножения режима MIP для блока 16×16Fig. 9 is a block diagram illustrating an example of MIP mode matrix multiplication for a 16×16 block
Фиг. 10 является блок-схемой, иллюстрирующей примерный процесс вторичного преобразованияFig. 10 is a flowchart illustrating an exemplary secondary conversion process
Фиг. 11 является блок-схемой, иллюстрирующей примерный процесс умножения ядра вторичного преобразования устройства кодирования и декодированияFig. 11 is a flowchart illustrating an exemplary process of multiplying the secondary transform kernel of an encoding and decoding device
Фиг. 12 - блок-схема, иллюстрирующая примерное уменьшение размера ядра вторичного преобразования с 16×64 до 16×48. Fig. 12 is a block diagram illustrating an example reduction in the size of the secondary transform kernel from 16x64 to 16x48.
Фиг. 13 является блок-схемой, иллюстрирующей пример восстановления MPM MIP на основе местоположения соседних блоковFig. 13 is a block diagram illustrating an example of MPM MIP recovery based on the location of neighboring blocks.
Фиг. 14 является блок-схемой, иллюстрирующей другой пример восстановления MPM MIP на основе местоположения соседних блоков.Fig. 14 is a block diagram illustrating another example of MPM MIP recovery based on the location of neighboring blocks.
Фиг. 15 иллюстрирует способ, реализуемый устройством декодирования или устройством кодирования, способ согласно настоящему раскрытию. Fig. 15 illustrates a method implemented by a decoding device or an encoding device, the method according to the present disclosure.
Фиг. 16 иллюстрирует кодер согласно настоящему раскрытию. Fig. 16 illustrates an encoder according to the present disclosure.
Фиг. 17 иллюстрирует декодер согласно настоящему раскрытию. Fig. 17 illustrates a decoder according to the present disclosure.
Фиг. 18 - блок-схема, показывающая примерную структуру системы 3100 поставки контента, которая реализует услугу доставки контента. Fig. 18 is a block diagram showing an exemplary structure of a content delivery system 3100 that implements a content delivery service.
Фиг. 19 является блок-схемой, показывающей структуру примерного терминального устройства. Fig. 19 is a block diagram showing the structure of an exemplary terminal device.
Следующие одинаковые ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным функциям, если явно не указано иное. The following identical reference numerals refer to identical or at least functionally equivalent functions unless explicitly stated otherwise.
Осуществление изобретенияCarrying out the invention
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения. In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which show, by way of illustration, specific aspects of embodiments of the invention or specific aspects in which embodiments of the present invention may be used. It is understood that embodiments of the present invention may be used in other aspects and contain structural or logical changes not shown in the figures. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.
Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, чтобы выполнять описанный один или множество этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков не описаны явным образом или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описано на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов не описаны явным образом или не проиллюстрированы на фигурах. фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное. For example, it will be understood that the disclosure associated with the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or a plurality of specific method steps are described, the corresponding apparatus may include one or a plurality of blocks, such as functional blocks, to perform the one or multiple method steps described (e.g., one block performing one or a plurality of steps, or a plurality of blocks, each of which performs one or more of a plurality of steps), even if such one or more blocks are not explicitly described or illustrated in the figures. On the other hand, for example, if a particular device is described in terms of one or a plurality of blocks, such as functional blocks, the corresponding method may include one step for performing the functionality of the one or multiple blocks (e.g., one step performing the functionality of the one or multiple blocks , or a plurality of steps, each of which performs the functionality of one or more of a plurality of blocks), even if such one or multiple steps are not explicitly described or illustrated in the figures. figures. It is further understood that features of various exemplary embodiments and/or aspects described herein may be combined with each other unless specifically stated otherwise.
Видеокодирование обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательности. Вместо термина "изображение" термины "кадр" или "картинка" могут использоваться как синонимы в области видеокодирования. Видеокодирование (или кодирование (coding) в целом) содержит две части: видеокодирование (video encoding) и видеодекодирование (video decoding). Видеокодирование выполняется на стороне источника и обычно содержит обработку (например, посредством сжатия) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя (адресата) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображений. Варианты осуществления, относящиеся к "кодированию" видеоизображений (или изображений в целом), должны пониматься как относящиеся к "кодированию" или "декодированию" видеоизображений или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется кодеком (CODEC, Coding and Decoding). Video encoding generally refers to the processing of a sequence of images that form a video or video sequences. Instead of the term "image", the terms "frame" or "picture" may be used interchangeably in the field of video coding. Video encoding (or encoding in general) contains two parts: video encoding and video decoding. Video encoding is performed at the source side and typically involves processing (eg, through compression) of the source video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed at the receiver (destination) side and usually contains reverse processing compared to the encoder for reconstructing video images. Embodiments relating to "coding" video images (or images in general) are to be understood as referring to "encoding" or "decoding" video images or corresponding video sequences. The combination of the encoding part and the decoding part is also called a codec (CODEC, Coding and Decoding).
В случае видеокодирования без потерь исходные видеоизображения могут быть восстановлены, т.е. восстановленные видеоизображения имеют такое же качество, что и исходные видеоизображения (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодирования с потерями выполняется дополнительное сжатие, например посредством квантования, для сокращения объема данных, представляющих видеоизображения, которые не могут быть полностью восстановлены на декодере, т.е. качество восстановленных видеоизображений ниже или хуже по сравнению с качеством исходных видеоизображений. In the case of lossless video encoding, the original video images can be restored, i.e. the restored video images are of the same quality as the original video images (assuming there is no transmission loss or other data loss during storage or transmission). In the case of lossy video encoding, additional compression is performed, for example through quantization, to reduce the amount of data representing video images that cannot be fully reconstructed at the decoder, i.e. The quality of the restored video images is lower or worse compared to the quality of the original video images.
Несколько стандартов видеокодирования принадлежат к группе "гибридных видеокодеков с потерями" (т.е. сочетают пространственное и временное предсказание в области выборки и кодирование с 2D-преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например с использованием пространственного (внутри изображения, intra picture) предсказания и/или временного (между изображениями, inter picture) предсказания для формирования блока предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается/подлежит обработке) для получения остаточного блока, остаточный блок преобразуется и этот остаточный блок квантуется в области преобразования для сокращения объема данных (сжатия), которые подлежат передаче, тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку для восстановления текущего блока для представления. Кроме того, кодер дублирует цикл обработки декодера, так что они оба будут формировать идентичные предсказания (например, внутренние и внешние предсказания) и/или реконструкции для обработки, то есть кодирования (coding), последующих блоков. Several video coding standards belong to the group of “hybrid lossy video codecs” (that is, they combine spatial and temporal prediction in the sample domain and 2D transform coding to apply quantization in the transform domain). Each image of a video sequence is usually divided into a set of non-overlapping blocks, and coding is usually performed at the block level. In other words, in an encoder, video is typically processed, i.e. encoded, at the block (video block) level, for example using spatial (intra picture) prediction and/or temporal (inter picture) prediction to form a prediction block, block prediction is subtracted from the current block (the block that is currently being processed/to be processed) to obtain a residual block, the residual block is transformed and this residual block is quantized in the transform domain to reduce the amount of data (compression) to be transmitted, whereas in the decoder the inverse encoder-versus processing is applied to an encoded or compressed block to recover the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that they will both generate identical predictions (eg, internal and external predictions) and/or reconstructions for processing, ie, encoding, of subsequent blocks.
В следующих вариантах осуществления системы 10 кодирования видео, видеокодер 20 и видеодекодер 30 описаны на основе фиг.1-3. In the following embodiments, the video encoding system 10, video encoder 20 and video decoder 30 are described based on FIGS. 1-3.
Фиг. 1A представляет собой схематичное блочное представление, иллюстрирующее примерную систему 10 кодирования, например систему 10 кодирования видео (или сокращенно систему 10 кодирования), которая может использовать способы из настоящей заявки. Видеокодер 20 (или сокращенно кодер 20) и видеодекодер 30 (или сокращенно декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения способов в соответствии с различными примерами, описанными в настоящей заявке. Fig. 1A is a schematic block diagram illustrating an example encoding system 10, such as video encoding system 10 (or encoding system 10 for short), which may use the methods of the present application. Video encoder 20 (or encoder 20 for short) and video decoder 30 (or decoder 30 for short) of video encoding system 10 are examples of devices that may be configured to perform methods in accordance with various examples described herein.
Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 изображения, например в устройство-получатель 14 для декодирования кодированных данных 13 изображения. As shown in FIG. 1A, the encoding system 10 includes a source device 12 configured to provide encoded image data 21, for example, to a destination device 14 for decoding the encoded image data 13.
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. опционально, содержать источник 16 изображений, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 изображений, а также интерфейс связи или блок 22 связи. The source device 12 contains an encoder 20 and can additionally, i.e. optionally comprise an image source 16, a preprocessor (or pre-processing unit) 18, such as an image preprocessor 18, and a communications interface or communications unit 22.
Источник 16 изображений может содержать или быть устройством захвата изображений любого типа, например камерой для захвата изображения реального мира, и/или устройством формирования изображений любого типа, например процессором компьютерной графики для формирования компьютерного анимированного изображения, или любым типом другого устройства для получения и/или предоставления изображения реального мира, формируемого компьютером изображения (например, содержимого экрана, изображения виртуальной реальности (VR)) и/или любой их комбинации (например, изображения дополненной реальности (AR)). Источником снимка может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых снимков. The image source 16 may contain or be any type of image capturing device, such as a camera for capturing a real world image, and/or any type of imaging device, such as a computer graphics processor for generating a computer animated image, or any type of other device for capturing and/or providing a real-world image, a computer-generated image (e.g., screen content, virtual reality (VR) image), and/or any combination thereof (e.g., augmented reality (AR) image). The snapshot source can be any type of memory or storage that stores any of the above snapshots.
В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, изображение или данные 17 изображения также могут именоваться необработанным (raw) изображением или необработанными данными 17 изображения. In contrast to the preprocessor 18 and the processing performed by the preprocessing unit 18, the image or image data 17 may also be referred to as a raw image or raw image data 17.
Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 изображения и выполнения предварительной обработки в отношении этих данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Предварительная обработка, выполняемая препроцессором 18, может, например, содержать обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или шумоподавление. Можно понять, что блок 18 предварительной обработки может быть необязательным компонентом.The preprocessor 18 is configured to receive (raw) image data 17 and perform preprocessing on the image data 17 to obtain a preprocessed image 19 or preprocessed image data 19 . Preprocessing performed by preprocessor 18 may, for example, comprise cropping, color format conversion (eg, RGB to YCbCr), color correction, or noise reduction. It can be understood that the preprocessing unit 18 may be an optional component.
Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 изображения и предоставления кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2). Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема кодированных данных 21 изображения и передачи этих кодированных данных 21 изображения (или любой их дальнейшей обработанной версии) по каналу 13 связи в другое устройство, например устройство-получатель 14 или любое другое устройство, для сохранения или непосредственного восстановления. Video encoder 20 is configured to receive preprocessed image data 19 and provide encoded image data 21 (further details will be described below, for example based on FIG. 2). The communication interface 22 of the source device 12 may be configured to receive encoded image data 21 and transmit this encoded image data 21 (or any further processed version thereof) over the communication channel 13 to another device, such as the destination device 14 or any other device, for saving or immediate restoration.
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. опционально, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство 34 отображения. The recipient device 14 includes a decoder 30 (eg, video decoder 30) and may additionally, i.e. optionally comprising a communication interface or communication unit 28, a post processor 32 (or post processing unit 32) and a display device 34.
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема кодированных данных 21 изображения (или любой их дальнейшей обработанной версии), например непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройства хранения кодированных данных изображения, и предоставления кодированных данных 21 изображения в декодер 30. The communication interface 28 of the destination device 14 is configured to receive the encoded image data 21 (or any further processed version thereof), for example directly from the source device 12 or from any other source, such as a storage device, such as a storage device for the encoded image data, and provide encoded image data 21 into decoder 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема кодированных данных 21 изображения или кодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание. The communication interface 22 and the communication interface 28 may be configured to transmit or receive encoded image data 21 or encoded data 13 through a direct communication link between the source device 12 and the destination device 14, such as a direct wired or wireless connection, or through any type of network , such as a wired or wireless network or any combination thereof, or any private and public network, or any combination thereof.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки кодированных данных 21 изображения в соответствующий формат, например, в пакеты, и/или обработки кодированных данных изображения с использованием любого типа кодирования передачи или обработки для передачи по линии связи или сети связи. The communications interface 22 may, for example, be configured to package the encoded image data 21 into an appropriate format, such as packets, and/or process the encoded image data using any type of transmission encoding or processing for transmission over a communications link or network.
Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки и/или распаковки передачи для получения кодированных данных 21 изображения. The communication interface 28, which is analogous to the communication interface 22, may, for example, be configured to receive transmitted data and process the transmission data using any kind of appropriate decoding or transmission processing and/or decompression to obtain encoded image data 21.
Как интерфейс 22 связи, так и интерфейс 28 связи могут быть выполнены как интерфейсы однонаправленной связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающей от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и могут быть выполнены с возможностью, например отправки и приема сообщений, например для установления соединения, для подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, например передаче кодированных данных изображения. Both communication interface 22 and communication interface 28 may be configured as unidirectional communication interfaces, as shown by the arrow for communication channel 13 in FIG. 1A pointing from a source device 12 to a destination device 14, or as bidirectional communication interfaces, and may be configured to, for example, send and receive messages, for example to establish a connection, to confirm and exchange any other information related to the communication link and/or data transmission, such as transmission of encoded image data.
Декодер 30 выполнен с возможностью приема кодированных данных 21 изображения и предоставления декодированных данных 31 изображения или декодированного изображения 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг.3 или Фиг.5.The decoder 30 is configured to receive encoded image data 21 and provide decoded image data 31 or decoded image 31 (further details will be described below, for example, based on FIG. 3 or FIG. 5.
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки декодированных данных 31 изображения (также называемых данными восстановленного изображения), таких как декодированное изображение 31, чтобы получить пост-обработанные данные 33 изображения, такие как пост-обработанное изображение 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например для подготовки декодированных данных 31 изображения для отображения, например с помощью устройства 34 отображения. The post-processor 32 of the recipient device 14 is configured to post-process the decoded image data 31 (also called reconstructed image data), such as the decoded image 31, to obtain post-processed image data 33, such as the post-processed image 33. Post-processing performed by block 32 post-processing may include, for example, color format conversion (eg, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare the decoded image data 31 for display, for example, using display device 34.
Устройство 34 отображения из состава устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 изображения для отображения изображения, например пользователю или зрителю. Устройство 34 отображения может представлять собой или содержать дисплей любого типа для представления восстановленного изображения, например, интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, дисплеи на микро-LED, жидкий кристалл на кремнии (LCoS), цифровой световой процессор (DLP) или другой дисплей любого типа. The display device 34 of the recipient device 14 is configured to receive post-processed image data 33 for displaying the image, for example, to a user or viewer. The display device 34 may be or include any type of display for presenting the reconstructed image, such as an integrated or external display or monitor. The displays may, for example, comprise liquid crystal displays (LCDs), organic light-emitting diodes (OLEDs), plasma displays, projectors, micro-LED displays, liquid crystal on silicon (LCoS), digital light processor (DLP), or any other type of display .
Хотя Фиг. 1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать обе или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации. Although Fig. 1A illustrates source device 12 and destination device 14 as separate devices, embodiments of the devices may also include both or both functionality, source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such embodiments, source device 12 or related functionality and destination device 14 or related functionality may be implemented using the same hardware and/or software, or using separate hardware and/or software, or any combination thereof. .
Как будет очевидно для специалиста в данной области техники на основании описания, наличие и (конкретное) разделение функциональных возможностей различных блоков или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения. As will be apparent to one skilled in the art from the description, the presence and (specific) separation of functionality of various blocks or functions in source device 12 and/or destination device 14, as shown in FIG. 1A, may vary depending on actual device and application.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы через схему обработки, как показано на Фиг. 1B, такую как один или более микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретную логику, аппаратное обеспечение, выделенное видеокодирование или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на фиг. 2 и/или любой другой кодирующей системе или подсистеме, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с Фиг. 3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг.5, если способы частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем не кратковременном считываемом компьютером носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения способов этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг.1B. Encoder 20 (eg, video encoder 20) or decoder 30 (eg, video decoder 30) or both encoder 20 and decoder 30 may be implemented through a processing circuit as shown in FIG. 1B, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding, or any combination thereof. Encoder 20 may be implemented through processing circuit 46 to implement various modules, as discussed with respect to encoder 20 in FIG. 2 and/or any other encoding system or subsystem described herein. The decoder 30 may be implemented through a processing circuit 46 to implement various modules, as discussed with respect to the decoder 30 of FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, which will be described below. As shown in FIG. 5, if the methods are partially implemented in software, the apparatus may store instructions for the software on a suitable non-transitory computer-readable storage medium and may execute the instructions in hardware using one or more processors to perform the methods of this disclosure. Either of video encoder 20 and video decoder 30 may be integrated as part of a combined encoder/decoder (CODEC) in a single device, for example, as shown in FIG. 1B.
Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например ноутбуки или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые консоли, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), широковещательное приемное устройство, широковещательное передающее устройство или подобное, и могут использовать операционную систему любого типа или обходиться без нее. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи. Source device 12 and destination device 14 may include any of a wide range of devices, including any type of portable or desktop devices, such as laptops or notebook computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes , televisions, display devices, digital media players, game consoles, video streaming devices (such as content service servers or content delivery servers), broadcast receiving device, broadcast transmitting device, or the like, and may use or dispense with any type of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.
В некоторых случаях система 10 кодирования видео, проиллюстрированная на Фиг. 1A, является лишь примером, а способы настоящей заявки могут применяться к настройкам видеокодирования (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти. In some cases, the video encoding system 10 illustrated in FIG. 1A is an example only, and the methods of the present application may be applied to video encoding settings (such as video encoding or video decoding) that do not necessarily involve transmitting any data between encoding and decoding devices. In other examples, data is retrieved from local memory, streamed over a network, or the like. A video encoding device may encode and store data into memory, and/or a video decoding device may retrieve and decode data from memory. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve and decode data from memory.
Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное видеокодирование (High-Efficiency Video Coding, HEVC) или на эталонное программное обеспечение универсального видеокодирования (Versatile Video coding, VVC), стандарт видеокодирования следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодированию (Joint Collaboration Team on Video Coding, JCT-VC) экспертной группы по видеокодированию (Video Coding Experts Group, VCEG) ITU-T и экспертной группы по движущимся изображениям ISO/IEC (Motion Picture Experts Group, MPEG). Специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.For convenience of description, embodiments of the present invention are described herein, for example, with reference to High-Efficiency Video Coding (HEVC) or Versatile Video coding (VVC) reference software, a next-generation video coding standard being developed by the joint collaboration group. on video coding (Joint Collaboration Team on Video Coding, JCT-VC) of the ITU-T Video Coding Experts Group (VCEG) and the ISO/IEC Motion Picture Experts Group (MPEG). One skilled in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.
Кодер и способ кодированияEncoder and encoding method
Фиг. 2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации способов настоящей заявки. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (Decoded Picture Buffer, DPB) декодированных изображений, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разбиения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.Fig. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the methods of the present application. In the example in FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a remainder calculation block 204, a transform processing block 206, a quantization block 208, an inverse quantization block 210 and an inverse transform processing block 212, a restoration block 214, a loop filter block 220, a buffer 230 ( Decoded Picture Buffer (DPB) of decoded pictures, a mode selector 260, an entropy encoder 270, and an output 272 (or output interface 272). The mode selection block 260 may include an inter prediction block 244, an intra prediction block 254, and a partitioning block 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in FIG. 2 may also be called a hybrid video encoder or a video encoder according to a hybrid video codec.
Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого пути прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут относится к формированию обратного пути прохождения сигнала видеокодера 20, при этом обратный путь прохождения сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (см. видеодекодер 30 на Фиг. 3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных изображений (DPB) 230, блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию "Встроенный декодер" видеокодера 20. The remainder calculation block 204, transform processing block 206, quantization block 208, mode selection block 260 may relate to the formation of the forward signal path of the encoder 20, while the inverse quantization block 210, inverse transform processing block 212, restoration block 214, buffer 216, contour filter 220, decoded image buffer (DPB) 230, inter prediction block 244, and intra prediction block 254 may relate to generating a reverse signal path of video encoder 20, wherein the reverse signal path of video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 on Fig. 3). The inverse quantization unit 210, the inverse transform processing unit 212, the restoration unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 are also relevant to forming the “Built-in decoder” of the video encoder 20.
Изображения и разделение изображений (изображения и блоки) Images and image division (images and blocks)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 изображения 17 (или данных 17 изображения), например изображения из последовательности изображений, образующих видео или видеопоследовательность. Принятое изображение или данные изображения также могут представлять собой предварительно обработанное изображение 19 (или предварительно обработанные данные 19 изображения). Для простоты нижеследующее описание ссылается на изображение 17. Изображение 17 также может именоваться текущим изображением или изображением, которое подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущее изображение). The encoder 20 may be configured to receive, for example, through input 201, an image 17 (or image data 17), for example an image from a sequence of images forming a video or video sequence. The received image or image data may also be a preprocessed image 19 (or preprocessed image data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be referred to as the current picture or the picture to be encoded (particularly in video encoding, to distinguish the current picture from other pictures, such as previously encoded and/or decoded pictures of the same video sequence, i.e. a video sequence that also contains the current image).
Изображение (цифровое) является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента изображения) или pel (элемент изображения). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовые компоненты, т.е. изображение может быть представлено или включать в себя три массива выборок. В формате RBG или цветовом пространстве изображение содержит соответствующий массив выборок красного, зеленого и синего цветов. Однако при видеокодировании каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, которое содержит компоненту яркости, обозначаемую Y (иногда вместо этого также используется L), и две компоненты цветности (цветоразностные компоненты), обозначаемые Cb и Cr. Компонента Y яркости (luminance) (или сокращенно яркость (luma)) представляет яркость (brightness) или интенсивность уровня серого (например, как в полутоновом изображении), в то время как две компоненты Cb и Cr цветности (chrominance) (или сокращенно цветности (chroma)) представляют компоненты информации о цветности (chromaticity) или цвете. Соответственно, изображение в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Изображения в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если изображение является монохромным, оно может содержать только массив выборок яркости. Соответственно, изображение может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4. An image (digital) is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A selection in an array may also be referred to as a pixel (short form of image element) or pel (image element). The number of samples in the horizontal and vertical direction (or axis) of the array or image determines the size and/or resolution of the image. Three color components are usually used to represent color, i.e. the image may be represented by or include three arrays of samples. In RBG format, or color space, an image contains a corresponding array of red, green, and blue color samples. However, in video encoding, each pixel is typically represented in a luminance-chrominance format or color space, such as YCbCr, which contains a luminance component, denoted Y (sometimes L is also used instead), and two chrominance components (chrominance components), denoted Cb and Cr. The Y component of luminance (or luma for short) represents the brightness or intensity of the gray level (such as in a grayscale image), while the two components Cb and Cr are chrominance (or chrominance for short). chroma) represent components of chromaticity or color information. Accordingly, an image in YCbCr format contains an array of luminance samples with luminance sample values (Y) and two chrominance sample arrays with chrominance values (Cb and Cr). Images in RGB format can be converted or converted to YCbCr format and vice versa, a process also known as color conversion or conversion. If the image is monochrome, it can only contain an array of luminance samples. Accordingly, the image may be, for example, an array of luminance samples in a monochrome format, or an array of luminance samples and two corresponding arrays of chrominance samples in 4:2:0, 4:2:2 and 4:4:4 color formats.
Варианты осуществления видеокодера 20 могут содержать блок разбиения изображения (не показан на Фиг. 2), выполненный с возможностью разделения изображения 17 на множество (обычно не перекрывающихся) блоков 203 изображения. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB, Coding Tree Block) или единицами дерева кодирования (CTU, Coding Tree Units) (H.265/HEVC и VVC). Блок разбиения изображения может быть выполнен с возможностью использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями или подмножествами или группами изображений и разделения каждого изображения на соответствующие блоки. Embodiments of video encoder 20 may include an image splitter (not shown in FIG. 2) configured to divide image 17 into multiple (usually non-overlapping) image blocks 203. These blocks may also be called root blocks, macroblocks (H.264/AVC), or Coding Tree Blocks (CTB), or Coding Tree Units (CTUs) (H.265/HEVC and VVC). The image splitter may be configured to use the same block size for all images in a video sequence and a corresponding grid defining the block size, or to vary the block size between images or subsets or groups of images and divide each image into appropriate blocks.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 изображения 17, например одного, нескольких или всех блоков, формирующих изображение 17. Блок 203 изображения также может именоваться блоком текущего изображения или блоком изображения, подлежащим кодированию. In additional embodiments, the video encoder may be configured to receive directly a block 203 of an image 17, such as one, more, or all of the blocks forming the image 17. The image block 203 may also be referred to as a current image block or an image block to be encoded.
Подобно изображению 17, блок 203 изображения снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 17 или массив яркости или цветности в случае цветного изображения) или три массива выборок (например, яркость и два массива цветности в случае цветного изображения 17) или любое другое число и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив дискретных выборок MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования. Like image 17, image block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples with intensity values (sample values), albeit smaller in size than image 17. In other words, block 203 may contain, for example, one array of samples (e.g. , a luminance array in the case of a monochrome image 17 or a luminance or chrominance array in the case of a color image) or three sample arrays (for example, luminance and two chroma arrays in the case of a color image 17) or any other number and/or type of arrays depending on the color used format. The number of samples in the horizontal and vertical direction (or axis) of block 203 determines the size of block 203. Accordingly, the block may, for example, be an MxN array of discrete samples (M-column by N-row) or an MxN array of transform coefficients.
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть выполнены с возможностью кодирования изображения 17 блок за блоком, например кодирование и предсказание выполняется для каждого блока 203. Embodiments of video encoder 20 shown in FIG. 2 may be configured to encode the image 17 block by block, such that encoding and prediction is performed for each block 203.
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или кодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU). Embodiments of video encoder 20, as shown in FIG. 2 may be further configured to divide and/or encode an image using slices (also referred to as video slices), wherein the image may be divided into or encoded using one or more slices (usually non-overlapping), and each slice may contain one or more units (for example, CTU).
Варианты осуществления видеокодера 20, показанные на Фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения с использованием групп мозаичных элементов (также называемых группами мозаичных элементов видео) и/или мозаичных элементов (также называемых мозаичными элементами видео), при этом изображение может быть разделено на или закодировано с использованием одной или более групп мозаичных элементов (обычно не перекрывающихся), и каждая группа мозаичных элементов может содержать, например один или более блоков (например, CTU) или один или более мозаичных элементов, при этом каждый мозаичный элемент, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки. Embodiments of video encoder 20 shown in FIG. 2 may be further configured to divide and/or encode an image using tile groups (also called video tile groups) and/or tiles (also called video tiles), wherein the image may be divided into or encoded with using one or more groups of tiles (typically non-overlapping), and each group of tiles may contain, for example, one or more blocks (eg, CTUs) or one or more tiles, wherein each tile, for example, may have rectangular in shape and may contain one or more blocks (eg, CTUs), such as full or partial blocks.
Вычисление остаткаCalculating the remainder
Блок 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также именуемого остатком 205) на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания приведены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборок блока 203 изображения, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборок. Residual calculation block 204 may be configured to calculate residual block 205 (also referred to as residual 205) based on image block 203 and prediction block 265 (more details about prediction block 265 are provided below), for example, by subtracting the sample values of prediction block 265 from the values samples the image block 203 sample by sample (pixel by pixel) to obtain a residual block 205 in the sample region.
ПреобразованиеConversion
Блок 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (Discrete Cosine Transform, DCT) или дискретного синусного преобразования (Discrete Sine Transform, DST), к значениям выборок остаточного блока 205, чтобы получить коэффициенты 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования. Transform processing unit 206 may be configured to apply a transform, such as a Discrete Cosine Transform (DCT) or a Discrete Sine Transform (DST), to the sample values of the residual block 205 to obtain transform coefficients 207 in the transform domain. . The transform coefficients 207 may also be referred to as residual transform coefficients and represent the residual block 205 in the transform domain.
Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, например коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т. д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например блоком 312 обработки обратного преобразования в видеодекодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например блоком 206 обработки преобразования, могут быть заданы надлежащим образом в кодере 20. Transform processing block 206 may be configured to apply DCT/DST integer approximations, such as the transforms defined for H.265/HEVC. Compared to the orthogonal DCT transform, such integer approximations are typically scaled by a certain factor. To preserve the norm of the residual block that is processed by the forward and inverse transforms, additional scaling factors are applied as part of the transform process. Scaling factors are typically chosen based on certain constraints, e.g., scaling factors are powers of two for shift operations, bit depth of transform factors, tradeoff between accuracy and implementation cost, etc. Specific scaling factors, for example, are specified for inverse transform, such as by block 212 inverse transform processing (and the corresponding inverse transform, such as the inverse transform processing unit 312 in the video decoder 30), and the corresponding scaling factors for the forward transform, such as the transform processing unit 206, can be set appropriately in the encoder 20.
Варианты осуществления видеокодера 20 (соответственно блок 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования. Embodiments of video encoder 20 (respectively transform processing unit 206) may be configured to output transform parameters, such as the type of transform or transforms, for example, directly or encoded or compressed via entropy encoding unit 270, so that, for example, video decoder 30 can receive and use conversion parameters for decoding.
КвантованиеQuantization
Блок 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209. The quantization unit 208 may be configured to quantize the transform coefficients 207 to obtain quantized coefficients 209, for example by applying scalar quantization or vector quantization. Quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207. преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для заранее определенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать тонкому квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, а соответствующее и/или обратное деквантование, например, блоком 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления в соответствии с некоторыми стандартами, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы настроенные таблицы квантования могут использоваться и сигнализироваться от кодера к декодеру, например в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования. The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be specified by the quantization parameter (QP). The quantization parameter may, for example, be an index to a predetermined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes), and large quantization parameters may correspond to coarse quantization (large quantization step sizes), or vice versa. Quantization may include dividing by a quantization step size, and corresponding and/or inverse dequantization, such as by inverse quantization unit 210, may include multiplying by a quantization step size. Embodiments in accordance with some standards, such as HEVC, may be configured to use a quantization parameter to determine the quantization step size. Typically, the quantization step size can be calculated based on the quantization parameter using a fixed point approximation of the equation involving division. Additional scaling factors can be introduced for quantization and dequantization to recover the residual block norm that may have been changed due to the scaling used in the fixed point approximation of the above equation for the quantization step size and the quantization parameter. In one exemplary implementation, inverse transform scaling and dequantization may be combined. Alternatively, customized quantization tables can be used and signaled from encoder to decoder, for example in a bitstream. Quantization is a lossy operation in which losses increase as the size of the quantization steps increases.
Варианты осуществления видеокодера 20 (соответственно блок 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования. Embodiments of video encoder 20 (respectively quantization block 208) may be configured to output quantization parameters (QPs), for example, directly or encoded through entropy encoding block 270, so that, for example, video decoder 30 can receive and apply the quantization parameters for decoding.
Обратное квантованиеInverse quantization
Блок 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например путем применения обратной схемы квантования относительно таковой, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования, что и блок 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования. The inverse quantization block 210 is configured to apply the inverse quantization of the quantization block 208 to the quantized coefficients to obtain the dequantized coefficients 211, for example, by applying an inverse quantization scheme to that applied by the quantization block 208, based on or using the same quantization step size as the block 208 quantization. The dequantized coefficients 211 may also be referred to as the dequantized residual coefficients 211 and correspond - although they are typically not identical to the transform coefficients due to quantization loss - to the transform coefficients 207.
Обратное преобразованиеReverse conversion
Блок 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования относительно преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST) или других обратных преобразований для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборок. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования. The inverse transform processing unit 212 is configured to apply an inverse transform relative to the transform applied by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transforms to obtain the reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sample area. The reconstructed residual block 213 may also be referred to as a transform block 213.
ВосстановлениеRecovery
Блок 214 восстановления (например, блок сложения или сумматор 214) выполнен с возможностью сложения блока 213 преобразования (т.е. восстановленного остаточного блока 213) с блоком 265 предсказания, чтобы получить восстановленный блок 215 в области выборок, например посредством сложения - выборка за выборкой - значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания. A reconstruction block 214 (e.g., an add block or an adder 214) is configured to add a transform block 213 (i.e., a reconstructed residual block 213) with a prediction block 265 to obtain a reconstructed block 215 in the sample domain, such as through sample-by-sample addition. - sample values of the reconstructed residual block 213 and sample values of the prediction block 265.
ФильтрацияFiltration
Блок 220 контурного фильтра (или сокращенно "контурный фильтр" 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (Sample-Adaptive Offset, SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (Adaptive Loop Filter, ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221. Loop filter block 220 (or "loop filter" 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally to filter the reconstructed samples to obtain filtered samples. The edge filter unit, for example, is configured to smooth pixel transitions or otherwise improve video quality. Loop filter block 220 may include one or more loop filters, such as a deblocking filter, a Sample-Adaptive Offset (SAO) filter, or one or more other filters, such as a two-way filter, an Adaptive Loop filter Filter, ALF), anti-aliasing, sharpening or joint filters, or any combination of them. Although the loop filter block 220 is shown in FIG. 2 as a loop filter, in other configurations the loop filter block 220 may be implemented as a post-loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221.
Варианты осуществления видеокодера 20 (соответственно блока 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация адаптивного к выборке смещения), например непосредственно или кодированных через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять аналогичные параметры контурного фильтра или соответствующие контурные фильтры для декодирования. Embodiments of video encoder 20 (respectively, loop filter block 220) may be configured to output loop filter parameters (such as sample-adaptive offset information), such as directly or encoded through entropy encoding block 270, so that, for example, decoder 30 can receive and apply similar loop filter parameters or corresponding loop filters for decoding.
Буфер декодированных изображенийDecoded Image Buffer
Буфер 230 декодированных изображений (DPB) может быть памятью, в которой хранятся опорные изображения или, в общем, данные опорных изображений для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных изображений может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных изображений может быть дополнительно выполнен с возможностью сохранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего изображения или разных изображений, например ранее восстановленных изображений, и может предоставлять полные ранее восстановленные, т.е. декодированные, изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированных изображений (DPB) также может быть выполнен с возможностью сохранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например если восстановленный блок 215 не фильтруется блоком 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или выборок. Decoded picture buffer (DPB) 230 may be a memory that stores reference pictures or, more generally, reference picture data for encoding video data by video encoder 20. DPB 230 may be formed by any of a variety of storage devices, such as dynamic random access memory (DRAM). DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously reconstructed and filtered blocks 221, of the same current image, or different images, such as previously recovered images, and can provide complete previously recovered ones, i.e. decoded, images (and corresponding reference blocks and samples) and/or partially reconstructed current image (and corresponding reference blocks and samples), for example, for inter-prediction. Decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or generally unfiltered reconstructed samples, such as if reconstructed block 215 is not filtered by loop filter block 220, or any other further processed version of the reconstructed blocks. or samples.
Выбор режима (разделение и предсказание) Mode selection (separation and prediction)
Блок 260 выбора режима содержит блок 262 разбиения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и выполнен с возможностью приема или получения исходных данных изображения, например исходного блока 203 (текущего блока 203 текущего изображения 17), и восстановленных данных изображения, например отфильтрованных и/или нефильтрованных восстановленных выборок или блоков того же самого (текущего) изображения и/или из одного или множества ранее декодированных изображений, например из буфера 230 декодированных изображений или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного изображения используются в качестве данных опорного изображения для предсказания, например внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предиктор 265. The mode selection unit 260 includes a partitioning unit 262, an inter-prediction unit 244, and an intra-prediction unit 254, and is configured to receive or obtain original image data, such as the original block 203 (current block 203 of the current image 17), and reconstructed image data, such as filtered and /or unfiltered reconstructed samples or blocks of the same (current) image and/or from one or a plurality of previously decoded images, such as from decoded image buffer 230 or other buffers (eg, a line buffer, not shown). The reconstructed image data is used as reference image data for prediction, such as inter prediction or intra prediction, to obtain a prediction block 265 or a predictor 265.
Блок 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для режима предсказания текущего блока (включая отсутствие разбиения) и режима предсказания (например, режим внутреннего или внешнего предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215. The mode selector 260 may be configured to determine or select a split for a prediction mode of the current block (including no split) and a prediction mode (eg, intra or inter prediction mode) and generate a corresponding prediction block 265 that is used to calculate the residual block 205 and to restore the recovered block 215.
Варианты осуществления блока 260 выбора режима могут быть выполнены с возможностью выбора разделения и режима предсказания (например, из тех, которые поддерживаются блоком 260 выбора режима или доступны для него), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные непроизводительные затраты на сигнализацию (минимальные непроизводительные затраты на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба фактора. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации искажения скорости (Rate Distortion Optimization, RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как "лучший", "минимальный", "оптимальный" и т. д. в этом контексте не обязательно относятся к всеобъемлющему "лучшему", "минимуму", "оптимальному" и т. д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к "субоптимальному выбору", но уменьшающих сложность и время обработки. Embodiments of the mode selector 260 may be configured to select a split and prediction mode (e.g., from those supported by or available to the mode selector 260) that provides the best match, or in other words, the minimum remainder (the minimum remainder means the best compression for transmission or storage), or minimal signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which takes into account or balances both factors. The mode selector 260 may be configured to determine a division and prediction mode based on Rate Distortion Optimization (RDO), that is, selecting a prediction mode that provides minimal rate distortion. Terms such as "best", "minimum", "optimal", etc. in this context do not necessarily refer to the all-encompassing "best", "minimum", "optimal", etc., but may also refer to meeting a selection or termination criterion, such as when a value exceeds or falls below a threshold, or other constraints, potentially leading to "suboptimal selection" but reducing complexity and processing time.
Другими словами, блок 262 разбиения может быть выполнен с возможностью разделения блока 203 на более мелкие разделы блока или субблоки (которые снова образуют блоки), например итеративно с использованием разделения квадродерева (QT), двоичного разделения (BT), или разделения троичного дерева (TT) или любой их комбинации, и выполнения, например, предсказания для каждого из разделов блока или субблоков, при этом выбор режима содержит выбор древовидной структуры разделяемого блока 203, а режимы предсказания применяются к каждому из разделов блока или субблоков. In other words, partitioner 262 may be configured to partition block 203 into smaller block sections or sub-blocks (which form blocks again), for example, iteratively using quadtree (QT) partitioning, binary tree partitioning (BT), or ternary tree partitioning (TT). ) or any combination thereof, and performing, for example, prediction for each of the sections of the block or sub-blocks, wherein the mode selection comprises selecting a tree structure of the shared block 203, and the prediction modes are applied to each of the sections of the block or sub-blocks.
Далее более подробно поясняется разбиение (например, посредством блока 260 разбиения) и обработка предсказания (посредством блока 244 внешнего предсказания и блока 254 внутреннего предсказания), выполняемые примерным видеокодером 20. Next, the partitioning (e.g., through partitioner 260) and prediction processing (via inter prediction unit 244 and intra prediction unit 254) performed by the exemplary video encoder 20 are explained in more detail.
РазбиениеSplitting
Блок 262 разбиения может разделять (или разбивать) текущий блок 203 на более мелкие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например на корневом уровне 0 дерева (уровне 0 иерархии, глубине 0), может быть рекурсивно разделен, например разделен на два или более блоков следующего более низкого уровня дерева, например узлов на уровне 1 дерева (уровне 1 иерархии, глубине 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например уровня 2 дерева (уровня 2 иерархии, глубины 2), и т. д. пока разделение не будет завершено, например из-за выполнения критерия прекращения, например достижения максимальной глубины дерева или минимального размера блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT). A splitter 262 may divide (or split) the current block 203 into smaller sections, such as smaller square or rectangular sized blocks. These smaller blocks (which may also be called subblocks) can be further divided into even smaller sections. This is also called tree partitioning or hierarchical tree partitioning, in which the root block, for example at root level 0 of the tree (hierarchy level 0, depth 0), can be recursively partitioned, for example divided into two or more blocks of the next lower tree level, such as nodes at tree level 1 (hierarchy level 1, depth 1), whereby these blocks can be again divided into two or more blocks of the next lower level, such as tree level 2 (hierarchy level 2, depth 2), etc. until the split will not complete, for example because a termination criterion has been met, such as reaching the maximum tree depth or minimum block size. Blocks that are not further divided are also called leaf blocks or leaf nodes of a tree. A tree using two partitions is called a binary tree (BT), a tree using three partitions is called a ternary tree (TT), and a tree using four partitions is called a quadtree (QT).
Как упоминалось ранее, используемый здесь термин "блок" может быть частью, в частности квадратной или прямоугольной частью изображения. Что касается, например, HEVC и VVC, блок может быть или соответствовать единице дерева кодирования (CTU), единице кодирования (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующим блокам, например блоку дерева кодирования (CTB), блоку кодирования (CB), блоку преобразования (TB) или блоку предсказания (PB). As mentioned previously, the term "block" as used herein may be a portion, particularly a square or rectangular portion of an image. With respect to, for example, HEVC and VVC, a block may be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU) and/or corresponding blocks, such as a coding tree block (CTB ), a coding block (CB), a transform block (TB), or a prediction block (PB).
Например, единица дерева кодирования (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок дерева кодирования (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодирования (CU) может быть или содержать блок кодирования выборок яркости, два соответствующих блока кодирования выборок цветности изображения, которое имеет три массива выборок, или блок кодирования выборок монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. Соответственно, блок кодирования (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодирования является разделением. For example, a coding tree unit (CTU) may be or contain a CTB of luma samples, two corresponding CTBs of chroma samples of an image that has three arrays of samples, or a CTB of samples of a monochrome image or an image that is encoded using three separate color planes and the syntax structures used for encoding samples. Accordingly, a coding tree block (CTB) may be an N×N block of samples for some value of N, such that dividing a component by the CTB is a division. A coding unit (CU) may be or comprise a luma sample encoding unit, two corresponding chroma sample encoding units of an image that has three sample arrays, or a monochrome image sample encoding unit or an image that is encoded using three separate color planes and syntax structures used for encoding samples. Accordingly, a coding block (CB) may be an M×N block of samples for some values of M and N, so that dividing the CTB into coding blocks is a division.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодирования. Решение о том, следует ли кодировать область изображения с использованием предсказания интер-изображения (временного) или интра-изображения (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодирования для CU. In embodiments, for example, according to HEVC, a coding tree unit (CTU) can be partitioned into CUs using a quadtree structure designated as a coding tree. The decision of whether to encode an image region using inter-image (temporal) or intra-image (spatial) prediction is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the PU partition type. Within a single PU, the same prediction process is applied, and the relevant information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partition type on the PU, the CU can be divided into transform units (TUs) according to another quadtree structure similar to the encoding tree for the CU.
В вариантах осуществления, например в соответствии с разрабатываемым в настоящее время наиболее новым стандартом видеокодирования, который называется универсальное видеокодирование (VVC), для разделения блока кодирования используется, например, разделение комбинированного квадродерева и двоичного дерева (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодирования (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или троичной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно, вместе с блочной структурой QTBT можно использовать множественный раздел, например раздел троичного дерева. In embodiments, for example, in accordance with the newest video coding standard currently under development, called Versatile Video Coding (VVC), for example, a combined quadtree and binary tree (QTBT) partitioning is used to partition the encoding block. In a block structure, a QTBT CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first divided into a quadtree structure. The leaf nodes of a quadtree are further separated by a binary tree or ternary (or triple) tree structure. The leaf nodes of a partitioning tree are called coding units (CUs), and this partitioning is used to process prediction and transformation without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel, a multiple partition, such as a ternary tree partition, can be used in conjunction with the QTBT block structure.
В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разбиения, описанных в данном документе. In one example, the mode selector 260 of the video encoder 20 may be configured to perform any combination of partitioning methods described herein.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания. As described above, video encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (eg, predetermined) prediction modes. The set of prediction modes may comprise, for example, intra prediction modes and/or inter prediction modes.
Внутреннее предсказаниеInternal prediction
Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в HEVC, или может содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или среднего) и планарный режим, или направленные режимы, например, как определены в VVC. The set of intra prediction modes may contain 35 different intra prediction modes, e.g., non-directional modes such as DC (or average) mode and planar mode, or directional modes, such as those defined in HEVC, or may contain 67 different intra prediction modes, e.g. non-directional modes such as DC (or average) mode and planar mode, or directional modes such as those defined in VVC.
Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных дискретных выборок соседних блоков одного и того же текущего изображения для формирования блока 265 внутреннего предсказания в соответствии с режимом внутреннего предсказания набора режимов внутреннего предсказания. The intra prediction block 254 is configured to use reconstructed discrete samples of adjacent blocks of the same current image to generate an intra prediction block 265 in accordance with an intra prediction mode of a set of intra prediction modes.
Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования. The intra prediction block 254 (or more generally the mode selector 260) is further configured to output intra prediction parameters (or more generally information indicating the selected intra prediction mode for the block) to the entropy encoding block 270 in the form of syntax elements 266 for including an image in the encoded data 21 so that, for example, the video decoder 30 can receive and use the prediction parameters for decoding.
Внешнее предсказаниеExternal prediction
Набор (возможных) режимов внешнего предсказания зависит от доступных опорных изображений (то есть предыдущих, по меньшей мере частично декодированных изображений, например сохраненных в DBP 230) и других параметров внешнего предсказания, например используется ли опорное изображение целиком или только часть, например область окна поиска вокруг области текущего блока, опорного изображения для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например полупиксельная (half/semi-pel) и/или четвертьпиксельная (quarter-pel) интерполяция, или нет. The set of (possible) inter prediction modes depends on the available reference pictures (i.e., previous, at least partially decoded pictures, such as those stored in DBP 230) and other inter prediction parameters, such as whether the entire reference picture is used or only a portion, such as a search window area around the region of the current block, a reference image to find the most suitable reference block and/or, for example, whether pixel interpolation, such as half/semi-pel and/or quarter-pel interpolation, is applied or not.
В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим. In addition to the above prediction modes, a skip mode and/or a direct mode may be used.
Блок 244 внешнего предсказания может включать в себя блок оценки движения (Motion Estimation, ME) и блок компенсации движения (Motion Compensation, MC) (оба на Фиг. 2 не показаны). Блок оценки движения может быть выполнен с возможностью приема или получения блока 203 изображения (блока 203 текущего изображения текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или множества ранее восстановленных блоков, например восстановленных блоков одного или множества других/отличных ранее декодированных изображений 231, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 231 или, другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность. The inter-prediction block 244 may include a Motion Estimation (ME) block and a Motion Compensation (MC) block (both not shown in FIG. 2). The motion estimator may be configured to receive or obtain an image block 203 (current image block 203 of the current image 17) and a decoded image 231, or at least one or more previously reconstructed blocks, such as reconstructed blocks of one or more different/different previously decoded ones. 231 images for motion estimation. For example, the video sequence may comprise the current image and previously decoded images 231 or, in other words, the current image and previously decoded images 231 may be part of or form a sequence of images making up the video sequence.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных изображений из множества других изображений и обеспечения опорного изображения (или индекса опорного изображения) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV). The encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different images from a plurality of other images and provide a reference image (or reference image index) and/or an offset (spatial offset) between the position (x, y coordinates ) of the reference block and the position of the current block as inter-prediction parameters to the motion estimation block. This displacement is also called motion vector (MV).
Блок компенсации движения выполнен с возможностью получения, например - приема, параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может формировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число блоков предсказания-кандидатов, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU блока текущего изображения блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных изображений. The motion compensation unit is configured to obtain, for example, receive, an inter prediction parameter and perform inter prediction based on or using the inter prediction parameter to obtain an inter prediction unit 265. The motion compensation performed by the motion compensation block may include obtaining or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolations with sub-pixel accuracy. Interpolation filtering can generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. After receiving the motion vector for the PU block of the current image, the motion compensation block may locate the prediction block pointed to by the motion vector in one of the reference picture lists.
Блок компенсации движения может также формировать синтаксические элементы, связанные с блоками и слайсами видео, для использования видеодекодером 30 при декодировании блоков изображения слайса видео. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут формироваться или использоваться группы мозаичных элементов и/или мозаичные элементы и соответствующие синтаксические элементы. The motion compensation block may also generate syntax elements associated with video blocks and slices for use by video decoder 30 when decoding image blocks of a video slice. In addition to or as an alternative to slices and corresponding syntactic elements, groups of tiles and/or tiles and corresponding syntactic elements may be formed or used.
Энтропийное кодированиеEntropy coding
Блок 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разделением интервала вероятности (PIPE) или другого способа или методологии энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других синтаксических элементов для получения кодированных данных 21 изображения, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования, . Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30. The entropy encoding block 270 is configured to employ, for example, an entropy encoding algorithm or scheme (e.g., a variable length coding (VLC) scheme, a context adaptive VLC (CAVLC) scheme, an arithmetic encoding scheme, binarization, a context adaptive binary arithmetic encoding ( CABAC) based on the syntax of context adaptive binary arithmetic coding (SBAC), probability interval entropy encoding (PIPE) or other entropy encoding method or methodology) or bypass (uncompressed) with respect to quantized coefficients 209, inter prediction parameters, parameters intra prediction, loop filter parameters, and/or other syntax elements to obtain encoded image data 21, which may be output via output 272, for example in the form of an encoded bitstream 21, so that, for example, video decoder 30 can receive and use these parameters for decoding, . The encoded bitstream 21 may be transmitted to video decoder 30 or stored in memory for later transmission or retrieval by video decoder 30.
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.Other changes to the structure of video encoder 20 may be used to encode the video stream. For example, non-transform encoder 20 may quantize the residual signal directly without transform processing unit 206. In another implementation, encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.
Декодер и способ декодированияDecoder and decoding method
Фиг. 3 показывает пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема кодированных данных 21 изображения (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированное изображение 331. Кодированные данные изображения или битовый поток содержит информацию для декодирования кодированных данных изображения, например данных, которые представляют блоки изображения кодированного слайса видео (и/или мозаичных элементов или групп мозаичных элементов) и связанные синтаксические элементы. Fig. 3 shows an example of a video decoder 30 that is configured to implement the methods of the present application. Video decoder 30 is configured to receive encoded image data 21 (e.g., encoded bitstream 21), such as encoded by encoder 20, to obtain a decoded image 331. The encoded image data or bitstream contains information for decoding the encoded image data, e.g., data that represents blocks images of the encoded video slice (and/or tiles or groups of tiles) and associated syntactic elements.
В примере на Фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер 330 (DPB) декодированных изображений, блок 360 применения режима, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2. In the example in FIG. 3, the decoder 30 includes an entropy decoding block 304, an inverse quantization block 310, an inverse transform processing block 312, a recovery block 314 (eg, adder 314), a loop filter 320, a decoded image buffer (DPB) 330, a mode applying block 360, a block 344 inter prediction and intra prediction block 354. The inter prediction unit 344 may be or include a motion compensation unit. Video decoder 30 may, in some examples, perform a decoding step that is generally the reverse of the encoding step described with respect to video encoder 100 in FIG. 2.
Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных изображений, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию "встроенного декодера" видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных изображений может быть идентичен по функции буферу 230 декодированных изображений. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30. As described with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded image buffer (DPB) 230, the inter-prediction unit 344, and the intra-prediction unit 354 also relate to forming the “embedded decoder”. " video encoder 20. Accordingly, the inverse quantization block 310 may be identical in function to the inverse quantization block 110, the inverse transform processing block 312 may be identical in function to the inverse transform processing block 212, the restoration block 314 may be identical in function to the reconstruction block 214, loop filter 320 may be identical in function to loop filter 220, and decoded image buffer 330 may be identical in function to decoded image buffer 230. Therefore, the explanations provided for the corresponding blocks and functions of the video encoder 20 apply correspondingly to the corresponding blocks and functions of the video decoder 30.
Энтропийное декодированиеEntropy Decoding
Блок 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, кодированных данных 21 изображения) и выполнения, например, энтропийного декодирования для кодированных данных 21 изображения, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг.3), например, любые или все из параметров внешнего предсказания (например, индекс опорного снимка и вектор движения), параметр внутреннего предсказания (например, индекс или режим внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении блока 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других синтаксических элементов блоку 360 применения режима и других параметров другим блокам декодера 30. предсказания. Видеодекодер 30 может принимать синтаксические элементы на уровне слайса видео и/или уровне видеоблока. В дополнение или в качестве альтернативы слайсам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы мозаичных элементов и/или мозаичные элементы и соответствующие синтаксические элементы. Entropy decoding unit 304 is configured to parse bitstream 21 (or generally encoded image data 21) and perform, for example, entropy decoding on encoded image data 21 to obtain, for example, quantized coefficients 309 and/or decoded encoding parameters (not shown in FIG. 3), e.g., any or all of the inter prediction parameters (e.g., reference picture index and motion vector), intra prediction parameter (e.g., index or intra prediction mode), transform parameters, quantization parameters, contour parameters filter and/or other syntactic elements. The entropy decoding block 304 may be configured to apply decoding algorithms or schemes corresponding to the encoding schemes as described with respect to the entropy encoding block 270 of the encoder 20. The entropy decoding block 304 may be further configured to provide inter prediction parameters, an intra prediction parameter, and/or or other syntax elements to block 360 for applying the mode and other parameters to other blocks of prediction decoder 30. Video decoder 30 may receive syntax elements at the video slice level and/or video block level. In addition to or as an alternative to slices and corresponding syntax elements, groups of tiles and/or tiles and corresponding syntax elements may be received and/or used.
Обратное квантованиеInverse quantization
Блок 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) и применения, на основе параметров квантования, обратного квантования в отношении декодированным квантованных коэффициентов 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеослайсе (или мозаичном элементе или группе мозаичных элементов), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена. The inverse quantization unit 310 may be configured to receive quantization parameters (QPs) (or, more generally, information related to inverse quantization) and quantized coefficients from the encoded image data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoding block 304) and applying, based on the quantization parameters, inverse quantization on the decoded quantized coefficients 309 to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by video encoder 20 for each video block in a video slice (or tile or group of tiles) to determine the degree of quantization and, likewise, the degree of inverse quantization to be applied.
Обратное преобразованиеReverse conversion
Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое подлежит применению к деквантованным коэффициентам 311. The inverse transform processing unit 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and apply a transform to the dequantized coefficients 311 to obtain reconstructed residual blocks 213 in the sample region. The reconstructed residual blocks 213 may also be referred to as transform blocks 313. The conversion may be an inverse transform, such as an inverse DCT, an inverse DST, an integer integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may be further configured to receive transform parameters or corresponding information from the encoded image data 21 (e.g., by parsing and/or decoding, such as through an entropy decoding unit 304) to determine a transform to be applied to dequantized coefficients 311.
ВосстановлениеRecovery
Блок 314 восстановления (например, блок сложения или сумматор 314) может быть выполнен с возможностью сложения восстановленного остаточного блока 313 с блоком 365 предсказания, чтобы получить восстановленный блок 315 в области выборок, например посредством сложения значений выборок восстановленного остаточного блока 313 и значений выборок блока 365 предсказания. A reconstruction block 314 (e.g., an add block or an adder 314) may be configured to add the reconstructed residual block 313 with a prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example by adding the sample values of the reconstructed residual block 313 and the sample values of the block 365 predictions.
ФильтрацияFiltration
Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, фильтр с адаптивным к выборке смещением (SAO), или один или более других фильтров, таких как двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры сглаживания, повышения резкости или совместные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр. A loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to produce a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. Loop filter block 320 may include one or more loop filters, such as a deblocking filter, a sample-adaptive offset (SAO) filter, or one or more other filters, such as a two-way filter, an adaptive loop filter (ALF), anti-aliasing filters, enhancement filters, etc. sharpening or joint filters, or any combination of them. Although the loop filter block 320 is shown in FIG. 3 as a loop filter, in other configurations the loop filter block 320 may be implemented as a post-loop filter.
Буфер декодированных изображенийDecoded Image Buffer
Декодированные видеоблоки 321 снимка затем сохраняются в буфере 330 декодированных изображений, который сохраняет декодированные изображения 331 в качестве опорных снимков для последующей компенсации движения для других снимков и/или для вывода, соответственно, отображения. The decoded video blocks 321 of pictures are then stored in a decoded picture buffer 330, which stores the decoded pictures 331 as reference pictures for subsequent motion compensation for other pictures and/or for display output, respectively.
Декодер 30 выполнен с возможностью вывода декодированного изображения 311, например, через вывод 312 для представления или просмотра пользователю. The decoder 30 is configured to output the decoded image 311, for example, through an output 312 for presentation or viewing to a user.
ПредсказаниеPrediction
Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, блоку компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разделения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутреннего или внешнего предсказания) для каждого блока на основе восстановленных изображений, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания. The inter prediction block 344 may be identical to the inter prediction block 244 (in particular, the motion compensation block), and the intra prediction block 354 may be identical to the inter prediction block 254 in function, and makes splitting or splitting decisions and performs prediction based on the splitting parameters and /or prediction or related information received from the encoded image data 21 (eg, by parsing and/or decoding, eg, by entropy decoding unit 304). The mode application block 360 may be configured to perform prediction (intra or inter prediction) for each block based on the reconstructed images, blocks, or corresponding samples (filtered or unfiltered) to obtain a prediction block 365.
Когда видеослайс кодируется как интра-кодируемый (I) слайс, блок 354 внутреннего предсказания блока 360 применения режима выполнен с возможностью формирования блока 365 предсказания для блока изображения текущего видеослайса на основе просигнализированного режима внутреннего предсказания и данных из ранее декодированных блоков текущего изображения. Когда видеоизображение кодируется как интер-кодируемый (т.е. B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 применения режима выполнен с возможностью создания блоков 365 предсказания для видеоблока текущего видеослайса на основе векторов движения и других синтаксических элементов, принимаемых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одного из опорных изображений в пределах одного из списков опорных изображений. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя способы построения по умолчанию на основе опорных изображений, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп мозаичных элементов (например, групп мозаичных элементов видео) и/или мозаичных элементов (например, мозаичных элементов видео) в дополнение или альтернативно к слайсам (например, слайсам видео), например, видео может быть кодировано с использованием групп I, P или B мозаичных элементов и/или мозаичных элементов. When a video slice is encoded as an intra-encoded (I) slice, an intra prediction block 354 of a mode applying block 360 is configured to generate a prediction block 365 for an image block of the current video slice based on the signaled intra prediction mode and data from previously decoded current image blocks. When a video image is encoded as an inter-encoded (i.e., B or P) slice, an inter-prediction block 344 (e.g., a motion compensation block) of the mode applying block 360 is configured to create prediction blocks 365 for the video block of the current video slice based on motion vectors and other syntax elements received from entropy decoding unit 304. For inter-prediction, prediction blocks may be created from one of the reference pictures within one of the reference picture lists. Video decoder 30 may construct reference picture lists, List 0 and List 1, using default construction methods based on reference pictures stored in DPB 330. The same or similar may be used for or through embodiments using groups of tiles (e.g., groups video tiles) and/or tiles (e.g., video tiles) in addition to or alternatively to slices (e.g., video slices), for example, the video may be encoded using groups I, P, or B of tiles and/or tiles .
Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеослайса путем синтаксического анализа векторов движения или связанной информации и других синтаксических элементов, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима предсказания (например, внутреннее или внешнее предсказание, используемого для кодирования видеоблоков видеослайса, типа слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информации построения для одного или более списков опорных изображений для слайса, векторов движения для каждого интер-кодированного видеоблока слайса, статуса внешнего предсказания для каждого интер-кодированного видеоблока слайса, а также другой информации для декодирования видеоблоков в текущем видеослайсе. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп мозаичных элементов (например, групп мозаичных элементов видео) и/или мозаичных элементов (например, мозаичных элементов видео) в дополнение или альтернативно к слайсам (например, слайсам видео, например, видео может быть кодировано с использованием групп I, P или B мозаичных элементов и/или мозаичных элементов. The mode applying unit 360 is configured to determine prediction information for a video block of the current video slice by parsing motion vectors or related information and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode apply block 360 uses some of the received syntax elements to determine the prediction mode (e.g., intra or inter prediction used to encode video slice video blocks, type of inter prediction slice (e.g., B-slice, P-slice, or GPB slice), construction information for one or more reference picture lists for a slice, motion vectors for each inter-coded video block of the slice, inter-prediction status for each inter-coded video block of the slice, and other information for decoding video blocks in the current video slice. The same or similar may. apply to or through embodiments using tile groups (e.g., video tile groups) and/or tiles (e.g., video tiles) in addition to or alternatively to slices (e.g., video slices, e.g., video may be encoded with using groups I, P or B of tiles and/or tiles.
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием слайсов (также именуемых видеослайсами), при этом изображение может быть разделено на или декодировано с использованием одного или более слайсов (обычно не перекрывающихся), и каждый слайс может содержать один или более блоков (например, CTU). Embodiments of video decoder 30, as shown in FIG. 3 may be configured to divide and/or decode an image using slices (also referred to as video slices), wherein the image may be divided into or decoded using one or more slices (usually non-overlapping), and each slice may contain one or more blocks (for example, CTU).
Варианты осуществления видеодекодера 30, показанные на Фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения с использованием групп мозаичных элементов (также называемых группами мозаичных элементов видео) и/или мозаичных элементов (также называемых мозаичными элементами видео), при этом изображение может быть разделено на или декодировано с использованием одной или более групп мозаичных элементов (обычно не перекрывающихся), и каждая группа мозаичных элементов может содержать, например один или более блоков (например, CTU) или один или более мозаичных элементов, при этом каждый мозаичный элемент, в качестве примера, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), таких как полные или частичные блоки. Embodiments of video decoder 30 shown in FIG. 3 may be configured to divide and/or decode an image using tile groups (also called video tile groups) and/or tiles (also called video tiles), wherein the image may be divided into or decoded using one or more groups of tiles (typically non-overlapping), and each group of tiles may comprise, for example, one or more blocks (eg, CTUs) or one or more tiles, wherein each tile, for example, may have a rectangular form and may contain one or more blocks (eg, CTUs), such as full or partial blocks.
Другие варианты видеодекодера 30 могут использоваться для декодирования кодированных данных 21 изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок. Other embodiments of the video decoder 30 may be used to decode the encoded image data 21. For example, decoder 30 may produce an output video stream without loop filter block 320. For example, the non-transform decoder 30 may perform inverse quantization of the residual signal directly without the inversion processing block 312 for certain blocks or frames. In another implementation, video decoder 30 may have an inverse quantization block 310 and an inverse transform processing block 312 combined into one block.
Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап. Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации. It should be understood that in the encoder 20 and decoder 30, the result of processing of some current stage may be further processed and then output to the next stage. For example, after interpolation filtering, motion vector acquisition, or contour filtering, an additional operation such as Clip or offset may be performed on the result of the interpolation filtering, motion vector acquisition, or contour filtering processing.
Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается заранее определенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где "^" означает возведение в степень. Например, если bitDepth равна 16, диапазон составляет -32768~32767; если bitDepth равна 18, диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех субблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth. It should be noted that additional operations may be applied to the resulting current block motion vectors (including, but not limited to, affine mode checkpoint motion vectors, affine mode subblock motion vectors, planar mode motion vectors, ATMVP mode motion vectors, temporary motion vectors, and the like). For example, the value of a motion vector is limited to a predetermined range according to its representing bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is 16, the range is -32768~32767; if bitDepth is 18, the range is -131072~131071. For example, the value of the resulting motion vector (eg, the MV of four 4x4 subblocks in one 8x8 block) is limited such that the maximum difference between the entire portions of the MV of the four 4x4 subblocks is no more than N pixels, eg, no more than 1 pixel. Here are two ways to constrain the motion vector according to bitDepth.
Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операцийMethod 1: Removing MSB (Most Significant Bit) Overflow via Streaming Operations
ux= ( mvx+2bitDepth ) % 2bitDepth (1)ux= ( mvx+2bitDepth ) % 2bitDepth (1)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (2)mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (2)
uy= ( mvy+2bitDepth ) % 2bitDepth (3)uy= ( mvy+2bitDepth ) % 2bitDepth (3)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ): uy (4)mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ): uy (4)
где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение; where mvx represents the horizontal component of the motion vector of the image block or sub-block, mvy represents the vertical component of the motion vector of the image block or sub-block, and ux and uy indicate an intermediate value;
Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двойки является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2). For example, if the value of mvx is -32769, after applying formulas (1) and (2), the resulting value is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement for -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal is 32767), which is the same as the output from the application of formulas (1) and (2).
ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth (5)ux= ( mvpx + mvdx +2bitDepth ) % 2bitDepth (5)
mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (6)mvx = ( ux >= 2bitDepth-1 ) ? (ux − 2bitDepth ): ux (6)
uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth (7)uy= ( mvpy + mvdy +2bitDepth ) % 2bitDepth (7)
mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ): uy (8)mvy = ( uy >= 2bitDepth-1 ) ? (uy − 2bitDepth ): uy (8)
Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).Operations can be applied during the summation of mvp and mvd, as shown in formulas (5) to (8).
Способ 2: удаление MSB переполнения посредством усечения значенияMethod 2: Remove MSB overflow by truncating the value
vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)vx = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)vy = Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим: where vx represents the horizontal component of the motion vector of the image block or sub-block, vy represents the vertical component of the motion vector of the image block or sub-block; x, y and z respectively correspond to the three input values of the MV clipping process, and the definition of the Clip3 function is as follows:
Clip3( x, y, z ) = Clip3( x, y, z ) =
Фиг. 4 является схематичным представлением устройства 400 видеокодирования согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 по Фиг. 1A, или кодером, таким как видеокодер 20 по Фиг. 1А. Fig. 4 is a schematic diagram of a video encoding apparatus 400 according to an embodiment of the present disclosure. Video encoding apparatus 400 is suitable for implementing the disclosed embodiments that are described herein. In an embodiment, video encoding device 400 may be a decoder, such as video decoder 30 of FIG. 1A, or an encoder such as video encoder 20 of FIG. 1A.
Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов. The video encoding device 400 includes input ports 410 (or input ports 410) and receiver (Rx) blocks 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmitter (Tx) blocks 440 and output ports 450 (or output ports 450) for data transmission; and a memory 460 for storing data. Video encoding device 400 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components connected to input ports 410, receiver blocks 420, transmitter blocks 440, and output ports 450 to provide optical or optical input or output. electrical signals.
Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Следовательно, включение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает трансформацию устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430. The processor 430 is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, a multi-core processor), FPGA, ASIC, and DSP. Processor 430 communicates with input ports 410, receiver units 420, transmitter units 440, output ports 450, and memory 460. Processor 430 includes an encoding module 470. Encoding module 470 implements the disclosed embodiments described above. For example, encoding module 470 implements, processes, prepares, or provides various encoding operations. Therefore, turning on the encoding module 470 provides a significant improvement in the functionality of the video encoding device 400 and allows the video encoding device 400 to be transformed into a different state. Alternatively, encoding module 470 is implemented as instructions stored in memory 460 and executed by processor 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM). Memory 460 may include one or more disks, tape drives, and solid-state drives and may be used as an overflow storage device for storing programs when such programs are selected for execution and for storing instructions and data that are read during execution of the programs. Memory 460 may be, for example, volatile and/or non-volatile and may be read only memory (ROM), random access memory (RAM), ternary memory associative memory (TCAM), and/or static random access memory (SRAM).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1 согласно примерному варианту осуществления. Fig. 5 is a simplified block diagram of a device 500 that can be used as one or both of the source device 12 and the destination device 14 of FIG. 1 according to an exemplary embodiment .
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора. The processor 502 in the device 500 may be a central processing unit. Alternatively, processor 502 may be any other type of device or plurality of devices capable of manipulating or processing information that currently exists or will be developed in the future. Although the disclosed implementations may be practiced with a single processor, as shown, for example, with processor 502, speed and efficiency benefits may be achieved by using more than one processor.
Память 504 в устройстве 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодирования, которое выполняет описанные в данном документе способы. Memory 504 in device 500 may be read-only memory (ROM) or random access memory (RAM) in an implementation. Memory 504 may be any other suitable type of storage device. Memory 504 may include code and data 506 accessed by processor 502 using bus 512. Memory 504 may further include an operating system 508 and application programs 510, wherein application programs 510 include at least one program which allows the processor 502 to perform the methods described herein. For example, application programs 510 may include applications 1 through N, which further include a video encoding application that performs the methods described herein.
Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорный ввод (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512. Device 500 may also include one or more output devices, such as a display 518. The display 518 may be, in one example, a touch display that combines a display with a touch element capable of sensing touch input (touch). Display 518 may be coupled to processor 502 via bus 512.
Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях. Although depicted here as a single bus, bus 512 of device 500 may be composed of multiple buses. In addition, secondary storage 514 may be directly coupled to other components of device 500 or may be accessible over a network and may comprise a single plug-in unit, such as a memory card, or multiple units, such as multiple memory cards. Thus, device 500 can be implemented in a wide variety of configurations.
На 14-м заседании JVET, состоявшемся в Женеве, был принят документ JVET-N0217: Принято аффинное линейно-взвешенное внутреннее предсказание (ALWIP).At the 14th meeting of JVET, held in Geneva, JVET-N0217 was adopted: Affine Linear Weighted Internal Prediction (ALWIP) Adopted.
В ALWIP представлены три новых набора внутренних режимов. Они есть: ALWIP introduces three new sets of indoor modes. They are:
35 режимов для блоков 4х4. 35 modes for 4x4 blocks.
19 режимов для блоков 8×4, 4×8 и 8×8. 19 modes for 8x4, 4x8 and 8x8 blocks.
11 режимов для других случаев, когда ширина и высота меньше или равны 64 выборкам. 11 modes for other cases where the width and height are less than or equal to 64 samples.
Соответственно, переменная о типе (sizeId) размера блока определяется в ALWIP следующим образом: Accordingly, the block size type variable (sizeId) is defined in ALWIP as follows:
Если размер блока равен 4×4, тип sizeId размера блока равен 0. If the block size is 4x4, the sizeId type of the block size is 0.
В противном случае, если размер блока равен 8×4, 4×8 или 8×8, тип sizeId размера блока равен 1. Otherwise, if the block size is 8x4, 4x8, or 8x8, the sizeId type of the block size is 1.
В противном случае, если размер блока не указан выше, а ширина и высота блока меньше 64, размер типа sizeId блока равен 2. Otherwise, if the block size is not specified above and the block's width and height are less than 64, the size of the block's sizeId type is 2.
Эти режимы формируют сигнал внутреннего предсказания яркости из одной строки опорных выборок слева и выше текущего блока путем умножения вектора матрицы и добавления смещения. По этой причине аффинное линейное взвешенное внутреннее предсказание также называется внутренним предсказанием на основе матрицы (MIP). В следующем тексте термины MIP и ALWIP являются взаимозаменяемыми, и оба они описывают инструмент JVET-N0217. These modes generate an internal luminance prediction signal from a single row of reference samples to the left and above the current block by multiplying the matrix vector and adding an offset. For this reason, affine linear weighted intra prediction is also called matrix-based intra prediction (MIP). In the following text, the terms MIP and ALWIP are used interchangeably and both describe the JVET-N0217 tool.
Для предсказания выборок прямоугольного блока шириной W и высотой H аффинное линейное взвешенное внутреннее предсказание (ALWIP) принимает в качестве входных данных одну строку из H восстановленных соседних граничных выборок слева от блока и одну строку из W восстановленных соседних граничных выборок над блоком. Если восстановленные выборки недоступны, они формируются, как это делается при обычном внутреннем предсказании. To predict samples of a rectangular block of width W and height H, affine linear weighted intra prediction (ALWIP) takes as input one row of H reconstructed neighboring boundary samples to the left of the block and one row of W reconstructed neighboring boundary samples above the block. If reconstructed samples are not available, they are generated as in normal internal prediction.
Формирование сигнала предсказания основывается на следующих трех этапах: The generation of the prediction signal is based on the following three steps:
1. Из граничных выборок четыре выборки в случае W=H=4 и восемь выборок во всех остальных случаях извлекаются путем усреднения. 1. From the boundary samples, four samples in the case of W=H=4 and eight samples in all other cases are extracted by averaging.
2. Выполняют матрично-векторное умножение, за которым следует добавление смещения, с усредненными выборками в качестве входных данных. Результатом является уменьшенный сигнал предсказания для субдискретизированного набора выборок в исходном блоке. 2. Perform matrix-vector multiplication followed by bias addition, with the averaged samples as input. The result is a reduced prediction signal for the subsampled set of samples in the original block.
3. Сигнал предсказания в оставшихся позициях формируется из сигнала предсказания на субдискретизированном наборе с помощью линейной интерполяции, которая представляет собой одноэтапную линейную интерполяцию в каждом направлении. 3. The prediction signal at the remaining positions is generated from the prediction signal on the subsampled set using linear interpolation, which is a one-step linear interpolation in each direction.
Весь процесс усреднения, матрично-векторного умножения и линейной интерполяции проиллюстрирован для различных форм на Фиг. 6-9. Обратите внимание, что остальные фигуры обрабатываются как в одном из изображенных случаев. The entire process of averaging, matrix-vector multiplication and linear interpolation is illustrated for various shapes in Fig. 6-9. Note that the remaining shapes are processed as in one of the cases depicted.
Фиг. 6 иллюстрирует процесс для блока 4×4. Для блока ALWIP берет два средних значения по каждой оси границы. Полученные четыре входных выборки входят в матричное умножение векторов. Матрицы берутся из набора . После добавления смещения это дает 16 окончательных выборок прогноза. Линейная интерполяция не требуется для формирования сигнала предсказания. Таким образом, выполняется всего умножения на выборку. Fig. 6 illustrates the process for a 4x4 block. For block ALWIP takes two averages along each boundary axis. The resulting four input samples enter a matrix vector multiplication. Matrices are taken from the set . After adding bias, this gives 16 final prediction samples. Linear interpolation is not required to generate a prediction signal. Thus, only multiplication by sample.
Фиг. 7 иллюстрирует процесс для блока . Для блока 8×8 ALWIP берет четыре средних значения по каждой оси границы. Полученные восемь входных выборок попадают в матрицу векторного умножения. Матрицы берутся из набора . Это дает 16 выборок на нечетных позициях блока предсказания. Таким образом, выполняется всего ( умножения на выборку. После добавления смещения эти выборки интерполируются вертикально с помощью уменьшенной верхней границы. За этим следует горизонтальная интерполяция с использованием исходной левой границы. Таким образом, для расчета прогноза ALWIP требуется всего 2 умножения на выборку. Fig. 7 illustrates the process for the block . For an 8x8 block, ALWIP takes four averages along each boundary axis. The resulting eight input samples go into the vector multiplication matrix. Matrices are taken from the set . This gives 16 samples at odd positions of the prediction block. Thus, only ( multiplication by sample. After adding offset, these samples are interpolated vertically using the reduced upper bound. This is followed by horizontal interpolation using the original left boundary. Thus, only 2 multiplications per sample are required to calculate the ALWIP forecast.
Фиг. 8 иллюстрирует процесс для блока . Для блока 8×4 ALWIP берет четыре средних значения по горизонтальной оси границы и четыре исходных граничных значения на левой границе. Полученные восемь входных выборок попадают в матрицу векторного умножения. Матрицы берутся из набора . Это дает 16 выборок по нечетным горизонтальным и каждой вертикальной позициям блока предсказания. Таким образом, выполняется всего ( умножения на выборку. После добавления смещения эти выборки интерполируются по горизонтали с помощью исходной левой границы. Таким образом, для расчета прогноза ALWIP требуется всего 4 умножения на выборку. Fig. 8 illustrates the process for the block . For an 8x4 block, ALWIP takes the four average values along the horizontal axis of the boundary and the four original boundary values on the left boundary. The resulting eight input samples go into the vector multiplication matrix. Matrices are taken from the set . This gives 16 samples at the odd horizontal and every vertical position of the prediction block. Thus, only ( multiplication by sample. After adding offset, these samples are interpolated horizontally using the original left boundary. Thus, only 4 multiplications per sample are required to calculate the ALWIP forecast.
Транспонированный случай обрабатывается соответствующим образом. The transposed case is handled accordingly.
Фиг. 9 иллюстрирует процесс для блока 16×16. Для блока ALWIP берет четыре средних значения по каждой оси границы. Полученные восемь входных выборок попадают в матрицу векторного умножения. Матрицы берутся из набора . Это дает 64 выборки на нечетных позициях блока предсказания. Таким образом, выполняется всего ( умножения на выборку. После добавления смещения эти выборки интерполируются по вертикали с использованием восьми средних значений верхней границы. За этим следует горизонтальная интерполяция с использованием исходной левой границы. Таким образом, для расчета прогноза ALWIP требуется всего два умножения на выборку. Fig. 9 illustrates the process for a 16x16 block. For block ALWIP takes four averages along each boundary axis. The resulting eight input samples go into the vector multiplication matrix. Matrices are taken from the set . This gives 64 samples at odd positions of the prediction block. Thus, only ( multiplication by sample. After adding offset, these samples are interpolated vertically using the eight upper bound averages. This is followed by horizontal interpolation using the original left boundary. Thus, only two multiplications per sample are required to calculate the ALWIP forecast.
Для больших форм процедура по существу такая же, и легко проверить, что количество умножений на выборку меньше четырех. For large forms the procedure is essentially the same, and it is easy to verify that the number of multiplications per sample is less than four.
Для блоков с необходима только горизонтальная интерполяция, поскольку выборки даны в нечетных горизонтальных и каждой вертикальной позициях. В этом случае для вычисления уменьшенного (сокращенного) предсказания выполняется ( умножений на выборку. Для количество дополнительных умножений на выборку, необходимое для линейной интерполяции, меньше двух. Таким образом, общее число умножений на выборку меньше или равно четырем. For blocks With Only horizontal interpolation is necessary since samples are given at odd horizontal and every vertical positions. In this case, to calculate the reduced (shortened) prediction, ( multiplications per sample. For the number of additional multiplications per sample required for linear interpolation is less than two. Thus, the total number of multiplications per sample is less than or equal to four.
Наконец, для блоков с , пусть - матрица, которая возникает, если исключить каждую строку, которая соответствует нечетной записи вдоль горизонтальной оси субдискретизированного блока. Таким образом, выходной размер равен 32, и снова остается выполнить только горизонтальную интерполяцию. Для вычисления уменьшенного предсказания выполняются умножений на выборку. Для никаких дополнительных умножений не требуется, в то время как для для линейной интерполяции требуется менее 2 умножений на выборку. Таким образом, общее число умножений на выборку меньше или равно четырем.Finally, for the blocks With , let is the matrix that results from eliminating each row that corresponds to an odd entry along the horizontal axis of the downsampled block. Thus, the output size is 32, and again only horizontal interpolation remains to be done. To calculate the reduced prediction, perform multiplications per sample. For no additional multiplications are required, while for Linear interpolation requires less than 2 multiplications per sample. Thus, the total number of multiplications per sample is less than or equal to four.
Транспонированные случаи обрабатываются соответствующим образом. Transposed cases are handled accordingly.
В сообщении JVET-N0217 подход, использующий список наиболее вероятных режимов (MPM), также применяется для кодирования внутри режима MIP. Для текущих блоков используются два списка MPM: In message JVET-N0217, the Most Probable Mode (MPM) list approach is also used for intra-MIP encoding. For current blocks, two MPM lists are used:
1. Когда текущий блок использует нормальный внутренний режим (то есть не внутренний режим MIP), используется список 6-MPM1. When the current block is using normal internal mode (i.e. not internal MIP mode), the 6-MPM list is used
2. Когда текущий блок использует внутренний режим MIP, используется список 3-MPM2. When the current block uses internal MIP mode, the 3-MPM list is used
Оба вышеуказанных списка MPM построены на основе режимов внутреннего предсказания их соседних блоков, поэтому могут возникнуть следующие случаи: Both of the above MPM lists are built based on the intra prediction modes of their neighboring blocks, so the following cases may arise:
1. Текущий блок является нормально внутренне предсказанным, в то время как к одному или более его соседним блокам/блоку применяется внутреннее предсказание MIP, или1. The current block is normally intra-predicted while one or more of its neighboring blocks/blocks has MIP intra-prediction applied, or
2. К текущему блоку применяется внутреннее предсказание MIP, в то время как к одному или более его соседним блокам/блоку применяется нормальное внутреннее предсказание. 2. MIP intra prediction is applied to the current block, while normal intra prediction is applied to one or more of its neighboring blocks/blocks.
При таких обстоятельствах соседние режимы внутреннего предсказания выводятся опосредованно с помощью таблиц соответствия. Under such circumstances, neighboring intra prediction modes are inferred indirectly using lookup tables.
В одном примере, когда текущий блок является нормально внутренне предсказаным, в то время как его вышеупомянутый блок (A), как показано на фиг. 13 применяется с внутренним предсказанием MIP, Data</GipSegment>In one example, when the current block is normally intra-predicted while its above block (A), as shown in FIG. 13 applies with internal MIP prediction, Data</GipSegment>
Используется следующая таблица 1 соответствия. На основе типов размера блока собственно находящегося выше блока и режима внутреннего предсказания MIP находящегося выше блока выводится режим нормального внутреннего предсказания. Аналогично, если левый (L) блок, показанный на фиг. 13 применяется с внутренним предсказанием MIP, на основе типов размера блока левого блока и режима внутреннего предсказания MIP левого блока выводится режим нормального внутреннего предсказания. The following correspondence table 1 is used. Based on the block size types of the actual block above and the MIP intra prediction mode of the block above, a normal intra prediction mode is derived. Likewise, if the left (L) block shown in FIG. 13 is applied with MIP intra prediction, based on the block size types of the left block and the MIP intra prediction mode of the left block, the normal intra prediction mode is output.
Таблица 1. Описание соответствия между режимами аффинного линейного взвешиваемого внутреннего предсказания и внутреннего предсказанияTable 1. Description of the correspondence between affine linear weighted intra prediction and intra prediction modes
В одном примере, когда текущий блок применяется с внутренним предсказанием MIP, и его вышеупомянутый блок (A), как показано на фиг. 14 предсказывается с использованием нормального внутреннего режима, используется следующая таблица 2 соответствия. На основе типов размера блока собственно находящегося выше блока и режима нормального внутреннего предсказания находящегося выше блока выводится режим внутреннего предсказания MIP. Аналогично, если левый (L) блок, показанный на фиг. 14 применяется с нормальным внутренним предсказанием, на основе типов размера блока левого блока и режима нормального внутреннего предсказания левого блока выводится режим внутреннего предсказания MIP. In one example, when the current block is applied with intra MIP prediction, and its aforementioned block (A), as shown in FIG. 14 is predicted using normal internal mode, the following correspondence table 2 is used. Based on the block size types of the actual upstream block and the normal intra prediction mode of the upstream block, the intra prediction mode MIP is derived. Likewise, if the left (L) block shown in FIG. 14 is applied with normal intra prediction, based on the block size types of the left block and the normal intra prediction mode of the left block, the intra prediction mode MIP is output.
Таблица 2. Описание соответствия между режимами внутреннего предсказания и аффинного линейного взвешиваемого внутреннего предсказанияTable 2. Description of the correspondence between intra prediction and affine linear weighted intra prediction modes
В JEM вторичное преобразование применяется между прямым первичным преобразованием и квантованием (в кодере) и между деквантованием и обратным первичным преобразованием (на стороне декодера). Как показано на фиг. 10, 4×4 (или 8×8) выполняется вторичное преобразование в зависимости от размера блока. Например, вторичное преобразование 4×4 применяется к небольшим блокам (т.е. min(ширина, высота) <8), а вторичное преобразование 8×8 применяется к большим блокам (т.е. min(ширина, высота) > 4) на блок 8×8.In JEM, a secondary transform is applied between the forward primary transform and quantization (at the encoder) and between dequantization and the inverse primary transform (at the decoder side). As shown in FIG. 10, 4x4 (or 8x8) performs a secondary conversion depending on the block size. For example, the 4x4 secondary transform is applied to small blocks (i.e. min(width, height) < 8), and the 8x8 secondary transform is applied to large blocks (i.e. min(width, height) > 4) per 8x8 block.
Применение неразделимого преобразования описывается ниже на примере ввода. Чтобы применить неразделимое преобразование, входной блок X 4×4The application of the inseparable transformation is described below using an input example. To apply an inseparable transformation, the input block is X 4x4
(1) (1)
сначала представляется как вектор :first represented as a vector :
(2) (2)
Неразделимое преобразование вычисляется как , где указывает вектор коэффициентов преобразования, а T - матрица преобразования 16×16. Вектор коэффициентов 16×1 впоследствии реорганизуется в блок 4×4 с использованием порядка сканирования для этого блока (горизонтального, вертикального или диагонального). Коэффициенты с меньшим индексом будут помещены с меньшим индексом сканирования в блок коэффициентов 4×4. Всего имеется 35 наборов преобразований и используются 3 матрицы неразделимого преобразования (ядра) на каждый набор преобразований. Отображение из (соответствие между) режима внутреннего предсказания в набор преобразований задано заранее. Для каждого набора преобразований выбранный кандидат неразделимого вторичного преобразования дополнительно определяется явно сигнализируемым индексом вторичного преобразования. Индекс передается в битовом потоке один раз на Intra CU после коэффициентов преобразования. The inseparable transformation is calculated as , Where indicates a vector of transformation coefficients, and T is a 16x16 transformation matrix. Vector The 16x1 coefficients are subsequently reorganized into a 4x4 block using the scan order for that block (horizontal, vertical, or diagonal). Coefficients with a lower index will be placed with a lower scan index into a 4x4 coefficient block. There are a total of 35 transformation sets and 3 inseparable transformation matrices (kernels) are used per transformation set. The mapping from (correspondence between) the intra prediction mode to the set of transformations is predetermined. For each set of transforms, the selected inseparable secondary transform candidate is further determined by an explicitly signaled secondary transform index. The index is transmitted in the bitstream once to the Intra CU after the conversion factors.
В VVC 5.0 сокращенное вторичное преобразование (RST) принято с предложением JVET-N0193 в качестве нового инструмента кодирования со следующими функциями. In VVC 5.0, Reduced Secondary Transform (RST) is adopted by offering JVET-N0193 as a new encoding tool with the following features.
Основная идея сокращенного преобразования (Reduced Transform, RT) состоит в том, чтобы отобразить вектор размерности N в вектор размерности R в другом пространстве, где R/N (R <N) - коэффициент уменьшения. The basic idea of the Reduced Transform (RT) is to map a vector of dimension N to a vector of dimension R in another space, where R/N (R <N) is the reduction factor.
Матрица RT представляет собой матрицу R×N следующего вида: The RT matrix is an R×N matrix of the following form:
где R строк преобразования являются R базами N-мерного пространства. Матрица обратного преобразования для RT представляет собой транспонирование его прямого преобразования. Прямая и обратная RT изображены на фиг. 11.where the R conversion strings are the R bases of the N-dimensional space. The inverse transform matrix for RT is the transpose of its forward transform. Forward and reverse RT are shown in Fig. eleven.
Применяется RST8×8 с коэффициентом уменьшения 4 (размер 1/4). Следовательно, вместо 64×64, которые являются обычным размером матрицы 8×8 неразделимого преобразования, используется прямая матрица 16×64. Другими словами, обратная матрица RST размером 64×16 используется на стороне декодера для формирования основных (первичных) коэффициентов преобразования в 8×8 верхних левых областях. Прямой RST8×8 использует матрицы 16×64 (или 8×64 для блока 8×8), так что он производит ненулевые коэффициенты только в верхней левой области 4×4 в данной области 8×8. Другими словами, если применяется RST, то область 8×8, за исключением верхней левой области 4×4, будет иметь только нулевые коэффициенты. Для RST4×4, 16×16 (или 8×16 для блока 4×4) применяется прямое матричное умножение. RST8×8 with reduction factor 4 (1/4 size) is used. Therefore, instead of 64x64, which is the usual size of an 8x8 matrix of an inseparable transformation, a direct 16x64 matrix is used. In other words, a 64x16 inverse RST matrix is used at the decoder side to generate the primary transform coefficients in the 8x8 upper left regions. Direct RST8x8 uses 16x64 matrices (or 8x64 for an 8x8 block), such that it produces non-zero coefficients only in the top left 4x4 region in a given 8x8 region. In other words, if RST is applied, then the 8x8 region, excluding the top left 4x4 region, will have only zero coefficients. For RST4x4, 16x16 (or 8x16 for a 4x4 block), direct matrix multiplication is applied.
Обратный RST применяется условно, если выполняются следующие два условия: Reverse RST is applied conditionally if the following two conditions are met:
Размер блока больше или равен заданному порогу (W> = 4 && H> = 4);The block size is greater than or equal to the specified threshold (W> = 4 && H> = 4);
Флаг режима пропуска преобразования равен нулю;The conversion skip mode flag is zero;
Если и ширина (W), и высота (H) блока коэффициентов преобразования больше 4, то RST8×8 применяется к верхней левой области 8×8 блока коэффициентов преобразования. В противном случае RST4×4 применяется к верхней левой области min(8, W)×min(8, H) блока коэффициентов преобразования. If both the width (W) and height (H) of the transform coefficient block are greater than 4, then RST8×8 is applied to the top left 8×8 region of the transform coefficient block. Otherwise, RST4×4 is applied to the upper left region of the min(8, W)×min(8, H) transform coefficient block.
Если индекс RST равен 0, RST не применяется. В противном случае применяется RST, ядро которого выбирается с индексом RST. If the RST index is 0, RST is not applied. Otherwise, RST is used, the kernel of which is selected with the index RST.
Кроме того, RST применяется для внутреннего CU как во внутреннем, так и в промежуточном слайсах, а также для Luma и Chroma. Если двойное дерево включено, индексы RST для Luma и Chroma сигнализируются отдельно. Для промежуточных слайсов (двойное дерево отключено) один индекс RST передается и используется как для яркости, так и для цветности. In addition, RST is applied to the internal CU in both the internal and intermediate slices, as well as Luma and Chroma. If dual tree is enabled, the RST indexes for Luma and Chroma are signaled separately . For intermediate slices (dual tree disabled), a single RST index is passed and used for both luma and chrominance.
Intra Sub-Partitions (ISP), как режим внутреннего предсказания в VVC 4.0. Когда выбран режим ISP, RST отключается, и индекс RST не сигнализируется, потому что улучшение производительности было незначительным, даже если RST применялся к каждому возможному блоку раздела. Кроме того, отключение RST для остатка, предсказанного ISP, может снизить сложность кодирования. Intra Sub-Partitions (ISP), like the intra prediction mode in VVC 4.0. When ISP mode is selected, RST is disabled and the RST index is not signaled because the performance improvement was negligible even if RST was applied to every possible partition block. Additionally, disabling RST for the ISP-predicted remainder can reduce encoding complexity.
Матрица RST выбирается из четырех наборов преобразований, каждый набор преобразований содержит два преобразования. Какой набор преобразований применяется, определяется из режима внутреннего предсказания следующим образом: The RST matrix is selected from four sets of transformations, each set of transformations containing two transformations. Which set of transformations is applied is determined from the intra prediction mode as follows:
Если указан один из трех режимов CCLM (кросс-компонентная линейная модель, англ. Cross-component linear model, в этом режиме компонент цветности предсказывается из компонента яркости), выбирается набор 0 преобразований. If one of the three CCLM modes is specified (Cross-component linear model, in this mode the chrominance component is predicted from the luminance component), set 0 of transformations is selected.
В противном случае выбор набора преобразований выполняется в соответствии со следующей таблицей: Otherwise, the transformation set selection is performed according to the following table:
Таблица 3. Таблица выбора набора преобразованийTable 3. Transformation set selection table
Индекс для доступа к таблице 3, IntraPredMode, имеет диапазон [ -14, 83 ], который представляет собой преобразованный индекс режима, используемый для широкоугольного внутреннего предсказания. The index for accessing Table 3, IntraPredMode, has a range of [-14, 83], which is the converted mode index used for wide-angle intraprediction.
Один из примеров набора преобразований показан ниже. One example of a set of transformations is shown below.
Индекс набора преобразований равен 0, ядро преобразования 16×16 показано следующим образомThe transform set index is 0, the 16x16 transform kernel is shown as follows
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ 108 -40 25 -32 8 -25 8 2 -16 -9 -13 8 -2 4 2 0 },{ 108 -40 25 -32 8 -25 8 2 -16 -9 -13 8 -2 4 2 0 },
{ -{ -44 -97 -31 -39 -9 5 9 34 -27 -10 1 -7 13 9 -2 -2 },{ -{ -44 -97 -31 -39 -9 5 9 34 -27 -10 1 -7 13 9 -2 -2 },
{ -{ -15 56 -1 -92 33 16 16 -5 -39 -34 4 -5 -6 11 8 0 },{ -{ -15 56 -1 -92 33 16 16 -5 -39 -34 4 -5 -6 11 8 0 },
{ 1 12 7 51 -8 -3 1 1 -109 4 -9 -15 -4 31 -16 -10 }, { 1 12 7 51 -8 -3 1 1 -109 4 -9 -15 -4 31 -16 -10 },
{ -{ -44 -11 100 -6 -16 -38 37 -7 6 -9 -30 7 -2 4 8 -1 },{ -{ -44 -11 100 -6 -16 -38 37 -7 6 -9 -30 7 -2 4 8 -1 },
{ 19 29 -16 -16 -102 14 36 24 10 -5 -17 -30 28 9 5 -7 }, { 19 29 -16 -16 -102 14 36 24 10 -5 -17 -30 28 9 5 -7 },
{ { 7 -12 -29 36 36 11 94 -25 16 -29 -3 -28 -13 16 28 -3 },{ { 7 -12 -29 36 36 11 94 -25 16 -29 -3 -28 -13 16 28 -3 },
{ -1 -3 1 -8 23 -3 -38 -3 24 5 -64 -87 -14 19 -17 -35 }, { -1 -3 1 -8 23 -3 -38 -3 24 5 -64 -87 -14 19 -17 -35 },
{ -{ -11 18 -54 3 -4 -97 -7 8 3 -33 -35 31 -3 12 6 -1 },{ -{ -11 18 -54 3 -4 -97 -7 8 3 -33 -35 31 -3 12 6 -1 },
{ 6 18 21 22 38 7 3 99 19 -26 11 4 37 33 -7 -7 }, { 6 18 21 22 38 7 3 99 19 -26 11 4 37 33 -7 -7 },
{ { 2 -15 14 18 -27 26 -47 -28 10 -96 17 4 -15 32 18 -2 },{ { 2 -15 14 18 -27 26 -47 -28 10 -96 17 4 -15 32 18 -2 },
{ -1 -3 -4 -15 -5 1 11 -29 24 33 19 33 -3 94 -45 -32 }, { -1 -3 -4 -15 -5 1 11 -29 24 33 19 33 -3 94 -45 -32 },
{ 0 -1 -7 4 5 55 -6 6 -4 14 -86 61 -2 12 40 -6 }, { 0 -1 -7 4 5 55 -6 6 -4 14 -86 61 -2 12 40 -6 },
{ -1 -3 2 1 16 -10 -13 -43 -7 4 6 -5 107 0 36 -33 }, { -1 -3 2 1 16 -10 -13 -43 -7 4 6 -5 107 0 36 -33 },
{ -1 2 4 -5 -8 -19 -17 21 -2 39 36 -17 -36 34 97 -16 }, { -1 2 4 -5 -8 -19 -17 21 -2 39 36 -17 -36 34 97 -16 },
{ 0 1 0 2 -6 3 10 11 -3 -14 14 22 -24 -45 -8 -112 }, { 0 1 0 2 -6 3 10 11 -3 -14 14 22 -24 -45 -8 -112 },
}}
Индекс набора преобразований равен 1, ядро преобразования 16×16 показано следующим образом: The transform set index is 1, the 16x16 transform kernel is shown as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ -111 -47 -35 13 -11 0 -17 4 5 -4 -2 5 -5 0 -1 -1 },{ -111 -47 -35 13 -11 0 -17 4 5 -4 -2 5 -5 0 -1 -1 },
{ { 39 -27 -23 93 -27 -35 -46 -10 -20 -1 -10 13 -7 4 2 0 },{ { 39 -27 -23 93 -27 -35 -46 -10 -20 -1 -10 13 -7 4 2 0 },
{ 4 15 4 -27 1 32 -92 -23 32 38 35 18 -34 -2 7 -12 }, { 4 15 4 -27 1 32 -92 -23 32 38 35 18 -34 -2 7 -12 },
{ 3 -1 4 -4 2 -2 14 4 -5 -18 -19 34 -83 -60 -57 23 }, { 3 -1 4 -4 2 -2 14 4 -5 -18 -19 34 -83 -60 -57 23 },
{ { 44 -92 -17 -48 -47 26 7 16 8 -7 5 11 2 5 3 1 },{ { 44 -92 -17 -48 -47 26 7 16 8 -7 5 11 2 5 3 1 },
{ 11 43 -72 13 -4 60 -10 58 -3 -42 8 -4 -1 9 -7 -4 }, { 11 43 -72 13 -4 60 -10 58 -3 -42 8 -4 -1 9 -7 -4 },
{ -{ -12 20 32 -34 -36 -3 -39 -17 -46 -63 -44 18 -4 42 9 17 },{ -{ -12 20 32 -34 -36 -3 -39 -17 -46 -63 -44 18 -4 42 9 17 },
{ -1 -2 6 4 10 -17 29 26 -7 -6 14 18 -73 34 68 -53 }, { -1 -2 6 4 10 -17 29 26 -7 -6 14 18 -73 34 68 -53 },
{ 7 20 -59 -52 -2 -82 -17 30 -4 33 -25 5 4 5 -9 -3 }, { 7 20 -59 -52 -2 -82 -17 30 -4 33 -25 5 4 5 -9 -3 },
{ -{ -16 39 18 11 -85 1 27 21 2 34 25 58 20 -14 6 4 },{ -{ -16 39 18 11 -85 1 27 21 2 34 25 58 20 -14 6 4 },
{ - { -5 -16 50 1 14 -30 -28 67 -15 -23 58 -3 15 9 -49 -21 },{ - { -5 -16 50 1 14 -30 -28 67 -15 -23 58 -3 15 9 -49 -21 },
{ 2 -5 -6 10 29 0 17 2 24 15 17 42 -12 80 -20 72 }, { 2 -5 -6 10 29 0 17 2 24 15 17 42 -12 80 -20 72 },
{ 3 10 0 3 -20 -37 1 -13 100 -65 7 -2 4 -5 6 -4 }, { 3 10 0 3 -20 -37 1 -13 100 -65 7 -2 4 -5 6 -4 },
{ -1 -5 40 16 -2 21 -15 59 44 33 -84 -10 -3 13 -4 -8 }, { -1 -5 40 16 -2 21 -15 59 44 33 -84 -10 -3 13 -4 -8 },
{ { 4 -13 0 -3 57 3 -13 13 0 -20 -16 85 44 -38 36 -3 },{ { 4 -13 0 -3 57 3 -13 13 0 -20 -16 85 44 -38 36 -3 },
{ 2 2 -13 1 4 12 17 -40 5 2 -18 38 12 37 -64 -83 }, { 2 2 -13 1 4 12 17 -40 5 2 -18 38 12 37 -64 -83 },
}}
Индекс набора преобразований равен 2, ядро преобразования 16×16 показано следующим образом: The transform set index is 2, the 16x16 transform kernel is shown as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ -112 29 -36 28 -12 18 5 -13 -4 15 -8 -2 -3 2 4 0 },{ -112 29 -36 28 -12 18 5 -13 -4 15 -8 -2 -3 2 4 0 },
{ 47 -7 -87 -5 -24 53 -1 -32 -13 33 -24 -6 -7 6 8 1 }, { 47 -7 -87 -5 -24 53 -1 -32 -13 33 -24 -6 -7 6 8 1 },
{ -2 1 69 2 15 69 2 18 -10 63 -27 -24 -16 10 21 4 }, { -2 1 69 2 15 69 2 18 -10 63 -27 -24 -16 10 21 4 },
{ 2 -1 -10 -2 -3 -74 0 -2 19 89 15 13 -21 -3 40 11 }, { 2 -1 -10 -2 -3 -74 0 -2 19 89 15 13 -21 -3 40 11 },
{ -{ -34 -108 -17 -29 26 14 -26 15 18 8 12 -1 10 -5 -4 -2 },{ -{ -34 -108 -17 -29 26 14 -26 15 18 8 12 -1 10 -5 -4 -2 },
{ 13 40 -33 13 80 24 6 34 46 15 41 -8 24 -16 -11 -4 }, { 13 40 -33 13 80 24 6 34 46 15 41 -8 24 -16 -11 -4 },
{ 2 2 26 -2 -61 28 0 -27 60 25 26 37 46 -31 -28 -13 }, { 2 2 26 -2 -61 28 0 -27 60 25 26 37 46 -31 -28 -13 },
{ 0 0 -2 0 9 -30 1 7 -48 40 -29 -22 75 12 -57 -34 }, { 0 0 -2 0 9 -30 1 7 -48 40 -29 -22 75 12 -57 -34 },
{ { 15 -45 7 103 15 -6 45 -25 16 -4 -17 3 8 7 5 3 },{ { 15 -45 7 103 15 -6 45 -25 16 -4 -17 3 8 7 5 3 },
{ -7 13 14 -36 54 -7 -9 -80 33 -8 -50 18 20 24 14 7 }, { -7 13 14 -36 54 -7 -9 -80 33 -8 -50 18 20 24 14 7 },
{ 1 4 -11 -4 -36 -11 -1 47 60 -15 -39 -51 38 41 31 20 }, { 1 4 -11 -4 -36 -11 -1 47 60 -15 -39 -51 38 41 31 20 },
{ 0 -1 2 1 2 12 0 -1 -48 -8 27 22 72 -16 70 47 }, { 0 -1 2 1 2 12 0 -1 -48 -8 27 22 72 -16 70 47 },
{ 8 8 6 48 0 -5 -113 -16 1 -2 0 -23 1 -16 7 -6 }, { 8 8 6 48 0 -5 -113 -16 1 -2 0 -23 1 -16 7 -6 },
{ -3 -5 8 -16 -4 -7 28 -50 0 -6 35 -95 2 -41 18 -19 }, { -3 -5 8 -16 -4 -7 28 -50 0 -6 35 -95 2 -41 18 -19 },
{ -1 1 -7 -4 6 -6 8 28 5 -9 -67 17 1 -89 32 -42 }, { -1 1 -7 -4 6 -6 8 28 5 -9 -67 17 1 -89 32 -42 },
{ 0 0 0 1 -2 8 -1 2 -2 -7 26 17 7 49 52 -101 }, { 0 0 0 1 -2 8 -1 2 -2 -7 26 17 7 49 52 -101 },
}}
Индекс набора преобразований равен 3, ядро преобразования 16×16 показано следующим образом: The transform set index is 3, the 16x16 transform kernel is shown as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ -114 -19 36 -27 -11 15 13 16 -8 -6 5 -5 1 -3 -2 -5 },{ -114 -19 36 -27 -11 15 13 16 -8 -6 5 -5 1 -3 -2 -5 },
{ { 37 -41 -25 -80 -21 47 25 11 -34 -30 9 -23 3 -2 -7 -12 },{ { 37 -41 -25 -80 -21 47 25 11 -34 -30 9 -23 3 -2 -7 -12 },
{ 3 19 18 44 37 10 79 -26 -26 -42 -6 -23 23 -21 -33 -18 }, { 3 19 18 44 37 10 79 -26 -26 -42 -6 -23 23 -21 -33 -18 },
{ 2 -2 -2 -3 -10 -6 -39 13 7 -12 42 36 73 -52 -56 -12 }, { 2 -2 -2 -3 -10 -6 -39 13 7 -12 42 36 73 -52 -56 -12 },
{ -{ -22 85 -42 -58 44 -16 -13 -13 -26 -3 -15 3 8 1 -4 8 },{ -{ -22 85 -42 -58 44 -16 -13 -13 -26 -3 -15 3 8 1 -4 8 },
{ -{ -23 -60 -53 1 -4 -44 10 -74 -19 5 -18 22 5 -10 -6 22 },{ -{ -23 -60 -53 1 -4 -44 10 -74 -19 5 -18 22 5 -10 -6 22 },
{ { 14 -11 35 -29 47 42 31 -20 29 57 -9 36 34 -17 21 38 },{ { 14 -11 35 -29 47 42 31 -20 29 57 -9 36 34 -17 21 38 },
{ 0 7 5 19 -12 10 -4 -1 -37 -52 26 40 46 44 63 36 }, { 0 7 5 19 -12 10 -4 -1 -37 -52 26 40 46 44 63 36 },
{ 21 17 46 -41 -37 -80 49 5 1 -2 15 27 -12 -19 15 -5 }, { 21 17 46 -41 -37 -80 49 5 1 -2 15 27 -12 -19 15 -5 },
{ -{ -17 31 -60 18 -41 25 45 -6 22 37 58 -4 2 -20 31 -15 },{ -{ -17 31 -60 18 -41 25 45 -6 22 37 58 -4 2 -20 31 -15 },
{ - { -5 -34 -25 -12 58 -40 12 29 46 -12 14 -16 35 30 32 -51 },{ - { -5 -34 -25 -12 58 -40 12 29 46 -12 14 -16 35 30 32 -51 },
{ 2 2 19 -7 18 21 -8 -47 -9 6 43 56 -38 45 -22 -63 }, { 2 2 19 -7 18 21 -8 -47 -9 6 43 56 -38 45 -22 -63 },
{ { 5 -11 8 12 10 -23 3 26 -81 74 23 -25 26 27 -10 -5 },{ { 5 -11 8 12 10 -23 3 26 -81 74 23 -25 26 27 -10 -5 },
{ 2 19 21 -17 -46 -2 -1 -49 37 10 -10 -46 52 61 -26 0 }, { 2 19 21 -17 -46 -2 -1 -49 37 10 -10 -46 52 61 -26 0 },
{ -4 2 -33 7 -16 3 43 54 14 6 -37 56 2 49 -52 15 }, { -4 2 -33 7 -16 3 43 54 14 6 -37 56 2 49 -52 15 },
{ -1 -8 -1 -6 31 -14 7 2 20 -15 75 -24 -31 21 -38 73 }, { -1 -8 -1 -6 31 -14 7 2 20 -15 75 -24 -31 21 -38 73 },
}}
Индекс набора преобразований равен 0, ядро преобразования 16×48 отображается следующим образом: The transform set index is 0, the 16x48 transform kernel is displayed as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ -117 -29 -10 -15 32 -10 1 0 -13 6 -12 0 -1 6 6 -1 },{ -117 -29 -10 -15 32 -10 1 0 -13 6 -12 0 -1 6 6 -1 },
{ { 28 -91 62 15 39 1 -33 6 -13 1 -2 -3 9 2 9 7 },{ { 28 -91 62 15 39 1 -33 6 -13 1 -2 -3 9 2 9 7 },
{ 18 47 -11 -10 92 50 -11 -6 -37 -14 -26 0 13 -3 -2 -2 }, { 18 47 -11 -10 92 50 -11 -6 -37 -14 -26 0 13 -3 -2 -2 },
{ 2 1 -8 -2 -44 -15 -14 21 -101 -36 -12 -4 5 2 35 9 }, { 2 1 -8 -2 -44 -15 -14 21 -101 -36 -12 -4 5 2 35 9 },
{ 4 9 -2 1 4 2 7 -4 29 9 -9 -15 14 10 110 -11 }, { 4 9 -2 1 4 2 7 -4 29 9 -9 -15 14 10 110 -11 },
{ 1 0 -2 0 -10 -3 -2 2 -11 -3 2 6 -2 -1 -22 5 }, { 1 0 -2 0 -10 -3 -2 2 -11 -3 2 6 -2 -1 -22 5 },
{ 2 3 -1 1 1 1 2 0 8 2 -1 -3 2 2 11 -1 }, { 2 3 -1 1 1 1 2 0 8 2 -1 -3 2 2 11 -1 },
{ 1 0 -1 0 -4 -1 0 0 -3 0 1 1 -1 0 -4 1 }, { 1 0 -1 0 -4 -1 0 0 -3 0 1 1 -1 0 -4 1 },
{ { 32 -54 -95 10 26 -28 29 -20 -12 10 -3 -7 -8 8 -2 -7 },{ { 32 -54 -95 10 26 -28 29 -20 -12 10 -3 -7 -8 8 -2 -7 },
{ -{ -18 26 3 112 12 -15 -12 -24 -15 9 30 -15 3 3 0 2 },{ -{ -18 26 3 112 12 -15 -12 -24 -15 9 30 -15 3 3 0 2 },
{ -2 -8 32 -20 -15 14 37 -104 -20 -18 4 -28 -4 -1 -3 -22 }, { -2 -8 32 -20 -15 14 37 -104 -20 -18 4 -28 -4 -1 -3 -22 },
{ 0 3 0 -17 13 6 -7 30 2 -1 34 -86 -62 -20 1 4 }, { 0 3 0 -17 13 6 -7 30 2 -1 34 -86 -62 -20 1 4 },
{ -1 0 4 -4 -5 1 -4 5 -11 -3 -4 19 4 0 -18 -13 }, { -1 0 4 -4 -5 1 -4 5 -11 -3 -4 19 4 0 -18 -13 },
{ 0 1 0 -4 2 1 0 5 5 1 0 -5 1 1 12 0 }, { 0 1 0 -4 2 1 0 5 5 1 0 -5 1 1 12 0 },
{ 0 0 2 -1 -2 1 -1 1 -2 0 -1 4 1 0 -3 -1 }, { 0 0 2 -1 -2 1 -1 1 -2 0 -1 4 1 0 -3 -1 },
{ 0 0 0 -2 0 0 0 2 1 0 0 -1 0 0 2 0 }, { 0 0 0 -2 0 0 0 2 1 0 0 -1 0 0 2 0 },
{ 14 33 32 -20 29 -99 6 -7 -12 38 -30 -5 -12 -4 -5 0 }, { 14 33 32 -20 29 -99 6 -7 -12 38 -30 -5 -12 -4 -5 0 },
{ -1 5 -30 -26 -16 -4 -99 -46 10 26 3 -17 23 4 -4 28 }, { -1 5 -30 -26 -16 -4 -99 -46 10 26 3 -17 23 4 -4 28 },
{ -3 -9 -4 31 -22 9 3 10 26 -13 -92 -41 16 -16 -22 0 }, { -3 -9 -4 31 -22 9 3 10 26 -13 -92 -41 16 -16 -22 0 },
{ 0 -1 4 1 8 5 26 -14 12 -1 14 42 -11 0 8 76 }, { 0 -1 4 1 8 5 26 -14 12 -1 14 42 -11 0 8 76 },
{ -1 -2 -1 0 0 5 -1 7 -6 -5 19 -6 -17 -2 -25 4 }, { -1 -2 -1 0 0 5 -1 7 -6 -5 19 -6 -17 -2 -25 4 },
{ 0 0 1 0 1 2 5 0 0 -1 0 2 0 0 3 -6 }, { 0 0 1 0 1 2 5 0 0 -1 0 2 0 0 3 -6 },
{ 0 -1 0 0 0 2 0 1 -1 -1 3 -1 -1 1 0 0 }, { 0 -1 0 0 0 2 0 1 -1 -1 3 -1 -1 1 0 0 },
{ 0 0 0 0 1 1 2 0 0 0 0 1 0 0 0 -2 }, { 0 0 0 0 1 1 2 0 0 0 0 1 0 0 0 -2 },
{ 2 -3 6 2 -20 44 14 9 -32 102 -11 -1 -11 34 -3 -13 }, { 2 -3 6 2 -20 44 14 9 -32 102 -11 -1 -11 34 -3 -13 },
{ 0 3 2 -16 6 -10 30 21 -2 3 34 -40 97 23 -21 5 }, { 0 3 2 -16 6 -10 30 21 -2 3 34 -40 97 23 -21 5 },
{ 0 0 -5 -1 4 -11 -27 7 11 -14 21 37 -3 6 2 -76 }, { 0 0 -5 -1 4 -11 -27 7 11 -14 21 37 -3 6 2 -76 },
{ 0 0 0 6 -3 1 -2 -6 3 -1 -33 13 -3 -7 -3 -4 }, { 0 0 0 6 -3 1 -2 -6 3 -1 -33 13 -3 -7 -3 -4 },
{ 0 0 0 0 1 -2 1 -2 3 -5 1 -4 0 -4 9 33 }, { 0 0 0 0 1 -2 1 -2 3 -5 1 -4 0 -4 9 33 },
{ 0 0 0 1 0 0 -1 -1 -1 -1 -2 2 -6 -2 -2 -1 }, { 0 0 0 1 0 0 -1 -1 -1 -1 -2 2 -6 -2 -2 -1 },
{ 0 0 0 0 0 -1 0 0 1 -2 0 -1 0 -1 1 3 }, { 0 0 0 0 0 -1 0 0 1 -2 0 -1 0 -1 1 3 },
{ 0 0 0 0 0 0 -1 -1 0 0 -1 1 -2 0 0 0 }, { 0 0 0 0 0 0 -1 -1 0 0 -1 1 -2 0 0 0 },
{ 3 7 6 1 1 -5 -6 2 11 -29 -9 -10 -21 108 -7 9 }, { 3 7 6 1 1 -5 -6 2 11 -29 -9 -10 -21 108 -7 9 },
{ 0 2 -3 -4 -4 4 6 2 -5 10 -4 13 -5 -5 1 18 }, { 0 2 -3 -4 -4 4 6 2 -5 10 -4 13 -5 -5 1 18 },
{ -1 -2 0 0 -3 -3 6 5 -1 10 18 -1 23 -30 3 -3 }, { -1 -2 0 0 -3 -3 6 5 -1 10 18 -1 23 -30 3 -3 },
{ 0 0 0 0 2 0 -3 -2 6 0 3 -4 0 6 -5 -35 }, { 0 0 0 0 2 0 -3 -2 6 0 3 -4 0 6 -5 -35 },
{ 1 -1 2 0 -4 8 1 0 -4 10 2 4 2 -27 3 -4 }, { 1 -1 2 0 -4 8 1 0 -4 10 2 4 2 -27 3 -4 },
{ 0 1 0 -3 1 -1 3 3 2 -4 0 -4 -2 10 0 -1 }, { 0 1 0 -3 1 -1 3 3 2 -4 0 -4 -2 10 0 -1 },
{ 0 0 -1 0 0 -2 -3 4 1 -1 0 3 -1 7 -1 6 }, { 0 0 -1 0 0 -2 -3 4 1 -1 0 3 -1 7 -1 6 },
{ 0 0 0 1 0 0 0 -1 0 1 -2 4 6 -2 0 1 }, { 0 0 0 1 0 0 0 -1 0 1 -2 4 6 -2 0 1 },
{ 1 2 2 0 1 -2 -1 0 3 -7 -1 -2 -3 11 0 1 }, { 1 2 2 0 1 -2 -1 0 3 -7 -1 -2 -3 11 0 1 },
{ 0 1 -1 -1 -1 1 1 0 -1 1 -1 2 -3 -3 1 2 }, { 0 1 -1 -1 -1 1 1 0 -1 1 -1 2 -3 -3 1 2 },
{ 0 -1 0 0 -2 -1 1 1 1 2 3 -1 1 -1 0 0 }, { 0 -1 0 0 -2 -1 1 1 1 2 3 -1 1 -1 0 0 },
{ 0 0 0 0 1 0 0 0 2 1 0 -1 0 1 -1 -3 }, { 0 0 0 0 1 0 0 0 2 1 0 -1 0 1 -1 -3 },
{ 1 0 1 0 -2 4 0 0 -1 2 0 1 0 -4 1 -1 }, { 1 0 1 0 -2 4 0 0 -1 2 0 1 0 -4 1 -1 },
{ 0 0 0 -2 0 0 1 1 0 -1 0 -1 0 1 0 0 }, { 0 0 0 -2 0 0 1 1 0 -1 0 -1 0 1 0 0 },
{ 0 0 0 0 0 -1 -1 2 0 0 0 1 0 0 0 2 }, { 0 0 0 0 0 -1 -1 2 0 0 0 1 0 0 0 2 },
{ 0 0 0 0 0 0 0 -1 0 0 -1 2 2 1 0 0 }, { 0 0 0 0 0 0 0 -1 0 0 -1 2 2 1 0 0 },
}}
Индекс набора преобразований равен 1, ядро преобразования 16×48 показано следующим образом: The transform set index is 1, the 16x48 transform kernel is shown as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ 110 -43 -19 -35 9 -5 14 7 -13 -11 -4 -2 3 -4 5 -5 },{ 110 -43 -19 -35 9 -5 14 7 -13 -11 -4 -2 3 -4 5 -5 },
{ -{ -49 -19 17 -103 5 -5 17 35 -27 -13 -10 1 1 -8 -1 -6 },{ -{ -49 -19 17 -103 5 -5 17 35 -27 -13 -10 1 1 -8 -1 -6 },
{ -3 17 -7 39 -6 -28 27 17 -101 -3 -24 13 5 -1 26 -27 }, { -3 17 -7 39 -6 -28 27 17 -101 -3 -24 13 5 -1 26 -27 },
{ -4 -1 3 1 -1 9 -12 -4 24 -10 -11 -17 -15 -50 102 -22 }, { -4 -1 3 1 -1 9 -12 -4 24 -10 -11 -17 -15 -50 102 -22 },
{ -1 3 -2 7 -1 -3 1 -1 -8 3 3 3 1 6 -13 -12 }, { -1 3 -2 7 -1 -3 1 -1 -8 3 3 3 1 6 -13 -12 },
{ -1 0 1 0 0 2 -3 0 6 -1 -2 -5 -2 -4 12 0 }, { -1 0 1 0 0 2 -3 0 6 -1 -2 -5 -2 -4 12 0 },
{ 0 1 -1 2 -1 -1 1 0 -3 1 0 1 1 2 -4 -3 }, { 0 1 -1 2 -1 -1 1 0 -3 1 0 1 1 2 -4 -3 },
{ -1 0 0 0 0 1 -1 0 2 0 -1 -2 -1 -2 4 0 }, { -1 0 0 0 0 1 -1 0 2 0 -1 -2 -1 -2 4 0 },
{ -{ -38 -98 -32 38 42 -20 8 3 11 -19 -6 3 7 -1 -4 -5 },{ -{ -38 -98 -32 38 42 -20 8 3 11 -19 -6 3 7 -1 -4 -5 },
{ -1 46 -59 -13 4 -78 19 8 43 -19 -37 0 4 5 -2 8 }, { -1 46 -59 -13 4 -78 19 8 43 -19 -37 0 4 5 -2 8 },
{ 10 14 29 25 21 22 -13 54 6 -37 -45 -55 -7 -22 -40 -20 }, { 10 14 29 25 21 22 -13 54 6 -37 -45 -55 -7 -22 -40 -20 },
{ 0 -1 3 -6 -11 16 4 -17 28 8 -17 22 29 20 -7 -83 }, { 0 -1 3 -6 -11 16 4 -17 28 8 -17 22 29 20 -7 -83 },
{ 2 2 4 1 1 1 -2 1 -6 4 8 6 -1 6 -23 0 }, { 2 2 4 1 1 1 -2 1 -6 4 8 6 -1 6 -23 0 },
{ 0 0 0 -1 -3 3 1 -2 3 2 -2 1 2 1 3 0 }, { 0 0 0 -1 -3 3 1 -2 3 2 -2 1 2 1 3 0 },
{ 1 1 2 0 1 0 -1 1 -1 0 2 1 -1 0 -5 0 }, { 1 1 2 0 1 0 -1 1 -1 0 2 1 -1 0 -5 0 },
{ 0 0 0 0 -1 1 0 -1 1 1 -1 0 1 0 1 0 }, { 0 0 0 0 -1 1 0 -1 1 1 -1 0 1 0 1 0 },
{ -9 26 -72 -1 21 80 48 10 -3 -12 17 8 8 -16 -1 9 }, { -9 26 -72 -1 21 80 48 10 -3 -12 17 8 8 -16 -1 9 },
{ 13 26 43 7 70 -6 -1 14 14 -30 14 74 3 -15 5 7 }, { 13 26 43 7 70 -6 -1 14 14 -30 14 74 3 -15 5 7 },
{ { 1 -15 34 6 -32 25 48 -11 21 3 -58 21 12 18 8 24 },{ { 1 -15 34 6 -32 25 48 -11 21 3 -58 21 12 18 8 24 },
{ -2 -3 -9 -7 -21 -5 -15 -34 -12 -9 14 40 -14 -29 -23 -20 }, { -2 -3 -9 -7 -21 -5 -15 -34 -12 -9 14 40 -14 -29 -23 -20 },
{ 0 -2 3 1 0 -4 -4 4 -7 5 15 -14 -9 -11 7 41 }, { 0 -2 3 1 0 -4 -4 4 -7 5 15 -14 -9 -11 7 41 },
{ 0 -1 -2 -1 -4 -1 -2 -4 -2 0 0 0 -1 2 2 3 }, { 0 -1 -2 -1 -4 -1 -2 -4 -2 0 0 0 -1 2 2 3 },
{ 0 -1 1 0 -1 -1 -1 1 -1 1 2 -2 -1 -2 1 6 }, { 0 -1 1 0 -1 -1 -1 1 -1 1 2 -2 -1 -2 1 6 },
{ 0 0 -1 0 -1 0 -1 -1 -1 0 0 0 0 1 1 1 }, { 0 0 -1 0 -1 0 -1 -1 -1 0 0 0 0 1 1 1 },
{ -4 11 13 -13 34 6 1 -80 -23 -56 -10 -36 4 40 10 15 }, { -4 11 13 -13 34 6 1 -80 -23 -56 -10 -36 4 40 10 15 },
{ 2 -7 36 14 -26 -24 60 -7 10 -9 34 -8 29 -45 -11 20 }, { 2 -7 36 14 -26 -24 60 -7 10 -9 34 -8 29 -45 -11 20 },
{ -3 -9 -18 2 -57 7 -28 -6 -4 -47 -7 11 -15 -19 -13 12 }, { -3 -9 -18 2 -57 7 -28 -6 -4 -47 -7 11 -15 -19 -13 12 },
{ 0 2 -10 -4 11 -9 -42 2 -12 8 28 -13 31 -22 -3 11 }, { 0 2 -10 -4 11 -9 -42 2 -12 8 28 -13 31 -22 -3 11 },
{ 0 0 0 2 4 0 5 15 3 21 4 -23 10 31 12 17 }, { 0 0 0 2 4 0 5 15 3 21 4 -23 10 31 12 17 },
{ 0 0 -2 -1 2 0 -6 0 0 1 -1 1 4 2 -3 -9 }, { 0 0 -2 -1 2 0 -6 0 0 1 -1 1 4 2 -3 -9 },
{ 0 0 0 0 0 0 1 3 1 4 1 -3 1 4 2 1 }, { 0 0 0 0 0 0 1 3 1 4 1 -3 1 4 2 1 },
{ 0 0 -1 0 1 0 -2 0 0 1 0 0 1 1 0 -2 }, { 0 0 -1 0 1 0 -2 0 0 1 0 0 1 1 0 -2 },
{ -2 9 3 -2 -4 -7 11 -16 2 -11 23 -36 61 -25 -9 -26 }, { -2 9 3 -2 -4 -7 11 -16 2 -11 23 -36 61 -25 -9 -26 },
{ 2 -3 0 11 -32 3 -11 46 9 -30 34 6 22 41 23 -1 }, { 2 -3 0 11 -32 3 -11 46 9 -30 34 6 22 41 23 -1 },
{ 0 -1 -12 -6 5 13 -51 1 -10 10 -31 16 55 0 4 18 }, { 0 -1 -12 -6 5 13 -51 1 -10 10 -31 16 55 0 4 18 },
{ 1 2 3 -2 24 -4 11 3 0 59 4 -14 14 12 9 -1 }, { 1 2 3 -2 24 -4 11 3 0 59 4 -14 14 12 9 -1 },
{ -1 3 6 -2 1 -3 -2 2 1 -2 10 2 13 9 14 -12 }, { -1 3 6 -2 1 -3 -2 2 1 -2 10 2 13 9 14 -12 },
{ 1 -3 1 4 -6 5 -10 7 -5 8 -22 19 3 7 9 32 }, { 1 -3 1 4 -6 5 -10 7 -5 8 -22 19 3 7 9 32 },
{ 0 0 -3 -3 12 1 -2 -24 -4 41 -30 -4 -9 -42 -14 3 }, { 0 0 -3 -3 12 1 -2 -24 -4 41 -30 -4 -9 -42 -14 3 },
{ 0 0 2 0 4 -5 13 0 4 8 22 -12 -65 12 -4 -18 }, { 0 0 2 0 4 -5 13 0 4 8 22 -12 -65 12 -4 -18 },
{ -1 4 1 0 -3 -2 2 2 2 2 4 -1 1 -3 0 -5 }, { -1 4 1 0 -3 -2 2 2 2 2 4 -1 1 -3 0 -5 },
{ 1 -1 -1 3 -2 3 -6 -2 -2 5 -15 0 -11 -14 -12 10 }, { 1 -1 -1 3 -2 3 -6 -2 -2 5 -15 0 -11 -14 -12 10 },
{ 0 0 -2 -2 4 1 -4 -5 2 6 9 -7 -21 2 -7 -25 }, { 0 0 -2 -2 4 1 -4 -5 2 6 9 -7 -21 2 -7 -25 },
{ 0 0 0 0 -2 -2 4 8 2 -7 20 -3 -7 28 6 -5 }, { 0 0 0 0 -2 -2 4 8 2 -7 20 -3 -7 28 6 -5 },
{ -1 2 3 -1 0 -1 -2 1 0 -1 2 0 0 5 3 -2 }, { -1 2 3 -1 0 -1 -2 1 0 -1 2 0 0 5 3 -2 },
{ 0 -1 1 1 -1 2 -3 -1 -2 3 -5 2 0 1 0 1 }, { 0 -1 1 1 -1 2 -3 -1 -2 3 -5 2 0 1 0 1 },
{ 0 0 -1 -1 0 -1 2 -2 1 5 9 -2 -1 6 6 -8 }, { 0 0 -1 -1 0 -1 2 -2 1 5 9 -2 -1 6 6 -8 },
{ 0 0 1 0 0 -2 2 2 0 -2 4 -1 3 2 3 10 }, { 0 0 1 0 0 -2 2 2 0 -2 4 -1 3 2 3 10 },
}}
Индекс набора преобразований равен 2, ядро преобразования 16×48 показано следующим образом: The transform set index is 2, the 16x48 transform kernel is shown as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ -121 0 -20 32 -3 -4 7 -8 -15 -3 -1 -5 -2 -2 -2 4 },{ -121 0 -20 32 -3 -4 7 -8 -15 -3 -1 -5 -2 -2 -2 4 },
{ 33 -2 19 108 0 -12 1 -31 -43 1 -6 -14 0 -10 -3 -4 }, { 33 -2 19 108 0 -12 1 -31 -43 1 -6 -14 0 -10 -3 -4 },
{ 4 0 -5 -43 -1 -3 2 14 -100 2 -3 -48 2 -4 -25 28 }, { 4 0 -5 -43 -1 -3 2 14 -100 2 -3 -48 2 -4 -25 28 },
{ 4 0 2 10 0 1 0 -4 23 0 2 2 0 0 -2 103 }, { 4 0 2 10 0 1 0 -4 23 0 2 2 0 0 -2 103 },
{ 1 0 -1 -9 0 -1 0 3 -12 0 -1 -5 0 0 -3 -42 }, { 1 0 -1 -9 0 -1 0 3 -12 0 -1 -5 0 0 -3 -42 },
{ 2 0 1 3 0 0 0 -1 6 0 0 1 0 0 0 24 }, { 2 0 1 3 0 0 0 -1 6 0 0 1 0 0 0 24 },
{ 0 0 0 -3 0 0 0 1 -4 0 0 -2 0 0 -1 -9 }, { 0 0 0 -3 0 0 0 1 -4 0 0 -2 0 0 -1 -9 },
{ 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 7 }, { 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 7 },
{ - { -1 121 16 4 -29 19 4 9 -6 -6 -6 10 -2 3 -1 1 },{ - { -1 121 16 4 -29 19 4 9 -6 -6 -6 10 -2 3 -1 1 },
{ - { -1 -23 3 19 11 105 3 43 -17 3 -35 24 0 11 -3 2 },{ - { -1 -23 3 19 11 105 3 43 -17 3 -35 24 0 11 -3 2 },
{ 1 -7 -2 -7 -2 -31 -2 0 -48 1 9 99 1 -1 -1 4 }, { 1 -7 -2 -7 -2 -31 -2 0 -48 1 9 99 1 -1 -1 4 },
{ 0 -3 0 1 1 7 0 1 10 0 0 -17 0 -1 4 0 }, { 0 -3 0 1 1 7 0 1 10 0 0 -17 0 -1 4 0 },
{ 0 -2 0 -1 0 -6 0 -1 -5 0 2 10 0 0 -2 3 }, { 0 -2 0 -1 0 -6 0 -1 -5 0 2 10 0 0 -2 3 },
{ 0 -1 0 0 0 1 0 0 2 0 0 -4 0 0 2 -1 }, { 0 -1 0 0 0 1 0 0 2 0 0 -4 0 0 2 -1 },
{ 0 -1 0 0 0 -2 0 0 -1 0 0 3 0 0 0 0 }, { 0 -1 0 0 0 -2 0 0 -1 0 0 3 0 0 0 0 },
{ 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 }, { 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 1 0 },
{ 24 17 -120 11 12 9 22 -13 1 0 1 4 -1 -6 -7 -1 }, { 24 17 -120 11 12 9 22 -13 1 0 1 4 -1 -6 -7 -1 },
{ -5 1 14 -30 7 46 -8 -105 -5 3 -6 14 -1 -40 -8 0 }, { -5 1 14 -30 7 46 -8 -105 -5 3 -6 14 -1 -40 -8 0 },
{ -1 -2 8 9 -1 -6 1 17 19 -2 11 32 1 -15 -97 -9 }, { -1 -2 8 9 -1 -6 1 17 19 -2 11 32 1 -15 -97 -9 },
{ -1 0 1 -2 0 0 -1 -2 -6 0 -2 0 -1 6 17 -42 }, { -1 0 1 -2 0 0 -1 -2 -6 0 -2 0 -1 6 17 -42 },
{ 0 0 3 1 0 0 0 2 3 0 2 2 0 -2 -9 17 }, { 0 0 3 1 0 0 0 2 3 0 2 2 0 -2 -9 17 },
{ 0 0 1 -1 0 0 0 0 -1 0 0 0 0 1 3 -9 }, { 0 0 1 -1 0 0 0 0 -1 0 0 0 0 1 3 -9 },
{ 0 0 1 0 0 0 0 0 1 0 1 1 0 0 -3 3 }, { 0 0 1 0 0 0 0 0 1 0 1 1 0 0 -3 3 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 }, { 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -2 },
{ { 5 -27 -18 0 -117 8 -28 -8 2 -20 -9 -4 -1 5 -8 -1 },{ { 5 -27 -18 0 -117 8 -28 -8 2 -20 -9 -4 -1 5 -8 -1 },
{ -1 4 -2 -8 12 -29 -9 -25 7 8 -100 0 -4 57 -26 1 }, { -1 4 -2 -8 12 -29 -9 -25 7 8 -100 0 -4 57 -26 1 },
{ 0 2 3 2 9 9 4 -3 15 -2 17 -39 2 -6 -61 -14 }, { 0 2 3 2 9 9 4 -3 15 -2 17 -39 2 -6 -61 -14 },
{ 0 0 0 0 1 -3 0 0 -3 0 -1 6 0 2 -1 6 }, { 0 0 0 0 1 -3 0 0 -3 0 -1 6 0 2 -1 6 },
{ 0 0 1 0 3 1 1 0 1 0 1 -4 0 0 -3 -4 }, { 0 0 1 0 3 1 1 0 1 0 1 -4 0 0 -3 -4 },
{ 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 -1 2 }, { 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 -1 2 },
{ 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 -1 -1 }, { 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 -1 -1 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 }, { 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 },
{ { 3 -12 17 -7 -32 -3 117 -7 4 30 -10 2 -8 1 2 -1 },{ { 3 -12 17 -7 -32 -3 117 -7 4 30 -10 2 -8 1 2 -1 },
{ -1 2 -3 -1 -3 -19 -10 32 10 13 -63 -3 -2 -95 10 -2 }, { -1 2 -3 -1 -3 -19 -10 32 10 13 -63 -3 -2 -95 10 -2 },
{ 0 1 -1 2 3 3 -8 -5 5 -3 1 -4 -1 18 24 -4 }, { 0 1 -1 2 3 3 -8 -5 5 -3 1 -4 -1 18 24 -4 },
{ 0 0 0 0 0 0 0 1 -1 0 2 0 1 -6 -7 4 }, { 0 0 0 0 0 0 0 1 -1 0 2 0 1 -6 -7 4 },
{ 2 -5 6 -3 12 -4 32 -1 0 -116 -17 2 30 -10 5 0 }, { 2 -5 6 -3 12 -4 32 -1 0 -116 -17 2 30 -10 5 0 },
{ -1 1 -1 -1 -2 -6 1 4 3 6 3 -2 4 -34 9 3 }, { -1 1 -1 -1 -2 -6 1 4 3 6 3 -2 4 -34 9 3 },
{ 0 0 -1 1 -1 1 -4 0 1 10 -4 -2 -4 -2 19 1 }, { 0 0 -1 1 -1 1 -4 0 1 10 -4 -2 -4 -2 19 1 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 }, { 0 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 -1 },
{ 2 -1 2 -2 7 0 3 2 -2 -35 -1 0 -102 -4 0 0 }, { 2 -1 2 -2 7 0 3 2 -2 -35 -1 0 -102 -4 0 0 },
{ -1 0 0 -2 0 0 1 -1 1 -5 9 0 4 17 1 2 }, { -1 0 0 -2 0 0 1 -1 1 -5 9 0 4 17 1 2 },
{ 0 0 0 1 0 0 -1 0 2 4 -1 -1 8 -2 4 0 }, { 0 0 0 1 0 0 -1 0 2 4 -1 -1 8 -2 4 0 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -2 }, { 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 -2 },
{ 1 -2 2 0 1 0 -3 1 -1 -3 3 0 -69 0 -2 2 }, { 1 -2 2 0 1 0 -3 1 -1 -3 3 0 -69 0 -2 2 },
{ 0 0 0 0 0 -1 1 0 1 -1 4 -1 -2 2 0 0 }, { 0 0 0 0 0 -1 1 0 1 -1 4 -1 -2 2 0 0 },
{ 0 0 0 0 0 0 0 -1 1 0 -1 -1 6 1 1 0 }, { 0 0 0 0 0 0 0 -1 1 0 -1 -1 6 1 1 0 },
{ 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 }, { 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 },
}}
Индекс набора преобразований равен 3, ядро преобразования 16×48 показано следующим образом: The transform set index is 3, the 16x48 transform kernel is shown as follows:
secTransMatrix [ m ][ n ] =secTransMatrix [m][n] =
{{
{ -115 15 29 -36 -6 4 -20 4 12 5 -3 -1 10 4 2 3 },{ -115 15 29 -36 -6 4 -20 4 12 5 -3 -1 10 4 2 3 },
{ 37 51 -22 -98 18 15 -7 29 13 20 -4 -3 -4 6 9 -3 }, { 37 51 -22 -98 18 15 -7 29 13 20 -4 -3 -4 6 9 -3 },
{ { 9 -18 16 25 3 52 -43 1 10 90 -34 2 -6 14 13 12 },{ { 9 -18 16 25 3 52 -43 1 10 90 -34 2 -6 14 13 12 },
{ 2 0 -6 5 -3 -13 4 26 2 -17 -12 19 12 53 37 84 }, { 2 0 -6 5 -3 -13 4 26 2 -17 -12 19 12 53 37 84 },
{ 2 -3 3 4 -1 5 0 -5 -1 4 2 -2 5 -4 19 -12 }, { 2 -3 3 4 -1 5 0 -5 -1 4 2 -2 5 -4 19 -12 },
{ 1 0 -2 1 0 -3 1 4 3 -3 -1 4 1 4 6 8 }, { 1 0 -2 1 0 -3 1 4 3 -3 -1 4 1 4 6 8 },
{ 1 -1 1 2 0 2 -1 -2 -1 2 -1 -1 1 0 2 -2 }, { 1 -1 1 2 0 2 -1 -2 -1 2 -1 -1 1 0 2 -2 },
{ 0 0 -1 1 0 -1 1 1 1 -1 0 2 0 2 2 3 }, { 0 0 -1 1 0 -1 1 1 1 -1 0 2 0 2 2 3 },
{ { 10 -95 -4 -59 -50 -17 -7 -17 17 6 5 9 11 0 -9 6 },{ { 10 -95 -4 -59 -50 -17 -7 -17 17 6 5 9 11 0 -9 6 },
{ -{ -29 7 -80 11 -5 -45 35 -7 -2 66 25 3 -9 -1 -3 13 },{ -{ -29 7 -80 11 -5 -45 35 -7 -2 66 25 3 -9 -1 -3 13 },
{ 8 34 12 -17 -38 16 0 -73 -46 8 11 -35 -12 -20 -9 50 }, { 8 34 12 -17 -38 16 0 -73 -46 8 11 -35 -12 -20 -9 50 },
{ 0 -3 15 1 12 24 12 6 12 28 43 22 -2 -13 -28 -1 }, { 0 -3 15 1 12 24 12 6 12 28 43 22 -2 -13 -28 -1 },
{ 1 5 0 1 0 -2 -4 6 7 -7 -10 11 -7 3 -20 45 }, { 1 5 0 1 0 -2 -4 6 7 -7 -10 11 -7 3 -20 45 },
{ 0 -1 3 1 2 4 1 2 0 3 4 1 0 2 -4 1 }, { 0 -1 3 1 2 4 1 2 0 3 4 1 0 2 -4 1 },
{ 1 2 0 0 0 -1 -1 1 2 -1 -2 2 -1 -1 -3 7 }, { 1 2 0 0 0 -1 -1 1 2 -1 -2 2 -1 -1 -3 7 },
{ 0 0 1 0 1 2 0 1 0 1 1 0 0 1 -1 0 }, { 0 0 1 0 1 2 0 1 0 1 1 0 0 1 -1 0 },
{ 23 23 45 6 3 -87 -51 -5 16 29 23 -7 33 -3 1 -2 }, { 23 23 45 6 3 -87 -51 -5 16 29 23 -7 33 -3 1 -2 },
{ - { -8 -47 7 -13 67 -8 -2 21 -45 5 20 -65 -10 1 18 18 },{ - { -8 -47 7 -13 67 -8 -2 21 -45 5 20 -65 -10 1 18 18 },
{ -8 1 -59 7 -7 -14 -57 -3 -9 -19 -40 -19 -4 -5 9 -22 }, { -8 1 -59 7 -7 -14 -57 -3 -9 -19 -40 -19 -4 -5 9 -22 },
{ 1 6 7 -3 -40 7 5 5 -53 12 12 -22 18 35 28 -37 }, { 1 6 7 -3 -40 7 5 5 -53 12 12 -22 18 35 28 -37 },
{ -1 0 -2 0 3 8 15 -1 6 9 21 11 18 -16 24 -13 }, { -1 0 -2 0 3 8 15 -1 6 9 21 11 18 -16 24 -13 },
{ 0 1 1 0 -6 1 0 -3 1 -1 -3 4 -4 -6 6 14 }, { 0 1 1 0 -6 1 0 -3 1 -1 -3 4 -4 -6 6 14 },
{ 0 0 -1 0 1 2 4 0 1 1 4 2 4 -1 2 0 }, { 0 0 -1 0 1 2 4 0 1 1 4 2 4 -1 2 0 },
{ 0 1 0 0 -3 0 0 -1 0 0 -1 1 -1 -2 2 3 }, { 0 1 0 0 -3 0 0 -1 0 0 -1 1 -1 -2 2 3 },
{ 3 8 -15 14 -12 23 7 -11 70 -10 25 -75 28 46 -20 1 }, { 3 8 -15 14 -12 23 7 -11 70 -10 25 -75 28 46 -20 1 },
{ 3 5 41 -4 -13 -35 39 2 16 14 -28 -18 -72 29 -5 -12 }, { 3 5 41 -4 -13 -35 39 2 16 14 -28 -18 -72 29 -5 -12 },
{ - { -2 -12 -3 -14 65 -6 5 -52 8 -1 -10 3 1 13 -25 -3 },{ - { -2 -12 -3 -14 65 -6 5 -52 8 -1 -10 3 1 13 -25 -3 },
{ -1 0 -16 3 -3 -3 -55 -3 -4 -13 5 -1 -49 21 -33 2 }, { -1 0 -16 3 -3 -3 -55 -3 -4 -13 5 -1 -49 21 -33 2 },
{ 0 -1 2 -1 -10 1 1 27 -37 7 8 -10 15 37 -36 -15 }, { 0 -1 2 -1 -10 1 1 27 -37 7 8 -10 15 37 -36 -15 },
{ 0 0 -3 0 0 1 -7 -2 1 0 6 2 2 -5 9 -8 }, { 0 0 -3 0 0 1 -7 -2 1 0 6 2 2 -5 9 -8 },
{ 0 0 0 0 -1 0 1 5 -7 1 0 0 2 4 -2 1 }, { 0 0 0 0 -1 0 1 5 -7 1 0 0 2 4 -2 1 },
{ 0 0 -1 0 0 0 -3 0 0 0 2 1 1 -1 2 -1 }, { 0 0 -1 0 0 0 -3 0 0 0 2 1 1 -1 2 -1 },
{ 4 3 1 2 9 2 1 0 -12 0 -4 2 56 -10 -13 19 }, { 4 3 1 2 9 2 1 0 -12 0 -4 2 56 -10 -13 19 },
{ 0 -3 0 8 -20 5 -10 27 29 -6 21 -35 -23 -53 42 14 }, { 0 -3 0 8 -20 5 -10 27 29 -6 21 -35 -23 -53 42 14 },
{ 0 1 7 -3 -5 -17 41 8 3 13 -64 -27 22 -18 1 -4 }, { 0 1 7 -3 -5 -17 41 8 3 13 -64 -27 22 -18 1 -4 },
{ -1 -1 -2 -5 22 0 2 -58 21 -4 -8 4 -1 8 57 -12 }, { -1 -1 -2 -5 22 0 2 -58 21 -4 -8 4 -1 8 57 -12 },
{ 1 2 -3 2 -2 3 4 2 4 0 -5 1 4 9 -22 -4 }, { 1 2 -3 2 -2 3 4 2 4 0 -5 1 4 9 -22 -4 },
{ 1 1 6 0 0 -1 -3 -5 0 -4 19 8 -1 12 -2 5 }, { 1 1 6 0 0 -1 -3 -5 0 -4 19 8 -1 12 -2 5 },
{ 0 -2 1 0 0 -1 -2 25 5 1 10 -17 -15 -41 -25 17 }, { 0 -2 1 0 0 -1 -2 25 5 1 10 -17 -15 -41 -25 17 },
{ 0 0 -2 0 -1 -5 3 3 -1 5 -48 -19 26 -25 -28 8 }, { 0 0 -2 0 -1 -5 3 3 -1 5 -48 -19 26 -25 -28 8 },
{ 2 1 0 0 2 0 -1 0 -3 0 3 3 6 -2 5 2 }, { 2 1 0 0 2 0 -1 0 -3 0 3 3 6 -2 5 2 },
{ 0 -1 0 3 -3 1 -2 3 4 -1 -1 0 4 2 6 -4 }, { 0 -1 0 3 -3 1 -2 3 4 -1 -1 0 4 2 6 -4 },
{ 0 0 1 0 -2 -4 7 0 1 -1 10 3 -10 13 19 -4 }, { 0 0 1 0 -2 -4 7 0 1 -1 10 3 -10 13 19 -4 },
{ 0 0 0 -1 3 0 1 -5 4 1 -3 -6 0 -16 -12 4 }, { 0 0 0 -1 3 0 1 -5 4 1 -3 -6 0 -16 -12 4 },
{ 0 1 -1 1 -1 1 1 0 2 0 0 0 0 4 -5 -2 }, { 0 1 -1 1 -1 1 1 0 2 0 0 0 0 4 -5 -2 },
{ 0 1 2 0 0 0 -1 -2 0 -1 4 2 2 1 -3 2 }, { 0 1 2 0 0 0 -1 -2 0 -1 4 2 2 1 -3 2 },
{ 0 -1 0 0 1 0 -1 7 1 0 3 -1 -3 -5 -2 1 }, { 0 -1 0 0 1 0 -1 7 1 0 3 -1 -3 -5 -2 1 },
{ 0 0 -1 0 0 -2 0 0 0 0 -6 -2 2 1 4 0 }, { 0 0 -1 0 0 -2 0 0 0 0 -6 -2 2 1 4 0 },
}}
В случае RST8×8 или RST4×4, с точки зрения подсчета умножения может произойти, когда все TU имеют размер 4×4 TU или 8×8 TU. Следовательно, верхние матрицы 8×64 и 8×16 (другими словами, первые 8 базисных векторов преобразования сверху в каждой матрице) применяются к 8×8 TU и 4×4 TU соответственно. In the case of RST8x8 or RST4x4, in terms of counting, multiplication can occur when all TUs are 4x4 TU or 8x8 TU in size. Therefore, the top 8x64 and 8x16 matrices (in other words, the first 8 top transform basis vectors in each matrix) are applied to the 8x8 TU and 4x4 TU, respectively.
В случае блоков размером более 8×8 TU (ширина и высота больше 8) RST8×8 (т.е. Матрица 16×64) применяется к верхней левой области 8×8. Для 8×4 TU или 4×8 TU, RST4×4 (т.е. Матрица 16×16) применяется к верхней левой области 4×4 (в примере RST 4×4 не применяется к другим областям 4×4). В случае 4xN или Nx4 TU (N ≥ 16) RST4×4 применяется к двум соседним левым верхним блокам 4×4. For blocks larger than 8x8 TU (width and height greater than 8), RST8x8 (i.e. 16x64 Matrix) is applied to the top left 8x8 region. For 8x4 TU or 4x8 TU, RST4x4 (i.e. 16x16 Matrix) is applied to the top left 4x4 region (in the example, RST 4x4 is not applied to other 4x4 regions). In case of 4xN or Nx4 TU (N ≥ 16), RST4x4 is applied to the two adjacent top left 4x4 blocks.
С учетом вышеупомянутого упрощения в некоторых случаях количество умножений составляет 8 на выборку. Given the above simplification, in some cases the number of multiplications is 8 per sample.
Чтобы уменьшить размер матрица вторичного преобразования, применяются матрицы 16×48 с той же конфигурацией набора преобразований, каждая матрица 16×48 принимает 48 входных выборок из трех блоков 4×4 в верхнем левом блоке 8×8 (в примере справа внизу Блоки 4×4 исключены), как показано на фиг. 12. To reduce the size of the secondary transform matrix, 16x48 matrices are applied with the same transform set configuration, each 16x48 matrix taking 48 input samples from three 4x4 blocks in the top left 8x8 block (in the example below right 4x4 blocks excluded), as shown in Fig. 12.
В VVC 5.0 раскрыты инструмент MIP и инструмент RST, и оба инструмента применяются для внутренних блоков. Однако оба инструмента не согласованы в смысле выбора ядра вторичного преобразования. Другими словами, поскольку MIP не является обычным внутренним режимом, что означает, что если один внутренний блок предсказывается с использованием режима MIP, способ выбора ядра преобразования RST не определяется с обоими принятыми предложениями JVET-N0217 и JVET-N0193. Следующие решения решают указанную проблему. VVC 5.0 introduces the MIP tool and the RST tool, and both tools are used for indoor blocks. However, both tools are not consistent in terms of the choice of secondary transformation kernel. In other words, since MIP is not a regular internal mode, which means that if one internal block is predicted using MIP mode, the way to select the RST transform kernel is not determined with both JVET-N0217 and JVET-N0193 proposals adopted. The following solutions resolve the above issue.
Фиг. 15 иллюстрирует способ согласно настоящему раскрытию. На фиг. 15 проиллюстрирован способ кодирования, реализуемый устройством декодирования или устройством кодирования. Устройство декодирования может быть декодером 30, как описано выше. Аналогично, устройство кодирования может быть кодером 20, как описано выше. На фиг. 15, на этапе 1601 способ содержит определение режима внутреннего предсказания текущего блока. На следующем этапе 1603 способ содержит определение выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. Это более подробно описано ниже. Fig. 15 illustrates a method according to the present disclosure. In fig. 15 illustrates an encoding method implemented by a decoding apparatus or an encoding apparatus. The decoding device may be a decoder 30 as described above. Likewise, the encoding device may be an encoder 20, as described above. In fig. 15, at step 1601, the method comprises determining an intra prediction mode of the current block. At a next step 1603, the method comprises determining a secondary transform selection of the current block based on the intra prediction mode determined for the current block. This is described in more detail below.
Фиг. 16 иллюстрирует кодер 20 согласно настоящему раскрытию. На фиг. 16 кодер 20 содержит блок 2001 определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока. Кодер 20 на фиг.17 дополнительно показывает блок 2003 выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. Fig. 16 illustrates an encoder 20 according to the present disclosure. In fig. 16, the encoder 20 includes a determination block 2001 configured to determine the intra prediction mode of the current block. The encoder 20 of FIG. 17 further shows a selector 2003 configured to determine a secondary transform selection of the current block based on an intra prediction mode determined for the current block.
Фиг. 17 иллюстрирует декодер 30 согласно настоящему раскрытию. На фиг. 17 декодер 30 содержит блок 3001 определения, выполненный с возможностью определения режима внутреннего предсказания текущего блока. Декодер 30 на фиг.17 дополнительно показывает блок 3003 выбора, выполненный с возможностью определения выбора вторичного преобразования текущего блока на основе режима внутреннего предсказания, определенного для текущего блока. Fig. 17 illustrates a decoder 30 according to the present disclosure. In fig. 17, the decoder 30 includes a determination unit 3001 configured to determine the intra prediction mode of the current block. The decoder 30 of FIG. 17 further shows a selector 3003 configured to determine a secondary transform selection of the current block based on an intra prediction mode determined for the current block.
В дальнейшем способ кодирования по фиг. 15, реализованный устройством декодирования или устройством кодирования по фиг. 17 и 16, соответственно, более подробно. In the following, the encoding method of FIG. 15 implemented by the decoding device or encoding device of FIG. 17 and 16, respectively, in more detail.
Решение 1Solution 1
Согласно решению 1, внутреннее предсказание на основе матрицы и сокращенное вторичное преобразование исключаются для одного и того же блока с внутренним предсказанием. According to Solution 1, matrix-based intra prediction and reduced secondary transform are eliminated for the same intra prediction block.
В примере, когда блок с внутренним предсказанием предсказывается с использованием режима MIP (в примере, значение флага MIP может использоваться, чтобы указать, предсказывается ли блок с использованием режима MIP или нет), вторичное преобразование отключается для этого блок с внутренним предсказанием, другими словами, значение индекса вторичного преобразования установлено в 0, или индекс вторичного преобразования не нужно декодировать из битового потока. In an example, when an intra-prediction block is predicted using the MIP mode (in the example, the value of the MIP flag can be used to indicate whether the block is predicted using the MIP mode or not), the secondary transform is disabled for that intra-prediction block, in other words, the secondary transform index value is set to 0, or the secondary transform index does not need to be decoded from the bitstream.
Когда блок с внутренним предсказанием не предсказывается с использованием режима MIP, ядро преобразования вторичного преобразования выбирается на основе упомянутого способа в JVET-N0193. When an intra prediction block is not predicted using the MIP mode, a secondary transform transform kernel is selected based on the method mentioned in JVET-N0193.
Изменения в тексте спецификации по сравнению с JVET-N0193 выделены серым цветом. Changes to the specification text compared to JVET-N0193 are highlighted in grey.
&& IntraSubPartitionsSplitType == ISP_NO_SPLIT && intra_mip_flag == 0) { if (min(cbWidth, cbHeight)> = 4 && sps_st_enabled_flag == 1 && CuPredMode [ x0 ][ y0 ] = = MODE_INTRA
&& IntraSubPartitionsSplitType == ISP_NO_SPLIT && intra_mip_flag == 0) {
numZeroOutSigCoeff == 0) { if ((numSigCoeff> ((treeType == SINGLE_TREE)? 2 : 1 ) ) &&
numZeroOutSigCoeff == 0) {
7.4.3.1 Семантика RBSP набора параметров последовательности7.4.3.1 RBSP Sequence Parameter Set Semantics
…………
sps_st_enabled_flag, равный 1, указывает, что st_idx может присутствовать в синтаксисе остаточного кодирования для единиц внутреннего кодирования. sps_st_enabled_flag, равный 0, указывает, что st_idx не присутствует в синтаксисе остаточного кодирования для единиц внутреннего кодирования. sps_st_enabled_flag equal to 1 indicates that st_idx may be present in the residual encoding syntax for inner encoding units. sps_st_enabled_flag equal to 0 indicates that st_idx is not present in the residual encoding syntax for inner encoding units.
…………
7.4.7.5 Семантика единицы кодирования7.4.7.5 Coding unit semantics
…………
st_idx [ x0 ][ y0 ] указывает, какое ядро вторичного преобразования применяется между двумя ядрами-кандидатами в выбранном наборе преобразований. st_idx [ x0 ][ y0 ], равное 0, указывает, что вторичное преобразование не применяется. Индексы массива x0, y0 определяют положение (x0, y0) левого верхнего выборки рассматриваемого блока преобразования относительно левого верхнего выборки изображения. st_idx [ x0 ][ y0 ] indicates which secondary transform kernel is applied between two candidate kernels in the selected transform set. st_idx[x0][y0] equal to 0 indicates that no secondary conversion is applied. The array indices x0, y0 determine the position (x0, y0) of the top left sample of the transform block in question relative to the top left sample of the image.
intra_mip_flag[ x0 ][ y0 ], равное 1, указывает, что тип внутреннего предсказания для выборок яркости является аффинным линейным взвешенным внутренним предсказанием. intra_lwip_flag[ x0 ][ y0 ], равное 0, указывает, что тип внутреннего предсказания для выборок яркости не является аффинным линейным взвешенным внутренним предсказанием. intra_mip_flag [ x0 ][ y0 ] equal to 1 indicates that the intra prediction type for luma samples is affine linear weighted intra prediction. intra_lwip_flag[ x0 ][ y0 ] equal to 0 indicates that the intra prediction type for luma samples is not affine linear weighted intra prediction.
Решение 2Solution 2
Согласно решению 2, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, считается, что для этого блока используется один из набора ядер вторичного преобразования. According to Solution 2, during the secondary transform kernel selection process, when a block is predicted using the MIP mode, one of the set of secondary transform kernels is considered to be used for that block.
В одном варианте осуществленияIn one embodiment
Набор 0 преобразований используется в качестве выбранного набора ядер вторичного преобразования, когда текущий блок предсказывается в режиме MIP. Transform set 0 is used as the selected set of secondary transform kernels when the current block is predicted in MIP mode.
Матрица RST выбирается из четырех наборов преобразований, каждый набор преобразований содержит два преобразования. Набор преобразований, который применяется к блоку, определяется в соответствии с режимом внутреннего предсказания следующим образом: The RST matrix is selected from four sets of transformations, each set of transformations containing two transformations. The set of transformations that is applied to the block is determined according to the intra prediction mode as follows:
Если текущий внутренний блок предсказывается с использованием режима CCLM, выбирается набор 0 преобразований; If the current indoor block is predicted using CCLM mode, transform set 0 is selected;
В противном случае, если текущий внутренний блок предсказывается с использованием режима MIP, выбирается набор 0 преобразований; Otherwise, if the current indoor block is predicted using MIP mode, transform set 0 is selected;
В противном случае (если текущий внутренний блок не предсказывается с использованием режима CCLM или MIP), выбор набора преобразований выполняется в соответствии со следующей таблицей: Otherwise (if the current indoor block is not predicted using CCLM or MIP mode), the transformation set selection is performed according to the following table:
Таблица 4. Таблица выбора набора преобразованийTable 4. Transformation set selection table
Диапазон индекса для IntraPredMode составляет от -14 до 83 (включая -14 и 83), что представляет собой преобразованный индекс режима, используемый для широкоугольного внутреннего предсказания. The index range for IntraPredMode is -14 to 83 (including -14 and 83), which is the converted mode index used for wide-angle intra prediction.
В этом решении один набор преобразований используется, когда текущий блок предсказывается с использованием режима MIP, набор 0 преобразований используется в примере, другие наборы преобразований также могут использоваться в этом решении. In this solution, one transform set is used when the current block is predicted using MIP mode, transform set 0 is used in the example, other transform sets can also be used in this solution.
Решение 3Solution 3
Согласно решению 3, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, считается, что для этого блока используется обученный набор ядер вторичного преобразования. Обученный набор ядер вторичного преобразования может отличаться от набора ядер преобразования в приведенных выше примерах. According to Solution 3, during the secondary transform kernel selection process, when a block is predicted using MIP mode, a trained set of secondary transform kernels is considered to be used for that block. The trained set of secondary transformation kernels may be different from the set of transformation kernels in the examples above.
В одном варианте осуществления:In one embodiment:
Набор 4 преобразований (новый обученный) используется в качестве выбранного набора ядер вторичного преобразования, когда текущий блок предсказывается в режиме MIP. Transformation set 4 (new trained) is used as the selected set of secondary transformation kernels when the current block is predicted in MIP mode.
Набор 4 преобразований имеет те же размеры, что и наборы 0-3 преобразований (т.е. 16×16 и 16×48), которые были обучены на основе того же способа машинного обучения и вводимого обучающего набора для режима MIP.Transform set 4 has the same dimensions as transform sets 0-3 (i.e. 16x16 and 16x48), which were trained based on the same machine learning method and MIP mode training set input.
Матрица RST выбирается из четырех наборов преобразований, каждый набор преобразований содержит два преобразования. Набор преобразований, который применяется к блоку, определяется в соответствии с режимом внутреннего предсказания следующим образом: The RST matrix is selected from four sets of transformations, each set of transformations containing two transformations. The set of transformations that is applied to the block is determined according to the intra prediction mode as follows:
Если текущий внутренний блок предсказывается с использованием режимов CCLM, выбирается набор 0 преобразований; If the current indoor block is predicted using CCLM modes, transform set 0 is selected;
В противном случае, если текущий внутренний блок предсказывается с использованием режима MIP, выбирается набор 4 преобразований; Otherwise, if the current indoor block is predicted using the MIP mode, transform set 4 is selected;
В противном случае (если текущий внутренний блок не предсказывается с использованием режима CCLM или MIP) выбор набора преобразований выполняется в соответствии со следующей таблицей: Otherwise (if the current indoor block is not predicted using CCLM or MIP mode), the transformation set selection is performed according to the following table:
Таблица 5. Таблица выбора набора преобразованийTable 5. Transformation set selection table
Диапазон индекса для IntraPredMode составляет от -14 до 83 (включая -14 и 83), что представляет собой преобразованный индекс режима, используемый для широкоугольного внутреннего предсказания. The index range for IntraPredMode is -14 to 83 (including -14 and 83), which is the converted mode index used for wide-angle intra prediction.
В этом решении новый обученный набор преобразований (например, набор 4 преобразований) используется, когда текущий блок предсказывается с использованием режима MIP. In this solution, a new trained set of transformations (for example, set 4 of transformations) is used when the current block is predicted using the MIP mode.
Решение 4Solution 4
Согласно решению 4, во время процесса выбора ядра преобразования вторичного преобразования, когда блок предсказывается с использованием режима MIP, используется таблица соответствия для отображения индекса режима MIP в индекс обычного внутреннего режима, затем набор ядер вторичного преобразования выбирается на основе этого индекса обычного внутреннего режима. According to Solution 4, during the secondary transform kernel selection process, when a block is predicted using the MIP mode, a lookup table is used to map the MIP mode index to the regular internal mode index, then a set of secondary transform kernels is selected based on this regular internal mode index.
В одном варианте осуществления:In one embodiment:
Если текущий блок предсказывается с использованием режима MIP, индекс режима MIP отображается в индекс обычного внутреннего режима на основе таблицы 6. В этом примере таблица 6 такая же, как таблица соответствия MIP MPM. If the current block is predicted using the MIP mode, the MIP mode index is mapped to the normal internal mode index based on Table 6. In this example, Table 6 is the same as the MIP MPM mapping table.
Таблица 6. Описание соответствия между режимами аффинного линейного взвешиваемого внутреннего предсказания и внутреннего предсказанияTable 6. Description of the correspondence between affine linear weighted intra prediction and intra prediction modes
Затем выбор набора вторичных преобразований выполняется в соответствии со следующей таблицей: The selection of a set of secondary transformations is then made according to the following table:
Таблица 7. Таблица выбора набора преобразованийTable 7. Transformation set selection table
Например, если текущий блок предсказывается с использованием индекса режима MIP 10, а значение sizeID типа размера блока для текущего блока равно 0, то отображаемый индекс обычного внутреннего режима равен 18 на основе таблицы 6, а набор 2 вторичных преобразований выбирается на основе таблицы 7. For example, if the current block is predicted using a MIP mode index of 10, and the block size type sizeID value for the current block is 0, then the normal internal mode mapped index is 18 based on Table 6, and the secondary transform set 2 is selected based on Table 7.
В этом решении используется способ отображения из индекса режима MIP в индекс обычного внутреннего режима, когда блок предсказывается с использованием режима MIP, выбор ядра вторичного преобразования основан на отображенном индексе обычного внутреннего режима. This solution uses a mapping method from a MIP mode index to a regular internal mode index, when a block is predicted using the MIP mode, the selection of the secondary transformation kernel is based on the mapped regular internal mode index.
Фиг. 18 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и опционально включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное. Fig. 18 is a block diagram showing a content delivery system 3100 for implementing a content distribution service. This content delivery system 3100 includes a capture device 3102, a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication line 3104. The communication link may include a communication channel 13 described above. Communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G/4G/5G), USB, or any combination thereof, or the like.
Устройство 3102 захвата формирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по отдельности. The capture device 3102 generates data and can encode the data using the encoding method shown in the above embodiments. Alternatively, capture device 3102 may distribute the data to a streaming server (not shown in the Figures), and the server encodes the data and transmits the encoded data to terminal device 3106. Capture device 3102 includes, but is not limited to, a camera, smartphone, or tablet. , a computer or laptop, a video conferencing system, a PDA, a vehicle-mounted device, or a combination of any of these, or the like. For example, capture device 3102 may include source device 12 described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform video encoding processing. When the data includes audio (ie, speech), an audio encoder included in the capture device 3102 may actually perform audio encoding processing. For some practical scenarios, capture device 3102 distributes encoded video and audio data by multiplexing them together. For other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.
В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (Network Video Recorder, NVR) / цифровой видеорегистратор (Digital Video Recorder, DVR) 3112, телевизор 3114, телевизионная приставка (Set Top Box, STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования. In the content delivery system 3100, the terminal device 310 receives and reproduces encoded data. The terminal device 3106 may be a device with ingest and retrieval capabilities, such as a smartphone or tablet 3108, a computer or laptop 3110, a Network Video Recorder (NVR)/Digital Video Recorder (DVR) 3112, a television 3114, a television set top box (STB) 3116, video conferencing system 3118, video surveillance system 3120, personal digital assistant (PDA) 3122, vehicle-mounted device 3124, or a combination thereof, or the like, capable of decoding the above encoded data. For example, terminal device 3106 may include receiver device 14 described above. When the encoded data includes video, the video decoder 30 included in the terminal device is given priority to perform video decoding. When the encoded data includes audio, an audio decoder included in the terminal device is given priority to perform audio decoding processing.
Для терминального устройства со своим дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR) / цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных. For a terminal device with its own display, such as a 3108 smartphone or tablet, 3110 computer or laptop, 3112 Network Video Recorder (NVR)/Digital Video Recorder (DVR), 3114 TV, 3122 Personal Digital Assistant (PDA), or 3124 vehicle-mounted device, terminal the device can transmit decoded data to its display. For a non-display terminal device, such as the STB 3116, video conferencing system 3118, or video surveillance system 3120, it communicates with an external display 3126 to receive and display the decoded data.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования снимка или устройство декодирования изображения, как показано в вышеупомянутых вариантах осуществления. When each device in this system performs encoding or decoding, a picture encoding device or an image decoding device may be used, as shown in the above embodiments.
Фиг. 19 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное. Fig. 19 is a diagram showing the structure of an exemplary terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, a protocol processing unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real Time Transport Protocol (RTP), Exchange Protocol real-time messaging (RTMP) or any combination thereof, or the like.
После того, как блок 3202 обработки протокола обработает поток, формируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования. After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to a demultiplexing block 3204. A demultiplexer 3204 may separate the multiplexed data into encoded audio data and encoded video data. As described above, in other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is transmitted to the video decoder 3206 and audio decoder 3208 without using the demultiplexer 3204.
Посредством обработки демультиплексирования формируются элементарный поток (Elementary Stream, ES) видео, ES аудио и, опционально, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует ES видео с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для формирования видеокадра и подает эти данные в блок 3212 синхронизации. Аудиодекодер 3208 декодирует ES аудио для формирования аудиокадра и подает эти данные в блок 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. 19) перед его подачей в блок 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. 19) перед его подачей в блок 3212 синхронизации. Demultiplexing processing produces an Elementary Stream (ES) of video, ES audio, and optionally subtitles. The video decoder 3206, which includes the video decoder 30 described in the above embodiments, decodes the ES video using the decoding method as shown in the above embodiments to generate a video frame and supplies this data to the synchronization unit 3212. Audio decoder 3208 decodes ES audio to form an audio frame and supplies this data to synchronization unit 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. 19) before being supplied to synchronization block 3212. Likewise, an audio frame may be stored in a buffer (not shown in FIG. 19) before being supplied to synchronization block 3212.
Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио в видео/аудио дисплей 3214. Например, блок 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных. The synchronization unit 3212 synchronizes the video frame and the audio frame and supplies the video/audio to the video/audio display 3214. For example, the synchronization unit 3212 synchronizes the presentation of video and audio information. Information may be encoded in syntax using timestamps relating to the presentation of the encoded audio and video data, as well as timestamps relating to the delivery of the data stream itself.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров. If subtitles are included in the stream, subtitle decoder 3210 decodes the subtitles and synchronizes them with the video frame and audio frame and transmits the video/audio/subtitles to the video/audio/subtitle display 3216.
Математические операторыMathematical operators
Математические операторы, используемые в этой заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и вещественнозначное деление. Соглашения о нумерации и подсчете определяют начало с 0, например, "первый" эквивалентен 0-му, "второй" эквивалентен 1-му и т. д. The mathematical operators used in this application are similar to those used in the C programming language. However, the results of integer division and arithmetic shift operations are defined more precisely, and additional operations such as exponentiation and real-valued division are also defined. Numbering and counting conventions specify starting at 0, for example, "first" is equivalent to 0, "second" is equivalent to 1, etc.
Арифметические операторыArithmetic operators
Следующие арифметические операторы определены следующим образом:The following arithmetic operators are defined as follows:
Логические операторыLogical operators
Следующие логические операторы определены следующим образом: The following logical operators are defined as follows:
x && y - Булево логическое "и" для x и y x && y - Boolean logical "and" for x and y
х || y - Булево логическое "или" для x и yx || y - Boolean logical "or" for x and y
! - Булево логическое "не"! - Boolean logical "not"
x ? y : z - Если x равно ИСТИНЕ или не равно 0, вычисляется значение y; в противном случае вычисляется значение z. x? y : z - If x is TRUE or not 0, the value of y is calculated; otherwise, the z value is calculated.
Операторы отношенияRelational operators
Следующие операторы отношения определены следующим образом: The following relational operators are defined as follows:
> - Больше> - More
>= - Больше или равно>= - Greater than or equal to
< - Меньше< - Less
<= - Меньше или равно<= - Less than or equal to
== - Равно== - Equal
!= - Не равно!= - Not equal
Когда оператор сравнения применяется к синтаксическому элементу или переменной, которому(ой) присвоено значение "na" (не применимо, англ. not applicable), значение "na" обрабатывается как отдельное значение для синтаксического элемента или переменной. Значение "na" не считается равным любому другому значению. When a comparison operator is applied to a syntax element or variable that is assigned the value "na" (not applicable), the value of "na" is treated as a separate value for the syntax element or variable. The value "na" is not considered equal to any other value.
Битовые операторыBit operators
Следующие побитовые операторы определены следующим образом: The following bitwise operators are defined as follows:
& - Побитовое "и". При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0. & - Bitwise "and". When operating on integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.
| - При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0. | - When operating on integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.
^ - При работе над целочисленными аргументами оперирует над представлением дополнения до двойки целочисленного значения. При работе над двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется путем добавления более значащих битов, равных 0. ^ - When operating on integer arguments, operates on the two's complement representation of an integer value. When working on a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding more significant bits equal to 0.
x >> y - Арифметический сдвиг вправо целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в старшие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB для x до операции сдвига. x >> y - Arithmetic right shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. The bits shifted to the most significant bits (MSB) by a right shift have a value equal to the MSB of x before the shift operation.
x << y - Арифметический сдвиг влево целочисленного представления дополнения до двойки x на y двоичных разрядов. Эта функция определена только для неотрицательных целочисленных значений y. Биты, сдвинутые в младшие биты (LSB) в результате сдвига влево, имеют значение, равное 0. x << y - Arithmetic left shift of the two's complement integer representation of x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bits (LSB) by left shifting have a value of 0.
Операторы присваиванияAssignment Operators
Следующие арифметические операторы определены следующим образом: The following arithmetic operators are defined as follows:
= - Оператор присвоения= - Assignment operator
++ - Инкремент, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива вычисляется в значение переменной до операции приращения. ++ - Increment, i.e. x++ is equivalent to x = x+ 1; when used in an array index, it is calculated into the value of the variable before the increment operation.
−− - Декремент, т.е. x−− эквивалентно x=x-1; при использовании в индексе массива вычисляется значение переменной до операции уменьшения. −− - Decrement, i.e. x−− is equivalent to x = x- 1; when used in an array index, the value of the variable is calculated before the decrement operation.
+= - Приращение на указанную величину, т.е. x+=3 эквивалентно x=x+3, а x+=(−3) эквивалентно x=x+(−3). += - Increment by the specified amount, i.e. x+=3 is equivalent to x=x+3, and x+=(−3) is equivalent to x=x+(−3).
−= - Уменьшение на указанную величину, т.е. x−=3 эквивалентно x=x−3, а x−=(−3) эквивалентно x=x−(−3). −= - Decrease by the specified amount, i.e. x−=3 is equivalent to x=x−3, and x−=(−3) is equivalent to x=x−(−3).
Обозначение диапазонаRange designation
Следующее обозначение используется для указания диапазона значений: The following notation is used to indicate a range of values:
x=y..zx принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, а z больше y. x=y..zx takes integer values from y to z, inclusive, where x, y and z are integers and z is greater than y.
Математические функцииMathematical functions
Определены следующие математические функции: The following mathematical functions are defined:
Abs( x ) = Abs( x ) =
Asin(x) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от - до включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах радиан. Asin(x) is a trigonometric arcsine function operating on an argument x that ranges from - to inclusive, with an output value ranging from -π÷2 to π÷2 inclusive, in units of radians.
Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от - π÷2 до π÷2 включительно в единицах радиан. Atan(x) is a trigonometric arctangent function operating on an argument x, with an output value ranging from - π÷2 to π÷2 inclusive, in units of radians.
Atan2(y,x) = Atan2(y,x) =
Ceil(x) Ceil(x)
Clip1Y(x) = Clip3( 0, ( 1 << BitDepthY ) − 1, x ) Clip1Y(x) = Clip3( 0, ( 1 << BitDepthY ) − 1, x )
Clip1C(x) = Clip3( 0, ( 1 << BitDepthC ) − 1, x ) Clip1C(x) = Clip3( 0, ( 1 << BitDepthC ) − 1, x )
Clip3(x,y,z) = Clip3(x,y,z) =
Cos(x) тригонометрическая функция косинуса, работающая с аргументом x в единицах радиан. Cos(x) is a trigonometric cosine function that operates on x in units of radians.
Floor(x) наибольшее целое число, меньшее или равное x. Floor(x) is the largest integer less than or equal to x.
GetCurrMsb(a,b,c,d) = GetCurrMsb(a,b,c,d) =
Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 281 828...). Ln(x) natural logarithm of x (logarithm to base e, where e is the base constant of the natural logarithm 281 828...).
Log2(x) Log2(x)
Log10(x) логарифм x по основанию 10. Log10(x) logarithm of x to base 10.
Min(x,y)= Min(x,y)=
Max(x,y)= Max(x,y)=
Round(x)=Sign(x)*Floor(Abs(x)+) Round(x)=Sign(x)*Floor(Abs(x)+)
Sign(x)= Sign(x)=
Sin(x) тригонометрическая функция синуса, работающая с аргументом x в единицах радиан. Sin(x) is a trigonometric sine function that operates on x in units of radians.
Sqrt(x) = Sqrt(x) =
Swap(x,y)=(y,x) Swap(x,y)=(y,x)
Tan(x) тригонометрическая функция тангенса, работающая с аргументом x в единицах радиан. Tan(x) is a trigonometric tangent function that operates on x in units of radians.
Порядок приоритетности операцийOrder of priority of operations
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила: When the order of precedence in an expression is not explicitly specified using parentheses, the following rules apply:
- Операции с более высоким приоритетом вычисляются перед любой операцией с более низким приоритетом. - Higher priority operations are evaluated before any lower priority operation.
- Операции с одинаковым приоритетом вычисляются последовательно слева направо. - Operations with the same priority are evaluated sequentially from left to right.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет. The table below lists the priority of operations from highest to lowest; a higher position in the table indicates higher priority.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C. For those operators that are also used in the C programming language, the order of precedence used in this description is the same as in the C programming language.
Таблица. Приоритетность операций от высшей (в верхней части таблицы) до низшей (в нижней части таблицы)Table. Priority of operations from highest (at the top of the table) to lowest (at the bottom of the table)
Текстовое описание логических операцийText description of logical operations
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
if( условие 0 )if( condition 0 )
инструкция 0 instructions 0
else if( условие 1 )else if( condition 1 )
инструкция 1 instruction 1
......
else /* информативный комментарий по оставшемуся условию */else /* informative comment on the remaining condition */
инструкция n instruction n
может быть описано следующим образом:can be described as follows:
... как указано ниже / ... применяется следующее: ... as below / ... the following applies:
- If условие 0, инструкция 0- If condition 0, instruction 0
- Иначе, если условие 1, инструкция 1- Else, if condition 1, instruction 1
- ...- ...
-- Иначе (информативный комментарий по оставшемуся условию), инструкция n. -- Otherwise (informative comment on the remaining condition), instruction n.
Каждое выражение "Если ... Иначе, если ... Иначе, ..." в тексте вводится словами "... как указано ниже" или "...применяется следующее", за которым сразу следует "Если ...". Последним условием "Если ... Иначе Если ... Иначе, ..." всегда является "Иначе, ...". Чередование определений "Если ... Иначе Если ... Иначе, ..." могут быть идентифицированы путем сопоставления "... как указано ниже" или "... применяется следующее" с завершающим "Иначе, ...". Each "If... Else, if... Else,..." expression in the text is introduced by the words "... as follows" or "... the following applies", immediately followed by "If..." . The last condition of "If... Else If... Otherwise, ..." is always "Else, ...". Alternating definitions "If... Else If... Otherwise, ..." can be identified by matching "... as follows" or "... the following applies" with the final "Else, ...".
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
if( условие 0a && условие 0b )if( condition 0a && condition 0b )
инструкция 0 instructions 0
else if( условие 1a | | условие 1b )else if( condition 1a | | condition 1b )
инструкция 1 instruction 1
......
else инструкция nelse instruction n
может быть описано следующим образом:can be described as follows:
... как указано ниже / ... применяется следующее:... as below / ... the following applies:
- Если все из следующих условий истинны, инструкция 0: - If all of the following conditions are true, instruction 0:
- условие 0a - condition 0a
- условие 0b - condition 0b
-- Иначе, если истинными являются одно или более из следующих условий, определение 1: -- Else, if one or more of the following conditions are true, definition 1:
- условие 1a - condition 1a
- условие 1b - condition 1b
- ...- ...
- Иначе, инструкция n- Otherwise, instruction n
В тексте определение логических операций, которое математически бы описывалось в следующей форме:The text contains a definition of logical operations, which would be described mathematically in the following form:
if( условие 0 )if( condition 0 )
инструкция 0 instructions 0
if( условие 1 )if( condition 1 )
инструкция 1 instruction 1
может быть описано следующим образом: can be described as follows:
При условии 0, инструкция 0Condition 0, instruction 0
При условии 1, инструкция 1.Condition 1, instruction 1.
Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодирования, следует отметить, что варианты осуществления системы 10 кодирования, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодирования неподвижного изображения, т.е. обработки или кодирования отдельного изображения независимо от любого предшествующего или последующего изображения, как при видеокодировании. В общем, только блоки 244 внешнего предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодирование для обработки изображения ограничено одним изображением 17. Все другие функциональные возможности (также именуемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки неподвижных изображений, например вычисления 204/304 остатка, преобразования 206, квантования 208, обратного квантования 210/310, (обратного) преобразования 212/312, разделения 262/362, внутреннего предсказания 254/354 и/или контурной фильтрации 220, 320 и энтропийного кодирования 270 и энтропийного декодирования 304. Although embodiments of the present invention have been primarily described in terms of video encoding, it should be noted that embodiments of encoding system 10, encoder 20, and decoder 30 (and thus system 10), as well as other embodiments described herein, may also be configured to process or encode a still image, i.e. processing or encoding a single image independently of any preceding or subsequent image, as in video encoding. In general, only the inter prediction (encoder) and 344 (decoder) blocks 244 may not be available if the encoding for image processing is limited to a single image 17. All other functionality (also referred to as tools or techniques) of video encoder 20 and video decoder 30 may equally useful for still image processing, such as residual computation 204/304, transform 206, quantization 208, inverse quantization 210/310, (inverse) transform 212/312, division 262/362, intra prediction 254/354, and/or contour filtering 220, 320 and entropy encoding 270 and entropy decoding 304.
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, микропрограммным обеспечением или любой их комбинацией. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации способов, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель. Embodiments of, for example, encoder 20 and decoder 30, as well as the functions described herein, for example, with respect to encoder 20 and decoder 30 may be implemented by hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted through a communication medium in the form of one or more instructions or code and executed by a hardware processing unit. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as a storage medium, or a communication medium, including any medium that enables transmission of a computer program from one location to another, such as according to a communications protocol. Thus, computer readable media may typically correspond to (1) tangible computer readable media that is durable, or (2) a communication medium such as a signal or carrier wave. Storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementing the methods described in this disclosure. The computer program product may include computer-readable media.
В качестве примера, а не ограничения, такие считываемые компьютером носители могут содержать RAM, ROM, EEPROM, CD-ROM или другое хранилище на оптическом диске, хранилище на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs)воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей. By way of example, and not limitation, such computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory, or any other media that can used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Additionally, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave communications, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave communications are included in the definition of media. However, it should be understood that computer readable and storage media do not include connections, carrier waves, signals, or other short-lived media, but are instead directed to long-term, tangible storage media. The disk and disc used in this document include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs ) typically reproduce data magnetically, while discs (discs) reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer readable media.
Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин "процессор", используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации способов, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, способы могут быть полностью реализованы в одной или более схемах или логических элементах. The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein can refer to any of the above structure or any other structure suitable for implementing the methods described herein. Additionally, in some aspects, the functionality described herein may be provided within specialized hardware and/or software modules configured for encoding and decoding or included in a bundled codec. In addition, the methods may be implemented entirely in one or more circuits or logic elements.
Способы этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением. The methods of this disclosure may be implemented in a wide variety of devices or hardware components, including a wireless phone, an integrated circuit (IC), or a set of ICs (eg, a chipset). This disclosure describes various components, modules, or blocks to highlight functional aspects of devices configured to implement the disclosed technologies, but not necessarily required to be implemented by different hardware units. Rather, as described above, the various blocks may be combined into a codec hardware block or provided by a collection of interacting hardware blocks, including one or more processors as described above, together with suitable software and/or firmware.
Настоящее раскрытие раскрывает следующие дополнительные аспекты. The present disclosure discloses the following additional aspects.
Первый аспект способа кодирования, реализуемого устройством декодирования или устройством кодирования, содержащий: выбор ядра вторичного преобразования для вторичного преобразования текущего блока на основе индекса режима внутреннего предсказания текущего блока, когда текущий блок не предсказывается с использованием режима внутреннего предсказания на основе матрицы, MIP. A first aspect of an encoding method implemented by a decoding apparatus or an encoding apparatus, comprising: selecting a secondary transform kernel for secondary transforming a current block based on an intra prediction mode index of the current block when the current block is not predicted using a matrix-based intra prediction mode, MIP.
Второй аспект способа согласно первому аспекту, в котором способ дополнительно содержит: отключение вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием режима MIP.A second aspect of the method according to the first aspect, wherein the method further comprises: disabling secondary mapping of the current block when the current block is predicted using the MIP mode.
Третий аспект способа согласно второму аспекту, в котором отключение вторичного преобразования текущего блока содержит: установку значения информации указания вторичного преобразования для текущего блока в значение по умолчанию. A third aspect of the method according to the second aspect, wherein disabling the secondary conversion of the current block comprises: setting the value of the secondary conversion indication information for the current block to a default value.
Четвертый аспект способа согласно любому из аспектов с первого по третий, в котором то, предсказывается ли текущий блок с использованием режима MIP или нет, указывается в соответствии со значением информации указания MIP. A fourth aspect of the method according to any of the first to third aspects, in which whether the current block is predicted using the MIP mode or not is indicated according to the value of the MIP indication information.
Пятый аспект способа кодирования, реализуемого устройством декодирования или устройством кодирования, содержащий: получение индекса режима внутреннего предсказания текущего блока в соответствии с внутренним предсказанием на основе матрицы, MIP, индексом режима текущего блока и размером текущего блока; выбор ядра вторичного преобразования для вторичного преобразования текущего блока на основе индекса режима внутреннего предсказания текущего блока. A fifth aspect of an encoding method implemented by a decoding device or an encoding device, comprising: obtaining an intra prediction mode index of the current block according to the matrix-based intra prediction, MIP, mode index of the current block, and the size of the current block; selecting a secondary transform kernel to secondary transform the current block based on the intra prediction mode index of the current block.
Шестой аспект способа согласно пятому аспекту, в котором индекс режима внутреннего предсказания текущего блока получается согласно отношению отображения среди индекса режима MIP, размера текущего блока, отношение отображения указывается в соответствии с заранее определенным Таблица. The sixth aspect of the method according to the fifth aspect, in which the intra prediction mode index of the current block is obtained according to the mapping ratio among the MIP mode index, the size of the current block, the mapping ratio is specified according to a predetermined Table.
Седьмой аспект способа кодирования, реализуемого устройством декодирования или устройством кодирования, содержит: использование ядра вторичного преобразования для вторичного преобразования текущего блока, когда текущий блок предсказывается с использованием внутреннего предсказания на основе матрицы, MIP, режим. A seventh aspect of an encoding method implemented by a decoding apparatus or an encoding apparatus comprises: using a secondary transform kernel to secondary transform a current block when the current block is predicted using matrix-based intra prediction, MIP, mode.
Восьмой аспект способа согласно седьмому аспекту, в котором ядро вторичного преобразования является одним из ядер вторичного преобразования, которые используются для не-MIP режима. An eighth aspect of the method according to the seventh aspect, wherein the secondary conversion core is one of the secondary conversion cores that are used for the non-MIP mode.
Девятый аспект способа согласно седьмому аспекту, в котором ядро вторичного преобразования отличается от любого из ядер вторичного преобразования, которые используются для не-MIP режима. A ninth aspect of the method according to the seventh aspect, wherein the secondary conversion core is different from any of the secondary conversion cores that are used for non-MIP mode.
Десятый аспект кодера (20), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по девятый. A tenth aspect of the encoder (20) comprising a processing circuit for performing a method according to any of the first to ninth aspects.
Одиннадцатый аспект декодера (30), содержащий схему обработки для выполнения способа согласно любому из аспектов с первого по девятый. An eleventh aspect of the decoder (30) comprising processing circuitry for performing a method according to any of the first to ninth aspects.
Двенадцатый аспект компьютерного программного продукта, содержащий программный код для выполнения способа согласно любому из аспектов с первого по девятый. A twelfth aspect of a computer program product comprising program code for performing a method according to any of the first through ninth aspects.
Тринадцатый аспект декодера, содержащий: один или более процессоров; и не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из аспектов с первого по девятый.A thirteenth decoder aspect comprising: one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform the method according to any of the first to ninth aspects.
Тринадцатый аспект кодера, содержащий: один или более процессоров; и не кратковременный считываемый компьютером носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа согласно любому из аспектов с первого по девятый.A thirteenth encoder aspect comprising: one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures an encoder to perform a method according to any of the first to ninth aspects.
Claims (127)
transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( treeType = = DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 ) )lfnstNotTsFlag = ( treeType = = DUAL_TREE_CHROMA | |
transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( treeType == DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 ) )
CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_INTRA && lfnstNotTsFlag = = 1 &&
( treeType = = DUAL_TREE_CHROMA | | !intra_mip_flag[ x0 ][ y0 ] | |
Min( lfnstWidth, lfnstHeight ) >= 16 ) &&
Max( cbWidth, cbHeight ) <= MaxTbSizeY) {if( Min( lfnstWidth, lfnstHeight ) >= 4 && sps_lfnst_enabled_flag = = 1 &&
CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_INTRA && lfnstNotTsFlag = = 1 &&
( treeType = = DUAL_TREE_CHROMA | | !intra_mip_flag[ x0 ][ y0 ] | |
Min( lfnstWidth, lfnstHeight ) >= 16 ) &&
Max( cbWidth, cbHeight ) <= MaxTbSizeY) {
LfnstZeroOutSigCoeffFlag = = 1 )if( ( IntraSubPartitionsSplitType != ISP_NO_SPLIT | | LfnstDcOnly = = 0 ) &&
LfnstZeroOutSigCoeffFlag = = 1 )
transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( treeType = = DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 ) )lfnstNotTsFlag = ( treeType = = DUAL_TREE_CHROMA | |
transform_skip_flag[ x0 ][ y0 ][ 0 ] = = 0 ) &&
( treeType == DUAL_TREE_LUMA | |
( transform_skip_flag[ x0 ][ y0 ][ 1 ] = = 0 &&
transform_skip_flag[ x0 ][ y0 ][ 2 ] = = 0 ) )
CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_INTRA && lfnstNotTsFlag = = 1 &&
( treeType = = DUAL_TREE_CHROMA | | !intra_mip_flag[ x0 ][ y0 ] | |
Min( lfnstWidth, lfnstHeight ) >= 16 ) &&
Max( cbWidth, cbHeight ) <= MaxTbSizeY) {if( Min( lfnstWidth, lfnstHeight ) >= 4 && sps_lfnst_enabled_flag = = 1 &&
CuPredMode[ chType ][ x0 ][ y0 ] = = MODE_INTRA && lfnstNotTsFlag = = 1 &&
( treeType = = DUAL_TREE_CHROMA | | !intra_mip_flag[ x0 ][ y0 ] | |
Min( lfnstWidth, lfnstHeight ) >= 16 ) &&
Max( cbWidth, cbHeight ) <= MaxTbSizeY) {
LfnstZeroOutSigCoeffFlag = = 1 )if( ( IntraSubPartitionsSplitType != ISP_NO_SPLIT | | LfnstDcOnly = = 0 ) &&
LfnstZeroOutSigCoeffFlag = = 1 )
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/835,487 | 2019-04-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2021130025A RU2021130025A (en) | 2023-05-17 |
RU2821337C2 true RU2821337C2 (en) | 2024-06-21 |
Family
ID=
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658674A (en) * | 2005-03-09 | 2005-08-24 | 浙江大学 | Method and device for encoding and decoding intra-frame prediction mode for video or image compression |
US20160255371A1 (en) * | 2013-10-18 | 2016-09-01 | Lg Electronics Inc. | Method and apparatus for coding/decoding 3d video |
WO2017165509A1 (en) * | 2016-03-22 | 2017-09-28 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
WO2017191782A1 (en) * | 2016-05-04 | 2017-11-09 | Sharp Kabushiki Kaisha | Systems and methods for coding transform data |
US9877043B2 (en) * | 2014-06-19 | 2018-01-23 | Vid Scale Inc. | Methods and systems for intra block copy coding with block vector derivation |
WO2018026118A1 (en) * | 2016-08-01 | 2018-02-08 | 한국전자통신연구원 | Image encoding/decoding method |
WO2018135885A1 (en) * | 2017-01-19 | 2018-07-26 | 가온미디어 주식회사 | Image decoding and encoding method providing transformation processing |
RU2682838C1 (en) * | 2015-12-23 | 2019-03-21 | Хуавей Текнолоджиз Ко., Лтд. | Method and device for coding with transformation with choice of transformation of the block level and implicit alarm system within the framework of the hierarchical division |
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1658674A (en) * | 2005-03-09 | 2005-08-24 | 浙江大学 | Method and device for encoding and decoding intra-frame prediction mode for video or image compression |
US20160255371A1 (en) * | 2013-10-18 | 2016-09-01 | Lg Electronics Inc. | Method and apparatus for coding/decoding 3d video |
US9877043B2 (en) * | 2014-06-19 | 2018-01-23 | Vid Scale Inc. | Methods and systems for intra block copy coding with block vector derivation |
RU2682838C1 (en) * | 2015-12-23 | 2019-03-21 | Хуавей Текнолоджиз Ко., Лтд. | Method and device for coding with transformation with choice of transformation of the block level and implicit alarm system within the framework of the hierarchical division |
WO2017165509A1 (en) * | 2016-03-22 | 2017-09-28 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
WO2017191782A1 (en) * | 2016-05-04 | 2017-11-09 | Sharp Kabushiki Kaisha | Systems and methods for coding transform data |
WO2018026118A1 (en) * | 2016-08-01 | 2018-02-08 | 한국전자통신연구원 | Image encoding/decoding method |
WO2018135885A1 (en) * | 2017-01-19 | 2018-07-26 | 가온미디어 주식회사 | Image decoding and encoding method providing transformation processing |
Non-Patent Citations (2)
Title |
---|
CHEN J. et al. "Algorithm Description of Joint Exploration Test Model 5", JVET-E1001-v2, 5th Meeting, Geneva, 2017. JANG H. et al. "Adaptive NSST Kernel Size Selection", JVET-E0047-v3, 5th Meeting, Geneva, 2017. ZHAO X. et al. "TU-level non-separable secondary transform", JVET-B0059, 5th Meeting, San Diego, 2016. * |
Jonathan Pfaff et al. "CE3: Affine linear weighted intra prediction (CE3-4.1, CE3-4.2)", JVET-N0217, 14th Meeting, Geneva, March 2019. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7571227B2 (en) | Encoder, decoder, and corresponding method for coordinating matrix-based intra prediction and secondary transform core selection - Patents.com | |
US12231645B2 (en) | Frame skipping techniques in video encoding and decoding method | |
JP2024026231A (en) | Encoders, decoders and corresponding methods related to intra prediction mode | |
CN112385234A (en) | Apparatus and method for image and video coding | |
US12348732B2 (en) | Encoder, a decoder and corresponding methods using compact MV storage | |
CN112954367A (en) | Encoder, decoder and corresponding methods using palette coding | |
KR102626200B1 (en) | Method of efficient signaling of CBF flags | |
CN113330743A (en) | Encoder, decoder and corresponding method for deblocking filter adaptation | |
CN113455005A (en) | Deblocking filter for sub-partition boundaries generated by intra sub-partition coding tools | |
CN113411612A (en) | Encoder, decoder and corresponding methods for enabling high level flags using DCT2 | |
RU2821337C2 (en) | Encoder, decoder and corresponding methods harmonizing matrix-based intra prediction and secondary transformation kernel selection | |
CN113228632A (en) | Encoder, decoder, and corresponding methods for local illumination compensation | |
RU2822448C2 (en) | Encoder, decoder and corresponding intra-prediction methods | |
KR102636330B1 (en) | Encoder, decoder and corresponding methods of chroma quantization control | |
RU2814812C2 (en) | Deriving chroma sample weight for geometric separation mode | |
RU2801589C2 (en) | Encoder, decoder and corresponding methods using dct2 high level permission flag | |
RU2800681C2 (en) | Coder, decoder and corresponding methods for intra prediction | |
RU2783385C2 (en) | Encoder, decoder and related methods using compact mv storage | |
RU2783348C1 (en) | Encoder, decoder and corresponding methods for obtaining the boundary power of the debloking filter | |
RU2821334C2 (en) | Encoder, decoder and related methods using high-level resolution flag dct2 | |
RU2786427C2 (en) | Video encoder, video decoder, and related methods | |
HK40058247A (en) | Harmonizing matrix-based intra prediction and secondary transform core selection | |
HK40058247B (en) | Harmonizing matrix-based intra prediction and secondary transform core selection | |
JP2024109748A (en) | Encoder, decoder and corresponding method of complexity reduction in intra prediction for planar modes - Patents.com | |
KR20210122800A (en) | Encoders, decoders and corresponding methods to limit the size of sub-partitions from intra-sub-partition coding mode tools |