RU2820991C1 - Encoder, decoder and corresponding methods for reducing complexity in intraframe prediction for planar mode - Google Patents
Encoder, decoder and corresponding methods for reducing complexity in intraframe prediction for planar mode Download PDFInfo
- Publication number
- RU2820991C1 RU2820991C1 RU2022110506A RU2022110506A RU2820991C1 RU 2820991 C1 RU2820991 C1 RU 2820991C1 RU 2022110506 A RU2022110506 A RU 2022110506A RU 2022110506 A RU2022110506 A RU 2022110506A RU 2820991 C1 RU2820991 C1 RU 2820991C1
- Authority
- RU
- Russia
- Prior art keywords
- block
- ntbw
- ntbh
- prediction
- video
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 132
- 230000009466 transformation Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 abstract description 30
- 239000000126 substance Substances 0.000 abstract 1
- 238000013139 quantization Methods 0.000 description 75
- 239000000523 sample Substances 0.000 description 69
- 230000006854 communication Effects 0.000 description 39
- 238000004891 communication Methods 0.000 description 39
- 239000013598 vector Substances 0.000 description 27
- 238000000638 solvent extraction Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 23
- 238000005192 partition Methods 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 18
- 239000000872 buffer Substances 0.000 description 18
- 238000010586 diagram Methods 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 16
- 239000013074 reference sample Substances 0.000 description 14
- 238000006243 chemical reaction Methods 0.000 description 13
- 238000003491 array Methods 0.000 description 12
- 238000001914 filtration Methods 0.000 description 11
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000000295 complement effect Effects 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 230000002441 reversible effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000002123 temporal effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000009472 formulation Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 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 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
- 238000013144 data compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000835 fiber Substances 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
- 238000007781 pre-processing Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- VBRBNWWNRIMAII-WYMLVPIESA-N 3-[(e)-5-(4-ethylphenoxy)-3-methylpent-3-enyl]-2,2-dimethyloxirane Chemical compound C1=CC(CC)=CC=C1OC\C=C(/C)CCC1C(C)(C)O1 VBRBNWWNRIMAII-WYMLVPIESA-N 0.000 description 1
- 101150114515 CTBS gene Proteins 0.000 description 1
- 241000023320 Luma <angiosperm> Species 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
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Abstract
Description
Перекрестные ссылки на родственные заявкиCross references to related applications
Настоящая заявка на выдачу патента претендует на приоритет заявки PCT No. PCT/EP2019/075519, поданной 23 сентября 2019 г. Описание указанной заявки на выдачу патента включено сюда посредством ссылки во всей своей полноте.This patent application claims priority to PCT Application No. PCT/EP2019/075519, filed September 23, 2019. The specification of said patent application is incorporated herein by reference in its entirety.
Область техники, к которой относится изобретениеField of technology to which the invention relates
Варианты настоящей заявки (раскрытия) относятся, в общем, к области обработки изображения и, более конкретно, к модификации фильтров в общей процедуре внутрикадрового прогнозирования для планарного режима.Embodiments of the present application (disclosure) relate generally to the field of image processing and, more specifically, to modification of filters in a general intra-prediction procedure for planar mode.
Уровень техники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 television broadcasting, video transmission over the Internet and mobile networks, and real-time conversational applications such as video chats, video conferencing - communications, in the field of DVDs and Blu-ray discs, video content acquisition and editing systems and video recording cameras for security applications.
Количество данных видео, необходимых для описания даже относительно короткого видеоролика, может быть весьма существенным, что может привести к затруднениям при потоковой или иной передаче данных через сеть связи с ограниченной полосой пропускания. Поэтому данные видео обычно сжимают перед тем, как передавать их по современным телекоммуникационным сетям. Размер ролика может также быть проблемой, когда нужно сохранить этот видеоролик в запоминающем устройстве, поскольку объем ресурсов памяти может быть ограничен. Устройства сжатия видео часто используют программное обеспечение и/или оборудование в источнике видео для кодирования данных видео прежде их передачи или записи в запоминающем устройстве, уменьшая тем самым количество данных, необходимых для представления изображений цифрового видео. После этого, в пункте назначения принимают сжатые данные посредством устройства расширения (декомпрессии) видео, которое декодирует данные видео. В условиях ограниченности сетевых ресурсов и все возрастающей потребности в получении видео более высокого качества, желательно разработать усовершенствованные способы сжатия и расширения видео, которые позволили бы повысить коэффициент сжатия ценой незначительного или даже вообще отсутствующего ущерба для качества изображения.The amount of video data required to describe even a relatively short video can be significant, which can make it difficult to stream or otherwise transmit data over a bandwidth-limited communications network. Therefore, video data is usually compressed before being transmitted over modern telecommunications networks. The size of the clip can also be an issue when you want to store that video in a storage device, since memory resources may be limited. Video compression devices often use software and/or hardware in the video source to encode video data before it is transmitted or recorded in a storage device, thereby reducing the amount of data required to represent digital video images. Thereafter, the destination receives the compressed data through a video decompression device, which decodes the video data. With limited network resources and an ever-increasing need for higher-quality video, it is desirable to develop improved video compression and expansion methods that would improve the compression ratio at the cost of little or no loss of image quality.
Способы прогнозирования могут играть важную роль при кодировании изображений и видео вследствие их способности уменьшить избыточность сигнала на основе ранее закодированных отсчетов. К основным технологиям прогнозирования относятся внутрикадровое прогнозирование для эффективного кодирования пространственной избыточности и прогнозирование с компенсацией движения для кодирования межкадровой временной избыточности. Однако внутрикадровое прогнозирование в планарном режиме оказывается излишне усложненным для некоторых блоков.Prediction methods can play an important role in image and video encoding due to their ability to reduce signal redundancy based on previously encoded samples. The main prediction technologies include intra-frame prediction to efficiently encode spatial redundancy and motion-compensated prediction to encode inter-frame temporal redundancy. However, intra-frame prediction in planar mode is unnecessarily complicated for some blocks.
Раскрытие сущности изобретенияDisclosure of the invention
Согласно ряду вариантов настоящей заявки предложены устройства и способы кодирования (т.е. кодирования или декодирования, соответственно) в соответствии с независимыми пунктами Формулы изобретения.According to a number of embodiments of the present application, encoding devices and methods are proposed (i.e., encoding or decoding, respectively) in accordance with independent claims.
Упомянутые выше и другие цели настоящего изобретения достигаются с применением предмета независимых пунктов Формулы изобретения. Другие формы реализации настоящего изобретения ясны из зависимых пунктов Формулы, настоящего описании и чертежей.The above and other objects of the present invention are achieved by applying the subject matter of the independent claims. Other forms of implementation of the present invention are clear from the dependent claims, the present description and the drawings.
Согласно первому аспекту настоящее изобретение относится к способу декодирования или кодирования. Этот способ осуществляется в устройстве для декодирования или кодирования. Этот способ содержит: вычисление величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета, входящего в блок изображения, где эту величину вертикальной составляющей predV[ x ][ y ] генерируют посредством линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, где строку отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей в точке с координатами x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ x ][ -1 ] представляет соседние отсчеты при x = 0..nTbW.According to a first aspect, the present invention relates to a decoding or encoding method. This method is carried out in a decoding or encoding device. This method contains: calculating the value of the vertical component of a sample predicted by an intra-frame method included in the image block, where this value of the vertical component predV[ x ][ y ] is generated by means of a linear filter using samples from the lines of reference samples above and below, where the line of samples from the bottom is filled using a sample located at coordinates (-1, nTbH) relative to the top left sample of the current block. For example, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), where predV[ x ][ y ] represents the magnitude of the vertical component at the point with coordinates x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the height of the block in question, nTbW represents the width of that block, and p[ x ][ -1 ] represents adjacent samples at x = 0..nTbW.
Способ далее содержит: вычисление величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета, где эту величину горизонтальной составляющей predH[ x ][ y ] генерируют посредством линейного фильтра, использующего отсчеты из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа генерируют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока. The method further comprises: calculating the value of the horizontal component of the sample predicted by the intraframe method, where this value of the horizontal component predH[ x ][ y ] is generated by means of a linear filter using samples from the columns of reference samples on the left and right, where the column of samples on the right is generated using the sample located at a point with coordinates (nTbW, -1) relative to the upper left reference of the current block.
Например, predH[ x ][ y ] = (( nTbW − 1 − x ) * p[ −1 ][ y ] + (x + 1) * p[ nTbW ][ −1 ] ) << Log2 (nTbH), где predH[ x ][ y ] представляет величину горизонтальной составляющей в точке с координатами x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ -1 ][ y ] представляет соседние отсчеты при y = −1..nTbH.For example, predH[ x ][ y ] = (( nTbW − 1 − x ) * p[ −1 ][ y ] + (x + 1) * p[ nTbW ][ −1 ] ) << Log2 (nTbH), where predH[ x ][ y ] represents the magnitude of the horizontal component at the point with coordinates x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the height of the block in question, nTbW represents the width of that block, and p[ - 1 ][ y ] represents adjacent samples at y = −1..nTbH.
Этот способ далее содержит: генерирование прогнозируемого внутрикадровым способом отсчета predSamples[ x ][ y ] на основе величины вертикальной составляющей и величины горизонтальной составляющей. Такой прогнозируемый внутрикадровым способом отсчет также называется спрогнозированным отсчетом.This method further comprises: generating an intra-frame predicted sample predSamples[ x ][ y ] based on the magnitude of the vertical component and the magnitude of the horizontal component. Such an intra-frame predicted sample is also called a predicted sample.
Когда высота блока равна 1, формула для величины вертикальной составляющей predV[ x ][ y ] упрощается до predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), и формула для величины горизонтальной составляющей predH[ x ][ y ] упрощается до predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ). When the block height is 1, the formula for the magnitude of the vertical component predV[ x ][ y ] simplifies to predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) , and the formula for the magnitude of the horizontal component predH[ x ][ y ] simplifies to predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ).
Согласно второму аспекту настоящее изобретение относится к способу декодирования или кодирования. Этот способ осуществляется декодирующим или кодирующим устройством. Способ содержит: получение значений высоты и ширины текущего прогнозируемого блока без применения операции усечения; вычисление величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета на основе высоты и ширины прогнозируемого блока; вычисление величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета на основе высоты и ширины прогнозируемых блоков; и генерирование прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.According to a second aspect, the present invention relates to a decoding or encoding method. This method is carried out by a decoding or encoding device. The method comprises: obtaining the height and width values of the current predicted block without applying a truncation operation; calculating the value of the vertical component of the reading predicted by the intra-frame method based on the height and width of the predicted block; calculating the value of the horizontal component of the reading predicted by the intra-frame method based on the height and width of the predicted blocks; and generating an intra-frame predicted count based on the magnitude of the vertical component and the magnitude of the horizontal component.
Способ согласно первому аспекту настоящего изобретения может быть осуществлен устройством согласно третьему аспекту настоящего изобретения. Дополнительные признаки и формы осуществления устройства согласно третьему аспекту настоящего изобретения соответствуют признакам и формам осуществления способа согласно первому аспекту настоящего изобретения.The method according to the first aspect of the present invention can be carried out by an apparatus according to the third aspect of the present invention. Additional features and forms of implementation of the device according to the third aspect of the present invention correspond to the features and forms of implementation of the method according to the first aspect of the present invention.
Способ согласно второму аспекту настоящего изобретения может быть осуществлен устройством согласно четвертому аспекту настоящего изобретения. Дополнительные признаки и формы осуществления устройства согласно четвертому аспекту настоящего изобретения соответствуют признакам и формам осуществления способа согласно второму аспекту настоящего изобретения.The method according to the second aspect of the present invention can be carried out by the device according to the fourth aspect of the present invention. Additional features and embodiments of the device according to the fourth aspect of the present invention correspond to the features and embodiments of the method according to the second aspect of the present invention.
Согласно пятому аспекту настоящее изобретение относится к устройству для декодирования или кодирования потока данных видео, которое содержит процессор и запоминающее устройство. Запоминающее устройство сохраняет команды, при выполнении которых процессор осуществляет способ согласно первому аспекту или второму аспекту.According to a fifth aspect, the present invention relates to an apparatus for decoding or encoding a video data stream, which includes a processor and a storage device. The storage device stores instructions upon execution of which the processor implements the method according to the first aspect or the second aspect.
Согласно шестому аспекту, предложен читаемый компьютером носитель для хранения информации, сохраняющий команды, при выполнении которых один или более процессоров, конфигурируются для кодирования данных видео. При выполнении этих команд один или более процессоров осуществляют способ согласно первому или второму аспекту, либо какому-либо из возможных вариантов этих первого или второго аспектов.According to a sixth aspect, there is provided a computer-readable storage medium storing instructions that, when executed, configure one or more processors to encode video data. When executing these instructions, one or more processors implements a method according to the first or second aspect, or any of the possible variations of the first or second aspects.
Согласно седьмому аспекту, настоящее изобретение относится к компьютерной программе, содержащей программный код для осуществления способа согласно первому или второму аспекту, либо какому-либо из возможных вариантов этих первого или второго аспектов при выполнении этого программного кода на компьютере.According to a seventh aspect, the present invention relates to a computer program containing program code for implementing a method according to the first or second aspect, or any of the possible variations of the first or second aspects, when executing the program code on a computer.
Согласно восьмому аспекту, настоящее изобретение относится к устройству для внутрикадрового прогнозирования изображения в планарном режиме, которое содержит: According to an eighth aspect, the present invention relates to an apparatus for intra-frame image prediction in a planar mode, which includes:
вычислительный модуль, конфигурированный для вычисления величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета, входящего в блок изображения. Величину вертикальной составляющей predV[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, где строку отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ x ][ -1 ] представляет соседние отсчеты с координатой x = 0..nTbW.a computing module configured to calculate the value of the vertical component of the intra-frame predicted sample included in the image block. The magnitude of the vertical component predV[ x ][ y ] is generated using a linear filter using samples from the rows of reference samples above and below, where the row of samples below is filled using the sample located at coordinates (-1, nTbH) relative to the top left sample current block. For example, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), where predV[ x ][ y ] represents the magnitude of the vertical component at x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the height of the block in question, nTbW represents the width of that block, and p[ x ][ - 1 ] represents neighboring samples with coordinate x = 0..nTbW.
Вычислительный модуль далее конфигурирован для вычисления величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета, где величину горизонтальной составляющей predH[ x ][ y ] генерируют с применением линейного фильтра с использованием отсчетов из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа заполняют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока. The computing module is further configured to calculate the magnitude of the horizontal component of the intra-frame predicted sample, where the magnitude of the horizontal component predH[ x ][ y ] is generated using a linear filter using samples from the reference sample columns on the left and right, where the sample column on the right is filled using the sample located at a point with coordinates (nTbW, -1) relative to the upper left reference of the current block.
Например, predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , где predH[ x ][ y ] представляет величину горизонтальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту рассматриваемого блока, nTbW представляет ширину этого блока, и p[ -1 ][ y ] представляет соседние отсчеты с координатой y = −1..nTbH.For example, predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , where predH[ x ][ y ] represents the magnitude of the horizontal component at x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the height of the block in question, nTbW represents the width of that block, and p[ -1 ][ y ] represents neighboring samples with coordinate y = −1..nTbH.
Устройство далее содержит модуль прогнозирования (903), конфигурированный для генерации прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.The device further includes a prediction module (903) configured to generate an intra-frame predicted sample based on the magnitude of the vertical component and the magnitude of the horizontal component.
Варианты настоящего изобретения не осуществляет операцию усечения nW = Max( nTbW, 2 ) и операцию усеченния nH = Max( nTbH, 2 ) прежде вычисления вертикальной и горизонтальной составляющих. Поэтому прогнозирование с применением планарного режима упрощается. Соответственно, эффективность кодирования или декодирования повышается. Embodiments of the present invention do not perform the truncation operation nW = Max( nTbW, 2 ) and the truncation operation nH = Max( nTbH, 2 ) before calculating the vertical and horizontal components. Therefore, forecasting using the planar mode is simplified. Accordingly, the efficiency of encoding or decoding is improved.
Подробности одного или более вариантов установлены на прилагаемых чертежах и в описании ниже. Другие признаки, цели и преимущества будут ясны из настоящего описания, чертежей и Формулы изображения. Details of one or more embodiments are set forth in the accompanying drawings and description below. Other features, purposes and advantages will be clear from the present description, drawings and drawings.
Краткое описание чертежейBrief description of drawings
В последующем варианты настоящего изобретения описаны более подробно со ссылками на прилагаемые рисунки и чертежи, на которых:In the following, embodiments of the present invention are described in more detail with reference to the accompanying drawings 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 present invention;
Фиг. 1B представляет блок-схему, показывающую другой пример системы кодирования видео, конфигурированной для осуществления вариантов настоящего изобретения;Fig. 1B is a block diagram showing another example of a video encoding system configured to implement embodiments of the present invention;
Фиг. 2 представляет блок-схему, показывающую пример кодирующего устройства для видео, конфигурированного для осуществления вариантов настоящего изобретения;Fig. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the present invention;
Фиг. 3 представляет блок-схему, показывающую пример структуры декодирующего устройства для видео, конфигурированного для осуществления вариантов настоящего изобретения;Fig. 3 is a block diagram showing an example structure of a video decoding apparatus configured to implement embodiments of the present 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 decoding device;
Фиг. 6 представляет упрощенную схему, иллюстрирующую внутрикадровое прогнозирование в планарном режиме согласно стандарту кодирования VVC;Fig. 6 is a simplified diagram illustrating intra-frame prediction in planar mode according to the VVC coding standard;
Фиг. 7 представляет упрощенную схему, иллюстрирующую внутрикадровое прогнозирование в планарном режиме для блока размером Nx1;Fig. 7 is a simplified diagram illustrating intra-frame prediction in planar mode for a block size Nx1;
Фиг. 8 показывает логическую схему, иллюстрирующую способ внутрикадрового прогнозирования в планарном режиме для текущего блока в процессе кодирования видео;Fig. 8 shows a logic diagram illustrating a planar mode intra-prediction method for a current block in a video encoding process;
Фиг. 9 иллюстрирует конфигурацию устройства кодирования видео; Fig. 9 illustrates the configuration of a video encoding device;
Фиг. 10 представляет блок-схему, показывающую пример структуры системы 3100 передачи контента, реализующей сервис передачи контента; иFig. 10 is a block diagram showing an example of the structure of a content transmission system 3100 implementing a content transmission service; And
Фиг. 11 представляет блок-схему, показывающую пример структуры терминала.Fig. 11 is a block diagram showing an example of a terminal structure.
В последующем описании идентичные позиционные обозначения присвоены идентичным или по меньшей мере функционально эквивалентным признакам, если только в явном виде не специфицировано иное.In the following description, identical reference designations are assigned to identical or at least functionally equivalent features, unless explicitly stated otherwise.
Осуществление изобретенияCarrying out the invention
В последующем описании, ссылки сделаны на прилагаемые чертежи, составляющие часть настоящего описания и показывающие посредством иллюстрации конкретные аспекты вариантов изобретения или конкретные аспекты, в которых могут быть использованы варианты настоящего изобретения. Понятно, что варианты настоящего изобретения могут быть использованы в других аспектах и содержать структурные или логические изменения, не показанные на чертежах. Поэтому последующее подробное описание не следует рассматривать в ограничительном смысле, а объем настоящего изобретения определен прилагаемой Формулой изобретения. In the following description, reference is made to the accompanying drawings, which form a part of the present description and 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 drawings. Therefore, the following detailed description should not be construed 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 description in connection with any subject method may also remain valid for the corresponding device or system configured to implement that method, and vice versa. For example, if one or more steps of a particular method are contemplated, the corresponding apparatus may comprise one or more modules, e.g., functional modules, for implementing the one or more method steps in question (e.g., one module performing one or more steps, or more modules, each of which performs one or more steps), even if such one or more modules are not explicitly described or illustrated in the drawings. On the other hand, for example, if a particular device is described in terms of one or more modules, such as functional modules, the corresponding method may comprise one step for performing the functions of one or more modules (for example, one step performing the functions of one or more modules, or more steps, each of which perform the functions of one or more modules), even if such one or more steps are not explicitly described or illustrated in the drawings. It is further understood that features of various embodiments and/or aspects discussed herein may be combined with each other unless specifically noted otherwise.
Термин «кодирование видео» обычно обозначает обработку последовательности изображений, составляющих видео или последовательность видео. В области кодирования видео вместо термина «картинка» (“picture”) могут быть в качестве синонимов использованы термины «кадр» (“frame”) или «изображение» (“image”). Кодирование видео (или кодирование в общем) состоит из двух частей – собственно кодирование видео и декодирование видео. Собственно кодирование видео осуществляется на стороне источника и обычно содержит обработку (например, посредством сжатия) изображений исходного видео с целью уменьшения объема данных, требуемых для представления изображений видео (для более эффективного хранения и/или передачи). Декодирование видео осуществляется на стороне пункта назначения (адресата) и обычно содержит обратную обработку по сравнению с обработкой в кодирующем устройстве с целью реконструкции изображений видео. Варианты, ссылающиеся на «кодирование» изображений видео (или изображений вообще), следует понимать как относящиеся к «собственно кодированию» или к «декодированию» изображений видео или соответствующих последовательностей видео. Комбинация кодирующей части и декодирующей части также называется «кодек» (кодирование и декодирование) (CODEC (Coding and Decoding)).The term "video encoding" usually refers to the processing of the sequence of images that make up a video or video sequence. In the field of video encoding, instead of the term “picture”, the terms “frame” or “image” can be used as synonyms. Video encoding (or encoding in general) consists of two parts - video encoding itself and video decoding. The actual video encoding is done at the source side and typically involves processing (eg, through compression) 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 destination (destination) side and typically involves reverse processing from the processing at the encoder to reconstruct the video images. Variants referring to "encoding" of video images (or images in general) should be understood to refer to the "actual encoding" or "decoding" of video images or corresponding video sequences. The combination of the encoding part and the decoding part is also called “codec” (coding and decoding) (CODEC (Coding and Decoding)).
В случае кодирования видео без потерь, могут быть реконструированы исходные изображения видео, т.е. реконструированные изображения видео имеют такое же качество, как и исходные изображения видео (в предположении отсутствия потерь при передаче или других потерь данных в процессе хранения или передачи). В случае кодирования видео с потерями, осуществляется дальнейшее сжатие данных, например, посредством квантования, с целью уменьшения объема данных, представляющих изображение видео, которые после этого уже не могут быть полностью реконструированы в декодирующем устройстве, т.е. качество реконструированных изображений видео оказывается ниже или хуже по сравнению с качеством исходных изображений видео. In the case of lossless video encoding, the original video images can be reconstructed, i.e. The reconstructed video images are of the same quality as the original video images (assuming no transmission loss or other data loss during storage or transmission). In the case of lossy video encoding, further data compression is carried out, for example through quantization, in order to reduce the amount of data representing the video image, which can then no longer be completely reconstructed in the decoding device, i.e. The quality of the reconstructed video images is lower or worse compared to the quality of the original video images.
Существует ряд стандартов кодирования видео, принадлежащих группе «гибридных видео кодеков с потерями» (т.е. комбинирующих пространственное и временное прогнозирование в области отсчетов и двумерное (2D) кодирование с преобразованием для применения квантования в области преобразования). Каждое изображение в последовательности видео обычно разбивают на множество не накладывающихся один на другой блоков, и кодирование обычно осуществляют на уровне блоков. Другими словами, в кодирующем устройстве видео обычно обрабатывают, т.е. кодируют, на уровне блоков (видео блоков), например, с использованием пространственного (внутрикадрового) прогнозирования и/или временного (межкадрового) прогнозирования для генерации блока прогнозирования для текущего блока (блока, обрабатываемого/подлежащего обработке в текущий момент) с целью получения блока остатка, преобразования этого блока остатка и квантования блока остатка в области преобразования с целью уменьшения объема данных, которые нужно передать, (сжатия данных), тогда как в декодирующем устройстве к кодированному или сжатому блоку применяют обработку, обратную по отношению к обработке в кодирующем устройстве, с целью реконструкции текущего блока для представления. Более того, кодирующее устройство дублирует процессорный контур декодирующего устройства, так что оба устройства будут генерировать идентичные прогнозируемые блоки (например, блоки с внутрикадровым и межкадровым прогнозированием) и/или реконструированные блоки для обработки, т.е. кодирования, последующих блоков. There are a number of video coding standards that belong to the group of “hybrid lossy video codecs” (i.e., combining spatial and temporal sample-domain prediction and two-dimensional (2D) transform coding to apply transform-domain quantization). Each image in a video sequence is typically divided into multiple non-overlapping blocks, and encoding is typically performed at the block level. In other words, in the encoder the video is usually processed, i.e. encode, at the block (video block) level, for example, using spatial (intra-frame) prediction and/or temporal (inter-frame) prediction to generate a prediction block for the current block (the block currently being processed/to be processed) to obtain a residual block , transforming this remainder block and quantizing the remainder block in the transform domain to reduce the amount of data to be transmitted (data compression), while in the decoding device reverse processing is applied to the encoded or compressed block as in the encoding device, with the purpose of reconstructing the current block for presentation. Moreover, the encoder duplicates the processing circuit of the decoder such that both devices will generate identical predicted blocks (eg, intra- and inter-predicted blocks) and/or reconstructed blocks for processing, i.e. coding, subsequent blocks.
В следующих вариантах системы 10 кодирования видео рассмотрены кодирующее устройство 20 для видео и декодирующее устройство 30 для видео на основе Фиг. 1 – 3. In the following embodiments of the video encoding system 10, a video encoder 20 and a video decoder 30 are discussed based on FIG. 13.
Фиг. 1A представляет упрощенную блок-схему примера системы 10 кодирования, например, системы 10 кодирования видео (или, короче, системы 10 кодирования), которая может использовать технологию согласно настоящей заявке. Кодирующее устройство 20 для видео (или, короче, кодирующее устройство 20) и декодирующее устройство 30 для видео (или, короче, декодирующее устройство 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть конфигурированы для осуществления способов согласно различным примерам, описываемым в настоящей заявке. Fig. 1A represents a simplified block diagram of an example encoding system 10, such as a video encoding system 10 (or encoding system 10 for short), which may utilize the technology of the present application. The video encoder 20 (or, in short, the encoder 20) and the video decoder 30 (or, in short, the decoder 30) of the video encoding system 10 represent examples of devices that can be configured to implement the methods according to various examples described in this application.
Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, конфигурированное для передачи кодированных данных 21 изображения, например, устройству-адресату 14 (устройству пункта назначения) для декодирования кодированных данных 21 изображения. As shown in FIG. 1A, the encoding system 10 includes a source device 12 configured to transmit encoded image data 21, for example, to a destination device 14 (destination device) for decoding the encoded image data 21.
Устройство-источник 12 содержит кодирующее устройство 20 и может дополнительно, т.е. в качестве опции, содержать источник 16 изображения, предпроцессор (или предпроцессорный модуль) 18, например, предпроцессор 18 изображения и интерфейс связи или модуль 22 связи. The source device 12 contains an encoder 20 and can additionally, i.e. optionally include an image source 16, a pre-processor (or pre-processor module) 18, for example an image pre-processor 18, and a communication interface or communication module 22.
Источник 16 изображения может содержать или представлять собой устройство какого-либо типа для захвата изображения, например, видеокамеру для захвата (съемки) изображения реального мира, и/или устройство какого-либо типа для генерации изображения, например, процессор компьютерной графики для генерации анимированного компьютером изображения, либо другое устройство какого-либо типа для получения и/или предоставления изображения реального мира, генерируемого компьютером изображения (например, контента экрана, изображения виртуальной реальности (virtual reality (VR))) и/или какой-либо комбинации таких изображений (например, изображения дополненной реальности (augmented reality (AR))). Источник изображения может представлять собой какого-либо типа запоминающее устройство или хранилище данных, сохраняющее любые перечисленные выше изображения.The image source 16 may contain or be some type of image capturing device, such as a video camera for capturing real world images, and/or some type of image generating device, such as a computer graphics processor for generating computer animated images. images, or other device of some type for receiving and/or providing a real-world image, a computer-generated image (e.g., screen content, virtual reality (VR) image), and/or any combination of such images (e.g. , augmented reality (AR) images. The image source may be some type of storage device or data store storing any of the above images.
В отличие от предпроцессора 18 и обработки, выполняемой предпроцессорным модулем 18, изображение или данные 17 изображения могут также называться необработанным изображением или необработанными данными 17 изображения.In contrast to the preprocessor 18 and the processing performed by the preprocessor module 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 pre-processor 18 is configured to receive (raw) image data 17 and to perform pre-processing of the image data 17 to obtain a pre-processed image 19 or pre-processed image data 19 . The pre-processing performed by pre-processor 18 may, for example, include cropping, color format conversion (eg, from RGB to YCbCr), color correction, or denoising. It can be understood that the pre-processor module 18 may be an optional component.
Кодирующее устройство 20 для видео конфигурировано для приема предварительно обработанные данных 19 изображения и генерации кодированных данных 21 изображения (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).The video encoder 20 is configured to receive pre-processed image data 19 and generate encoded image data 21 (further details will be described below, for example based on FIG. 2).
Интерфейс 22 связи устройства-источника 12 может быть конфигурирован для приема кодированных данных 21 изображения и для передачи этих кодированных данных 21 изображения (или какой-либо далее обработанной версии этих данных) по каналу 13 связи другому устройству, например, устройству-адресату 14 или какому-либо другому устройству с целью хранения или прямой реконструкции. Communication interface 22 of source device 12 may be configured to receive encoded image data 21 and to transmit this encoded image data 21 (or some further processed version of this data) over communication link 13 to another device, such as destination device 14 or whatever. - to another device for the purpose of storage or direct reconstruction.
Устройство-адресат 14 содержит декодирующее устройство 30 (например, декодирующее устройство 30 для видео) и может дополнительно, т.е. в качестве опции, содержать интерфейс связи или модуль 28 связи, постпроцессор 28 (или постпроцессорный модуль 32) и дисплейное устройство 34. The destination device 14 includes a decoding device 30 (for example, a video decoding device 30) and may additionally, i.e. optionally include a communications interface or communications module 28, a post-processor 28 (or post-processor module 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 encoded image data 21 (or some further processed version of this data), for example, directly from the source device 12 or from some other source, for example from a storage device such as a storage device. a device for storing encoded image data, and transmitting this encoded image data 21 to the decoding device 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть конфигурированы для передачи или приема кодированных данных 21 изображения или кодированных данных 21 по прямой линии связи между устройством-источником 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 21 over a direct communication link between the source device 12 and the destination device 14, for example, over a direct wired or wireless connection, or through a communications network of any type, for example, over a wired or wireless communications network or any combination of such communications networks, or through a private communications network or a public communications network, or through a combination of networks of some type.
Интерфейс 22 связи может, например, быть конфигурирован для упаковки кодированных данных 21 изображения в соответствующий формат, например, в пакеты, и/или для обработки кодированных данных изображения с использованием какого-либо типа кодирования для передачи или иной обработки для передачи по линии связи или через сеть связи. The communication interface 22 may, for example, be configured to package the encoded image data 21 into an appropriate format, such as packets, and/or to process the encoded image data using some type of transmission encoding or other processing for transmission over a communications link or through a communication network.
Интерфейс 28 связи, являющийся контрагентом интерфейса 22 связи, может быть, например, конфигурирован для приема передаваемых данных и обработки этих передаваемых данных с использованием соответствующего декодирования передач, либо обработки и/или распаковки для получения кодированных данных 21 изображения. Communications interface 28 counter to communications interface 22 may, for example, be configured to receive transmission data and process that transmission data using appropriate transmission decoding or 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 indicated by the arrow for communication channel 13 shown in FIG. 1A and pointing from a source device 12 to a destination device 14, or as bidirectional communication interfaces, or can be configured, for example, to send and receive messages, for example, to establish a connection, for the purpose of handshaking and exchanging any other information regarding a communication and/or data link, for example, to the transmission of encoded image data.
Декодирующее устройство 30 конфигурировано для приема кодированных данных 21 изображения и передачи декодированных данных 31 изображения или декодированного изображения 31 (дальнейшие подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5). The decoding device 30 is configured to receive encoded image data 21 and transmit 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 destination device 14 is configured to post process the decoded image data 31 (also referred to as reconstructed image data), such as the decoded image 31, to obtain post processed image data 33, such as the post processed image 33. The post processing performed by the post processor module 32 may include , for example, color format conversion (e.g., from YCbCr format to RGB format), color correction, cropping or resampling, or some other processing, for example, to prepare decoded image data 31 for presentation on a display, for example, by a display devices 34.
Дисплейное устройство 34 устройства-адресата 14 конфигурировано для приема постобработанных данных 33 изображения с целью представления изображения, например, пользователю или зрителю. Дисплейное устройство 34 может быть или содержать дисплей какого-либо типа для представления реконструированного изображения, например, интегрированный или внешний дисплей или монитор. Такой дисплей может представлять собой, например, жидкокристаллический дисплей (liquid crystal display (LCD)), дисплей на органических светодиодах (organic light emitting diodes (OLED)), плазменный дисплей, проектор, микро LED-дисплей, жидкокристаллический дисплей на кремнии (liquid crystal on silicon (LCoS)), цифровой процессор оптических сигналов (digital light processor (DLP)) или другой дисплей какого-либо типа.The display device 34 of the destination device 14 is configured to receive post-processed image data 33 for the purpose of presenting the image to, for example, a user or viewer. Display device 34 may be or include some type of display for presenting the rendered image, such as an integrated or external display or monitor. Such a display may be, for example, a liquid crystal display (LCD), an organic light emitting diodes (OLED), a plasma display, a projector, a micro LED display, a liquid crystal display on silicon (LCoS), digital light processor (DLP), or some other type of display.
Хотя на Фиг. 1A устройство-источник 12 и устройство-адресат 14 показаны как отдельные устройства, различные варианты этих устройств могут также содержать оба устройства – устройство-источник 12 и устройство-адресат 14, либо соответствующие функциональные возможности этих устройства-источника 12 и устройства-адресата 14. В таких вариантах, устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности могут быть реализованы с использованием одной и той же аппаратуры и/или одного и того же программного обеспечения, либо посредством раздельной аппаратуры и/или раздельного программного обеспечения, либо какой-либо комбинации аппаратуры и программного обеспечения.Although in Fig. 1A, source device 12 and destination device 14 are shown as separate devices, various embodiments of these devices may also include both source device 12 and destination device 14, or the corresponding functionality of the source device 12 and destination device 14. 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 the same software, or by separate hardware and/or separate software. software, or any combination of hardware and software.
Как должно быть ясно для специалиста на основе настоящего описания, существование и (точное) разбиение функциональных возможностей различных модулей или функциональных возможностей в устройстве-источнике 12 и/или в устройстве-адресате 14, как показано на Фиг. 1A, может варьироваться в зависимости от фактического устройства и приложения. As will be clear to one skilled in the art based on the present description, the existence and (precise) partitioning of the functionality of various modules or functionality in the source device 12 and/or in the destination device 14, as shown in FIG. 1A may vary depending on the actual device and application.
Кодирующее устройство 20 (например, кодирующее устройство 20 для видео) или декодирующее устройство 30 (например, декодирующее устройство 30 для видео) или и кодирующее устройство 20, и декодирующее устройство 30 могут быть реализованы посредством процессорной схемы, как показано на Фиг. 1B, такой как один или более микропроцессоров, цифровых процессоров сигналов (digital signal processor (DSP)), специализированных интегральных схем (application-specific integrated circuit (ASIC)), программируемых пользователем вентильных матриц (field-programmable gate array (FPGA)), дискретных логических схем, аппаратуры, специализированных устройств для кодирования видео или каких-либо их комбинаций. Кодирующее устройство 20 может быть выполнено посредством процессорной схемы 46 для реализации различных модулей, какие обсуждаются в отношении кодирующего устройства 20, показанного на Фиг. 2, и/или какой-либо другой системы или подсистемы с кодирующим устройством, описываемой здесь. Декодирующее устройство 30 может быть выполнено посредством процессорной схемы 46 для реализации различных модулей, какие обсуждаются в отношении декодирующего устройства 30, показанного на Фиг. 3, и/или какой-либо другой системы или подсистемы с декодирующим устройством, описываемой здесь. Процессорная схема может быть конфигурирована для осуществления различных операций, как обсуждается позднее. Как показано на Фиг. 5, если рассматриваемые технологии реализованы частично в программном обеспечении, устройство может сохранять команды для этого программного обеспечения на подходящем читаемом компьютером носителе для хранения информации и может выполнять эти команды в аппаратуре с использованием одного или более процессоров для осуществления технологии согласно настоящему изобретению. Любое из устройств – кодирующее устройство 20 для видео и декодирующее устройство 30 для видео, может быть интегрировано как часть комбинированного кодирующего устройства/ декодирующего устройства (CODEC) в одном устройстве, например, как показано на Фиг. 1B.The encoding device 20 (eg, video encoder 20) or the decoding device 30 (eg, video decoding device 30) or both the encoding device 20 and the decoding device 30 may be implemented by a processor 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 circuits, hardware, specialized devices for video encoding or any combinations thereof. Encoder 20 may be implemented by processor circuit 46 to implement various modules as discussed in relation to encoder 20 shown in FIG. 2, and/or any other encoder system or subsystem described herein. The decoding device 30 may be implemented by a processor circuit 46 to implement various modules as discussed in relation to the decoding device 30 shown in FIG. 3, and/or any other decoder system or subsystem described herein. The processor circuitry may be configured to perform various operations, as discussed later. As shown in FIG. 5, if the subject technologies are implemented in part in software, the apparatus may store instructions for that software on a suitable computer-readable storage medium and may execute those instructions in hardware using one or more processors to implement the technology of the present invention. Either of the video encoder 20 and the 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 be any of a wide range of devices, including hand-held and stationary devices, such as laptop or laptop computers, mobile phones, smartphones, tablets or tablet computers, video cameras, desktop computers, set-top boxes, televisions, display devices, digital media players, video game consoles, video streaming devices (such as content service servers or content delivery servers), broadcast program receiver, broadcast program transmitter, or other similar device and may use the operating system of any -type or not use the operating system at all. In some cases, source device 12 and destination device 14 may be equipped for radio communication. Thus, the source device 12 and the destination device 14 may be radio communication devices.
В некоторых случаях, система 10 кодирования видео, иллюстрированная на Фиг. 1A, является просто примером, а технология согласно настоящему изобретению может быть применена к системам кодирования видео (например, собственно кодирования видео или декодирования видео), которые необязательно содержат какую-либо передачу данных между кодирующим и декодирующим устройствами. В других примерах, данные вызывают из локального запоминающего устройства, передают в потоковом режиме через сеть связи или выполняют другую подобную операцию. Кодирующее устройство для видео может кодировать данные и сохранять их в запоминающем устройстве, и/или декодирующее устройство для видео может вызывать и декодировать данные из запоминающего устройства. В некоторых примерах, кодирование и декодирование осуществляются устройствами, которые не поддерживают связь одно с другим, а просто кодируют данные и записывают их в запоминающем устройстве и/или вызывают и декодируют данные из запоминающего устройства.In some cases, the video encoding system 10 illustrated in FIG. 1A is merely an example, and the technology of the present invention can be applied to video encoding systems (eg, actual video encoding or video decoding) that do not necessarily involve any data transfer between the encoder and decoder devices. In other examples, data is retrieved from local storage, streamed over a communications network, or other similar operation. A video encoder may encode data and store it in a storage device, and/or a video decoder may retrieve and decode data from the storage device. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data and store it in a storage device and/or retrieve and decode data from a storage device.
Для удобства описания, варианты настоящего изобретения описаны здесь, например, со ссылками на стандарт высокоэффективного видео кодирования (High-Efficiency Video Coding (HEVC)) или на эталонное программное обеспечение для стандарта универсального видео кодирования (Versatile Video coding (VVC)), стандарта видео кодирования следующего поколения, разрабатываемого совместной рабочей группой по видео кодированию (Joint Collaboration Team on Video Coding (JCT-VC)), основанной группой экспертов по видео кодированию (Video Coding Experts Group (VCEG)) союза ITU-T и группой экспертов по кинематографии (Motion Picture Experts Group (MPEG)) организации ISO/IEC. Даже рядовой специалист в рассматриваемой области должен понимать, что варианты настоящего изобретения не ограничиваются стандартами кодирования HEVC или VVC.For convenience of description, embodiments of the present invention are described herein, for example, with reference to the High-Efficiency Video Coding (HEVC) standard or reference software for the Versatile Video coding (VVC) video standard. next generation encoding being developed by the Joint Collaboration Team on Video Coding (JCT-VC), founded by the ITU-T Video Coding Experts Group (VCEG) and the Cinematography Experts Group ( Motion Picture Experts Group (MPEG) of ISO/IEC. Even one of ordinary skill in the art will understand that embodiments of the present invention are not limited to the HEVC or VVC encoding standards.
Кодирующее устройство и способ кодированияEncoding device 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, может также называться гибридным кодирующим устройством для видео или кодирующим устройством для видео в соответствии с гибридным видео кодеком.In FIG. 2 shows a simplified block diagram of an example video encoder 20 configured to implement the technology of the present invention. In the example shown in FIG. 2, the video encoder 20 includes an input 201 (or input interface 201), a remainder calculation module 204, a transform processor module 206, a quantization module 208, an inverse quantization module 210, and an inverse transform processor module 212, a reconstruction module 214, a loop filter module 220. , a decoded picture buffer (DPB) 230, a mode selection module 260, an entropy encoding module 270, and an output 272 (or output interface 272). The mode selection module 260 may include an inter-frame prediction module 244, an intra-frame prediction module 254, and a partitioning module 262. Inter-frame prediction module 244 may include a motion estimation module and a motion compensation module (not shown). The video encoder 20, as 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, буфер 230 декодированного изображения (DPB), модуль 244 межкадрового прогнозирования и модуль 254 внутрикадрового прогнозирования также называются модулями, составляющими «встроенное декодирующее устройство» в кодирующем устройстве 20 для видео.The remainder calculation unit 204, conversion processor unit 206, quantization unit 208, mode selection unit 260 may be referred to as modules constituting the forward signal path in the encoder 20, while the inverse quantization unit 210, inverse conversion processor unit 212, reconstruction unit 214, buffer 216, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction module 244, and the intra-frame prediction module 254 may be referred to as modules constituting the reverse signal path in the video encoder 20, wherein the reverse signal path in the video encoder 20 corresponds to the signal path in the decoding device (see video decoding device 30 shown in FIG. 3). The inverse quantization unit 210, the inverse transform processor unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction unit 244, and the intra-frame prediction unit 254 are also referred to as the modules constituting the “on-chip decoder” in the encoder 20. for video.
Изображения и разбиение изображений (изображения и блоки)Images and image splitting (images and blocks)
Кодирующее устройство 20 может быть конфигурировано для приема, например, через вход 201, изображения 17 (или данных 17 изображения), например, какого-либо изображения из последовательности изображений, составляющих видео. Принятое изображение (или данные изображения) может также представлять собой предварительно обработанное изображение 19 (или данные 19 предварительно обработанного изображения). Для простоты, последующее описание ссылается на изображение 17. Это изображение 17 может также называться текущим изображением или изображением, подлежащим кодированию (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например от ранее кодированных и/или декодированных изображений в той же самой последовательности видео, т.е. в последовательности видео, которая содержит также текущее изображение).Encoder 20 may be configured to receive, for example, through input 201, an image 17 (or image data 17), for example, any image from a sequence of images constituting a video. 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 image 17. This image 17 may also be referred to as the current image or the image to be encoded (particularly in video encoding, to distinguish the current image from other images, such as previously encoded and/or decoded images in that the same video sequence, i.e. in a video sequence that also contains the current image).
Изображение (цифровое) представляет собой или может рассматриваться в качестве двумерного массива или матрицы отсчетов, каждый из которых имеет некую величину интенсивности. Любой отсчет в массиве может также называться пикселем (pixel) (сокращенная форма от «элемента изображения» (picture element)) или pel. Число отсчетов в горизонтальном и вертикальном направлении (или по оси) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых составляющих, т.е. изображение может быть представлено или может содержать три массива отсчетов. В формате или в цветовом пространстве RGB изображение содержит соответствующие массивы отсчетов красного, зеленого и синего цвета. Однако при кодировании видео каждый пиксель обычно представляют в формате или цветовом пространстве яркости и цветности, например, YCbCr, который содержит яркостную составляющую, обозначаемую буквой Y, (иногда вместо Y используется также буква L) и две цветностные составляющие, обозначаемые как Cb и Cr. Яркостная (luminance) (или сокращенно luma) составляющая Y представляет яркость или интенсивность уровня серого (например, как в полутоновом изображении), тогда как две цветностные (chrominance) (или сокращенно chroma) составляющие Cb и Cr представляют составляющие хроматичности или информации о цвете. Соответственно, изображение в формате YCbCr содержит массив яркостных отсчетов, составленный из величин отсчетов яркостной составляющей (Y), и два массива цветностных отсчетов, составленные из величин отсчетов соответствующих цветностных составляющих (Cb и Cr). Изображения в формате RGB могут быть преобразованы или трансформированы в формат YCbCr и наоборот, процедура также известна под названием цветовой трансформации или преобразования. Если изображение является одноцветным (черно-белым), это изображение может содержать только массив отсчетов яркостной составляющей. Соответственно, изображение может представлять собой, например, массив отсчетов яркостной составляющей в черно-белом формате, или массив отсчетов яркостной составляющей и два соответствующих массива отсчетов цветностных составляющих в цветовых форматах 4:2:0, 4:2:2 и 4:4:4.An image (digital) is or can be considered as a two-dimensional array or matrix of samples, each of which has a certain intensity value. Any sample in an array may also be called a pixel (short for picture element) or pel. The number of counts in the horizontal and vertical direction (or axis) of the array or image determines the size and/or resolution of the image. To represent color, three color components are usually used, i.e. the image may be represented by or may contain three arrays of samples. In the RGB format or color space, an image contains corresponding arrays of red, green, and blue color samples. However, in video encoding, each pixel is typically represented in a luminance and chrominance format or color space, such as YCbCr, which contains a luminance component, denoted Y, (sometimes L is also used instead of Y) and two chrominance components, denoted Cb and Cr. The luminance (or luma for short) component Y represents the brightness or intensity of the gray level (for example, as in a grayscale image), while the two chrominance (or chroma for short) components Cb and Cr represent the chromaticity components or color information. Accordingly, an image in the YCbCr format contains an array of brightness samples, composed of the sample values of the luminance component (Y), and two arrays of chrominance samples, composed of the sample values of the corresponding chromatic components (Cb and Cr). Images in RGB format can be converted or transformed to YCbCr format and vice versa, a procedure also known as color conversion or conversion. If the image is monochrome (black and white), this image can only contain an array of luminance component samples. Accordingly, the image can be, for example, an array of luminance component samples in black and white format, or an array of luminance component samples and two corresponding arrays of chrominance component samples in 4:2:0, 4:2:2 and 4:4 color formats: 4.
Варианты кодирующего устройства 20 для видео могут содержать модуль разбиения изображения (не показан на Фиг. 2), конфигурированный для разбиения изображения 17 на несколько (обычно не накладывающихся один на другой) блоков 203 изображения. Эти блоки могут также называться корневыми блоками, макро блоками (в стандарте кодирования H.264/AVC), либо блоками дерева кодирования (coding tree block (CTB)) или единицами дерева кодирования (coding tree unit (CTU)) (в стандартах кодирования H.265/HEVC и VVC). Модуль разбиения изображения может быть конфигурирован для использования одного и того же размера блоков для всех изображений последовательности видео и соответствующей сетки, определяющей размер блоков, либо для изменения размера блоков между изображениями, или подмножествами или группами изображений и разбиения каждого изображения на соответствующие блоки. Embodiments of the video encoder 20 may include an image splitter (not shown in FIG. 2) configured to split the image 17 into multiple (usually non-overlapping) image blocks 203. These blocks may also be called root blocks, macro blocks (in the H.264/AVC encoding standard), or coding tree blocks (CTB) or coding tree units (CTU) (in the H.264/AVC encoding standards). .265/HEVC and VVC). The image splitter may be configured to use the same block size for all images of 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 split each image into appropriate blocks.
В дальнейших вариантах, кодирующее устройство для видео может быть конфигурировано для приема блока 203 изображения 17 напрямую, например, одного, нескольких или всех блоков, составляющих изображение 17. Этот блок 203 изображения может также называться текущим блоком изображения или блоком изображения, подлежащим кодированию. In further embodiments, the video encoder may be configured to receive block 203 of image 17 directly, for example, one, more, or all of the blocks composing image 17. This image block 203 may also be referred to as the current image block or image block to be encoded.
Аналогично изображению 17, блок 203 изображения опять представляет собой или может рассматриваться в качестве двумерного массива или матрицы отсчетов, каждый из которых имеет некую величину интенсивности (величины отсчетов), хотя размеры этого массива меньше размеров массива для изображения 17. Другими словами, блок 203 может содержать, например, один массив отсчетов (например, массив яркостной составляющей в случае черно-белого изображения 17, либо массив яркостной или цветностной составляющей в случае цветного изображения) или три массива отсчетов (например, массив яркостной составляющей и два массива цветностных составляющих в случае цветного изображения 17), либо какое-либо другое число массивов и/или другие типы массивов в зависимости от применяемого цветового формата. Число отсчетов в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может представлять собой, например, массив отсчетов размером MxN (M-столбцов на N-строк) или массив размером MxN коэффициентов преобразования.Similar to image 17, image block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples, each of which has some intensity value (sample magnitude), although the dimensions of this array are smaller than the array dimensions for image 17. In other words, block 203 can contain, for example, one array of samples (for example, an array of luminance components in the case of a black-and-white image 17, or an array of luminance or chrominance components in the case of a color image) or three arrays of samples (for example, an array of luminance components and two arrays of chrominance components in the case of a color image 17), or some other number of arrays and/or other types of arrays depending on the color format used. 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 be, for example, an MxN array of samples (M columns by N rows) or an MxN array of transform coefficients.
Варианты кодирующего устройства 20 для видео, как показано на Фиг. 2, могут быть конфигурированы для кодирования изображения 17 блок за блоком, например, для каждого блока 203 осуществляется кодирование и прогнозирование. Options for video encoder 20 as shown in FIG. 2 may be configured to encode the image 17 block by block, for example, for each block 203 encoding and prediction is performed.
Варианты кодирующего устройства 20 для видео, как показано на Фиг. 2, могут быть далее конфигурированы для разбиения и/или кодирования изображения с использованием срезов (слоев) (также называемых видео срезами (слоями)), где изображение может быть разбито на или кодировано с использованием одного или более срезов (слоев) (обычно не накладывающихся один на другой), и каждый слой может содержать один или более блоков (например, единиц CTU).Options for video encoder 20 as shown in FIG. 2 can be further configured to split and/or encode an image using slices (also called video slices), where the image can be split into or encoded using one or more slices (usually non-overlapping one on top of the other), and each layer may contain one or more blocks (eg, CTUs).
Варианты кодирующего устройства 20 для видео, как показано на Фиг. 2, могут быть далее конфигурированы для разбиения и/или кодирования изображения с использованием групп плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), где изображение может быть разбито на или кодировано с использованием одной или более групп плиток (обычно не накладывающихся одна на другую), и каждая группа плиток может содержать, например, один или более блоков (например, единиц CTU) или одну или более плиток, где каждая плитка, например, может быть прямоугольной формы и может содержать один или более блоков (например, единиц CTU), например, полных или частичных блоков.Options for video encoder 20 as shown in FIG. 2 may be further configured to partition and/or encode an image using groups of tiles (also called video tile groups) and/or tiles (also called video tiles), where the image may be partitioned into or encoded using one or more groups of tiles (usually not overlapping each other), and each group of tiles may contain, for example, one or more blocks (for example, CTUs) or one or more tiles, where each tile, for example, may be rectangular in shape and may contain one or more blocks (e.g. CTUs), such as full or partial blocks.
Вычисление остаткаCalculating the remainder
Модуль 204 вычисления остатка может быть конфигурирован для вычисления блока 205 остатка (также называемого остатком 205) на основе блока 203 изображения и блока 265 прогнозирования (дальнейшие подробности относительно блока 265 прогнозирования приведены позднее), например, путем вычитания величин отсчетов блока 265 прогнозирования из величин отсчетов блока 203 изображения, отсчет за отсчетом (пиксель за пикселем) с целью получения блока 205 остатка в области отсчетов. Residual calculation module 204 may be configured to calculate residual block 205 (also referred to as residual 205) based on image block 203 and prediction block 265 (further details regarding prediction block 265 are provided later), for example, by subtracting the sample values of prediction block 265 from the sample values image block 203, sample by sample (pixel by pixel) to obtain a residual block 205 in the sample area.
Преобразование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 discrete sine transform (DST), to the sample values in the remainder block 205 to obtain transform coefficients 207 in transformation areas. These transform coefficients 207 may also be referred to as residual transform coefficients and represent a residual block 205 in the transform domain.
Процессорный модуль 206 преобразования может быть конфигурирован для применения целочисленных аппроксимаций преобразований DCT/DST, так, как эти преобразования специфицированы для стандарта H.265/HEVC кодирования. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабированы с некоторым коэффициентом. Для сохранения нормы блока остатка, обрабатываемого посредством прямого и обратного преобразования, применяют дополнительные масштабные коэффициенты как часть процедуры преобразования. Эти масштабные коэффициенты обычно выбирают на основе определенных ограничений, таких как масштабные коэффициенты, являющиеся степенями двойки, для операций сдвига, битовая глубина (разрядность) коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.п. Конкретные масштабные коэффициенты, специфицируют, например, для обратного преобразования, например, посредством процессорного модуля 212 обратного преобразования (и соответствующего обратного преобразования, например, посредством процессорного модуля 312 обратного преобразования в декодирующем устройстве 30 для видео), и соответствующие масштабные коэффициенты для прямого преобразования, например, посредством процессорного модуля 206 преобразования, в кодирующем устройстве 20 могут быть специфицированы соответственно. Transform processor 206 may be configured to apply integer approximations of the DCT/DST transforms as specified for the H.265/HEVC encoding standard. Compared to the orthogonal DCT transform, such integer approximations are usually scaled by some factor. To maintain the block norm of the remainder processed through forward and inverse transformation, additional scaling factors are applied as part of the transformation procedure. These scale factors are typically selected based on certain constraints, such as power-of-two scale factors for shift operations, the bit depth of the transform coefficients, trade-offs between accuracy and implementation costs, and the like. Particular scale factors are specified, for example, for the inverse transform, for example, by the inverse transform processor module 212 (and the corresponding inverse transform, for example, through the inverse transform processor module 312 in the video decoder 30), and corresponding scale factors for the forward transform, for example, by means of the processing unit 206, the transformations in the encoder 20 can be specified accordingly.
Варианты кодирующего устройства 20 для видео (соответственно, процессорный модуль 206 преобразования) могут быть конфигурированы для передачи на выход параметров преобразования, например, типа преобразования или преобразований, например, напрямую, либо в кодированном или в сжатом виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively, transform processor module 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 module 270, such that For example, video decoder 30 may receive and use these transform parameters for decoding.
КвантованиеQuantization
Модуль 208 квантования может быть конфигурирован для квантования коэффициентов 207 преобразования с целью получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 могут также называться квантованными коэффициентами 209 преобразования или квантованными коэффициентами 209 остатка. Quantization module 208 may be configured to quantize transform coefficients 207 to obtain quantized coefficients 209, for example, by applying scalar quantization or vector quantization. The quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized remainder coefficients 209.
Процедура квантования может уменьшить битовую глубину (разрядность), ассоциированную с некоторыми или со всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть в процессе квантования округлен в меньшую сторону до m-битового коэффициента преобразования, где n больше m. Степень квантования можно модифицировать путем регулирования параметра квантования (quantization parameter (QP)). Например, при скалярном квантовании можно применять различное масштабирование для достижения более «тонкого» или более грубого квантования. Шаг квантования меньшего размера соответствует более «тонкому» квантованию, тогда как шаг квантования большего размера соответствует более грубому квантованию. Применимый размер шага квантования может быть обозначен параметром квантования (QP). Этот параметр квантования может представлять собой, например, индекс к предварительно заданному множеству применимых размеров шага квантования. Например, маленькие параметры квантования могут соответствовать «тонкому» квантованию (маленькие размеры шага квантования), а большие параметры кантования могут соответствовать грубому квантованию (большие размеры шага квантования) или наоборот. Процедура квантования может содержать деление на величину размера шага квантования, и соответствующая и/или обратная процедура – деквантование, например, посредством модуля 210 обратного квантования, может содержать умножение на величину размера шага квантования. Варианты согласно некоторым стандартам, например, стандарту кодирования HEVC, могут быть конфигурированы для использования параметра квантования с целью определения размера шага квантования. В общем случае, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной запятой для уравнения, содержащего операцию деления. Для квантования и деквантования могут быть введены дополнительные масштабные коэффициенты для восстановления нормы блока остатка, которая могла быть модифицирована вследствие использования масштабирования в аппроксимации с фиксированной запятой применительно к уравнению для размера шага квантования и параметра квантования. В одном из примеров реализации масштабирование обратного преобразования и деквантования может быть комбинировано. В альтернативном варианте могут быть использованы специализированные таблицы квантования, передаваемые в виде сигнализации от кодирующего устройства декодирующему устройству, например, в потоке битов данных. Квантование представляет собой операцию с потерями, причем потери растут при увеличении размера шага квантования.The quantization procedure 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 down during the quantization process to an m-bit transform factor, where n is greater than m. The degree of quantization can be modified by adjusting the quantization parameter (QP). For example, with scalar quantization, different scaling can be applied to achieve finer or coarser quantization. A smaller quantization step size corresponds to a finer quantization, while a larger quantization step size corresponds to a coarser quantization. The applicable quantization step size may be denoted by a quantization parameter (QP). This quantization parameter may be, for example, 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. The quantization procedure may comprise dividing by a quantization step size value, and the corresponding and/or inverse dequantization procedure, for example via inverse quantization module 210, may comprise multiplying by a quantization step size value. Options according to some standards, such as the HEVC encoding standard, can be configured to use a quantization parameter to determine the quantization step size. In general, the quantization step size can be calculated based on the quantization parameter using a fixed-point approximation for an equation containing a division operation. For quantization and dequantization, additional scaling factors may be introduced to recover the residual block norm that may have been modified due to the use of scaling in the fixed-point approximation applied to the equation for the quantization step size and the quantization parameter. In one example implementation, inversion and dequantization scaling may be combined. Alternatively, dedicated quantization tables may be used, signaled from the encoder to the decoder, for example in a data bit stream. Quantization is a lossy operation, and losses increase as the quantization step size increases.
Варианты кодирующего устройства 20 для видео (соответственно модуль 208 квантования) могут быть конфигурированы для передачи на выход параметров квантования (QP), например, напрямую, либо в кодированном виде через модуль 270 энтропийного кодирования, так что, например, декодирующее устройство 30 для видео может принять и применить параметры квантования для декодирования.Versions of video encoder 20 (respectively, quantization module 208) may be configured to output quantization parameters (QPs), for example, directly, or encoded via entropy encoding module 270, so that, for example, video decoder 30 can accept and apply quantization parameters for decoding.
Обратное квантованиеInverse quantization
Модуль 210 обратного квантования конфигурирован для применения процедуры обратного квантования относительно модуля 208 квантования к квантованным коэффициентам с целью получения деквантованных коэффициентов 211, например, посредством применения схемы, обратной схеме квантования, применяемой модулем 208 квантования, на основе или с использованием такого же размера шага квантования, как в модуле 208 квантования. Деквантованные коэффициенты 211 могут также называться деквантованными коэффициентами 211 остатка и соответствовать – хотя они обычно не являются идентичными коэффициентам преобразования вследствие потерь при квантовании, – коэффициентам 207 преобразования.The inverse quantization module 210 is configured to apply an inverse quantization procedure relative to the quantization module 208 to the quantized coefficients to obtain the dequantized coefficients 211, for example, by applying a scheme inverse to the quantization scheme applied by the quantization module 208, based on or using the same quantization step size, as in the quantization module 208. The dequantized coefficients 211 may also be referred to as the dequantized residue coefficients 211 and correspond, although they are typically not identical to the transform coefficients due to quantization losses, to the transform coefficients 207 .
Обратное преобразованиеReverse conversion
Процессорный модуль 212 обратного преобразования конфигурирован для применения обратного преобразования относительно преобразования, применяемого процессорным модулем 206 преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусного преобразования (DST). Либо другого обратного преобразования с цель получения реконструированного блока 213 остатка (или соответствующих деквантованных коэффициентов 213) в области отсчетов. Реконструированный блок 213 остатка может называться блоком 213 преобразования.The inverse transform processor module 212 is configured to apply an inverse transform relative to the transform applied by the transform processor module 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST). Or another inverse transformation to obtain a reconstructed block 213 of the remainder (or corresponding dequantized coefficients 213) in the sample domain. The reconstructed remainder block 213 may be referred to as a transform block 213 .
РеконструкцияReconstruction
Модуль 214 реконструкции (например, сумматор 214) конфигурирован для суммирования блока 213 преобразования (т.е. реконструированного блока 213 остатка) с блоком 265 прогнозирования с целью получения реконструированного блока 215 в области отсчетов, например, посредством суммирования – отсчет за отсчетом, – величин отсчетов реконструированного блока 213 остатка с величинами отсчетов блока 265 прогнозирования. The reconstruction module 214 (e.g., the adder 214) is configured to add the transform block 213 (i.e., the reconstructed remainder block 213) with the prediction block 265 to obtain the reconstructed block 215 in the sample domain, for example, by adding sample-by-sample values. samples of the reconstructed block 213 of the remainder with the values of samples 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 module 220 (or “loop filter” 220 for short) is configured to filter the reconstructed block 215 to produce a filtered block 221, or more generally to filter the reconstructed samples to produce filtered samples. The edge filter module is configured, for example, to smooth transitions between pixels or otherwise improve video quality. This loop filter module 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 loop filter (ALF), sharpening filters, anti-aliasing filters, or collaborative filters, or any combination of such filters. Although loop filter module 220 is shown in FIG. 2 as an in-loop filter, this loop filter module 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 может принимать и применять те же самые параметры контурного фильтра или соответствующих контурных фильтров при декодировании.Options for video encoder 20 (respectively, loop filter module 220) may be configured to output loop filter parameters (such as nonlinear adaptive bias filtering information), for example, directly, or encoded through entropy encoding module 270, such as that, for example, decoder 30 can receive and apply the same parameters of the loop filter or corresponding loop filters when decoding.
Буфер декодированного изображенияDecoded Image Buffer
Буфер 230 декодированного изображения (DPB) может представлять собой запоминающее устройство, сохраняющее опорные изображения, или, в общем случае, данные опорных изображений, для кодирования данных видео посредством кодирующего устройства 20 для видео. Буфер DPB 230 может быть образован какими-либо из широкого спектра запоминающих устройств, такими как динамическое запоминающее устройство с произвольной выборкой (динамическое ЗУПВ (dynamic random access memory (DRAM))), включая синхронное динамическое ЗУПВ (synchronous DRAM (SDRAM)), магниторезистивное ЗУПВ (magnetoresistive RAM (MRAM)), резистивное ЗУПВ (resistive RAM (RRAM)) или запоминающие устройства других типов. Буфер 230 декодированного изображения (DPB) может быть конфигурирован для сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированного изображения может быть далее конфигурирован для сохранения других ранее фильтрованных блоков, например, ранее реконструированных и фильтрованных блоков 221, из того же самого текущего изображения или из других изображений, например, ранее реконструированных изображений, и может предоставлять полные ранее реконструированные, т.е. декодированные, изображения (и соответствующие опорные блоки и отсчеты) и/или частично реконструированное текущее изображение (и соответствующие опорные блоки и отсчеты), например, для межкадрового прогнозирования. Буфер 230 декодированного изображения (DPB) может быть также конфигурирован для сохранения одного или более нефильтрованных реконструированных блоков 215, либо вообще нефильтрованных реконструированных отсчетов, например, если реконструированный блок 215 не был фильтрован в модуле 220 контурного фильтра, или какой-либо другой дополнительно обработанной версии реконструированных блоков или отсчетов.The decoded picture buffer (DPB) 230 may be a memory storing reference pictures, or generally reference picture data, for encoding video data by the video encoder 20. The DPB 230 may be formed by any of a wide variety of memory devices, such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive Magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. Decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. Decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously reconstructed and filtered blocks 221, from the same current image or from other images, e.g. previously reconstructed images, and can provide complete previously reconstructed 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-frame prediction. The decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215, or any unfiltered reconstructed samples, for example, if the reconstructed block 215 was not filtered in the loop filter module 220, or some other further processed version. reconstructed blocks or samples.
Выбор режима (разбиение и прогнозирование)Mode selection (partitioning and prediction)
Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 межкадрового прогнозирования и модуль 254 внутрикадрового прогнозирования и этот модуль 260 конфигурирован для приема или получения данных исходного изображения, например, исходного блока 203 (текущего блока 203 из текущего изображения 17), и данных реконструированного изображения, например, фильтрованных и/или нефильтрованных реконструированных отсчетов или блоков того же самого (текущего) изображения и/или из одного или более ранее декодированных изображений, например, из буфера 230 декодированного изображения или других буферов (например, буфера строк, не показанного). Эти реконструированные данные изображения используются в качестве опорных данных изображения для прогнозирования, например, межкадрового или внутрикадрового прогнозирования, с целью получения блока 265 прогнозирования или предиктора 265.The mode selection module 260 includes a partitioning module 262, an inter-frame prediction module 244 and an intra-frame prediction module 254, and this module 260 is configured to receive or obtain original image data, for example, original block 203 (current block 203 from the current image 17), and reconstructed image data. , for example, filtered and/or unfiltered reconstructed samples or blocks of the same (current) image and/or from one or more previously decoded images, for example, from decoded image buffer 230 or other buffers (for example, a line buffer, not shown). This reconstructed image data is used as reference image data for prediction, such as inter- or intra-frame prediction, to obtain a prediction block 265 or a predictor 265.
Модуль 260 выбора режима может быть конфигурирован для определения или выбора разбиения для режима прогнозирования текущего блока (включая отсутствие разбиения) и режима прогнозирования (например, режима внутрикадрового или межкадрового прогнозирования) и генерации соответствующего блока 265 прогнозирования, который используется для вычисления блока 205 остатка и для реконструкции указанного реконструированного блока 215. The mode selection module 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, an intra- or inter-prediction mode) and generate a corresponding prediction block 265 that is used to calculate the remainder block 205 and to reconstruction of the said reconstructed block 215.
Варианты модуля 260 выбора режима могут быть конфигурированы для выбора режима разбиения и прогнозирования (например, из совокупности режимов, поддерживаемых модулем 260 выбора режима или доступных для него), который обеспечивает наилучшее согласование или другими словами минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), либо минимальные сигнализационные издержки (минимальные сигнализационные издержки означают лучшее сжатие для передачи или хранения), либо этот режим учитывает или балансирует оба этих фактора – минимальный остаток и минимальные издержки. Модуль 260 выбора режима может быть конфигурирован для определения режима разбиения и прогнозирования на основе оптимизации соотношения между скоростью передачи данных и искажениями (rate distortion optimization (RDO)), т.е. для выбора режима прогнозирования, обеспечивающего минимальные искажения в функции скорости передачи данных. Термины типа «наилучший», «минимальный», «оптимальный» и т.д. в этом контексте не обязательно относятся к общему («глобальному») «наилучшему», «минимальному», «оптимальному» и т.п., а могут также относиться к выполнению критерия завершения или выбора, типа того, что некая величина превосходит или падает ниже пороговой величины, или других ограничений, ведущих к потенциально «субоптимальному выбору», но позволяющих уменьшить сложность и сократить время обработки данных.Options for mode selection module 260 may be configured to select a partitioning and prediction mode (eg, from a plurality of modes supported by or available to mode selection module 260) that provides the best match, or in other words the minimum remainder (minimum remainder means the best compression for transmission or storage), or minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or this mode takes into account or balances both of these factors - minimum remainder and minimum overhead. The mode selector 260 may be configured to determine a partitioning and prediction mode based on rate distortion optimization (RDO), i.e. to select a prediction mode that provides minimal distortion in the data rate function. Terms like “best”, “minimum”, “optimal”, etc. in this context do not necessarily refer to a general (“global”) “best”, “minimum”, “optimal”, etc., but may also refer to the fulfillment of a completion or selection criterion, such as that a certain value exceeds or falls below a threshold, or other constraints leading to potentially “suboptimal selection” but allowing for reduced complexity and reduced processing time.
Другими словами, модуль 262 разбиения может быть конфигурирован для разбиения блока 203 на единицы разбиения или субблоки меньшего размера (которые снова образуют блоки), например, путем итеративного использования разбиения по схеме дерева квадратов (quad-tree (QT)), разбиения по схеме двоичного дерева (binary-tree (BT)) или разбиения по схеме троичного дерева (triple-tree (TT)) или какой-либо комбинации этих схем разбиения, и для осуществления, например, прогнозирования для каждой единицы разбиения блока или субблока, где процедура выбора режима содержит выбор структуры дерева для разбитого блока 203, и указанные режимы прогнозирования применяются к каждой из единиц разбиения блока или к каждому субблоку.In other words, partitioner 262 may be configured to partition block 203 into partition units or smaller sub-blocks (which again form blocks), for example, by iteratively using quad-tree (QT) partitioning, binary partitioning binary-tree (BT) or triple-tree (TT) partitioning, or some combination of these partitioning schemes, and to carry out, for example, predictions for each block or sub-block partitioning unit, where the selection procedure mode comprises selecting a tree structure for the split block 203, and said prediction modes are applied to each of the block split units or to each sub-block.
В последующем, разбиение (например, посредством модуля 260 разбиения) и прогнозирование (посредством модуля 244 межкадрового прогнозирования и модуля 254 внутрикадрового прогнозирования), осуществляемые посредством примера кодирующего устройства 20 для видео, будут пояснены более подробно.In the following, partitioning (eg, through partitioning unit 260) and prediction (via inter-frame prediction unit 244 and intra-frame prediction unit 254) performed by the example video encoder 20 will be explained in more detail.
РазбиениеSplitting
Модуль 262 разбиения может разбивать (или разделять) текущий блок 203 на единицы разбиения меньшего размера, например, блоки меньшего размера квадратной или прямоугольной формы. Эти блоки меньшего размера (которые могут также называться субблоками) могут быть далее разделены на единицы разбиения еще меньшего размера. Это также называется разбиением по схеме дерева или разбиением по схеме иерархического дерева, где корневой блок, например, корневой блок на уровне дерева 0 (иерархический уровень 0, глубина 0) может быть рекурсивно разбит, например, разбит на два или более блоков следующего более низкого уровня дерева, например, узлы на уровне дерева 1 (иерархический уровень 1, глубина 1), где эти блоки могут быть снова разбиты на два или более блоков следующего более низкого уровня, например, уровня дерева 2 (иерархический уровень 2, глубина 2), и т.д. до тех пор, пока процедура разбиения не завершится, например, поскольку будет выполнен критерий завершения, например, будет достигнута максимальная глубина дерева или минимальный размер блоков. Блоки, которые не подвергнуты дальнейшему разбиению, также называются концевыми блоками или концевыми узлами («листьями») дерева. Дерево, использующее разбиение на две единицы разбиения, называется двоичным деревом (binary-tree (BT)), дерево, использующее разбиение на три единицы разбиения, называется троичным деревом (ternary-tree (TT)), и дерево, использующее разбиение на четыре единицы разбиения, называется деревом квадратов или четвертичным деревом (quad-tree (QT)).The partitioner 262 may partition (or divide) the current block 203 into smaller partition units, such as smaller square or rectangular shaped blocks. These smaller blocks (which may also be called subblocks) can be further divided into even smaller partitioning units. This is also called tree-scheme partitioning or hierarchical tree-scheme partitioning, where a root block, for example the root block at tree level 0 (hierarchical level 0, depth 0) can be recursively partitioned, for example partitioned into two or more next lower blocks tree level, for example nodes at tree level 1 (hierarchical level 1, depth 1), where these blocks can be again split into two or more blocks of the next lower level, for example tree level 2 (hierarchical level 2, depth 2), etc. until the splitting procedure completes, for example because a termination criterion is met, such as the maximum tree depth or minimum block size being reached. Blocks that are not further split are also called leaf blocks or leaf nodes of the tree. A tree that uses a partition into two partition units is called a binary-tree (BT), a tree that uses a partition into three partition units is called a ternary-tree (TT), and a tree that uses a partition into four partition units partition is called a quad-tree (QT).
Как отмечено ранее, термин «блок», как он используется здесь, может обозначать часть, в частности, квадратную или прямоугольную часть, изображения. В соответствии, например, со стандартами кодирования HEVC и VVC, блок может представлять собой или может соответствовать единице дерева кодирования (coding tree unit (CTU)), единице кодирования (coding unit (CU)), единице прогнозирования (prediction unit (PU)) и единице преобразования (transform unit (TU)) и/или соответствующим блокам, например, блоку дерева кодирования (coding tree block (CTB)), блоку кодирования (coding block (CB)), блоку преобразования (transform block (TB)) или блоку прогнозирования (prediction block (PB)).As noted earlier, the term "block" as used herein can refer to a portion, particularly a square or rectangular portion, of an image. According to, for example, the HEVC and VVC encoding standards, a block may represent 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 prediction block (PB)
Например, единица дерева кодирования (CTU) может представлять собой или содержать блок CTB отсчетов яркостной составляющей, два соответствующих блока CTB отсчетов цветностных составляющих изображения, имеющего три массива отсчетов, либо блок CTB отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок дерева кодирования (CTB) может представлять собой блок размером NxN отсчетов для некоторого значения N, так что разделение составляющей на блоки CTB является разбиением. Единица кодирования (CU) может представлять собой или содержать блок кодирования отсчетов яркостной составляющей, два соответствующих блока кодирования отсчетов цветностной составляющей изображения, содержащего три массива отсчетов, или блок кодирования отсчетов черно-белого изображения или изображения, кодированного с использованием трех раздельных цветовых плоскостей и синтаксических структур, используемых для кодирования отсчетов. Соответственно, блок кодирования (CB) может представлять собой блок размером MxN отсчетов для некоторых значений M и N, так что разделение блока CTB на блоки кодирования является разбиением.For example, a coding tree unit (CTU) may be or contain a CTB of luminance samples, two corresponding CTBs of chrominance samples of an image having three arrays of samples, or a CTB of samples of a black-and-white image or an image encoded using three separate color samples. planes and syntactic structures used to encode samples. Accordingly, a coding tree block (CTB) may be a block of size NxN samples for some value of N, such that dividing a component into CTB blocks is a partition. A coding unit (CU) may be or comprise a luminance sample encoding unit, two corresponding chrominance sample encoding units for an image containing three sample arrays, or a sample encoding unit for a black and white image or an image encoded using three separate color planes and syntax structures used to encode samples. Accordingly, a coding block (CB) may be a block of size MxN samples for some values of M and N, so that dividing a CTB block into coding blocks is a partition.
В ряде вариантов, например, согласно стандарту кодирования HEVC, единица дерева кодирования (CTU) может быть разбита на единицы CU с использованием структуры дерева квадратов, обозначенной как дерево кодирования. Решение о том, следует ли кодировать какую-то область изображения с использованием межкадрового (временного) или внутрикадрового (пространственного) прогнозирования, принимается на уровне единиц CU. Каждая единица CU может быть далее разбита на одну, две или четыре единицы PU в соответствии с типом разбиения на единицы PU. Внутри одной единицы PU применяется один и тот же процесс прогнозирования, а относящуюся к этому информацию передают декодирующему устройству на основе единиц PU. После получения блока остатка в результате применения процедуры прогнозирования на основе типа разбиения на единицы PU, единица CU может быть разбита на единицы преобразования (TU) в соответствии с другой структурой дерева квадратов, аналогичной дереву кодирования для единицы CU. In some embodiments, such as the HEVC coding standard, a coding tree unit (CTU) may be partitioned into CUs using a square tree structure, referred to as a coding tree. The decision of whether a particular image region should be encoded using inter-frame (temporal) or intra-frame (spatial) prediction is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the type of PU partition. Within one PU, the same prediction process is applied, and information related thereto is transmitted to a decoder based on the PUs. After obtaining the residual block as a result of applying the prediction procedure based on the PU partitioning type, the CU can be partitioned into transform units (TUs) according to another square tree structure similar to the encoding tree for the CU.
В некоторых вариантах, например, согласно самой последней разрабатываемой сегодня версии стандарта кодирования, которая называется универсальным видео кодированием (Versatile Video Coding (VVC)), для разбиения блока кодирования применяется, например, комбинированное разбиение по схеме дерева квадратов и двоичного дерева (Quad-tree and binary tree (QTBT)). В структуре блоков дерева QTBT единица CU может иметь либо квадратную, либо прямоугольную форму. Например, единицу дерева кодирования (CTU) сначала разбивают согласно структуре дерева квадратов. Концевые узлы («листья») дерева квадратов далее разбивают в соответствии со структурой двоичного дерева или троичного (либо тройного) дерева. Концевые узлы дерева разбиения называются единицами кодирования (CU), и эта сегментация используется для процедур прогнозирования и преобразования без какого-либо дальнейшего разбиения. Это означает, что единицы CU, единицы PU и единицы TU имеют одинаковый размер блоков в структуре блоков кодирования дерева QTBT. Вместе со структурой блоков дерева QTBT могут быть использованы несколько видов разбиений, например разбиение по схеме тройного (троичного) дерева. In some embodiments, such as the latest version of the encoding standard currently under development, called Versatile Video Coding (VVC), a combination of Quad-tree and Quad-tree partitioning is used to partition the encoding block. and binary tree (QTBT)). In the block structure of the QTBT tree, the CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first partitioned according to a square tree structure. The terminal nodes (“leaves”) of the square tree are further divided according to the structure of a binary tree or a ternary (or triple) tree. The leaf nodes of the partitioning tree are called coding units (CUs), and this segmentation is used for prediction and transformation procedures without any further partitioning. This means that CU units, PU units and TU units have the same block size in the QTBT tree coding block structure. Several types of partitions can be used in conjunction with the QTBT tree block structure, such as a ternary tree partition.
В одном из примеров, модуль 260 выбора режима в кодирующем устройстве 20 для видео может быть конфигурирован для осуществления какой-либо комбинации способов разбиения, описываемых здесь.In one example, mode selection module 260 in video encoder 20 may be configured to implement any combination of the partitioning techniques described herein.
Как описано выше, кодирующее устройство 20 для видео конфигурировано для определения или выбора наилучшего или оптимального режима прогнозирования из множества (например, предварительно заданного) режимов прогнозирования. Это множество режимов прогнозирования может содержать, например, режимы межкадрового прогнозирования и/или режимы внутрикадрового прогнозирования. As described above, video encoder 20 is configured to determine or select the best or optimal prediction mode from a plurality of (eg, predefined) prediction modes. This plurality of prediction modes may comprise, for example, inter-prediction modes and/or intra-prediction modes.
Внутрикадровое прогнозированиеIntra-frame prediction
Множество режимов внутрикадрового прогнозирования может содержать 35 разных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования HEVC, либо может содержать 67 различных режимов внутрикадрового прогнозирования, например, ненаправленные режимы, как DC-режим (или средний) и планарный режим, или направленные режимы, например, как определено в стандарте кодирования VVC. The plurality of intra-prediction modes may comprise 35 different intra-prediction modes, such as non-directional modes such as DC (or mid-mode) and planar mode, or directed modes such as those defined in the HEVC coding standard, or may contain 67 different intra-prediction modes , for example, non-directional modes, such as DC (or medium) mode and planar mode, or directional modes, for example, as defined in the VVC coding standard.
Модуль 254 внутрикадрового прогнозирования конфигурирован для использования реконструированных отсчетов соседних блоков из одного и того же текущего изображения блока 265 при внутрикадровом прогнозировании в соответствии с одним из режимов внутрикадрового прогнозирования из множества режимов внутрикадрового прогнозирования.Intra prediction module 254 is configured to use reconstructed adjacent block samples from the same current image of block 265 in intra prediction in accordance with one of the intra prediction modes from a plurality of intra prediction modes.
Модуль 254 внутрикадрового прогнозирования (или вообще модуль 260 выбора режима) далее конфигурирован для передачи параметров внутрикадрового прогнозирования (или вообще информации, указывающей выбранный режим внутрикадрового прогнозирования для рассматриваемого блока) модулю 270 энтропийного кодирования в форме синтаксических элементов 266 для включения в кодированные данные 21 изображения, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры прогнозирования при декодировании.Intra prediction module 254 (or more generally mode selection module 260) is further configured to provide intra prediction parameters (or generally information indicating the selected intra prediction mode for a block in question) to entropy encoding module 270 in the form of syntax elements 266 for inclusion in encoded image data 21, so that, for example, video decoder 30 may receive and use these prediction parameters in decoding.
Межкадровое прогнозированиеInterframe prediction
Множество (или возможные) режимов межкадрового прогнозирования зависит от доступных опорных изображений (т.е. предшествующих по меньшей мере частично декодированных изображений, например, сохраняемых в буфере DPB 230) и других параметров межкадрового прогнозирования, например, используется ли опорное изображение целиком или только его часть, например, область окна поиска вокруг области текущего блока, в опорном изображении для поиска наилучшим образом согласованного опорного блока, и/или, применяется ли интерполяция пикселей, например, интерполяция с точностью половины (half/semi-pel) пикселя и/или четверти пикселя, или нет.The plurality (or possible) inter-prediction modes depend on the available reference pictures (i.e., previous at least partially decoded pictures, e.g., stored in DPB 230) and other inter-prediction parameters, such as whether the entire reference picture is used or just one part, e.g., the search window area around the current block area, in the reference image to search for the best matched reference block, and/or whether pixel interpolation is applied, e.g., half/semi-pel pixel and/or quarter interpolation pixel or not.
В дополнение к приведенным выше режимам прогнозирования могут быть применены режим пропуска и/или прямой режим.In addition to the above prediction modes, a skip mode and/or a direct mode can be applied.
Модуль 244 межкадрового прогнозирования может содержать модуль оценки движения (motion estimation (ME)) и модуль компенсации движения (motion compensation (MC)) (оба модуля не показаны на Фиг.2). Модуль оценки движения может быть конфигурирован для приема или получения блока 203 изображения (текущего блока 203 изображения из текущего изображения 17) и декодированного изображения 231, или по меньшей мере одного или более ранее реконструированных блоков, например, реконструированных блоков из одного или более других ранее декодированных изображений 231, для оценки движения. Например, последовательность видео может содержать текущее изображение и ранее декодированные изображения 231, или другими словами, текущее изображение и ранее декодированные изображения 231 могут быть частью или составлять последовательность изображений, образующую последовательность видео.The interframe prediction module 244 may include a motion estimation (ME) module and a motion compensation (MC) module (both modules are not shown in FIG. 2). The motion estimation module may be configured to receive or obtain an image block 203 (the current image block 203 from the current image 17) and a decoded image 231, or at least one or more previously reconstructed blocks, such as reconstructed blocks from one or more other 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 constitute a sequence of images making up the video sequence.
Кодирующее устройство 20 может, например, быть конфигурировано для выбора опорного блока из нескольких опорных блоков одного и того же или разных изображений из совокупности нескольких других изображений и передачи опорного изображения (или индекса опорного изображения) и/или сдвига (пространственного сдвига) между позицией (координаты x, y) рассматриваемого опорного блока и позицией текущего блока в качестве параметров межкадрового прогнозирования модулю оценки движения. Этот сдвиг также называется вектором движения (motion vector (MV)). The encoder 20 may, for example, be configured to select a reference block from several reference blocks of the same or different images from a plurality of several other images and transmit the reference image (or reference image index) and/or the offset (spatial shift) between the position ( x, y coordinates of the reference block in question and the position of the current block as inter-frame prediction parameters to the motion estimation module. This shift is also called the motion vector (MV).
Модуль компенсации движения конфигурирован для получения, например, приема, параметра межкадрового прогнозирования и осуществления медкадрового прогнозирования на основе или с использованием этого параметра межкадрового прогнозирования для получения блока 265 при межкадровом прогнозировании. Процедура компенсации движения, осуществляемая модулем компенсации движения, может содержать выборку или генерирование блока прогнозирования на основе вектора движения/блочного вектора, определяемого в результате оценки движения, возможно осуществление интерполяции с точностью до долей пикселя. Процедура интерполяционной фильтрации может генерировать дополнительные пиксельные отсчеты на основе известных пиксельных отсчетов, тем самым потенциально увеличивая число блоков-кандидатов прогнозирования, которые могут быть использованы для кодирования блока изображения. После приема вектора движения для единицы PU из текущего блока изображения, модуль компенсации движения может поместить блок прогнозирования, на который указывает вектор движения, в один из списков опорных изображений. The motion compensation module is configured to receive, for example, an inter-prediction parameter and perform medical prediction based on or using this inter-prediction parameter to obtain an inter-prediction block 265. The motion compensation procedure performed by the motion compensation module may comprise sampling or generating a prediction block based on a motion vector/block vector determined by motion estimation, possibly interpolating to sub-pixel precision. The interpolation filtering procedure can generate additional pixel samples based on known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode an image block. After receiving a motion vector for a PU from the current image block, the motion compensation module may place the prediction block pointed to by the motion vector into one of the reference image lists.
Модуль компенсации движения может также генерировать синтаксические элементы, ассоциированные с блоками и слоями (срезами) видео для использования декодирующим устройством 30 для видео при декодировании блоков изображения в слое (срезе) видео. В дополнение или в качестве альтернативы для слоев (срезов) и соответствующих синтаксических элементов можно генерировать или использовать группы плиток и/или плитки и соответствующие синтаксические элементы.The motion compensation module may also generate syntax elements associated with video blocks and slices for use by video decoder 30 when decoding image blocks in a video slice. In addition or as an alternative to layers (slices) and corresponding syntax elements, groups of tiles and/or tiles and corresponding syntax elements can be generated or used.
Энтропийное кодированиеEntropy coding
Модуль 270 энтропийного кодирования конфигурирован для применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования в коде переменной длины (variable length coding (VLC)), схемы контекстно-адаптивного кодирования в коде переменной длины (context adaptive VLC (CAVLC)), схемы арифметического кодирования, бинаризации, схемы контекстно-адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding (CABAC)), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (syntax-based context-adaptive binary arithmetic coding (SBAC)), схемы энтропийного кодирования с разбиением интервалов вероятности (probability interval partitioning entropy (PIPE)) или других способов или технологии энтропийного кодирования) или обхода (без сжатия) на квантованные коэффициенты 209, параметры межкадрового прогнозирования, параметры внутрикадрового прогнозирования, параметры контурного фильтра и/или другие синтаксические элементы с целью получения кодированных данных 21 изображения, которые могут быть выведены через выход 272, например, в форме кодированного потока битов данных 21, так что, например, декодирующее устройство 30 для видео может принять и использовать эти параметры для декодирования. Кодированный поток битов данных 21 может быть передан декодирующему устройству 30 для видео, или сохранен в запоминающем устройство для передачи в более позднее время или вызова декодирующим устройством 30 для видео. Entropy encoding module 270 is configured to employ, for example, an entropy encoding algorithm or scheme (e.g., variable length coding (VLC) scheme, context adaptive VLC (CAVLC) scheme) , arithmetic coding schemes, binarization, context adaptive binary arithmetic coding (CABAC) schemes, syntax-based context-adaptive binary arithmetic coding (SBAC) schemes, entropy coding schemes with probability interval partitioning entropy (PIPE) or other entropy coding methods or technologies) or bypass (uncompressed) into quantized coefficients 209, inter-frame prediction parameters, intra-frame prediction parameters, loop filter parameters and/or others syntax elements for the purpose of obtaining encoded image data 21, which can be output through output 272, for example, in the form of an encoded data bit stream 21, so that, for example, video decoder 30 can receive and use these parameters for decoding. The encoded data bitstream 21 may be transmitted to video decoder 30, or stored in a storage device for transmission at a later time or recalled by video decoder 30.
Для кодирования потока видео могут быть использованы и другие структурные вариации кодирующего устройства 20 для видео. Например, кодирующее устройство 20, работающее не на основе преобразования, может квантовать сигнал остатка непосредственно, без привлечения процессорного модуля 206 преобразования, для определенных блоков или кадров. В другом варианте реализации, кодирующее устройство 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, комбинированные в одном модуле.Other structural variations of the video encoder 20 may be used to encode the video stream. For example, the non-transform encoder 20 may quantize the remainder signal directly, without involving the transform processor 206, for certain blocks or frames. In another embodiment, encoder 20 may have a quantization module 208 and an inverse quantization module 210 combined in one module.
Декодирующее устройство и способ декодированияDecoding device and decoding method
На Фиг. 3 показан пример декодирующего устройства 30 для видео, конфигурированного для реализации технологии согласно настоящему изобретению. Это декодирующее устройство 30 для видео конфигурировано для приема кодированных данных 21 изображения (например, кодированного потока битов данных 21), например, кодированных посредством кодирующего устройства 20, с целью получения декодированного изображения 331. Кодированные данные изображения или поток битов данных содержит информацию для декодирования кодированных данных изображения, например, данных, представляющих блоки изображения из кодированного слоя (среза) видео (и/или групп плиток или плиток) и ассоциированные синтаксические элементы.In FIG. 3 shows an example of a video decoding apparatus 30 configured to implement technology in accordance with the present invention. This video decoder 30 is configured to receive encoded image data 21 (e.g., encoded data bit stream 21), for example, encoded by encoder 20, to obtain a decoded image 331. The encoded image data or data bit stream contains information for decoding the encoded image data, for example, data representing blocks of image from a coded layer (slice) of video (and/or groups of tiles or tiles) and associated syntax elements.
В примере, показанном на Фиг. 3, декодирующее устройство 30 содержит модуль 304 энтропийного декодирования, модуль 310 обратного квантования, процессорный модуль 312 обратного преобразования, модуль 314 реконструкции (например, сумматор 314), контурный фильтр 320, буфер 330 декодированного изображения (DPB), 330, модуль 360 применения режима, модуль 344 межкадрового прогнозирования и модуль 354 внутрикадрового прогнозирования. Модуль 344 межкадрового прогнозирования может представлять собой или содержать модуль компенсации движения. Декодирующее устройство 30 для видео может, в некоторых примерах, осуществлять декодирующий проход, в общем обратный кодирующему проходу, описываемому применительно к кодирующему устройству 20 для видео, показанному на Фиг. 2.In the example shown in FIG. 3, the decoder 30 includes an entropy decoding module 304, an inverse quantization module 310, an inverse transform processor module 312, a reconstruction module 314 (eg, adder 314), a loop filter 320, a decoded picture buffer (DPB) 330, 330, a mode application module 360 , an inter-frame prediction module 344 and an intra-frame prediction module 354. Inter-frame prediction module 344 may be or include a motion compensation module. Video decoder 30 may, in some examples, perform a decoding pass generally inverse to the encoding pass described with respect to video encoder 20 shown in FIG. 2.
Как поясняется в отношении кодирующего устройства 20, модуль 210 обратного квантования, процессорный модуль 212 обратного преобразования, модуль 214 реконструкции, контурный фильтр 220, буфер 230 декодированного изображения (DPB), модуль 344 межкадрового прогнозирования и модуль 354 внутрикадрового прогнозирования также называются модулями, составляющими «встроенное декодирующее устройство» в кодирующем устройстве 20 для видео. Соответственно, модуль 310 обратного квантования может быть идентичным по функциям модулю обратного квантования 210, процессорный модуль 312 обратного преобразования может быть идентичным по функциям процессорному модулю 212 обратного преобразования, модуль 314 реконструкции может быть идентичным по функциям модулю 214 реконструкции, контурный фильтр 320 может быть идентичным по функциям контурному фильтру 220, и буфер 330 декодированного изображения может быть идентичным по функциям буферу 230 декодированного изображения. Поэтому пояснения, приведенные для соответствующих модулей и функций кодирующего устройства 20 для видео, подходят также к соответствующим модулям и функциям декодирующего устройства 30 для видео.As explained with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processor unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-frame prediction unit 344, and the intra-frame prediction unit 354 are also referred to as the modules constituting " "built-in decoder" in the video encoder 20. Accordingly, the inverse quantization module 310 may be identical in function to the inverse quantization module 210, the inverse transform processor module 312 may be identical in function to the inverse transform processor module 212, the reconstruction module 314 may be identical in function to the reconstruction module 214, and the loop filter 320 may be identical. in function to the loop filter 220, and the decoded image buffer 330 may be identical in function to the decoded image buffer 230. Therefore, the explanations given for the corresponding modules and functions of the video encoder 20 also apply to the corresponding modules and functions of the video decoder 30.
Энтропийное декодированиеEntropy Decoding
Модуль 304 энтропийного декодирования конфигурирован для синтаксического анализа потока битов данных 21 (или вообще кодированных данных 21 изображения) и осуществления, например, энтропийного декодирования кодированных данных 21 изображения с целью получения, например, квантованных коэффициентов 309 и/или декодированных параметров кодирования (не показаны на Фиг. 3), например, какие-либо или все параметры межкадрового прогнозирования (например, индекс опорного изображения и вектора движения), параметр внутрикадрового прогнозирования (например, режим внутрикадрового прогнозирования или индекс), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Модуль 304 энтропийного декодирования может быть конфигурирован для применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как это рассматривается в отношении модуля 270 энтропийного кодирования в кодирующем устройстве 20. Модуль 304 энтропийного декодирования может быть далее конфигурирован для предоставления параметров межкадрового прогнозирования, параметра внутрикадрового прогнозирования и/или других синтаксических элементов модулю 360 применения режима и других параметров другим модулям в декодирующем устройстве 30. Декодирующее устройство 30 для видео может принимать синтаксические элементы на уровне слоев (срезов) видео и/или уровне блоков видео. В дополнение или в качестве альтернативы слоям (срезам) и соответствующим синтаксическим элементам могут быть приняты и/или использованы группы плиток и/или плитки и соответствующие синтаксические элементы.The entropy decoding module 304 is configured to parse the bit stream of data 21 (or encoded image data 21 in general) and perform, for example, entropy decoding of the encoded image data 21 to obtain, for example, quantized coefficients 309 and/or decoded encoding parameters (not shown in 3), for example, any or all of the inter-prediction parameters (eg, reference image and motion vector index), intra-prediction parameter (eg, intra-prediction mode or index), transform parameters, quantization parameters, edge filter parameters, and/or or other syntactic elements. Entropy decoding module 304 may be configured to apply decoding algorithms or schemes corresponding to encoding schemes, as discussed with respect to entropy encoding module 270 in encoder 20. Entropy decoding module 304 may be further configured to provide inter-prediction parameters, intra-prediction parameter, and /or other syntax elements to module 360 for applying the mode and other parameters to other modules in 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 layers (slices) and corresponding syntax elements, groups of tiles and/or tiles and corresponding syntax elements may be adopted and/or used.
Обратное квантованиеInverse quantization
Модуль 310 обратного квантования может быть конфигурирован для приема параметров квантования (QP) (или, в общем, информации относительно обратного квантования) и квантованных коэффициентов из кодированных данных 21 изображения (например, посредством синтаксического анализа и/или декодирования, например, в модуле 304 энтропийного декодирования) и для применения, на основе этих параметров квантования, обратного квантования к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые могут также называться коэффициентами 311 преобразования. Процедура обратного квантования может содержать использование параметра квантования, найденного кодирующим устройством 20 для видео применительно к каждому блоку видео в слое (срезе) видео (либо в плитке или в группе плиток), с целью определения степени квантования, и, аналогично, степени обратного квантования, которое должно быть определено. Inverse quantization module 310 may be configured to receive quantization parameters (QPs) (or, more generally, information regarding inverse quantization) and quantized coefficients from encoded image data 21 (e.g., through parsing and/or decoding, e.g., in entropy module 304 decoding) and to apply, based on these quantization parameters, inverse quantization to the decoded quantized coefficients 309 to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization procedure may comprise using a quantization parameter found by video encoder 20 for each video block in a video layer (or a tile or group of tiles) to determine the degree of quantization, and likewise the degree of inverse quantization, which must be determined.
Обратное преобразованиеReverse conversion
Процессорный модуль 312 обратного преобразования может быть конфигурирован для приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311 с целью получения реконструированных блоков 213 остатка в области отсчетов. Эти реконструированные блоки 213 остатка могут также называться блоками 313 преобразования. Это преобразование может представлять собой обратное преобразование, например, обратное преобразование DCT, обратное преобразование DST, обратное целочисленное преобразование или концептуально аналогичную процедуру обратного преобразования. Процессорный модуль 312 обратного преобразования может быть далее конфигурирован для приема параметров преобразования или соответствующей информации из кодированных данных 21 изображения (например, посредством синтаксического анализа и декодирования, например, в модуле 304 энтропийного декодирования) с целью определения преобразования, которое должно быть применено к деквантованным коэффициентам 311.The inverse transform processor module 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and to apply a transform to the dequantized coefficients 311 to produce reconstructed sample domain residual blocks 213. These reconstructed remainder blocks 213 may also be referred to as transform blocks 313. This transform may be an inverse transform, such as an inverse DCT transform, an inverse DST transform, an inverse integer transform, or a conceptually similar inverse transform procedure. The inverse transform processor module 312 may be further configured to receive transform parameters or corresponding information from the encoded image data 21 (e.g., through parsing and decoding, such as in entropy decoding module 304) to determine the transform to be applied to the dequantized coefficients 311.
РеконструкцияReconstruction
Модуль 314 реконструкции (например, сумматор 314) может быть конфигурирован для суммирования реконструированного блока 313 остатка с блоком 365 прогнозирования с целью получения реконструированного блока 315 в области отсчетов, например, посредством суммирования величин отсчетов реконструированного блока 313 остатка и величин отсчетов блока 365 прогнозирования. The reconstruction module 314 (eg, the adder 314) may be configured to sum the reconstructed residual block 313 with the prediction block 365 to obtain a reconstructed block 315 in the sample domain, for example, by summing the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365.
ФильтрацияFiltration
Модуль 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) конфигурирован для фильтрации реконструированного блока 315 с целью получения фильтрованного блока 321, например, для сглаживания переходов пикселей, или для повышения качества видео иным образом. Модуль 320 контурного фильтра может содержать один или более контурных фильтров, таких как деблокирующий фильтр, нелинейный фильтр с адаптивным смещением (SAO), либо один или более других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры для увеличения резкости, сглаживающие фильтры или коллаборативные фильтры, или какая-либо комбинация таких фильтров. Хотя модуль 320 контурного фильтра показан на Фиг. 3 как внутриконтурный фильтр, в других конфигурациях такой модуль 320 контурного фильтра может быть реализован как постконтурный фильтр.A loop filter module 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 module 320 may include one or more loop filters, such as a deblocking filter, a nonlinear adaptive offset (SAO) filter, or one or more other filters, such as a two-way filter, an adaptive loop filter (ALF), sharpening filters, anti-aliasing filters or collaborative filters, or any combination of such filters. Although loop filter module 320 is shown in FIG. 3 as an in-loop filter, in other configurations such loop filter module 320 may be implemented as a post-loop filter.
Буфер декодированного изображенияDecoded Image Buffer
Декодированные видео блоки 321 изображения затем сохраняют в буфере 330 декодированного изображения, который сохраняет декодированные изображения 331 в качестве опорных изображений для последующей компенсации движения для других изображений и/или передачи на выход соответствующего изображения для дисплея. The decoded video image blocks 321 are then stored in a decoded image buffer 330, which stores the decoded images 331 as reference images for subsequent motion compensation for other images and/or outputting a corresponding image for the display.
Декодирующее устройство 30 конфигурировано для передачи на выход декодированного изображения 311, например, через выход 312, для представления или для просмотра пользователем.The decoder 30 is configured to output the decoded image 311, such as output 312, for presentation or viewing by a user.
ПрогнозированиеForecasting
Модуль 344 межкадрового прогнозирования может быть по функциям идентичным модулю 244 межкадрового прогнозирования (в частности, модулю компенсации движения), и модуль 354 внутрикадрового прогнозирования может быть по функциям идентичным модулю 254 внутрикадрового прогнозирования и принимать решения о разбиении или разделении и осуществлять прогнозирование на основе такого разбиения и/или параметров прогнозирования или соответствующей информации, принятой из кодированных данных 21 изображения (например, в результате синтаксического анализа и/или декодирования, например, посредством модуля 304 энтропийного декодирования). Модуль 360 применения режима может быть конфигурирован для осуществления прогнозирования (внутрикадрового или межкадрового прогнозирования) по блокам на основе реконструированных изображений, блоков или соответствующих отсчетов (фильтрованных или нефильтрованных) с целью получения блока 365 прогнозирования.The inter-frame prediction module 344 may be functionally identical to the inter-frame prediction module 244 (specifically, the motion compensation module), and the intra-frame prediction module 354 may be functionally identical to the intra-frame prediction module 254 and make partitioning or partitioning decisions and make predictions based on such partitioning. and/or prediction parameters or corresponding information received from the encoded image data 21 (eg, as a result of parsing and/or decoding, eg, by entropy decoding module 304). The mode application module 360 may be configured to perform block-by-block prediction (intra- or inter-frame prediction) 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 (List 0 и List 1), с использованием способов построения по умолчанию на основе опорных изображений, сохраняемых в буфере DPB 330. То же самое или аналогичное может быть применено в вариантах, использующих группы плиток (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для слоев (например, слоев видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B типа.When a video layer (slice) is encoded as an intra-coded layer (I), the intra-prediction module 354 from the mode applying module 360 is configured to generate a prediction block 365 for an image block from the current video layer (slice) based on the reported intra-prediction mode and data from previously decoded blocks of the current image. When a video image is encoded as an interframe encoding layer (i.e., type B or P), an interframe prediction unit 344 (e.g., a motion compensation unit) from the mode application unit 360 is configured to generate prediction blocks 365 for the video block from the current layer (slice) of the video based on motion vectors and other syntactic elements received from the entropy decoding module 304. For inter-picture prediction, prediction blocks may be generated based on one of the reference pictures within one of the reference picture lists. The video decoder 30 may construct reference picture lists, List 0 and List 1, using default construction methods based on the reference pictures stored in the DPB 330. The same or similar may be used in embodiments using tile groups (e.g., video tile groups) and/or tiles (e.g., video tiles) in addition to or as an alternative to layers (e.g., video layers), for example, video may be encoded using tile groups and/or tiles I, P or B type.
Модуль 360 применения режима конфигурирован для определения информации прогнозирования для видео блока из текущего слоя видео посредством синтаксического анализа векторов движения или относящейся к ним информации и других синтаксических элементов, и использует эту информацию прогнозирования для генерации блоков прогнозирования для текущего видео блока, декодируемого в настоящий момент. Например, модуль 360 применения режима использует некоторые из принятых синтаксических элементов для определения режима прогнозирования (например, внутрикадрового или межкадрового прогнозирования), применяемого для кодирования видео блоков из слоя видео, типа слоя для межкадрового прогнозирования (например, B-слой, P-слой или GPB-слой), информации о построении для одного или более списков опорных изображений для рассматриваемого слоя, векторов движения для каждого видео блока, кодированного в режиме межкадрового прогнозирования, информации о статусе межкадрового прогнозирования для каждого видео блока, кодированного в режиме межкадрового прогнозирования, из рассматриваемого слоя и другой информации, необходимой для декодирования видео блоков из текущего слоя видео. То же самое или аналогичное может быть применено в вариантах, использующих группы плиток (например, группы плиток видео) и/или плитки (например, плитки видео) в дополнение или в качестве альтернативы для слоев (например, слоев видео), например, видео может быть кодировано с использованием групп плиток и/или плиток I, P или B типа.The mode application module 360 is configured to determine prediction information for a video block from the current video layer by parsing motion vectors or related information and other syntax elements, and uses this prediction information to generate prediction blocks for the current video block currently being decoded. For example, mode applying module 360 uses some of the received syntax elements to determine the prediction mode (eg, intra- or inter-prediction) used to encode video blocks from a video layer, the type of layer for inter-prediction (eg, B-layer, P-layer, or GPB layer), construction information for one or more reference picture lists for the layer under consideration, motion vectors for each inter-prediction encoded video block, inter-prediction status information for each inter-prediction encoded video block from the under consideration layer and other information necessary to decode video blocks from the current video layer. The same or similar may be applied in embodiments using tile groups (e.g., video tile groups) and/or tiles (e.g., video tiles) in addition to or as an alternative to layers (e.g., video layers), e.g., video may be coded using tile groups and/or type I, P or B tiles.
Варианты декодирующего устройства 30 для видео, как показано на Фиг. 3, могут быть конфигурированы для разбиения и/или декодирования изображения с использованием слоев (срезов) (также называемых слоями видео), где изображение может быть разбито на или декодировано с использованием одного или более слоев (срезов) (обычно не накладывающихся один на другой), и при этом каждый слой может содержать один или более блоков (например, единиц CTU).Embodiments of the video decoder 30, as shown in FIG. 3 may be configured to split and/or decode an image using slices (also called video layers), where the image may be sliced into or decoded using one or more slices (usually not overlapping) , and each layer may contain one or more blocks (eg, CTUs).
Варианты декодирующего устройства 30 для видео, как показано на Фиг. 3, могут быть конфигурированы для разбиения и/или декодирования изображения с использованием групп плиток (также называемых группами плиток видео) и/или плиток (также называемых плитками видео), и каждая группа плиток может содержать, например, один или более блоков (например, единиц CTU) или одну или более плиток, где каждая плитка может, например, быть прямоугольной формы и может содержать один или более блоков (например, единиц CTU), например, полных или частичных блоков.Embodiments of the video decoder 30, as shown in FIG. 3 may be configured to partition and/or decode an image using groups of tiles (also called video tile groups) and/or tiles (also called video tiles), and each tile group may contain, for example, one or more blocks (e.g. CTUs) or one or more tiles, where each tile may, for example, be rectangular in shape and may contain one or more blocks (eg, CTUs), such as full or partial blocks.
Для декодирования кодированных данных 21 изображения могут быть использованы и другие варианты декодирующего устройства 30 для видео. Например, это декодирующее устройство 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, this decoding device 30 can generate a video output stream without the use of loop filtering module 320. For example, the non-transform decoder 30 can de-quantize the residual signal directly without using the de-conversion processor 312 for certain blocks or frames. In another embodiment, the video decoder 30 may have an inverse quantization module 310 and an inverse transform processor module 312 combined in one module.
Следует понимать, что в кодирующем устройстве 20 и в декодирующем устройстве 30, результат обработки данных на любом текущем этапе может быть далее обработан и затем передан на следующий этап. Например, после интерполяционной фильтрации, определения вектора движения или контурной фильтрации над результатом такой интерполяционной фильтрации, определения вектора движения или контурной фильтрации может быть выполнена дополнительная операция, такая как усечение или сдвиг.It should be understood that in the encoder 20 and in the decoder 30, the result of data processing at any current stage can be further processed and then transferred to the next stage. For example, after interpolation filtering, motion vector detection, or contour filtering, an additional operation, such as trimming or shifting, may be performed on the result of such interpolation filtering, motion vector detection, or contour filtering.
Следует отметить, что дополнительные операции могут быть применены к найденным векторам движения для текущего блока (включая, но не ограничиваясь, векторы движения контрольных точек для аффинного режима, векторы движения субблоков в аффинном и планарном режимах, в режиме прогнозирования ATMVP, временные векторы движения и т.п.). Например, величина вектора движения ограничена заданным диапазоном в соответствии с представляющими ее битами. Если представляющие биты для вектора движения определены параметром bitDepth, тогда указанный диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где символ “^” обозначает возведение в степень. Например, если параметр bitDepth установлен равным 6, диапазон составляет -32768 ~ 32767; если параметр bitDepth установлен равным 18, диапазон составляет -131072~131071. Например, величина найденного в результате определения вектора движения (например, векторов MV для четырех субблоков размером 4x4 каждый в одном блоке размером 8x8) ограничена таким образом, что максимальная величина разности между целыми частями векторов MV четырех субблоков размером не превышает N пикселей, например, не более 1 пикселя. Здесь предлагаются два способа для ограничения векторов движения в соответствии с параметром bitDepth.It should be noted that additional operations can be applied to the found motion vectors for the current block (including, but not limited to, motion vectors of control points for affine mode, motion vectors of subblocks in affine and planar modes, in ATMVP prediction mode, temporary motion vectors, etc. .P.). For example, the magnitude of a motion vector is limited to a specified range according to the bits representing it. If the representing bits for the motion vector are specified by the bitDepth parameter, then the specified range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where the symbol “^” denotes exponentiation. For example, if bitDepth is set to 6, the range is -32768 ~ 32767; if bitDepth is set to 18, the range is -131072~131071. For example, the magnitude of the resulting motion vector (for example, the MV vectors for four subblocks of size 4x4 each in one block of size 8x8) is limited in such a way that the maximum value of the difference between the integer parts of the MV vectors of four subblocks of size does not exceed N pixels, for example, not more than 1 pixel. Here, two methods are proposed to limit motion vectors according to the bitDepth parameter.
Способ 1: удаление бита MSB (самый старший бит) переполнения посредством следующих операций Method 1: Removing the MSB (most significant bit) of the overflow through the following 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 for the image block or sub-block, mvy represents the vertical component of the motion vector for the image block or sub-block, and ux and uy denote intermediate quantities;
Например, если величина 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, then after applying formulas (1) and (2), the resulting value will be 32767. In a computer system, decimal numbers are stored in two's complement form. The two's complement of -32769 is 1.0111,1111,1111,1111 (17 bits), then the MSB bit is discarded so the resulting two's complement is 0111,1111,1111,1111 (decimal is 32767) which is the same as the result of applying 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).These operations can be applied in the process of summing mvp and mvd, as shown by formulas (5) to (8).
Способ 2: удаление бита MSB переполнения посредством усечения величиныMethod 2: Removing the MSB Overflow Bit 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 block or subblock motion vector, vy represents the vertical component of the block or subblock motion vector; x, y and z correspond to the three input values of the MV vector clipping procedure and the clipping function Clip3 is defined as follows:
Clip3( x, y, z ) = Clip3( x, y, z ) =
На Фиг. 4 представлена упрощенная схема устройства 400 для кодирования видео согласно одному из вариантов настоящего изобретения. Это устройство 400 для кодирования видео подходит для реализации предлагаемых вариантов, как они рассматриваются здесь. В одном из вариантов, это устройство 400 для кодирования видео может представлять собой декодирующее устройство, такое как декодирующее устройство 30 для видео, показанное на Фиг. 1A, или кодирующее устройство, такое как кодирующее устройство 20 для видео, показанное на Фиг. 1A. In FIG. 4 is a simplified diagram of a video encoding apparatus 400 in accordance with one embodiment of the present invention. This video encoding device 400 is suitable for implementing the proposed embodiments as discussed herein. In one embodiment, this video encoding device 400 may be a decoding device, such as the video decoding device 30 shown in FIG. 1A, or an encoder such as the video encoder 20 shown in FIG. 1A.
Это устройство 400 для кодирования видео содержит входящие порты 410 (или входные порты 410) и приемные модули (Rx) 420 для приема данных; процессор, логический модуль или центральный процессор (central processing unit (CPU)) 430 для обработки данных; передающие модули (Tx) 440 и исходящие порты 450 (или выходные порты 450) для передачи данных; и запоминающее устройство 460 для сохранения данных. Это устройство 400 для кодирования видео может также содержать оптоэлектрические (optical-to-electrical (OE)) компоненты и электрооптические (electrical-to-optical (EO)) компоненты, соединенные с входящими портами 410, приемные модули 420, передающие модули 440 и исходящие порты 450 для вывода или ввода оптических или электрических сигналов.This video encoding device 400 includes input ports 410 (or input ports 410) and receiver units (Rx) 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmission modules (Tx) 440 and outgoing ports 450 (or output ports 450) for data transmission; and a storage device 460 for storing data. This video encoding device 400 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components coupled to input ports 410, receive modules 420, transmit modules 440, and output 450 ports for output or input of optical or electrical signals.
Процессор 430 реализован посредством аппаратуры и программного обеспечения. Процессор 430 может быть реализован в виде одного или более кристаллов интегральных схем процессоров CPU, ядер (например, в качестве многоядерного процессора), матриц FPGA, схем ASIC и процессоров DSP. Этот процессор 430 осуществляет связь с входящими портами 410, приемными модулями 420, передающими модулями 440, исходящими портами 450 и запоминающим устройством 460. Процессор 430 содержит кодирующий модуль 470. Этот кодирующий модуль 470 реализует предлагаемые здесь варианты, рассмотренные выше. Например, кодирующий модуль 470 реализует, обрабатывает, готовит и обеспечивает различные операции кодирования. Введение в процессор кодирующего модуля 470, таким образом, создает значительное усовершенствование функциональных возможностей устройства 400 для кодированияThe processor 430 is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, as a multi-core processor), FPGAs, ASICs, and DSPs. This processor 430 communicates with incoming ports 410, receiving modules 420, transmitting modules 440, outgoing ports 450, and storage device 460. Processor 430 includes an encoder module 470. This encoder module 470 implements the embodiments discussed herein. For example, encoding module 470 implements, processes, prepares, and provides various encoding operations. The introduction of encoder module 470 into the processor thus creates a significant improvement in the functionality of encoder 400
видео и по существу осуществляет трансформацию устройства 400 для кодирования видео в другое состояние. В качестве альтернативы, кодирующий модуль 470 реализуется в виде команд, сохраняемых в запоминающем устройстве 460 и выполняемых процессором 430.video and essentially transforms the video encoding device 400 to another state. Alternatively, encoder module 470 is implemented as instructions stored in memory 460 and executed by processor 430.
Запоминающее устройство 460 может содержать один или более дисков, накопителей на магнитной ленте и твердотельные накопители (диски) и может быть использовано в качестве устройства для хранения данных с переполнением, с целью сохранения программ, когда такие программы выбраны для выполнения, и с целью сохранения команд и данных, считываемых в процессе выполнения программ. Запоминающее устройство 460 может быть, например, энергозависимым и/или энергонезависимым и может представлять собой постоянное запоминающее устройство (ПЗУ (read-only memory (ROM))), запоминающее устройство с произвольной выборкой (ЗУПВ (random access memory (RAM))), троичное ассоциативное запоминающее устройство (ternary content-addressable memory (TCAM)) и/или статическое ЗУПВ (static random-access memory (SRAM)).Storage device 460 may include one or more disks, tape drives, and solid state drives (disks) 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 read during program execution. Storage device 460 may be, for example, volatile and/or non-volatile and may be read-only memory (ROM), random access memory (RAM), ternary content-addressable memory (TCAM) and/or static random-access memory (SRAM).
На Фиг. 5 представлена блок-схема устройства 500, которая может быть использована в качестве одного из устройств – устройства-источника 12 или устройства-адресата 14, или обоих этих устройств, показанных на Фиг. 1, согласно одному из примеров вариантов. In FIG. 5 is a block diagram of a device 500 that may be used as one of the source device 12 or the destination device 14, or both, of the devices shown in FIG. 1, according to one example embodiment.
Процессор 502 в устройстве 500 может представлять собой центральный процессор. В качестве альтернативы, процессор 502 может представлять собой устройство какого-либо другого типа, или более устройств, способных манипулировать или обрабатывать информацию, как существующих сегодня, так и разрабатываемых. Хотя, предлагаемые варианты реализации могут быть практически осуществлены с использованием единственного процессора, например, процессора 502, как это показано на схеме, использование нескольких (больше одного) процессоров может позволить добиться выигрыша по скорости и эффективности.The processor 502 in the device 500 may be a central processing unit. Alternatively, processor 502 may be some other type of device or more devices capable of manipulating or processing information, either existing today or being developed. Although the proposed implementations can be practically implemented using a single processor, such as processor 502, as shown in the diagram, the use of multiple (more than one) processors can provide benefits in speed and efficiency.
Запоминающее устройство 504 в устройстве 500 может представлять собой в различных вариантах реализации постоянное запоминающее устройство (ПЗУ (ROM)) или запоминающее устройство с произвольной выборкой (ЗУПВ (RAM)). В качестве запоминающего устройства 504 может быть использовано устройство любого подходящего типа для хранения информации. Запоминающее устройство 504 может содержать код и данные 506, доступ к которым процессор 502 осуществляет с использованием шины 512. Запоминающее устройство 504 может далее содержать операционную систему 508 и прикладные программы 510, среди этих прикладных программ 510 имеется по меньшей мере одна программа, позволяющая процессору 502 осуществлять способы, описываемые здесь. Например, совокупность прикладных программ 510 может содержать приложения с 1 по N, среди которых далее имеется приложение для кодирования видео, осуществляющее рассматриваемые здесь способы. Storage device 504 in device 500 may be a read-only memory (ROM) or random access memory (RAM) in various embodiments. The storage device 504 may be any suitable type of information storage device. The storage device 504 may contain code and data 506, which the processor 502 accesses using a bus 512. The storage device 504 may further include an operating system 508 and application programs 510, among which application programs 510 there is at least one program that allows the processor 502 carry out the methods described here. For example, the collection of application programs 510 may include applications 1 through N, which further include a video encoding application that implements the methods discussed herein.
Устройство 500 может также содержать одно или более выходных устройств, таких как дисплей 518. Дисплей 518 может представлять собой, в одном из примеров, сенсорный дисплей, комбинирующий дисплей с чувствительным к прикосновению (сенсорным) элементом, оперируемым для восприятия входных прикосновений. Дисплей 518 может быть связан с процессором 502 через шину 512. The 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 combining a display with a touch-sensitive element operable to sense touch inputs. The display 518 may be coupled to the processor 502 via a bus 512.
Хотя шина 512 устройства 500 показана здесь в виде единственной шины, эта шина 512 может быть составлена из нескольких шин. Далее, вторичное запоминающее устройство 514 может быть напрямую соединено с другими компонентами устройства 500, либо оно может быть доступно через сеть связи и может содержать один интегральный модуль, такой как карта памяти, или более модулей, таких как несколько карт памяти. Устройство 500 может, таким образом, быть реализовано в самом широком спектре конфигураций.Although bus 512 of device 500 is shown here as a single bus, bus 512 may be composed of multiple buses. Further, secondary storage device 514 may be directly coupled to other components of device 500, or it may be accessible through a communications network and may comprise a single integrated module, such as a memory card, or more modules, such as multiple memory cards. The device 500 can thus be implemented in a wide range of configurations.
Исходные положения для внутрикадрового прогнозированияAssumptions for intra-frame prediction
Для захвата произвольных направлений края, присутствующих в естественном видео, число направленных режимов внутрикадрового прогнозирования в документе VTM6 увеличено от 33, как это используется в стандарте кодирования HEVC, до 65. Планарный режим и DC-режим остаются теми же самыми. В частности, величины для всех режимов внутрикадрового прогнозирования определены в Табл. 8-1:To capture arbitrary edge directions present in natural video, the number of directional intra-prediction modes in the VTM6 document is increased from 33, as used in the HEVC encoding standard, to 65. Planar mode and DC mode remain the same. In particular, the values for all intra-frame prediction modes are defined in Table. 8-1:
Таблица 8-1 – Спецификации режимов внутрикадрового прогнозирования и ассоциированные именаTable 8-1 – Intra-prediction mode specifications and associated names
Внутрикадровое прогнозирование для планарного режимаIntra-frame prediction for planar mode
После завершения процедуры фильтрации опорных отсчетов, как это определено в документе «Универсальное видео кодирование» (Проект 6)» (Versatile Video Coding (Draft 6)) Объединенной группы исследований в области видео (Joint Video Experts Team (JVET)), созданной подразделениями ITU-T SG 16 WP 3 и ISO/IEC JTC 1/SC 29/WG 11 (доступно по адресу http://phenix.it-sudparis.eu/jvet/, документ no: JVET-O2001-vE) спецификаций кодирования (VVC Specification), опорные отсчеты становятся готовы к использованию. Имея эти опорные отсчеты, можно генерировать прогнозируемый внутрикадровым способом отсчет (который может также называться спрогнозированным внутрикадровым способом отсчетом). Если режимом внутрикадрового прогнозирования для текущего блока является планарный режим или DC-режим, определена соответствующая процедура внутрикадрового прогнозирования. Если режим внутрикадрового прогнозирования является угловым режимом (т.е. ни планарным режимом, ни DC-режимом), тогда активизируется прогнозирование в угловом режиме. After completing the reference sample filtering procedure as defined in the ITU Joint Video Experts Team (JVET) Versatile Video Coding (Draft 6) -T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 (available at http://phenix.it-sudparis.eu/jvet/, document no: JVET-O2001-vE) coding specifications (VVC Specification), the reference readings become ready for use. With these reference samples, an intra-predicted sample (which may also be referred to as an intra-predicted sample) can be generated. If the intra-prediction mode for the current block is planar mode or DC-mode, a corresponding intra-prediction procedure is defined. If the intra-frame prediction mode is an angular mode (ie, neither planar mode nor DC mode), then angular mode prediction is enabled.
Планарный режим является часто используемым режимом внутрикадрового прогнозирования. На Фиг. 6 показана идея для внутрикадрового прогнозирования, когда ширина и высота блока прогнозирования установлены равными N. Спрогнозированный отсчет составлен из горизонтальной составляющей и вертикальной составляющей. Горизонтальная составляющая представляет собой линейно взвешенную комбинацию соответствующих левого и правого опорных отсчетов (см. часть «a» на Фиг. 6). Вертикальная составляющая представляет собой линейно взвешенную комбинацию соответствующих верхнего и нижнего опорных отсчетов (часть «b» на Фиг. 6). Отметим, что правый столбец в «a» заполнен верхним правым опорным отсчетом p[N][-1], и нижняя строка, показанная в части «b», заполнена нижним левым опорным отсчетом p[-1][N]. Отсчет p[0][0] расположен в верхнем левом углу текущего (прогнозируемого) блока. После генерации этих горизонтальной и вертикальной составляющих, спрогнозированный выходной отсчет представляет собой взвешенную комбинацию горизонтальной и вертикальной составляющих (часть «c» на Фиг. 6). Planar mode is a commonly used intra-prediction mode. In FIG. 6 shows an idea for intra-frame prediction when the width and height of the prediction block are set to N. The predicted sample is composed of a horizontal component and a vertical component. The horizontal component is a linearly weighted combination of the corresponding left and right reference samples (see part "a" of Fig. 6). The vertical component is a linearly weighted combination of the respective upper and lower reference samples (part "b" of Fig. 6). Note that the right column in "a" is filled with the top-right reference sample p[N][-1], and the bottom row shown in part "b" is filled with the bottom-left reference sample p[-1][N]. The p[0][0] sample is located in the upper left corner of the current (predicted) block. After generating these horizontal and vertical components, the predicted output sample is a weighted combination of the horizontal and vertical components (part “c” of Fig. 6).
Более конкретно, прогнозирование в планарном режиме определено следующим образом: More specifically, planar mode prediction is defined as follows:
Спецификация режима INTRA_PLANAR внутрикадрового прогнозированияINTRA_PLANAR Intra Prediction Mode Specification
Входными данными для этой процедуры являются:The inputs to this procedure are:
- переменная nTbW, специфицирующая ширину блока преобразования,- variable nTbW, specifying the width of the conversion block,
- переменная nTbH, специфицирующая высоту блока преобразования,- variable nTbH, specifying the height of the transformation block,
- соседние отсчеты p[ x ][ y ], при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1.- neighboring samples p[ x ][ y ], with x = −1, y = −1..nTbH and x = 0..nTbW, y = −1.
Выходными данными этой процедуры являются спрогнозированными отсчетами predSamples[ x ][ y ], при x = 0..nTbW − 1, y = 0..nTbH − 1.The output of this procedure is the predicted samples predSamples[ x ][ y ], with x = 0..nTbW − 1, y = 0..nTbH − 1.
Переменные nW и nH определены следующим образом:The variables nW and nH are defined as follows:
nW = Max( nTbW, 2 ) (8-135)nW = Max( nTbW, 2 ) (8-135)
nH = Max( nTbH, 2 ) (8-136)nH = Max( nTbH, 2 ) (8-136)
Величины спрогнозированных отсчетов predSamples[ x ][ y ], при x = 0..nTbW − 1 и y = 0..nTbH − 1, определены следующим образом:The values of the predicted samples predSamples[ x ][ y ], at x = 0..nTbW − 1 and y = 0..nTbH − 1, are defined as follows:
predV[ x ][ y ] = ( ( nH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137)predV[ x ][ y ] = ( ( nH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8- 137)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nH ) (8-138)predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nH ) (8- 138)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW * nH ) >> (Log2 ( nW ) + Log2 ( nH ) + 1 ) (8-139)predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW * nH ) >> (Log2 ( nW ) + Log2 ( nH ) + 1 ) (8-139)
В этом примере, для отсчета, который нужно спрогнозировать в точке с координатами (x, y):In this example, for the sample that needs to be predicted at a point with coordinates (x, y):
- p[-1][y] представляет соответствующий опорный отсчет из столбца слева- p[-1][y] represents the corresponding reference sample from the column on the left
- p[nTbW][-1] представляет соответствующий опорный отсчет из столбца справа. Отметим, что опорные отсчеты из столбца справа являются одинаковыми и заполнены с использованием отсчета p[nTbW][-1]. Этот отсчет p[nTbW][-1] представляет собой отсчет, расположенный в точке пересечения столбца опорных отсчетов справа и строки опорных отсчетов сверху. - p[nTbW][-1] represents the corresponding reference sample from the column on the right. Note that the reference samples from the column on the right are the same and are filled using the p[nTbW][-1] sample. This sample p[nTbW][-1] is the sample located at the intersection of the column of reference samples on the right and the row of reference samples on the top.
- p[x][-1] представляет соответствующий опорный отсчет из строки сверху. - p[x][-1] represents the corresponding reference sample from the row above.
- p[-1][nTbH] представляет соответствующий опорный отсчет из строки снизу. Отметим, что опорные отсчеты из строки снизу являются одинаковыми и заполнены с использованием отсчета p[-1][nTbH]. Этот отсчет p[-1][nTbH] представляет собой отсчет, расположенный в точке пересечения строки опорных отсчетов снизу и столбца опорных отсчетов слева.- p[-1][nTbH] represents the corresponding reference sample from the row below. Note that the reference samples from the row below are the same and are filled using the p[-1][nTbH] sample. This sample p[-1][nTbH] is the sample located at the intersection of the row of reference samples on the bottom and the column of reference samples on the left.
На Фиг. 7 показаны позиции этих опорных отсчетов, и выходной опорный отсчет predSamples[ x ][ y ] соответствует отсчетам в текущем блоке прогнозирования, который окружен штриховым прямоугольником. Нижний штриховой прямоугольник используется для иллюстрации отсчетов p(0,0)-p(15,0), расположенных в текущем блоке прогнозирования. Опорные отсчеты, показанные сплошной линией, соседствуют с текущим блоком прогнозирования. В примере, показанном на Фиг. 7, отсчеты с p(-1)(-1) по p(-1,1), и с p(0,-1) по p(15)(-1), являются опорными отсчетами. Переменные nTbW и nTbH представляют ширину и высоту блока прогнозирования, соответственно. В этом конкретном примере, текущий блок (блок прогнозирования или блок преобразования) имеет высоту nTbH в один пиксель. Блок прогнозирования представляет собой прямоугольный блок отсчетов размером MxN, полученный в результате межкадрового прогнозирования или внутрикадрового прогнозирования, где M и N являются ненулевыми положительными целыми числами. Аналогично, блок преобразования представляет собой прямоугольный блок отсчетов размером KxL, полученный в результате преобразования, где K и L являются ненулевыми положительными целыми числами. Обычно после генерации блока прогнозирования генерируют блок преобразования, имеющий тот же самый размер и расположенный в том же месте, посредством преобразования (или обратного преобразования при декодировании). Однако размер и расположение блока прогнозирования могут не всегда совпадать с размером и расположением ассоциированного с ним блока преобразования. In FIG. 7 shows the positions of these reference samples, and the output reference sample predSamples[ x ][ y ] corresponds to the samples in the current prediction block, which is surrounded by a dashed rectangle. The lower dashed rectangle is used to illustrate the samples p(0,0)-p(15,0) located in the current prediction block. The reference samples, shown as a solid line, are adjacent to the current prediction block. In the example shown in FIG. 7, samples from p(-1)(-1) to p(-1,1), and from p(0,-1) to p(15)(-1), are reference samples. The variables nTbW and nTbH represent the width and height of the prediction block, respectively. In this particular example, the current block (prediction block or transform block) has a height nTbH of one pixel. A prediction block is a rectangular block of samples of size MxN resulting from inter-prediction or intra-frame prediction, where M and N are non-zero positive integers. Similarly, a transform block is a rectangular block of samples of size KxL resulting from a transform where K and L are non-zero positive integers. Typically, after generating a prediction block, a transform block having the same size and located at the same location is generated by transforming (or inversely transforming when decoding). However, the size and location of the prediction block may not always match the size and location of its associated transform block.
Предполагается, что внутрикадровое прогнозирование в планарном режиме является излишне усложненным, особенно для блоков с высотой равной 1. It is assumed that intra-frame prediction in planar mode is unnecessarily complicated, especially for blocks with height equal to 1.
В текущих спецификациях стандарта кодирования VVC в планарном режиме для каждого спрогнозированного отсчета требуется выполнить пять операций перемножения и три операции сдвига. В эти пять операций перемножения входят две операции для генерации вертикальной составляющей, две операции для генерации горизонтальной составляющей и одна операция для вычисления выходного отсчета. Эти три операции сдвига распределены по одной для генерации вертикальной и горизонтальной составляющих и одна для генерации выходного отсчета (predSamples)Current planar VVC coding standard specifications require five multiplications and three shifts for each predicted sample. These five multiplication operations include two operations to generate the vertical component, two operations to generate the horizontal component, and one operation to calculate the output sample. These three shift operations are distributed, one to generate the vertical and horizontal components and one to generate the output sample (predSamples)
Текущие спецификации кодирования VVC также обеспечивают генерирование вертикальной и горизонтальной составляющих с использованием билинейного фильтра путем обеспечения, что минимальная высота (nH) и минимальная ширина (nW) в уравнении 8-139 равны двум. Current VVC coding specifications also provide for the generation of vertical and horizontal components using a bilinear filter by ensuring that the minimum height (nH) and minimum width (nW) in Equation 8-139 are equal to two.
В некоторых вариантах настоящего изобретения предлагается упростить прогнозирование в планарном режиме для блока с высотой равной 1. А именно, для этого типа блока для генерации вертикальной составляющей с использованием строки опорных отсчетов снизу, заполненной с использованием отсчета p[-1][nTbH]. Конкретнее, генерирование вертикального отсчета вычисляют в соответствии со следующим уравнением: Some embodiments of the present invention propose to simplify planar mode prediction for a block with a height of 1. Specifically, for this type of block to generate the vertical component using a row of reference samples from below, populated using the sample p[-1][nTbH]. More specifically, the vertical reference generation is calculated according to the following equation:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137’)predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137’)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) (8-138’)predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) (8-138’)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ) (8-139’)predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ) (8-139’)
При таком подходе, при прогнозировании в планарном режиме требуются только три операции перемножения и две операции сдвига для блоков с высотой, равной единице (nTbH=1). With this approach, when predicting in planar mode, only three multiplication operations and two shift operations are required for blocks with a height equal to one (nTbH=1).
В одном из вариантов, прогнозирование в планарном режиме модифицируют следующим образом: In one embodiment, planar mode prediction is modified as follows:
Спецификация режима INTRA_PLANAR внутрикадрового прогнозирования INTRA_PLANAR Intra Prediction Mode Specification
Входными данными для этой процедуры являются:The inputs to this procedure are:
- переменная nTbW, специфицирующая ширину блока преобразования,- variable nTbW, specifying the width of the conversion block,
- переменная nTbH, специфицирующая высоту блока преобразования,- variable nTbH, specifying the height of the transformation block,
- соседние отсчеты p[ x ][ y ], при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1.- neighboring samples p[ x ][ y ], with x = −1, y = −1..nTbH and x = 0..nTbW, y = −1.
Выходными данными этой процедуры являются спрогнозированными отсчетами predSamples[ x ][ y ], при x = 0..nTbW − 1, y = 0..nTbH − 1.The output of this procedure is the predicted samples predSamples[ x ][ y ], with x = 0..nTbW − 1, y = 0..nTbH − 1.
Переменные nW и nH определены как применение операций усечения к величинам nTbW и nTbH, соответственно:The variables nW and nH are defined to apply truncation operations to the values nTbW and nTbH, respectively:
nW = Max( nTbW, 2 ) (8135)nW = Max( nTbW, 2 ) (8135)
nH = Max( nTbH, 2 ) (8136)nH = Max( nTbH, 2 ) (8136)
Величины прогнозируемых отсчетов predSamples[ x ][ y ], при x = 0..nTbW − 1 и y = 0..nTbH − 1, определяют следующим образом:The values of the predicted samples predSamples[ x ][ y ], at x = 0..nTbW − 1 and y = 0..nTbH − 1, are determined as follows:
Если nTbH равно 1: If nTbH is 1:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137’)predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137’)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) (8-138’)predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) (8-138’)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ) (8-139’)predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ) (8-139’)
в противном случае (nTbH не равно 1):otherwise (nTbH is not equal to 1):
predV[ x ][ y ] = ( ( nH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8-137)predV[ x ][ y ] = ( ( nH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ) (8- 137)
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nH ) (8-138)predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nH ) (8- 138)
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW * nH ) >> (Log2 ( nW ) + Log2 ( nH ) + 1 ) (8-139)predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW * nH ) >> (Log2 ( nW ) + Log2 ( nH ) + 1 ) (8-139)
В другом варианте, прогнозирование в планарном режиме модифицируют следующим образом: In another embodiment, planar mode prediction is modified as follows:
Входными данными для этой процедуры являются:The inputs to this procedure are:
- переменная nTbW, специфицирующая ширину блока преобразования,- variable nTbW, specifying the width of the conversion block,
- переменная nTbH, специфицирующая высоту блока преобразования,- variable nTbH, specifying the height of the transformation block,
- соседние отсчеты p[ x ][ y ], при x = −1, y = −1..nTbH и x = 0..nTbW, y = −1.- neighboring samples p[ x ][ y ], with x = −1, y = −1..nTbH and x = 0..nTbW, y = −1.
Выходными данными этой процедуры являются спрогнозированными отсчетами predSamples[ x ][ y ], при x = 0..nTbW − 1, y = 0..nTbH − 1.The output of this procedure is the predicted samples predSamples[ x ][ y ], with x = 0..nTbW − 1, y = 0..nTbH − 1.
Величины прогнозируемых отсчетов predSamples[ x ][ y ], при x = 0..nTbW − 1 и y = 0..nTbH − 1, определяют следующим образом:The values of the predicted samples predSamples[ x ][ y ], at x = 0..nTbW − 1 and y = 0..nTbH − 1, are determined as follows:
predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) (8-137’’)predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) (8- 137'')
predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) (8-138’’)predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) (8- 138'')
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ) (8-139’’)predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ) (8-139'' )
Фактически, равенства в ветвях «если-иначе» (if-else) в первом варианте могут быть объединены в равенства, как показано в этом варианте. По сравнению с равенствами с 8-137 по 8-139 сложность остается той же самой, однако операции усечения для величин nTbW и nTbH исключены.In fact, the equalities in the if-else branches of the first option can be combined into equalities, as shown in this option. Compared to Equations 8-137 through 8-139, the complexity remains the same, but the truncation operations for the quantities nTbW and nTbH are eliminated.
В приведенных выше вариантах, переменная nTbW может представлять ширину блока прогнозирования или блока преобразования. Как отмечено выше, в соответствии с некоторыми вариантами, размер блока преобразования и размер блока прогнозирования могут быть одинаковыми. Однако описание такими примерами не исчерпывается. In the above embodiments, the variable nTbW may represent the width of a prediction block or a transform block. As noted above, in some embodiments, the transformation block size and the prediction block size may be the same. However, the description is not limited to such examples.
В приведенных выше вариантах, переменная nTbH может представлять высоту блока прогнозирования или блока преобразования.In the above embodiments, the variable nTbH may represent the height of a prediction block or a transform block.
В частности, предложены следующие способы и варианты, реализуемые декодирующим или кодирующим устройством. Декодирующее устройство может представлять собой декодирующее устройство 30 для видео, показанное на Фиг. 1A, или декодирующее устройство 30, показанное на Фиг. 3. Кодирующее устройство может представлять собой кодирующее устройство 20 для видео, показанное на Фиг. 1A, или кодирующее устройство 20, показанное на Фиг. 2.In particular, the following methods and options are proposed, implemented by a decoding or encoding device. The decoding device may be a video decoding device 30 shown in FIG. 1A, or the decoding device 30 shown in FIG. 3. The encoder may be the video encoder 20 shown in FIG. 1A, or the encoder 20 shown in FIG. 2.
Согласно варианту 800 (см. Фиг. 8), устройство в блоке 801 определяет, что режим внутрикадрового прогнозирования для текущего блока является планарным режимом. Этот текущий блок может представлять собой блок прогнозирования или блок преобразованияAccording to embodiment 800 (see FIG. 8), the device at block 801 determines that the intra-prediction mode for the current block is a planar mode. This current block can be a prediction block or a transformation block
Устройство может также определить, равна ли высота или ширина этого блока 1. Строка опорных отсчетов снизу для этого блока может быть заполнена с использованием отсчета p[-1][ nTbH], и/или столбец опорных отсчетов справа может быть заполнен с использованием отсчета p[ nTbW ][ −1 ]. The device can also determine whether the height or width of this block is 1. The row of reference samples at the bottom for this block can be filled using count p[-1][nTbH], and/or the column of reference counts on the right can be filled using count p [nTbW][−1].
В блоке 802, устройство вычисляет величину вертикальной составляющей прогнозируемого внутрикадровым способом отсчета текущего блока. At block 802, the device calculates the magnitude of the vertical component of the intra-frame predicted count of the current block.
Эту величину вертикальной составляющей predV[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, где строку опорных отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ x ][ -1 ] представляет соседние отсчеты при x = 0..nTbW.This vertical component value predV[ x ][ y ] is generated using a linear filter using samples from the top and bottom reference sample rows, where the bottom reference sample row is filled using the sample located at coordinates (-1, nTbH) relative to the top left reference of the current block. For example, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), where predV[ x ][ y ] represents the magnitude of the vertical component at x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the block height, nTbW represents the block width, and p[ x ][ -1 ] represents neighboring samples at x = 0..nTbW.
В частности, когда высота блока равна 1, predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ). In particular, when the block height is 1, predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ).
Когда ширина блока равна 1, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ).When the block width is 1, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ).
Согласно приведенному выше описанию, ширина блока равна nTbW, и высота блока равна nTbH. Прежде вычисления величины predV[ x ][ y ] не применяются ни операция усечения nW = Max( nTbW, 2 ), ни операция усечения nH = Max( nTbH, 2 ). According to the above description, the block width is nTbW, and the block height is nTbH. Before calculating predV[ x ][ y ], neither the truncation operation nW = Max( nTbW, 2 ) nor the truncation operation nH = Max( nTbH, 2 ) is applied.
В блоке 803, устройство вычисляет величину горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета текущего блока. At block 803, the device calculates the magnitude of the horizontal component of the intra-frame predicted count of the current block.
Эту величину горизонтальной составляющей predH[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа заполняют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока. This horizontal component value predH[ x ][ y ] is generated using a linear filter using samples from the left and right reference sample columns, where the right sample column is filled using the sample located at coordinates (nTbW, -1) relative to the top left countdown of the current block.
Например, величина predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , где predH[ x ][ y ] представляет величину горизонтальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ -1 ][ y ] представляет соседние отсчеты при y = −1..nTbH.For example, the value predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , where predH[ x ][ y ] represents the magnitude of the horizontal component at x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the block height, nTbW represents the block width, and p[ -1 ][ y ] represents neighboring samples at y = −1..nTbH.
В частности, когда высота блока равна 1, predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ). In particular, when the block height is 1, predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) .
Когда ширина блока равна 1, predH[ x ][ y ] = ( ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ).When the block width is 1, predH[ x ][ y ] = ( ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ).
Аналогично, прежде вычисления величины predH[ x ][ y ] не применяются ни операция усечения nW = Max( nTbW, 2 ), ни операция усечения nH = Max( nTbH, 2 ).Likewise, neither the truncation operation nW = Max( nTbW, 2 ) nor the truncation operation nH = Max( nTbH, 2 ) is applied before calculating predH[ x ][ y ] .
Нет никаких ограничений относительно последовательности выполнения блоков 802 и 803. Другими словами, функции блока 802 можно осуществлять прежде, в то же самое время или после блока 803.There are no restrictions regarding the order in which blocks 802 and 803 are executed. In other words, the functions of block 802 may be performed before, at the same time, or after block 803.
В блоке 804 устройство генерирует прогнозируемый внутрикадровым способом отсчет на основе величины вертикальной составляющей и величины горизонтальной составляющей. At block 804, the device generates an intra-frame predicted sample based on the magnitude of the vertical component and the magnitude of the horizontal component.
Например, прогнозируемый внутрикадровым способом отсчет вычисляют как:For example, the intra-frame predicted count is calculated as:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).
В приведенных выше вариантах показана подробная информация относительно внутрикадрового прогнозирования в планарном режиме.The above embodiments show detailed information regarding intra-prediction in planar mode.
Фиг. 9 иллюстрирует варианты устройства 900. Это устройство 900 может представлять собой декодирующее устройство 30 для видео, показанное на Фиг. 1A, или декодирующее устройство 30, показанное на Фиг. 3, либо оно может представлять собой кодирующее устройство 20 для видео, показанное на Фиг. 1A, или кодирующее устройство 20, показанное на Фиг. 2. Устройство 900 может быть использовано для реализации варианта 800 или других вариантов, рассмотренных выше.Fig. 9 illustrates embodiments of a device 900. This device 900 may be the video decoding device 30 shown in FIG. 1A, or the decoding device 30 shown in FIG. 3, or it may be the video encoder 20 shown in FIG. 1A, or the encoder 20 shown in FIG. 2. Apparatus 900 may be used to implement embodiment 800 or other embodiments discussed above.
Устройство 900 для внутрикадрового прогнозирования в планарном режиме содержит решающий модуль 901, вычислительный модуль 902 и прогнозирующий модуль 903. Решающий модуль 901 конфигурирован для определения, что режим внутрикадрового прогнозирования для рассматриваемого блока является планарным. Вычислительный модуль 902 конфигурирован для вычисления величины вертикальной составляющей прогнозируемого внутрикадровым способом отсчета, входящего в рассматриваемый блок изображения. Эту величину вертикальной составляющей predV[ x ][ y ] генерируют с применением линейного фильтра, использующего отсчеты из строк опорных отсчетов сверху и снизу, строку отсчетов снизу заполняют с использованием отсчета, расположенного в точке с координатами (-1, nTbH) относительно верхнего левого отсчета текущего блока. Например, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), где predV[ x ][ y ] представляет величину вертикальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ x ][ -1 ] представляет соседние отсчеты при x = 0..nTbW.The planar mode intra prediction apparatus 900 includes a decision module 901, a computation module 902, and a predictor module 903. The decision module 901 is configured to determine that the intra prediction mode for the block in question is planar. Computing module 902 is configured to calculate the magnitude of the vertical component of an intra-frame predicted sample included in the image block under consideration. This vertical component value predV[ x ][ y ] is generated using a linear filter using samples from the reference sample rows above and below, the sample row below is filled using the sample located at coordinates (-1, nTbH) relative to the top left sample current block. For example, predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ), where predV[ x ][ y ] represents the magnitude of the vertical component at x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the block height, nTbW represents the block width, and p[ x ][ -1 ] represents neighboring samples at x = 0..nTbW.
Вычислительный модуль далее конфигурирован для вычисления величины горизонтальной составляющей прогнозируемого внутрикадровым способом отсчета, где эту величину горизонтальной составляющей predH[ x ][ y ] генерируют посредством линейного фильтра с использованием отсчетов из столбцов опорных отсчетов слева и справа, где столбец отсчетов справа заполняют с использованием отсчета, расположенного в точке с координатами (nTbW, -1) относительно верхнего левого отсчета текущего блока. The computing module is further configured to calculate the horizontal component value of the intra-frame predicted sample, where this horizontal component value predH[ x ][ y ] is generated by a linear filter using samples from the left and right reference sample columns, where the right sample column is populated using the sample located at a point with coordinates (nTbW, -1) relative to the upper left reference of the current block.
Например, величина predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , где predH[ x ][ y ] представляет величину горизонтальной составляющей при x = 0..nTbW − 1 и y = 0..nTbH – 1, nTbH представляет высоту блока, nTbW представляет ширину блока, и p[ -1 ][ y ] представляет соседние отсчеты при y = −1..nTbH.For example, the value predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) , where predH[ x ][ y ] represents the magnitude of the horizontal component at x = 0..nTbW − 1 and y = 0..nTbH – 1, nTbH represents the block height, nTbW represents the block width, and p[ -1 ][ y ] represents neighboring samples at y = −1..nTbH.
Когда высота блока равна 1, вычислительный модуль (902) конфигурирован для вычисления величины вертикальной составляющей и величины горизонтальной составляющей в соответствии с:When the block height is 1, the calculation module (902) is configured to calculate the magnitude of the vertical component and the magnitude of the horizontal component in accordance with:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) , predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) ,
predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ). predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ).
Когда ширина блока равна 1, вычислительный модуль (902) конфигурирован для вычисления величины вертикальной составляющей и величины горизонтальной составляющей в соответствии с:When the block width is 1, the calculation module (902) is configured to calculate the magnitude of the vertical component and the magnitude of the horizontal component in accordance with:
predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] )predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] )
predH[ x ][ y ] = ( ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ).predH[ x ][ y ] = ( ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ).
Прогнозирующий модуль 903 конфигурирован для генерации прогнозируемого внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей. Например, прогнозирующий модуль (903) конфигурирован для генерации прогнозируемого внутрикадровым способом отсчета в соответствии с: The predictor module 903 is configured to generate an intra-frame predicted sample based on the magnitude of the vertical component and the magnitude of the horizontal component. For example, the predictive module (903) is configured to generate an intra-frame predicted sample in accordance with:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).
Устройство может далее содержать модуль заполнения (904). Этот модуль заполнения (904) конфигурирован для заполнения строки опорных отсчетов снизу от рассматриваемого блока или блока преобразования с использованием отсчета p[-1][ nTbH], в частности, когда высота рассматриваемого блока или блока преобразования равна 1, или заполнения столбца опорных отсчетов справа от рассматриваемого блока с использованием отсчета p[ nTbW ][ −1 ], в частности, когда ширина рассматриваемого блока равна 1. The device may further include a filling module (904). This filler (904) is configured to fill a row of reference samples from the bottom of the block or transform block in question using the sample p[-1][ nTbH], particularly when the height of the block or transform block in question is 1, or fill a column of reference samples to the right from the block in question using the reference p[ nTbW ][ −1 ], in particular when the width of the block in question is 1.
Как обсуждается выше, в обычных случаях, относящихся к внутрикадровому прогнозированию в планарном режиме, определение отсчетов блока прогнозирования оказывается слишком усложненным для некоторых блоков. Прежде вычисления величины вертикальной составляющей и величины горизонтальной составляющей должны быть получены две переменные nW и nH путем применения операций усечения к переменным nTbW и nTbH. Некоторые варианты настоящего изобретения не осуществляют операцию усечения nW = Max( nTbW, 2 ) и операцию усечения nH = Max( nTbH, 2 ) прежде вычисления вертикальной и горизонтальной составляющих. Поэтому прогнозирование с применением планарного режима упрощается. Соответственно, эффективность кодирования или декодирования увеличивается. As discussed above, in typical cases related to intra-frame prediction in planar mode, determining prediction block samples is too complex for some blocks. Before calculating the magnitude of the vertical component and the magnitude of the horizontal component, two variables nW and nH must be obtained by applying truncation operations to the variables nTbW and nTbH. Some embodiments of the present invention do not perform the truncation operation nW = Max( nTbW, 2 ) and the truncation operation nH = Max( nTbH, 2 ) before calculating the vertical and horizontal components. Therefore, forecasting using the planar mode is simplified. Accordingly, the efficiency of encoding or decoding is increased.
Более того, здесь предложены следующие варианты.Moreover, the following options are offered here.
Вариант 1. Согласно одному из аспектов настоящее изобретение относится к Embodiment 1: In one aspect, the present invention relates to
способу декодирования или кодирования. Этот способ осуществляется декодирующим или кодирующим устройством. Способ содержит: вычисление величины вертикальной составляющей спрогнозированного внутрикадровым способом отсчета с использованием строки опорных отсчетов снизу от блока прогнозирования без использования столбца опорных отсчетов слева от блока прогнозирования, когда высота блока прогнозирования равна 1; вычисление величины горизонтальной составляющей спрогнозированного внутрикадровым способом отсчета; и генерирование спрогнозированного внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.decoding or encoding method. This method is carried out by a decoding or encoding device. The method comprises: calculating the value of the vertical component of a sample predicted by an intra-frame method using a row of reference samples below the prediction block without using a column of reference samples to the left of the prediction block when the height of the prediction block is 1; calculating the value of the horizontal component of the reading predicted by the intra-frame method; and generating an intra-frame predicted count based on the magnitude of the vertical component and the magnitude of the horizontal component.
Вариант 2. Способ согласно варианту 1, отличающийся тем, что величину вертикальной составляющей predV[ x ][ y ] вычисляют с использованием:Option 2. Method according to option 1, characterized in that the value of the vertical component predV[ x ][ y ] is calculated using:
predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ),predV[ x ][ y ] = (( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nW ),
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования, и nW представляет усеченную величину после применения усечения к ширине блока прогнозирования.where x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH represents the height of the prediction block or transform block, nTbW represents the width of the prediction block or transform block, and nW represents the truncated value after applying truncation to the width of the prediction block.
Вариант 3. Способ согласно варианту 1 или 2, отличающийся тем, что величину горизонтальной составляющей predH[ x ][ y ] вычисляют с использованием:Option 3. Method according to option 1 or 2, characterized in that the value of the horizontal component predH[ x ][ y ] is calculated using:
predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] );predH[ x ][ y ] = ( ( nW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] );
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования, и nW представляет усеченную величину, полученную после применения усечения к ширине блока прогнозирования .where x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH represents the height of the prediction block or transform block, nTbW represents the width of the prediction block or transform block, and nW represents the truncated value obtained after applying truncation to the block width forecasting
Вариант 4. Способ согласно какому-либо одному из вариантов 1 – 3, отличающийся тем, что the спрогнозированный внутрикадровым способом отсчет predSamples[ x ][ y ] генерируют с использованием:Option 4. Method according to any one of options 1 - 3, characterized in that the predSamples[ x ][ y ] predicted intra-frame sample is generated using:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ).predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nW ) >> (Log2 ( nW ) +1 ).
Вариант 5. Способ согласно какому-либо одному из вариантов 1 – 4, отличающийся тем, что строку опорных отсчетов снизу заполняют с использованием отсчета p[-1][ nTbH].Option 5. Method according to any one of options 1 - 4, characterized in that the line of reference readings from below is filled using the reading p[-1][ nTbH].
Вариант 6. Согласно другому аспекту настоящее изобретение относится к способу декодирования или кодирования. Этот способ осуществляется декодирующим или кодирующим устройством. Способ содержит: получение высоты и ширины текущего блока прогнозирования без применения операции усечения; вычисление величины вертикальной составляющей спрогнозированного внутрикадровым способом отсчета на основе высоты и ширины блока прогнозирования; вычисление величины горизонтальной составляющей спрогнозированного внутрикадровым способом отсчета на основе высоты и ширины блока прогнозирования; и генерирование спрогнозированного внутрикадровым способом отсчета на основе величины вертикальной составляющей и величины горизонтальной составляющей.Embodiment 6 According to another aspect, the present invention relates to a decoding or encoding method. This method is carried out by a decoding or encoding device. The method comprises: obtaining the height and width of the current prediction block without applying a truncation operation; calculating the value of the vertical component of the reading predicted by the intra-frame method based on the height and width of the prediction block; calculating the value of the horizontal component of the reading predicted by the intra-frame method based on the height and width of the prediction block; and generating an intra-frame predicted count based on the magnitude of the vertical component and the magnitude of the horizontal component.
Вариант 7. Способ согласно варианту 6, отличающийся тем, что величину вертикальной составляющей predV[ x ][ y ] вычисляют с использованием:Option 7. Method according to option 6, characterized in that the value of the vertical component predV[ x ][ y ] is calculated using:
predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) ,predV[ x ][ y ] = ( ( nTbH − 1 − y ) * p[ x ][ −1 ] + ( y + 1 ) * p[ −1 ][ nTbH ] ) << Log2 ( nTbW ) ,
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования.where x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH represents the height of the prediction block or transformation block, nTbW represents the width of the prediction block or transformation block.
Вариант 8. Способ согласно варианту 6 или 7, отличающийся тем, что величину горизонтальной составляющей predH[ x ][ y ] вычисляют с использованием:Option 8. Method according to option 6 or 7, characterized in that the value of the horizontal component predH[ x ][ y ] is calculated using:
predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) ;predH[ x ][ y ] = ( ( nTbW − 1 − x ) * p[ −1 ][ y ] + ( x + 1 ) * p[ nTbW ][ −1 ] ) << Log2 ( nTbH ) ;
где x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH представляет высоту блока прогнозирования или блока преобразования, nTbW представляет ширину блока прогнозирования или блока преобразования.where x = 0..nTbW – 1, y = 0..nTbH – 1, nTbH represents the height of the prediction block or transformation block, nTbW represents the width of the prediction block or transformation block.
Вариант 9. Способ согласно какому-либо одному из вариантов 6 – 8, отличающийся тем, что спрогнозированный внутрикадровым способом отсчет predSamples[ x ][ y ] генерируют с использованием:Option 9. Method according to any one of options 6 - 8, characterized in that the predSamples[ x ][ y ] sample predicted intra-frame is generated using:
predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).predSamples[ x ][ y ] = ( predV[ x ][ y ] + predH[ x ][ y ] + nTbW * nTbH ) >> (Log2 ( nTbW ) + Log2 ( nTbH ) + 1 ).
Вариант 10. Способ согласно какому-либо одному из вариантов 5 – 9, отличающийся тем, что строку опорных отсчетов снизу от блока прогнозирования заполняют с использованием p[-1][ nTbH].Option 10. Method according to any one of options 5 - 9, characterized in that the line of reference samples below the prediction block is filled using p[-1][ nTbH].
Вариант 11. Способ согласно какому-либо одному из вариантов 5 – 10, отличающийся тем, что ширину блока прогнозирования получают без применения операции усечения nW = Max( nTbW, 2 ).Option 11. Method according to any one of options 5 - 10, characterized in that the width of the prediction block is obtained without using the truncation operation nW = Max( nTbW, 2 ).
Вариант 12. Способ согласно какому-либо одному из вариантов 5 – 11, отличающийся тем, что высоту блока прогнозирования получают без применения операции усечения nH = Max( nTbH, 2 ). Option 12. Method according to any one of options 5 - 11, characterized in that the height of the prediction block is obtained without using the truncation operation nH = Max( nTbH, 2 ).
В дальнейшем приведено пояснение приложения способа кодирования, равно как и способа декодирования, как показано в приведенных выше вариантах, и системы с использованием этих способов.In the following, an explanation will be given of the application of the encoding method as well as the decoding method as shown in the above embodiments, and the system using these methods.
На Фиг. 10 представлена блок-схема, показывающая систему 3100 доставки контента для реализации сервиса распределения контента. Эта система 3100 доставки контента содержит устройство 3102 захвата изображения, терминал 3106, и, в качестве опции, содержит дисплей 3126. Устройство 3102 захвата изображения осуществляет связь с терминалом 3106 по линии 3104 связи. Эта линия связи может содержать канал 13 связи. описываемый выше. Линия 3104 связи может представлять собой, без ограничений, линию WIFI, Этернет, кабель, беспроводную линию (поколения 3G/4G/5G), шину USB или какую-либо комбинацию этих линий или подобных им.In FIG. 10 is a block diagram showing a content delivery system 3100 for implementing a content distribution service. This content delivery system 3100 includes an image capture device 3102, a terminal 3106, and optionally includes a display 3126. The image capture device 3102 communicates with the terminal 3106 via a communication line 3104. This communication line may include a communication channel 13. described above. Communication link 3104 may be, without limitation, a WIFI link, Ethernet, cable, wireless link (3G/4G/5G generation), USB bus, or any combination of these links or the like.
Устройство 3102 захвата изображения генерирует данные и может кодировать данные с применением способа кодирования, как показано в приведенных выше вариантах. В качестве альтернативы, устройство 3102 захвата изображения может распределять данные потоковому серверу (не показан на чертежах), и сервер кодирует данные и передает эти данные терминалу 3106. Устройство 3102 для захвата изображения может представлять собой, не ограничиваясь этим, видеокамеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференции, персональный цифровой помощник (PDA), установленное на автомобиле устройство или комбинацию таких устройств и им подобных. Например, устройство 3102 захвата изображения может представлять собой устройство-источник 12, как описано выше. Когда эти данные содержат видео, кодирующее устройство 20 для видео, входящее в устройство 3102 для захвата изображения, может фактически осуществлять кодирующую обработку этого видео. Когда эти данные содержат аудио (т.е. речь), кодирующее устройство для аудио, входящее в устройство 3102 захвата изображения, может фактически осуществлять кодирующую обработку аудио. Для некоторых практических сценариев, устройство 3102 для захвата изображения распределяет кодированные данные видео и аудио путем мультиплексирования их одни с другими. Для других практических сценариев, например, в системе видеоконференций, кодированные данные аудио и кодированные данные видео не мультиплексируют. Устройство 3102 распределяет кодированные данные аудио и кодированные данные видео терминалу 3106 по отдельности. The image capturing device 3102 generates data and can encode the data using an encoding method as shown in the above embodiments. Alternatively, the image capture device 3102 may distribute data to a streaming server (not shown in the drawings), and the server encodes the data and transmits the data to the terminal 3106. The image capture device 3102 may be, but is not limited to, a video camera, a smartphone, or a tablet, a computer or laptop computer, a video conferencing system, a personal digital assistant (PDA), a vehicle-mounted device, or a combination of such devices and the like. For example, image capture device 3102 may be source device 12, as described above. When this data includes video, the video encoder 20 included in the image capture device 3102 may actually perform encoding processing on the video. When this data contains audio (ie, speech), an audio encoder included in the image capture device 3102 may actually perform encoding processing on the audio. For some practical scenarios, the image capture device 3102 distributes encoded video and audio data by multiplexing them with each other. For other practical scenarios, such as in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. Device 3102 distributes encoded audio data and encoded video data to terminal 3106 separately.
В системе 3100 доставки контента терминал 3106 принимает и воспроизводит кодированные данные. Терминал 3106 может представлять собой устройство, способное принимать и восстанавливать данные, такое как смартфон или планшет 3108, компьютер или портативный компьютер 3110, сетевой видеорегистратор (network video recorder (NVR))/ цифровой видеорегистратор (digital video recorder (DVR)) 3112, телевизор (TV) 3114, приставку (set top box (STB)) 3116, систему 3118 видеоконференций, систему 3120 видеонаблюдения, персональный цифровой помощник (personal digital assistant (PDA)) 3122, устанавливаемое на автомобиле устройство 3124, либо комбинацию каких-либо из этих устройств или других подобных устройств, способных декодировать упомянутые выше кодированные данные. Например, терминал 3106 может содержать устройство-адресат 14, как описано выше. Когда кодированные данные содержат видео, декодирующее устройство 30 для видео, входящее в терминал, имеет приоритет для декодирования видео. Когда кодированные данные содержат аудио, декодирующее устройство для аудио, входящее в терминал, имеет приоритет для осуществления декодирующей обработки аудио.In content delivery system 3100, terminal 3106 receives and reproduces encoded data. The terminal 3106 may be a device capable of receiving and recovering data, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR)/digital video recorder (DVR) 3112, a television. or a combination of any of these devices or other similar devices capable of decoding the encoded data mentioned above. For example, terminal 3106 may include destination device 14, as described above. When the encoded data contains video, the video decoding device 30 included in the terminal takes priority for decoding the video. When the encoded data contains audio, an audio decoder included in the terminal has priority to carry out audio decoding processing.
Если терминал имеет собственный дисплей, например, смартфон или планшет 3108, компьютер или портативный компьютер 3110, сетевой видеорегистратор (NVR)/ цифровой видеорегистратор (DVR) 3112, телевизор (TV) 3114, персональный цифровой помощник (PDA) 3122 или устанавливаемое на автомобиле устройство 3124, этот терминал может передавать декодированные данные своему дисплею. Если терминал не имеет своего дисплея, например, приставка STB 3116, система 3118 для видеоконференций или система 3120 видеонаблюдения, с этим терминалом соединяют внешний дисплей 3126 для приема и демонстрации декодированных данных.If the terminal has its own display, such as a 3108 smartphone or tablet, 3110 computer or laptop, 3112 Network Video Recorder (NVR)/Digital Video Recorder (DVR), 3114 Television (TV), 3122 Personal Digital Assistant (PDA), or vehicle-mounted device 3124, this terminal can transmit decoded data to its display. If the terminal does not have its own display, such as the STB 3116, video conferencing system 3118, or video surveillance system 3120, an external display 3126 is connected to this terminal to receive and display the decoded data.
Когда каждое устройство в этой системе осуществляет кодирование или декодирование, может быть использовано кодирующее устройство для изображений или декодирующее устройство для изображений, как показано в приведенных выше вариантах.When each device in this system performs encoding or decoding, an image encoder or an image decoder may be used as shown in the above embodiments.
На Фиг. 11 представлена схема, показывающая структуру примера терминала 3106. После того, как терминал 3106 примет поток данных от устройства 3102 для захвата изображений, модуль 3202 обработки протокола анализирует протокол передачи потока. Этот протокол может представлять собой, без ограничений, потоковый протокол реального времени (Real Time Streaming Protocol (RTSP)), гипертекстовый транспортный протокол (Hyper Text Transfer Protocol (HTTP)), потоковый протокол HTTP реального времени (HTTP Live streaming protocol (HLS)), протокол динамических настраиваемых передач по HTTP (MPEG-DASH), транспортный протокол реального времени (Real-time Transport protocol (RTP)), протокол обмена сообщениями в реальном времени (Real Time Messaging Protocol (RTMP)) или какую-либо комбинацию перечисленных протоколов и подобных им.In FIG. 11 is a diagram showing the structure of an example terminal 3106. After the terminal 3106 receives a data stream from the image capturing device 3102, the protocol processing unit 3202 analyzes the transmission protocol of the stream. The protocol may be, without limitation, Real Time Streaming Protocol (RTSP), Hyper Text Transfer Protocol (HTTP), HTTP Live streaming protocol (HLS) , MPEG-DASH, Real-time Transport protocol (RTP), Real Time Messaging Protocol (RTMP), or some combination of these protocols and others like them.
После того, как модуль 3202 обработки протокола произведет обработку потока данных, происходит генерация потокового файла. Этот файл передают в демультиплексорный модуль 3204. Этот демультиплексорный модуль 3204 может After the protocol processing module 3202 has processed the data stream, a stream file is generated. This file is sent to the demultiplexer module 3204. This demultiplexer module 3204 can
разделить мультиплексированные данные на кодированные данные аудио и кодированные данные видео. Как описано выше, для некоторых практических сценариев, например, в системе видеоконференций, кодированные данные аудио и кодированные данные видео не мультиплексируют. В такой ситуации кодированные данные передают декодирующему устройству 3206 для видео и декодирующему устройству 3208 для аудио без прохождения их через демультиплексорный модуль 3204. divide the multiplexed data into encoded audio data and encoded video data. As described above, for some practical scenarios, such as in a video conferencing system, the encoded audio data and encoded video data are not multiplexed. In such a situation, the encoded data is transferred to the video decoder 3206 and the audio decoder 3208 without passing through the demultiplexer module 3204.
Посредством операции демультиплексирования генерируют элементарный поток (elementary stream (ES)) видео, поток ES аудио и, в качестве опции, субтитры. Декодирующее устройство 3206 для видео, которое представляет собой декодирующее устройство 30 для видео, как поясняется в приведенных выше вариантах, декодирует поток ES видео посредством способа декодирования, показанного в приведенных выше вариантах, для генерации видео кадра и передает эти данные синхронному модулю 3212. Декодирующее устройство 3208 для аудио декодирует поток ES аудио для генерации аудио кадра и передает эти данные синхронному модулю 3212. В качестве альтернативы, видео кадр может быть сохранен в буфере (не показан на Фиг. 11) прежде передачи этого кадра синхронному модулю 3212. Аналогично, аудио кадр может быть сохранен в буфере (не показан на Фиг. 11) прежде передачи этого кадра синхронному модулю 3212.The demultiplexing operation generates an elementary stream (ES) of video, an ES audio stream, and optionally subtitles. The video decoder 3206, which is the video decoder 30 as explained in the above embodiments, decodes the video stream ES by the decoding method shown in the above embodiments to generate a video frame and transmits this data to the synchronous module 3212. 3208 for audio decodes the audio stream ES to generate an audio frame and transmits this data to the synchronous module 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. 11) before transmitting the frame to the synchronous module 3212. Likewise, the audio frame may be stored in a buffer (not shown in FIG. 11) before transmitting this frame to the synchronous module 3212.
Синхронный модуль 3212 синхронизирует видео кадр и аудио кадр и передает видео/аудио в адрес видео/аудио дисплея 3214. Например, синхронный модуль 3212 синхронизирует представление видео и аудио информации. Информация может быть кодирована в синтаксисе с использованием меток времени, относящихся к представлению кодированных аудио данных и визуальных данных, и меток времени, относящихся к доставке самого потока данных. The synchronization module 3212 synchronizes the video frame and the audio frame and transmits the video/audio to the video/audio display address 3214. For example, the synchronization module 3212 synchronizes the presentation of video and audio information. Information may be encoded in syntax using timestamps related to the presentation of the encoded audio data and visual data, and timestamps related to the delivery of the data stream itself.
Если в потоке присутствуют субтитры, декодирующее устройство 3210 субтитров декодирует эти субтитры и синхронизирует их с видео кадром и с аудио кадром, после чего передает видео/аудио/субтитры дисплею 3216 видео/аудио/субтитров. If subtitles are present in the stream, the subtitle decoder 3210 decodes the subtitles and synchronizes them with the video frame and the audio frame, and then transmits the video/audio/subtitles to the video/audio/subtitle display 3216.
Настоящее изобретение не исчерпывается описанной выше системой, так что либо кодирующее устройство для изображений, либо декодирующее устройство для изображений согласно приведенным выше вариантам может быть встроено в другую систему, например, в автомобильную систему. The present invention is not limited to the above-described system, so that either the image encoding device or the image decoding device according to the above embodiments can be built into another system, such as an automobile system.
Математические операторы Mathematical operators
Математические операторы, используемые в настоящей заявке, аналогичны операторам, применяемым в языке программирования «C». Однако результаты операций целочисленного деления и арифметического сдвига определены более точно, а также определены дополнительные операции, такие как возведение в степени и деление действительных чисел. Соглашения о нумерации и подсчете обычно начинаются с нуля, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.The mathematical operators used in this application are similar to those used in the “C” programming language. However, the results of the operations of integer division and arithmetic shift are more precisely defined, and additional operations such as exponentiation and division of real numbers are also defined. Numbering and counting conventions usually start from zero, for example, "first" is equivalent to 0, "second" is equivalent to 1, etc.
Арифметические операторыArithmetic operators
Арифметические операторы ниже определены следующим образом:The arithmetic operators below are defined as follows:
Логические операторыLogical operators
Логические операторы ниже определены следующим образом:The logical operators below are defined as follows:
x && y булевый логический оператор «И» ("and") над величинами x и yx && y Boolean logical operator "AND" over the values x and y
x | | y булевый логический оператор «ИЛИ» ("or") над величинами x и yx | | y Boolean logical operator "OR" ("or") over the values x and y
! булевый логический оператор «НЕ» ("not")! Boolean logical operator "NOT"
x ? y : z Если x является «ИСТИННЫМ» ( TRUE) или не равно 0, оператор принимает значение y; в противном случае оператор принимает значение z.x? y : z If x is TRUE or not 0, the operator takes the value of y; otherwise the operator takes the value z.
Реляционные операторыRelational operators
Логические операторы ниже определены следующим образом:The logical operators below are defined as follows:
> Больше чем>More than
>= Не меньше>= No less
< Меньше чем< Less than
<= Не больше<= No more
= = Равно= = Equal
!= Не равно!= Not equal
Когда реляционный оператор применяется к синтаксическому элементу или переменной, которой было присвоено значение "na" (не применимо (not applicable)), это значение "na" рассматривается как четко определенное отдельное значение для синтаксического элемента или переменной. Это значение "na" считается неравным никакой другой величине.When a relational operator is applied to a syntactic element or variable that has been assigned the value "na" (not applicable), that "na" value is treated as a well-defined, separate value for the syntactic element or variable. This value "na" is considered unequal to any other value.
Поразрядные операторыBitwise operators
Поразрядные операторы ниже определены следующим образом:The bitwise operators below are defined as follows:
& Поразрядное «И» ("and"). При работе с целочисленными аргументами оперирует над представлением целого числа в дополнительном до двойки коде. При работе с двоичным аргументом, содержащим меньшее число битов, чем другой аргумент, более короткий аргумент расширяют путем добавления равных нулю более старших битов.& Bitwise “AND” (“and”). When working with integer arguments, operates on the two's complement representation of an integer. When dealing with a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding zeros to the more significant bits.
| Поразрядное «ИЛИ» ("or"). При работе с целочисленными аргументами оперирует над представлением целого числа в дополнительном до двойки коде. При работе с двоичным аргументом, содержащим меньшее число битов, чем другой аргумент, более короткий аргумент расширяют путем добавления равных нулю более старших битов.| Bitwise "OR" ("or"). When working with integer arguments, operates on the two's complement representation of an integer. When dealing with a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding zeros to the more significant bits.
^ Поразрядное «исключающее ИЛИ» ("exclusive or"). При работе с целочисленными аргументами оперирует над представлением целого числа в дополнительном до двойки коде. При работе с двоичным аргументом, содержащим меньшее число битов, чем другой аргумент, более короткий аргумент расширяют путем добавления равных нулю более старших битов.^ Bitwise “exclusive OR” (“exclusive or”). When working with integer arguments, operates on the two's complement representation of an integer. When dealing with a binary argument that contains fewer bits than another argument, the shorter argument is expanded by adding zeros to the more significant bits.
x >> y Арифметический сдвиг вправо представления целого числа x в дополнительном до двойки коде на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, смещенные в позиции самых старших битов (most significant bit (MSBs)) в результате сдвига вправо, имеют значения, равные значениям битов MSB числа x до выполнения операции сдвига.x >> y Arithmetic right shifts the two's complement representation of the integer 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 (MSBs) position by a right shift have values equal to the values of the MSBs of x before the shift operation was performed.
x << y Арифметический сдвиг влево представления целого числа x в дополнительном до двойки коде на y двоичных разрядов. Эта функция определена только для неотрицательных целых значений y. Биты, смещенные в позиции самых младших битов (least significant bit (LSB)) в результате сдвига влево, имеют значения, равные 0.x << y Arithmetic left shifts the two's complement representation of the integer x by y binary digits. This function is defined only for non-negative integer values of y. Bits shifted to the least significant bit (LSB) position by left shifting have values equal to 0.
Операторы присвоенияAssignment Operators
Арифметические операторы ниже определены следующим образом:The arithmetic operators below are defined as follows:
= Оператор присвоения= Assignment operator
+ + Увеличение, т.е. x+ + эквивалентно x = x + 1; при использовании в индексе массива оценивается величиной переменной прежде операции увеличения.+ + Increase, i.e. x+ + is equivalent to x = x + 1; when used in an array index, it is evaluated by the value of the variable before the increment operation.
− − Уменьшение, т.е. x− − эквивалентно x = x − 1; при использовании в индексе массива оценивается величиной переменной прежде операции уменьшения.− − Decrease, i.e. x− − is equivalent to x = x − 1; when used in an array index, it is evaluated by the value of the variable before the decrement operation.
+= Увеличение на указанную величину, т.е. x += 3 эквивалентно x = x + 3, и += Increase by the specified amount, i.e. x += 3 is equivalent to x = x + 3, and
x += (−3) эквивалентно x = x + (−3).x += (−3) is equivalent to 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) эквивалентно x = x − (−3).x −= (−3) is equivalent to x = x − (−3).
Обозначение диапазонаRange designation
Следующая нотация используется для специфицирования диапазона величин:The following notation is used to specify a range of values:
x = y..z x принимает целочисленные значения от y до z, включительно, причем x, y и z являются целыми числами и z больше чем y.x = y..z x 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 here:
Abs( x ) = Abs( x ) =
Asin( x ) – тригонометрическая функция обратного синуса, оперирующая над аргументом x, находящимся в диапазоне от −1.0 до 1.0, включительно, а выходное значение функции лежит в диапазоне от −π÷2 до π÷2, включительно, в единицах радиан Asin( x ) is a trigonometric inverse sine function operating on an argument x ranging from −1.0 to 1.0, inclusive, and the output value of the function lies in the range −π÷2 to π÷2, inclusive, in units of radians
Atan( x ) - тригонометрическая функция обратного тангенса, оперирующая над аргументом x, находящимся в диапазоне от −π÷2 до π÷2, включительно, в единицах радианAtan( x ) is a trigonometric inverse tangent function operating on an argument x ranging from −π÷2 to π÷2, inclusive, in units of radians
Atan2( y, x ) = Atan2( y, x ) =
Ceil( x ) наименьшее целое число не меньше x.Ceil( x ) is the smallest integer not less than 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 the argument x in units of radians.
Floor( x ) наибольшее целое число не больше x.Floor( x ) is the largest integer not greater than x.
GetCurrMsb( a, b, c, d ) = GetCurrMsb( a, b, c, d ) =
Ln( x ) – натуральный логарифм x (логарифм по основанию «e», где «e» – постоянная основания натуральных логарифмов, равная 2.718 281 828...).Ln( x ) – natural logarithm of x (logarithm to base “e”, where “e” is the base constant of natural logarithms, equal to 2.718 281 828...).
Log2( x ) логарифм x по основанию 2.Log2( x ) logarithm of x to base 2.
Log10( x ) логарифм x по основанию 10 (десятичный логарифм).Log10( x ) is the base 10 logarithm of x (decimal logarithm).
Min( x, y ) = Min( x, y ) =
Max( x, y ) = Max( x, y ) =
Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )Round( x ) = Sign( x ) * Floor( Abs( x ) + 0.5 )
Sign( x ) = Sign( x ) =
Sin( x ) – тригонометрическая функция синуса, оперирующая над аргументом x в единицах радианSin( x ) – trigonometric sine function operating on the argument x in units of radians
Sqrt( x ) = Sqrt( x ) =
Swap( x, y ) = ( y, x )Swap( x, y ) = ( y, x )
Tan( x ) – тригонометрическая функция тангенса, оперирующая над аргументом x в единицах радианTan( x ) – trigonometric tangent function operating on the argument x in units of radians
Порядок приоритетности операцийOrder of priority of operations
Когда порядок выполнения операций (приоритетность) в выражении не обозначен в явном виде с использованием скобок, применяются следующие правила:When the order of operations (precedence) in an expression is not explicitly indicated using parentheses, the following rules apply:
– Операции с более высоким приоритетом выполняются прежде любой операции с более низким приоритетом.– Higher priority operations are executed before any lower priority operation.
– Операции с одинаковой приоритетности выполняются последовательно слева направо.– Operations with the same priority are executed sequentially from left to right.
Таблица ниже специфицирует приоритетность операций от наивысшей к наинизшей; более высокая позиция в таблица обозначает более высокую приоритетность.The table below specifies the priority of operations from highest to lowest; a higher position in the table indicates higher priority.
Для тех операторов, которые используются также в языке программирования «C»,For those operators that are also used in the "C" programming language,
порядок приоритетности, применяемый в настоящей спецификации, является таким же, какой используется в языке программирования «C».The order of precedence used in this specification is the same as that used in the C programming language.
Таблица: Приоритетность операций от наивысшей (в верхней части таблицы) до наинизшей (в нижней части таблицы)Table: Operation priority from highest (at the top of the table) to lowest (at the bottom of the table)
Текстовое описание логических операцийText description of logical operations
В тексте формулирование логических операций приведено, как если бы оно было описано математически в следующей форме:In the text, the formulation of logical operations is given as if it were described mathematically in the following form:
if( условие 0 )
операция или утверждение 0
else if( условие 1 )
операция или утверждение 1
...
else /* информативная ремарка об оставшемся условии */
операция или утверждение nif( condition 0 )
operation or statement 0
else if( condition 1 )
operation or statement 1
...
else /* informative note about the remaining condition */
operation or statement n
может быть описано следующим образом:can be described as follows:
... как описано далее / ... применяется следующее:... as described below / ... the following applies:
– Если имеет место условие 0, выполняется операция или утверждение 0– If condition 0 occurs, operation or statement 0 is performed
– Иначе, если имеет место условие 1, выполняется операция или утверждение 1– Otherwise, if condition 1 is true, operation or statement 1 is performed
– ...-...
– Иначе (информативная ремарка об оставшемся условии), выполняется операция или утверждение n– Otherwise (informative note about the remaining condition), operation or statement n is performed
Каждое утверждение в тексте типа «если… иначе, если… иначе, …» вводится словами «…как описано далее» или «…применяется следующее», за которыми сразу же следует «Если…». Последним условием в списке «Если…Иначе, если…Иначе» всегда является «Иначе…». Перемежающиеся утверждения «Если … Иначе, если … Иначе…» могут быть идентифицированы путем согласования «… как описано далее» или «…применяется следующее» с конечным «Иначе…» ".Each "if...else, if...else,..." statement in the text is introduced with the words "...as described below" or "...the following applies," immediately followed by "If...". The last condition in the “If...Else, if...Else” list is always “Else...”. Interleaved "If...Else, if...Else..." statements can be identified by matching "...as described below" or "...the following applies" with a final "Else...".
В тексте формулирование логических операций приведено, как если бы оно было описано математически в следующей форме:In the text, the formulation of logical operations is given as if it were described mathematically in the following form:
if( условие 0a && условие 0b )
операция или утверждение 0
else if( условие 1a | | условие 1b )
операция или утверждение 1
...
else
операция или утверждение nif( condition 0a && condition 0b )
operation or statement 0
else if( condition 1a | | condition 1b )
operation or statement 1
...
else
operation or statement n
может быть описано следующим образом:can be described as follows:
... как описано далее / ... применяется следующее:... as described below / ... the following applies:
– Если все последующие условия являются истинными (true), операция или утверждение 0:– If all subsequent conditions are true, the operation or statement is 0:
– условие 0a– condition 0a
– условие 0b– condition 0b
– Иначе, если одно или более из следующих условий являются истинными (true), операция или утверждение 1:– Else, if one or more of the following conditions are true, operation or statement 1:
– условие 1a– condition 1a
– условие 1b– condition 1b
– ...-...
– Иначе, операция или утверждение n– Otherwise, operation or statement n
В тексте формулирование логических операций приведено, как если бы оно было описано математически в следующей форме:In the text, the formulation of logical operations is given as if it were described mathematically in the following form:
if( условие 0 )
операция или утверждение 0
if( условие 1 )
операция или утверждение 1if( condition 0 )
operation or statement 0
if( condition 1 )
operation or statement 1
может быть описано следующим образом:can be described as follows:
Когда условие 0, операция или утверждение 0When condition is 0, operation or statement is 0
Когда условие 1, операция или утверждение 1When condition is 1, operation or statement is 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 described primarily in terms of video encoding, it should be noted that embodiments of encoding system 10, encoder 20, and decoder 30 (and thus system 10) and other embodiments described herein may also be configured to process or coding of still images, i.e. processing or encoding an individual image independently of any preceding or subsequent images, as is done in video encoding. In general, only the inter-picture prediction modules 244 (encoder) and 344 (decoder) may not be available when image encoding processing is limited to a single image 17. All other functionality (also referred to as tools or technologies) of encoder 20 for video and video decoder 30 may equally be used for still image processing, e.g., residual 204/304, transform 206, quantize 208, inverse quantize 210/310, (inverse) transform 212/312, split 262/362 , intra-frame prediction 254/354, and/or edge filtering 220, 320, as well as entropy encoding 270 and entropy decoding 304.
Варианты, например, кодирующее устройство 20 и декодирующее устройство 30, и функции, описываемые здесь, например, со ссылками на кодирующее устройство 20 и декодирующее устройство 30, могут быть реализованы в аппаратуре, загружаемом программном обеспечении, встроенном программном обеспечении или в какой-либо комбинации перечисленных компонентов. В случае реализации в загружаемом программном обеспечении эти функции могут быть сохранены на читаемом компьютером носителе информации или переданы через средства связи в виде одной или более команд или кода и выполнены процессорным модулем на аппаратной основе. Читаемые компьютером носители могут представлять собой читаемые компьютером носители для хранения информации, которые соответствуют материальному носителю, такому как носители для хранения данных, или средствам связи, включая средства, способствующие передаче компьютерной программы из одного места в другое. Например, в соответствии с протоколом связи. Таким образом, читаемый компьютером носитель обычно может соответствовать (1) материальному читаемому компьютером носителю для хранения информации, являющемуся энергонезависимым постоянным носителем, или (2) средству связи, такому как сигнал или волна несущей. Носитель для хранения данных может представлять собой любой доступный носитель, к которому могут получить доступ один или более компьютеров, либо один или более процессоров для вызова команд, кода и/или структур данных для реализации технологий, описываемых в настоящем изобретении. Компьютерный программный продукт может содержать читаемый компьютером носитель.Options, for example, encoder 20 and decoder 30, and functions described herein, for example, with reference to encoder 20 and decoder 30, may be implemented in hardware, downloadable software, firmware, or some combination the listed components. When implemented in downloadable software, these functions may be stored on a computer-readable storage medium or transmitted via communications in the form of one or more instructions or code and executed by a hardware-based processor module. Computer-readable media may be computer-readable media for storing information, which corresponds to a tangible medium, such as storage media, or communication media, including media that facilitates the transfer of a computer program from one location to another. For example, according to the communication protocol. Thus, a computer-readable medium may generally correspond to (1) a tangible computer-readable storage medium that is a non-volatile, non-transitory readable medium, or (2) a communication medium such as a signal or carrier wave. A storage medium may be any available medium that can be accessed by one or more computers or one or more processors to invoke instructions, code and/or data structures to implement the technologies described in the present invention. The computer program product may comprise computer-readable media.
В качестве примера, и не ограничиваясь этим, читаемый компьютером носитель для хранения информации может содержать ЗУПВ (RAM), ПЗУ (ROM), ЭСППЗУ (EEPROM), CD-ROM или другое хранилище данных на оптических дисках, на магнитных дисках или другое магнитное устройство для хранения данных, устройство флэш-памяти или какой-либо другой носитель, который может быть использован для сохранения нужного программного кода в виде команд или структур данных, доступ к которым может получить компьютер. Кроме того, любое соединение правильно называть читаемым компьютером носителем. Например, если команды передают от вебсайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволонного кабеля, витой пары, цифровой абонентской линии (digital subscriber line (DSL)) или беспроводных технологий, таких как инфракрасное излучение, радиоволны и волны СВЧ-диапазона, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, линия DSL или беспроводные технологии, такие как инфракрасное излучение, радиоволны и волны СВЧ-диапазона, входят в определение носителя. Однако следует понимать, что в понятие читаемого компьютером носителя для хранения данных и носителя для хранения данных не входят соединения, волны несущих, сигналы или другие переходные (временные) средства, а напротив, сюда относятся энергонезависимые постоянные материальные носители для хранения информации. Под термином «диск» (disk или disc), как он используется здесь, понимают компакт-диск (compact disc (CD)), лазерный диск, оптический диск, цифровой универсальный диск (digital versatile disc (DVD)), гибкий (флоппи) диск или диск Блю-рей (Blu-ray), при этом disk обычно воспроизводит данные магнитным способом, а disc воспроизводит данные оптически с применением лазера. Комбинации перечисленных устройств также следует включать в объем понятия «читаемый компьютером носитель».By way of example, and not limitation, a computer-readable storage medium may comprise a RAM, ROM, EEPROM, CD-ROM, or other optical disk, magnetic disk, or other magnetic storage device. a data storage device, flash memory device, or some other medium that can be used to store desired program code in the form of instructions or data structures that can be accessed by a computer. Additionally, any connection is properly referred to as computer-readable media. For example, if commands are sent 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 , then coaxial cable, fiber optic cable, twisted pair cable, DSL line or wireless technologies such as infrared radiation, radio waves and microwave waves are included in the definition of media. However, it should be understood that computer-readable storage media and data storage media do not include connections, carrier waves, signals or other transient means, but rather non-volatile, non-volatile, tangible storage media. The term "disk" as used herein includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk. disc or Blu-ray disc (Blu-ray), while disk usually reproduces data magnetically, and disc reproduces data optically using a laser. Combinations of these devices should also be included within the scope of the term “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 structures or any other structure suitable for implementing the technologies described herein. Additionally, in some aspects, the functionality described herein may be implemented by dedicated hardware and/or software modules configured for encoding and decoding, or embedded in a combination codec. Moreover, these technologies may be fully implemented in one or more circuits or logic elements.
Технологии, предлагаемые настоящим изобретением могут быть реализованы в широком спектре устройств или оборудования, включая радиотелефон, интегральную схему (integrated circuit (IC)) или комплект таких схем IC (например, чипсет). Различные компоненты, модули или узлы рассматриваются в настоящем описании с целью подчеркнуть функциональные аспекты устройств, конфигурированных для осуществления различных способов, но не обязательно требуют реализации в виде разных аппаратных модулей. Напротив, как описано выше, различные модули могут быть объединены в аппаратуре кодека или реализованы в виде набора взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, в сочетании с подходящим загружаемым и/или встроенным программным обеспечением.The technologies proposed by the present invention can be implemented in a wide range of devices or equipment, including a radiotelephone, an integrated circuit (IC) or a set of such IC circuits (eg, a chipset). Various components, modules, or assemblies are discussed herein to highlight the functional aspects of devices configured to implement different methods, but do not necessarily require implementation as different hardware modules. Rather, as described above, the various modules may be combined within the codec hardware or implemented as a set of interacting hardware modules, including one or more processors as described above, in combination with suitable downloadable and/or firmware.
Claims (60)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EPPCT/EP2019/075519 | 2019-09-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2820991C1 true RU2820991C1 (en) | 2024-06-14 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2621967C1 (en) * | 2011-11-07 | 2017-06-08 | Инфобридж Пте. Лтд. | Video data decoding method |
WO2018142823A1 (en) * | 2017-01-31 | 2018-08-09 | Sharp Kabushiki Kaisha | Systems and methods for scaling transform coefficient level values |
US10284844B1 (en) * | 2018-07-02 | 2019-05-07 | Tencent America LLC | Method and apparatus for video coding |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2621967C1 (en) * | 2011-11-07 | 2017-06-08 | Инфобридж Пте. Лтд. | Video data decoding method |
WO2018142823A1 (en) * | 2017-01-31 | 2018-08-09 | Sharp Kabushiki Kaisha | Systems and methods for scaling transform coefficient level values |
US10284844B1 (en) * | 2018-07-02 | 2019-05-07 | Tencent America LLC | Method and apparatus for video coding |
Non-Patent Citations (1)
Title |
---|
BROSS B et al, "Versatile Video Coding (Draft 6)", 15. JVET meeting; 20190703 - 20190712; Gothenburg; (the Joint Video Exploration Team of ISO/IEC JTC1/SC29/WG11 and ITU-T SG.16 ), JVET-O2001, опубл. 28.07.2019 на 455 страницах, https://jvet-experts.org/, раздел 8.4.5.2.10 Specification of INTRA_PLANAR intra prediction mode. * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7375125B2 (en) | Encoders, decoders and corresponding methods using IBC dedicated buffers and default value refresh for luma and chroma components | |
US20210344915A1 (en) | Encoder, a decoder and corresponding methods of intra prediction | |
JP7205038B2 (en) | Encoders, Decoders and Corresponding Methods Using IBC Search Scope Optimization for Arbitrary CTU Sizes | |
JP7366149B2 (en) | An encoder, decoder, and corresponding method for harmonizing matrix-based intra-prediction and quadratic transform core selection | |
CN112954367B (en) | Encoder, decoder and corresponding methods using palette coding | |
CN114450958B (en) | Affine motion model limiting for reducing memory bandwidth of enhanced interpolation filters | |
KR20210126771A (en) | Encoders, decoders and corresponding methods related to intra prediction mode | |
CN113660489B (en) | Decoding method, apparatus, decoder and storage medium for intra sub-division | |
JP2023153193A (en) | Method and device for signaling chrominance quantization parameter | |
JP2023126795A (en) | Method and apparatus for chroma intra prediction in video coding | |
CN114830665B (en) | Affine motion model restriction | |
JP7436526B2 (en) | Clipping level for nonlinear adaptive loop filter | |
JP2023100701A (en) | Encoder, decoder and corresponding methods using intra mode coding for intra prediction | |
US11876956B2 (en) | Encoder, a decoder and corresponding methods for local illumination compensation | |
RU2820991C1 (en) | Encoder, decoder and corresponding methods for reducing complexity in intraframe prediction for planar mode | |
CN114556923A (en) | Encoder, decoder and corresponding method using interpolation filtering | |
CN114900702B (en) | Codec and corresponding method for reducing complexity of intra prediction for planar mode | |
RU2822448C2 (en) | Encoder, decoder and corresponding intra-prediction methods | |
RU2803063C2 (en) | Encoder, decoder and corresponding methods that are used for the conversion process | |
RU2801326C2 (en) | Coder, decoder and corresponding methods using allocated ibc buffer and default value updated brightness and colour component |