RU2816918C2 - Кодер, декодер и соответствующие способы выполнения устранения блочности цветности для блоков, использующих кодирование объединенной цветности - Google Patents
Кодер, декодер и соответствующие способы выполнения устранения блочности цветности для блоков, использующих кодирование объединенной цветности Download PDFInfo
- Publication number
- RU2816918C2 RU2816918C2 RU2022107112A RU2022107112A RU2816918C2 RU 2816918 C2 RU2816918 C2 RU 2816918C2 RU 2022107112 A RU2022107112 A RU 2022107112A RU 2022107112 A RU2022107112 A RU 2022107112A RU 2816918 C2 RU2816918 C2 RU 2816918C2
- Authority
- RU
- Russia
- Prior art keywords
- block
- chrominance
- chroma
- quantization parameter
- value
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 398
- 238000013139 quantization Methods 0.000 claims abstract description 421
- 230000008569 process Effects 0.000 claims abstract description 219
- 238000001914 filtration Methods 0.000 claims abstract description 112
- 230000000903 blocking effect Effects 0.000 claims description 9
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 abstract description 43
- 241000023320 Luma <angiosperm> Species 0.000 abstract description 36
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 75
- 230000033001 locomotion Effects 0.000 description 62
- 230000009466 transformation Effects 0.000 description 59
- 238000012545 processing Methods 0.000 description 57
- 210000004027 cell Anatomy 0.000 description 46
- 239000013598 vector Substances 0.000 description 45
- 238000003491 array Methods 0.000 description 34
- 230000006854 communication Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 27
- 238000000638 solvent extraction Methods 0.000 description 26
- 238000006243 chemical reaction Methods 0.000 description 24
- 239000000872 buffer Substances 0.000 description 21
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 238000010276 construction Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 19
- 238000013507 mapping Methods 0.000 description 19
- 238000005192 partition Methods 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 14
- 230000003044 adaptive effect Effects 0.000 description 10
- 238000012935 Averaging Methods 0.000 description 9
- 230000006835 compression Effects 0.000 description 9
- 238000007906 compression Methods 0.000 description 9
- 239000012634 fragment Substances 0.000 description 9
- 230000000007 visual effect Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000009795 derivation Methods 0.000 description 7
- 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 6
- 230000002123 temporal effect Effects 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 5
- 230000004927 fusion Effects 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 239000011449 brick Substances 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 210000003719 b-lymphocyte Anatomy 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007620 mathematical function Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 210000004457 myocytus nodalis Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 101150114515 CTBS gene Proteins 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000007727 signaling mechanism Effects 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
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Abstract
Заявленное изобретение относится к способу устранения блочности для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения при кодировании изображения и/или декодировании изображения, при этом способ устранения блочности содержит: выполнение процесса принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит: определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки QP цветности для первого блока цветности; определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности; определение усредненного и округленного параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности и второго параметра (QpCq) квантования цветности; и определение порогового параметра (tC) на основе усредненного и округленного параметра (QpC) квантования цветности; и выполнение процесса фильтрации в отношении края блока цветности на основе порогового параметра (tC). 5 н. и 26 з.п. ф-лы, 20 ил.
Description
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
В настоящей заявке на патент испрашивается приоритет по отношению к международной заявке №. PCT/EP2019/072643, поданной 23 августа 2019 г., международной заявке №. PCT/RU2019/000639, поданной 16 сентября 2019 г., и международной заявке №. PCT/EP2019/077057, поданной 07 октября 2019 г. Вышеупомянутые заявки на патент включены сюда в качестве ссылки во всей своей полноте.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Варианты осуществления настоящего изобретения в целом относятся к области обработки изображений, например, к кодированию неподвижных изображений и/или видеоизображений. В частности, изобретение относится к усовершенствованию фильтра устранения блочности.
УРОВЕНЬ ТЕХНИКИ
Кодирование изображения (кодирование и декодирование) используется в широком спектре приложений для работы с цифровыми изображениями, например, в широковещательном цифровом телевидении, при передаче видео через Интернет и мобильные сети, в приложениях для разговоров в реальном времени, таких как видеочат, видеоконференции, DVD и Blu-ray. диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.
С момента разработки блочного гибридного подхода к кодированию видео в стандарте H.261 в 1990 году были разработаны новые методики и инструменты кодирования видео, которые легли в основу новых стандартов кодирования видео. Одной из целей большинства стандартов кодирования видео было достижение снижения скорости передачи по сравнению с его предшественником без ущерба для качества изображения. Другие стандарты кодирования видео включают видео MPEG-1, видео MPEG-2, ITU-T H.262/MPEG-2, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Advanced Video Coding. (AVC), ITU-T H.265, высокоэффективное кодирование видео (HEVC), ITU-T H.266/универсальное кодирование видео (VVC) и расширения, например масштабируемость и/или трехмерные (3D) расширения этих стандартов.
Схемы кодирования изображений на основе блоков имеют общее то, что вдоль краев блоков могут появляться краевые артефакты. Эти артефакты возникают из-за независимого кодирования блоков кодирования. Эти краевые артефакты часто легко видны пользователю. Целью блочного кодирования изображений является уменьшение артефактов краев ниже порогового значения видимости. Это делается посредством выполнения циклической фильтрации, например, посредством выполнения фильтрации с устранением блочности. Такая фильтрация с устранением блочности выполняется, с одной стороны, на стороне декодирования, чтобы удалить видимые артефакты краев, но также и на стороне кодирования, чтобы предотвратить кодирование каких-либо артефактов краев в изображение. Процесс фильтра устранения блочности обычно включает в себя процесс принятия решения и процесс фильтрации в отношении краев блока яркости, и процесс принятия решения и процесс фильтрации в отношении краев блока цветности.
Однако устранение блочности края блока цветности между двумя соседними блоками цветности может быть сложной задачей. Например, информация, используемая для устранения блочности края блока цветности, может быть получена из соответствующего блока яркости и потеряна в процессе получения, что приведет к неточному процессу устранения блочности. В другом примере новый тип блоков цветности, таких как блоки цветности, кодированные с использованием инструментов кодирования объединенных остатков Cb-Cr (JCCR) (или, а именно, инструментов кодирования объединенных остатков цветности (JCCR)) могут создавать новые проблемы для фильтрации с устранением блочности.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Ввиду упомянутых выше проблем, настоящее изобретение направлено на улучшение обычной фильтрации в отношении устранения блочности. Целью настоящего изобретения является создание устройства фильтра устранения блочности, кодера, декодера и соответствующих способов, которые могут выполнять фильтрацию с устранением блочности точным образом, поэтому устранение блочности должно быть более эффективным.
Варианты осуществления изобретения определяются признаками независимых пунктов формулы изобретения, а дополнительные преимущественные реализации вариантов осуществления - признаками зависимых пунктов формулы изобретения.
Конкретные варианты осуществления изложены в прилагаемых независимых пунктах формулы изобретения, а другие варианты осуществления - в зависимых пунктах формулы изобретения.
Согласно первому аспекту изобретение относится к способу устранения блочности для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока (изображения при кодировании изображения и/или декодировании изображения,
при этом способ устранения блочности содержит:
выполнение процесса принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит:
определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе первого параметра (QpYP) квантования яркости первого блока (801) яркости первого блока изображения и таблицы привязки параметров квантования (QP) цветности для первого блока цветности;
определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности;
определение третьего параметра (QpC) квантования цветности (например, усредненного и округленного параметра квантования цветности) на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности; и
определение порогового параметра (tC) на основе третьего параметра (QpC) квантования цветности (например, усредненного и округленного параметра квантования цветности);
выполнение процесса фильтрации в отношении края блока цветности, по меньшей мере, на основе порогового параметра.
Можно понять, что третий (QpC) QP цветности может прямо или косвенно использоваться для определения того, должен ли быть отфильтрован край блока цветности и/или следует ли применять сильное или нормальное устранение блочности (например, должна быть выполнена длительная фильтрация или слабая фильтрация). В одном примере пороговый параметр (tC) может зависеть от третьего параметра (QpC) квантования цветности (например, усредненного и округленного параметра квантования цветности) и может быть выведен из таблицы поиска. Пороговый параметр (tC) может использоваться для определения того, следует ли фильтровать край блока цветности и/или применять сильное или нормальное устранение блочности (например, должна ли выполняться длительная фильтрация или слабая фильтрация). Следует отметить, что пороговый параметр (tC) является параметром отсечения во время процесса фильтрации в отношении края блока цветности (в частности, процесса фильтрации в отношении одного или более дискретных отсчетов цветности, которые перпендикулярны и смежны с краем блока цветности).
Можно понять, что для процесса фильтрации края блока цветности, соответственно во втором блоке цветности, для каждой строки входных дискретных отсчетов цветности, которые перпендикулярны и смежны с краем блока цветности, не более MA дискретных отсчетов цветности модифицируются для генерирования выходных отфильтрованных дискретных отсчетов цветности; в первом блоке цветности для каждой строки входных дискретных отсчетов цветности, которые перпендикулярны и смежны с краем блока цветности, модифицируется не более MB дискретных отсчетов цветности для создания выходных отфильтрованных дискретных отсчетов цветности. Можно понять, что значение MA или MB зависит от размера блока (ширины и высоты) любого из первого и второго блоков цветности.
Следует отметить, что подробности того, как пороговый параметр (tC) используется для процесса фильтрации края блока цветности, могут быть в таких документах, как спецификация VVC, которые здесь не повторяются.
Следует отметить, что в настоящем раскрытии используется термин «блок», «блок кодирования» или «блок изображения», которые могут применяться к единичным блокам преобразования (TU), единичным блокам предсказания (PU), единичным блокам кодирования (CU) и т. д. В VVC в целом единичные блоки преобразования и единичные блоки кодирования в основном выравниваются, за исключением нескольких сценариев, когда используется разбиение на клетки TU или преобразование подблока (SBT). Можно понять, что термины «блок/блок изображения/блок кодирования/блок преобразования» и «размер блока/размер блока преобразования» могут быть заменены друг другом в настоящем раскрытии. Термины «дискретный отсчет/пиксель» могут использоваться взаимозаменяемо в настоящем раскрытии.
Изобретение работает как для вертикальных, так и для горизонтальных краев блока цветности.
Это позволяет устранить блочность края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения правильно. В представленной здесь технологии информация, содержащаяся в QP яркости для двух соседних блоков, сохраняется и используется для определения соответствующих QP цветности. Это предотвращает потерю информации, связанную с существующим подходом, в котором QP цветности определяется на основе усредненного значения QP яркости двух соседних блоков яркости. Кроме того, использование соответствующих таблиц привязки ChromaQP, как представлено в данном документе, позволяет более точно определять QP цветности для различных компонентов цветности. В результате процесс устранения блочности более эффективен при удалении блочных артефактов, тем самым улучшая визуальное качество кодированного видео.
В возможном варианте реализации по меньшей мере один из первого блока цветности и второго блока цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR).
С помощью представленной здесь технологии конечное значение QP цветности для кодированных блоков объединенных Cb-Cr может быть правильно получено (или отображено) на основе соответствующего значения QP яркости для принятия правильных решений по устранению блочности и, таким образом, достижения лучшего визуального качества кодированного видео. Таким образом, результат фильтрации с устранением блочности значительно улучшается.
В возможном варианте реализации первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, и второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения; или
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является первым компонентом цветности второго блока изображения; или
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является вторым компонентом цветности второго блока изображения; или
первый блок цветности является первым компонентом цветности первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения; или
первый блок цветности является вторым компонентом цветности первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения; или
первый блок цветности является первым компонентом цветности первого блока изображения, а второй блок цветности является первым компонентом цветности второго блока изображения; или
первый блок цветности является вторым компонентом цветности первого блока изображения, а второй блок цветности является вторым компонентом цветности второго блока изображения.
С технологией, представленной здесь, в случае, когда первый и второй блоки цветности являются разными типами, порядок этапов способа согласно вариантам осуществления настоящего раскрытия разумен без потери информации. Кроме того, окончательные выведенные значения QP цветности для блоков цветности, включая кодированные блоки объединенных Cb-Cr, являются более точными и, следовательно, могут привести к лучшим решениям по устранению блочности, что приведет к лучшему визуальному качеству.
В возможном варианте реализации таблица привязки параметров квантования (QP) цветности для первого блока цветности или второго блока цветности содержит по меньшей мере одно из:
первой таблицы привязки QP цветности для кодированного блока объединенных Cb-Cr.
второй таблицы привязки QP цветности для первого компонента цветности (такого как компонент Cb), или
третьей таблицы привязки QP цветности для второго компонента цветности (такого как компонент Cr).
В одном примере каждая таблица привязки QP цветности имеет одинаковое количество записей. Следует отметить, что в описании, формуле изобретения и прилагаемых чертежах настоящего изобретения термины «первый», «второй», «третий» и т. д. (если они существуют) предназначены для различения сходных объектов, но не обязательно указывают определенный порядок или последовательность.
В представленной здесь технологии использование соответствующих таблиц привязки ChromaQP, представленных в данном документе, позволяет более точно определять QP цветности для различных компонентов цветности. В результате процесс устранения блочности более эффективен при удалении блочных артефактов, тем самым улучшая визуальное качество кодированного видео.
В возможном варианте реализации, в которой первая таблица привязки QP цветности, вторая таблица привязки QP цветности и третья таблица привязки QP цветности указаны или индексированы первым индексным значением, вторым индексным значением и третьим индексным значением, соответственно.
В одном примере, когда второе индексное значение равно 0, ChromaQpTable[0] является второй таблицей привязки QP цветности для первого компонента цветности. Когда третье индексное значение равно 1, ChromaQpTable[1] является третьей таблицей привязки QP цветности для второго компонента цветности. Когда первое индексное значение равно 2, ChromaQpTable[2] является первой таблицей привязки QP цветности для кодированного блока Объединенных остатков Cb-Cr (JCCR). В одном примере таблица привязки QP цветности ChromaQpTable[i] может быть выведена на основе параметров или информации, полученной из битового потока, i=0, 1 или 2. В другом примере ChromaQpTable[i] может быть предварительно заданной таблицей привязки QP цветности.
В возможном варианте реализации, в которой первое индексное значение равно 3, второе индексное значение равно 1 и третье индексное значение равно 2; или при этом первое индексное значение равно 2, второе индексное значение равно 0 и третье индексное значение равно 1.
В возможном варианте реализации, если первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости в первой таблице привязки QP цветности;
если первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости во второй таблице привязки QP цветности; или
если первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости в третьей таблице привязки QP цветности.
Следует отметить, что первый параметр (QpYP) квантования яркости первого блока яркости не используется непосредственно для выведения первого параметра (QpCp) квантования цветности для первого блока цветности. Промежуточный этап, такой как отсечение, можно использовать для первого QP яркости.
В представленной здесь технологии использование соответствующих таблиц привязки ChromaQP, представленных в данном документе, позволяет более точно определять QP цветности для различных компонентов цветности. В результате процесс устранения блочности более эффективен при удалении блочных артефактов, тем самым улучшая визуальное качество кодированного видео.
В возможном варианте реализации, если второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока (602, 602') изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости в первой таблице привязки QP цветности;
если второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости во второй таблице привязки QP цветности; или
если второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости в третьей таблице привязки QP цветности.
Следует отметить, что второй параметр (QpYQ) квантования яркости второго блока яркости не используется непосредственно для получения второго параметра (QpCq) квантования цветности для второго блока цветности. Промежуточный этап, такой как отсечение, можно использовать в отношении второго QP яркости.
В представленной здесь технологии использование соответствующих таблиц привязки ChromaQP, представленных в данном документе, позволяет более точно определять QP цветности для различных компонентов цветности. В результате процесс устранения блочности более эффективен при удалении блочных артефактов, тем самым улучшая визуальное качество кодированного видео.
В возможном варианте реализации определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки параметров (QP) квантования цветности для первого блока цветности содержит:
получение усеченного значения (qPiChroma) QP на основе первого параметра (QpYP) квантования яркости первого блока (801) яркости; например, qPiChroma=Clip3(-QpBdOffset, 63, QpYP);
определение значения (qPiCb, qPiCr, qPiCbCr) QP цветности для первого блока цветности на основе усеченного значения (qPiChroma) QP посредством использования таблицы привязки QP цветности для первого блока цветности; и
определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе усеченного значения для значения (qPiCb, qPiCr, qPiCbCr) QP цветности.
В одном примере первый параметр (QpCp) квантования цветности получается посредством добавления предварительно заданного значения QpBdOffset к усеченному значению значения (qPiCb, qPiCr, qPiCbCr) QP цветности, предварительно заданное значение получается на основе битовой глубины кодированных последовательностей. Представленная здесь технология допускает, чтобы значение первого параметра (QpCp) квантования цветности было ненулевым.
В возможном варианте реализации определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности содержит:
получение усеченного значения (qPiChroma) QP на основе второго параметра (QpYQ) квантования яркости второго блока яркости; например, qPiChroma=Clip3(-QpBdOffset, 63, QpYQ);
определение значения (qPiCb, qPiCr, qPiCbCr) QP цветности для второго блока цветности на основе усеченного значения (qPiChroma) QP посредством использования таблицы привязки QP цветности для второго блока цветности; и
определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе усеченного значения для значения (qPiCb, qPiCr, qPiCbCr) QP цветности.
В одном примере второй параметр (QpCq) квантования цветности получается посредством добавления предварительно заданного значения QpBdOffset к усеченному значению значения (qPiCb, qPiCr, qPiCbCr) QP цветности, предварительно заданное значение получается на основе битовой глубины кодированных последовательностей. Представленная здесь технология допускает, чтобы значение второго параметра (QpCq) квантования цветности было ненулевым.
В возможном варианте реализации определение третьего параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности содержит:
определение третьего параметра квантования цветности (например, усредненного и округленного параметра QPC квантования цветности) (QpC) согласно следующему уравнению,
QpC=(QpQ+QpP+1) >> 1
где QpP основан на первом параметре (QpCp) квантования цветности для первого блока цветности, а QpQ основан на втором параметре (QpCq) квантования цветности для второго блока цветности.
Можно понять, что мотивация усреднения с использованием сдвига вправо заключается в том, чтобы избежать использования деления, поскольку аппаратное деление является дорогостоящей операцией. На практике усреднение обычно реализуется так (a+b+1) >> 1. Добавление 1 перед сдвигом вправо является аппроксимацией округления гарантирует то, что средний результат округлен, например, (a+b+2биты-1) >> биты равны (a+b+2биты-1)/2биты, например, биты=1.
В возможном варианте реализации QpP получают посредством вычитания значения (QpBdOffset) смещения из первого параметра (QpCp) квантования цветности для первого блока цветности; и QpQ получают посредством вычитания значения (QpBdOffset) смещения из второго параметра (QpCq) квантования цветности для второго блока цветности.
В возможном варианте реализации кодированный блок объединенных Cb-Cr кодируется с использованием режима JCCR, а режим JCCR является вторым режимом из набора доступных режимов JCCR. Например, переменная TuCResMode устанавливается равной 2.
Согласно второму аспекту изобретение относится к устройству фильтра устранения блочности для использования в кодере изображения и/или декодере изображения для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения,
при этом устройство фильтра устранения блочности выполнено с возможностью:
выполнять процесс принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит:
определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки параметров квантования (QP) цветности для первого блока цветности;
определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе второго параметра (QpYQ) квантования яркости второго блока (802) яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности;
определение третьего параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности; и
определение порогового параметра (tC) на основе третьего параметра (QpC) квантования цветности;
выполнять процесс фильтрации в отношении края (903, 913, 923) блока цветности, по меньшей мере, на основе порогового параметра.
Устройство согласно второму аспекту может быть расширено до форм реализации, соответствующих формам реализации способа согласно первому аспекту. Следовательно, форма реализации устройства содержит признак(и) соответствующей формы реализации способа согласно первому аспекту. Преимущества устройства согласно второму аспекту такие же, как и у соответствующих форм осуществления способа согласно первому аспекту.
Способ согласно первому аспекту изобретения может быть выполнен устройством согласно второму аспекту изобретения. Дальнейшие признаки и формы реализации способа согласно первому аспекту изобретения соответствуют признакам и формам реализации устройства согласно второму аспекту изобретения.
В соответствии с третьим аспектом изобретения предусмотрено устройство кодирования видео, устройство кодирования видео для кодирования изображения видеопотока, при этом устройство кодирования видео содержит устройство фильтра устранения блочности в соответствии с любой предыдущей реализацией любого предыдущего аспекта или любого предшествующего аспекта как такового.
Это позволяет очень эффективно и точно кодировать изображение.
В соответствии с четвертым аспектом изобретения предусмотрено устройство декодирования видео, устройство декодирования видео для декодирования изображения кодированного видеопотока, при этом устройство декодирования видео содержит устройство фильтра устранения блочности в соответствии с любой предыдущей реализацией любого предыдущего аспекта или любого предшествующего аспекта как такового.
Это позволяет особенно точно и эффективно декодировать изображение.
Согласно пятому аспекту изобретение относится к устройству для декодирования видеопотока, включающему в себя процессор и память. Память хранит инструкции, которые предписывают процессору выполнять способ устранения блочности в соответствии с любой предшествующей реализацией любого предшествующего аспекта или любого предшествующего аспекта как такового.
Согласно шестому аспекту изобретение относится к устройству для кодирования видеопотока, включающему в себя процессор и память. Память хранит инструкции, которые предписывают процессору выполнять способ устранения блочности в соответствии с любой предшествующей реализацией любого предшествующего аспекта или любого предшествующего аспекта как такового.
В соответствии с другим аспектом предлагается машиночитаемый носитель данных, на котором хранятся инструкции, выполнение которых предписывает одному или более процессорам обеспечивать кодирование видеоданных. Инструкции предписывают одному или более процессорам выполнять способ устранения блочности в соответствии с любой предшествующей реализацией любого предшествующего аспекта или любого предшествующего аспекта как такового.
В соответствии с другим аспектом предоставляется компьютерный программный продукт с программным кодом для выполнения способа устранения блочности в соответствии с любой предшествующей реализацией любого предшествующего аспекта или любого предшествующего аспекта как такового, когда компьютерная программа выполняется на компьютере.
Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:
Фиг. 1A является блок-схемой, показывающей пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;
Фиг. 1B является блок-схемой, показывающей другой пример системы видеокодирования, выполненной с возможностью реализации вариантов осуществления настоящего изобретения;
Фиг. 2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления настоящего изобретения;
Фиг. 3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления настоящего изобретения;
Фиг. 4 является блок-схемой, иллюстрирующей пример устройства кодирования или устройства декодирования;
Фиг. 5 является блок-схемой, иллюстрирующей другой пример устройства кодирования или устройства декодирования;
На Фиг. 6A показаны два примерных блока изображения (таких как блоки преобразования или блоки кодирования);
На Фиг. 6B показаны два примерных блока изображения (таких как блоки преобразования или блоки кодирования);
Фиг. 7А представляет собой концептуальную схему, иллюстрирующую номинальные вертикальные и горизонтальные относительные местоположения дискретных отсчетов яркости и цветности;
Фиг. 7B представляет собой схематическое представление, иллюстрирующее совместно расположенные блоки яркости и блоки цветности;
На Фиг. 8 показаны два иллюстративных блока яркости (например, компоненты яркости блоков преобразования или блоков кодирования);
Фиг. 9A-9H представляют собой схематические изображения, иллюстрирующие примерный механизм устранения блочности края блока цветности между первым блоком цветности первого блока изображения и второго блока цветности второго блока изображения;
На Фиг. 10 показан вариант осуществления устройства фильтра устранения блочности согласно вариантам осуществления изобретения;
На Фиг. 11 показан вариант осуществления блок-схемы, иллюстрирующий способ устранения блочности для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения;
На Фиг. 12А и 12В показаны две примерные таблицы привязки QP цветности;
На Фиг. 13 показана примерная отдельная таблица привязки QP цветности для каждого компонента;
Фиг. 14 является блок-схемой, показывающей примерную структуру системы 3100 предоставления контента, которая реализует службу доставки контента.
Фиг. 15 является блок-схемой, показывающей структуру примерного терминального устройства;
Фиг. 16 представляет собой блок-схему последовательности операций способа устранения блочности согласно некоторым аспектам настоящего раскрытия; и
Фиг. 17 представляет собой блок-схему последовательности операций процесса принятия решения в соответствии с некоторыми аспектами настоящего изобретения.
Следующие одинаковые ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным функциям, если явно не указано иное.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Следующие определения используются для справки:
блок кодирования: Блок MxN дискретных отсчетов для некоторых значений M и N, так что разделение CTB на блоки кодирования является разбиением.
блок дерева кодирования (CTB): Блок NxN дискретных отсчетов для некоторого значения N, такого, что разделение компонента на CTB является разбиением.
единичный блок дерева кодирования (CTU): CTB дискретных отсчетов яркости, два соответствующих CTB дискретных отсчетов цветности снимка, состоящего из трех массивов дискретных отсчетов, или CTB дискретных отсчетов монохромного снимка или снимка, кодированного с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов.
единичный блок кодирования (CU): Блок кодирования дискретных отсчетов яркости, два соответствующих блока кодирования дискретных отсчетов цветности снимка, который имеет три массива дискретных отсчетов, или блок кодирования дискретных отсчетов монохромного снимка или снимка, который кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов.
компонент: Массив или один дискретный отсчет из одного из трех массивов (яркости и двух цветности), которые составляют снимок в цветовом формате 4:2:0, 4:2:2 или 4:4:4, или массив или одиночный дискретный отсчет массива, из которого состоит снимок в монохромном формате.
В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.
Например, должно понятно, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, выполненной с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например функциональных блоков, для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такой один или более блоков явно не описаны или не проиллюстрированы на фигурах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например функциональных блоков, соответствующий метод может включать в себя в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап выполнения функциональные возможности одного или множества модулей или множества этапов, каждый из которых выполняет функциональные возможности одного или более из множества модулей), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.
Видеокодирование обычно относится к обработке последовательности снимков, которые образуют видео или видеопоследовательность. Вместо термина «снимок» можно использовать термин «кадр» или «изображение» как синонимы в области видеокодирования. Видеокодирование (или кодирование в общем смысле) содержит две части видеокодирование и декодирование видео. Видеокодирование выполняется на стороне источника, обычно содержащее обработку (например, посредством сжатия) исходных видеоснимков для уменьшения объема данных, необходимых для представления видеоснимков (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя и обычно включает в себя обратную обработку по сравнению с кодером для восстановления видеоснимков. Варианты осуществления, относящиеся к «кодированию» видеоснимков (или снимков в целом, следует понимать как относящиеся либо к «кодированию», либо к «декодированию» видеоснимков или соответственных видеопоследовательностей. Объединение кодирующей части и декодирующей части также называется CODEC (кодирование и декодирование).
В случае кодирования видео без потерь исходные видеоснимки могут быть восстановлены, т.е. Восстановленные видеоснимки имеют то же качество, что и исходные видеоснимки (при условии отсутствия потерь при передаче или других потерь данных во время хранения или передачи). В случае кодирования видео с потерями выполняется дальнейшее сжатие, например, посредством квантования, чтобы уменьшить объем данных, представляющих видеоснимки, которые не могут быть полностью восстановлены в декодере, т.е. качество восстановленных видеоснимков ниже или хуже по сравнению с к качеству исходных видеоснимков.
Несколько стандартов видеокодирования принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области дискретных отсчетов и кодирование с двумерным преобразованием для применения квантования в области преобразования). Каждый снимок видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется, на уровне блока (видеоблока), например, с использованием пространственного (внутри снимка) (интра) предсказания и/или временного (между снимками) (интер) предсказания для генерации блока предсказания, вычитая блок предсказания из текущего блока (блок, который в настоящее время обрабатывается/должен быть обработан) для получения остаточного блока, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжатие), тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, интра- и интер-предсказание) и/или восстановление для обработки, то есть кодирования, последующих блоков.
В следующих вариантах осуществления системы 10 видеокодирования кодер 20 и декодер 30 описываются на основе фигур с 1 по 3.
Фиг. 1A является схематической блок-схемой, иллюстрирующей примерную систему 10 кодирования, например систему 10 видеокодирования (или вкратце систему 10 кодирования), которая может использовать методики этой настоящей заявки. Видеокодер 20 (или вкратце кодер 20) и видеодекодер 30 (или вкратце декодер 30) системы 10 кодирования видео представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методик в соответствии с различными примерами, описанными в настоящей заявке.
Как показано на Фиг. 1A, система 10 кодирования содержит устройство-источник 12, выполненное с возможностью предоставления кодированных данных 21 снимка, например, в устройство-получатель 14 для декодирования кодированных данных 21 снимка.
Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. в необязательном порядке, содержать источник 16 снимка, препроцессор (или модуль предварительной обработки) 18, например препроцессор 18 снимка, и интерфейс связи или модуль 22 связи.
Источник 16 снимка может содержать или быть устройством захвата снимка любого типа, например, камерой для захвата реального снимка и/или любого вида устройством генерации снимка, например процессор компьютерной графики для генерации компьютерного анимированного снимка, или любое другое устройство для получения и/или предоставления реального снимка, сгенерированного компьютером снимка (например, содержимое экрана, снимок виртуальной реальности (VR)) и/или любое их сочетание (например, снимок дополненной реальности (AR)). Источником снимка может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых снимков.
В отличие от препроцессора 18 и обработки, выполняемой модулем 18 предварительной обработки, снимок или данные 17 снимка также могут называться необработанным снимком или данными 17 необработанного снимка.
Препроцессор 18 выполнен с возможностью приема данных 17 (необработанного) снимка и выполнения предварительной обработки данных 17 снимка для получения предварительно обработанного снимка 19 или данных 19 предварительно обработанного снимка. Предварительная обработка, выполняемая препроцессором 18, может, например, включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или уменьшение шума. Можно понять, что модуль 18 предварительной обработки может быть необязательным компонентом.
Видеокодер 20 выполнен с возможностью приема данных 19 предварительно обработанного снимка и предоставления данных 21 кодированного снимка (дополнительные подробности будут описаны ниже, например, на основе Фиг. 2).
Интерфейс 22 связи устройства-источника 12 может быть выполнен с возможностью приема данных 21 кодированного снимка и для передачи данных 21 кодированного снимка (или любой их дальнейшей обработанной версии) по каналу 13 связи на другое устройство, например, на устройство-получатель 14 или любое другое устройство для хранения или прямого восстановления.
Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. в необязательном порядке, содержать интерфейс или модуль 28 связи, постпроцессор 32 и устройство 34 отображения.
Интерфейс 28 связи устройства-получателя 14 выполнен с возможностью приема данных 21 кодированного снимка (или любой их дальнейшей обработанной версии), например, непосредственно от устройства-источника 12 или из любого другого источника, например запоминающего устройства, например устройство хранения данных кодированного снимка, и предоставить данные 21 кодированного снимка в декодер 30.
Интерфейс 22 связи и интерфейс 28 связи могут быть выполнены с возможностью передачи или приема данных 21 кодированного снимка или кодированных данных 21 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например прямое проводное или беспроводное соединение, или через сеть любого типа, например проводную или беспроводную сеть или любое их сочетание, или любую частную и общедоступную сеть, или любое их сочетание.
Интерфейс 22 связи может быть, например, выполнен с возможностью упаковки данных 21 кодированного снимка в соответствующий формат, например, в пакеты, и/или обработки данных кодированного снимка с использованием любого типа кодирования передачи или обработки для передачи по каналу связи или сети связи.
Интерфейс 28 связи, образующий аналог интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 21 кодированного снимка.
И интерфейс 22 связи, и интерфейс 28 связи могут быть выполнены как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на Фиг. 1A, указывающего от устройства-источника 12 к устройству-получателю 14, или как интерфейсы двунаправленной связи, и может быть сконфигурирован, например, для отправки и приема сообщений, например для установки соединения, для подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, к передаче данных кодированного снимка.
Декодер 30 выполнен с возможностью приема данных 21 кодированного снимка и предоставления данных 31 декодированного снимка или декодированного снимка 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг. 3 или Фиг. 5).
Постпроцессор 32 устройства-получателя 14 выполнен с возможностью постобработки данных 31 декодированного снимка (также называемых данными восстановленного снимка), например, декодированного снимка 31, для получения данных 33 снимка 33 с постобработкой, например снимка 33 с постобработкой. Постобработка, выполняемая модулем 32 постобработки, может включать в себя, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную дискретизацию, или любую другую обработку, например, для подготовки данных декодированного снимка 31 для отображения, например, с помощью устройства 34 отображения.
Устройство 34 отображения устройства-получателя 14 выполнено с возможностью приема данных 33 снимка с постобработкой для отображения снимка, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленного снимка, например интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифровой световой процессор (DLP) или любые другие дисплеи.
Хотя Фиг. 1A изображает устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство-источник 12 или соответствующие функциональные возможности и устройство-получатель 14 или соответствующие функциональные возможности. В таких вариантах осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-получатель 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любого их сочетания.
Как будет очевидно для специального элемента на основании описания, наличие и (точное) разделение функциональных возможностей различных модулей или функций в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг. 1A, может варьироваться в зависимости от фактического устройства и применения.
Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30), или как кодер 20, так и декодер 30 могут быть реализованы через схемы обработки, как показано на Фиг. 1B, таких как один или более микропроцессоров, процессоров цифровых сигналов (DSP), прикладных программ. специальные интегральные схемы (ASIC), программируемые пользователем вентильные матрицы (FPGA), дискретная логика, оборудование, предназначенные для видеокодирования или любые их сочетания. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 на Фиг. 2 и/или любой другой кодирующей системе или подсистеме, описанной здесь. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 на Фиг. 3 и/или любую другую систему или подсистему декодера, описанную в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, как описано ниже. Как показано на Фиг. 5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг. 1B.
Устройство-источник 12 и устройство-получатель 14 могут включать в себя любое из широкого диапазона устройств, включая любые виды портативных или стационарных устройств, например портативные или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, наборы- приставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потоковой передачи видео (например, серверы служб контента или серверы доставки контента), устройство приемника широковещания, устройство передатчика широковещания и т.п. и могут использовать или не использовать любой вид операционной системы. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.
В некоторых случаях система 10 видеокодирования, проиллюстрированная на Фиг. 1A является просто примером, и методики настоящей заявки могут применяться к настройкам кодирования видео (например, видеокодирования или видеодекодирования), которые не обязательно включают в себя какой-либо обмен данными между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются по сети и т.п. Устройство кодирования видео может кодировать и сохранять данные в памяти, и/или устройство декодирования видео может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.
Для удобства описания варианты осуществления изобретения описаны здесь, например, со ссылкой на высокоэффективное видеокодирование (HEVC) или на опорное программное обеспечение универсального кодирования видео (VVC), стандарта кодирования видео следующего поколения, разработанного Объединенной группой сотрудничества по кодированию видео (JCT-VC) Группы экспертов ITU-T по кодированию видео (VCEG) и Группы экспертов ISO/IEC по движущимся изображениям (MPEG). Специалист в данной области техники поймет, что варианты осуществления изобретения не ограничиваются HEVC или VVC.
Кодер и способ кодирования
На Фиг. 2 показано схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации способов настоящей заявки. В примере на Фиг. 2 видеокодер 20 содержит ввод 201 (или интерфейс 201 ввода), модуль 204 вычисления остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования и модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 220 контурного фильтра, буфер 230 (DPB) декодированных снимков, модуль 260 выбора режима, модуль 270 энтропийного кодирования и вывод 272 (или интерфейс 272 вывода). Модуль 260 выбора режима может включать в себя модуль 244 интер-предсказания, модуль 254 интра-предсказания и модуль 262 разбиения. Модуль 244 интер-предсказания может включать в себя модуль оценки движения и модуль компенсации движения (не показаны). Видеокодер 20, показанный на Фиг. 2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
Модуль 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.
Снимки и разбиение снимков (снимки и блоки)
Кодер 20 может быть выполнен с возможностью приема, например, через ввод 201 снимка 17 (или данных 17 снимка), например снимка из последовательности снимков, образующих видео или видеопоследовательность. Принятый снимок или данные снимка также могут представлять собой предварительно обработанный снимок 19 (или предварительно обработанные данные 19 снимка). Для простоты нижеследующее описание ссылается на снимок 17. Снимок 17 также может именоваться текущим снимком или снимком, который подлежит кодированию (в частности, при видеокодировании, чтобы отличать текущий снимок от других снимков, например, ранее кодированных и/или декодированных снимков той же видеопоследовательности, т.е. видеопоследовательности, которая также содержит текущий снимок).
(Цифровой) снимок представляет собой или может рассматриваться как двумерный массив или матрица дискретных отсчетов со значениями интенсивности. Дискретный отсчет в массиве также может называться пикселем (сокращенная форма элемента снимка) или пикселем. Количество дискретных отсчетов в горизонтальном и вертикальном направлении (или по оси) массива или снимка определяет размер и/или разрешение снимка. Для представления цвета обычно используются три цветовых компонента, то есть снимок может быть представлен или включать в себя три массива дискретных отсчетов. В формате RGB или цветовом пространстве снимок содержит соответствующий массив дискретных отсчетов красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо него также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновом снимке), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты цветности или информации о цвете. Соответственно, снимок в формате YCbCr содержит массив дискретных отсчетов яркости значений дискретных отсчетов яркости (Y) и два массива дискретных отсчетов цветности значений цветности (Cb и Cr). Снимки в формате RGB могут быть преобразованы или преобразованы в формат YCbCr, и наоборот, этот процесс также известен как преобразование цвета или преобразование. Если снимок является монохромным, то он может содержать только массив дискретных отсчетов яркости. Соответственно, снимок может быть, например, массивом дискретных отсчетов яркости в монохромном формате или массивом дискретных отсчетов яркости и двумя соответствующими массивами дискретных отсчетов цветности в цветовой формат 4:2:0, 4:2:2 и 4:4:4.
Варианты осуществления видеокодера 20 могут содержать модуль разбиения снимка (не показан на Фиг. 2), выполненный с возможностью разбиения снимка 17 на множество (обычно не перекрывающихся) блоков 203 снимка. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодирования (CTB) или единицами дерева кодирования (CTU) (H.265/HEVC и VVC). Блок разбиения снимка может быть выполнен с возможностью использования одного и того же размера блока для всех снимков видеопоследовательности и соответствующей сетки, определяющей размер блока, или для изменения размера блока между снимками или подмножествами или группами снимков, а также для разбиения каждого снимка на соответствующие блоки.
В дополнительных вариантах осуществления видеокодер может быть выполнен с возможностью приема непосредственно блока 203 снимка 17, например одного, нескольких или всех блоков, образующих снимок 17. Блок 203 снимка также может называться блоком текущего снимка или блоком снимка, который должен быть кодирован.
Подобно снимку 17, блок 203 снимка снова является или может рассматриваться как двумерный массив или матрица дискретных отсчетов со значениями интенсивности (значениями дискретных отсчетов), хотя и меньшего размера, чем снимок 17. Другими словами, блок 203 может содержать, например, один массив дискретных отсчетов (например, массив яркости в случае монохромного снимка 17 или массив яркости или цветности цветного снимка) или три массива дискретных отсчетов (например, массив яркости и два массива цветности в случае цветного снимка 17) или любое другое количество и/или вид массивов в зависимости от применяемого цветового формата. Количество дискретных отсчетов в горизонтальном и вертикальном направлении (или по оси) блока 203 определяет размер блока 203. Соответственно, блок может, например, массив дискретных отсчетов MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть выполнены с возможностью кодирования снимка 17 блок за блоком, например, кодирование и предсказание выполняются для каждого блока 203.
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования снимка с использованием сегментов (также называемых видеосегментами), при этом снимок может быть разделен или кодирован с использованием одного или более сегментов (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, клеток (tile) (H.265/HEVC и VVC) или фрагментов (brick) (VVC)).
Варианты осуществления видеокодера 20, как показано на Фиг. 2, могут быть дополнительно выполнены с возможностью разбиения и/или кодирования снимка с использованием сегментов/групп клеток (также называемых группами клеток) и/или клеток (также называемых видеоклетками), в котором снимок может быть разделено или кодировано с использованием одного или более сегментов/групп клеток (обычно не перекрывающихся), и каждый сегмент/группа клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.
Вычисление остатка
Модуль 204 вычисления остатка может быть выполнен с возможностью вычисления остаточного блока 205 (также упоминаемого как остаток 205) на основе блока 203 снимка и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, посредством вычитания значений дискретных отсчетов блока 265 предсказания из значений дискретных отсчетов блока 203 снимка, дискретный отсчет за дискретным отсчетом (пиксель за пикселем), чтобы получить остаточный блок 205 в области дискретных отсчетов.
Преобразование
Модуль 206 обработки преобразования может быть выполнен с возможностью применения преобразования, например дискретного косинусного преобразования (DCT) или дискретного синусного преобразования (DST), к значениям дискретных отсчетов остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также называться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.
Модуль 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются с определенным коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, в процессе преобразования применяются дополнительные коэффициенты масштабирования. Коэффициенты масштабирования обычно выбираются на основе определенных ограничений, таких как коэффициенты масштабирования, являющиеся степенью двойки для операций сдвига, разрядность коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, задаются для обратного преобразования, например, модулем 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например, модулем 312 обработки обратного преобразования в видеокодере 30), и соответствующие коэффициенты масштабирования для прямого преобразования, например, посредством модуля 206 обработки преобразования, в кодере 20 может быть определено соответственно.
Варианты осуществления видеокодера 20 (соответственно модуль 206 обработки преобразования) могут быть выполнены с возможностью вывода параметров преобразования, например типа преобразования или преобразований, например, непосредственно или кодированы или сжаты через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.
Квантование
Модуль 208 квантования может быть выполнен с возможностью квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, посредством применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.
Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битного коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более тонкого или более грубого квантования. Меньшие размеры шагов квантования соответствуют более тонкому квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, быть индексом для заранее определенного набора применимых размеров шага квантования. Например, малые параметры квантования могут соответствовать точному квантованию (малые размеры шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большие размеры шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования, и соответствующее обратное квантование, например, посредством модуля 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC, могут быть выполнены с возможностью использования параметра квантования для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, который может быть изменен из-за масштабирования, используемого в приближении с фиксированной точкой уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования, и кодер может передавать их в декодер, например, в битовом потоке. Квантование - это операция с потерями, при которой потери возрастают с увеличением размеров этапов квантования.
Варианты осуществления видеокодера 20 (соответственно модуль 208 квантования) могут быть выполнены с возможностью вывода параметров квантования (QP), например, напрямую или кодированных через модуль 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять параметры квантования для декодирования.
Обратное квантование
Модуль 210 обратного квантования выполнен с возможностью применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, посредством применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же размера шага квантования в качестве модуля 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать - хотя обычно не идентичны коэффициентам преобразования из-за потери при квантовании - коэффициентам 207 преобразования.
Обратное преобразование
Модуль 212 обработки обратного преобразования выполнен с возможностью применения обратного преобразования, применяемого блоком 206 обработки преобразования, например обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразования, чтобы получить восстановленный остаточный блок 213 (или соответствующие коэффициенты 213 деквантования) в области дискретных отсчетов. Восстановленный остаточный блок 213 также может называться блоком 213 преобразования.
Восстановление
Модуль 214 восстановления (например, сумматор 214) выполнен с возможностью добавления блока 213 преобразования (то есть восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области дискретных отсчетов, например, посредством добавления (дискретный отсчет за дискретным отсчетом) значений дискретных отсчетов восстановленных остаточный блок 213 и значения дискретных отсчетов блока 265 предсказания.
Фильтрация
Модуль 220 контурного фильтра (или сокращенно «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215 для получения фильтрованного блока 221 или, в общем, для фильтрации восстановленных дискретных отсчетов для получения отфильтрованных значений дискретных отсчетов. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Модуль 220 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO) или один или более других фильтров, например адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любое их сочетание. В одном примере модуль 220 контурного фильтра может содержать фильтр устранения блочности, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть фильтром удаления блочности, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивным внутриконтурным преобразователем). Этот процесс выполняется перед устранением блочности. В другом примере процесс фильтрации с устранением блочности может также применяться к внутренним краям подблока, например краям аффинных подблоков, краям подблоков ATMVP, краям преобразования подблоков (SBT) и краям внутри подблока (ISP).
Чтобы эффективно удалить артефакты блокировки, возникающие для больших «блоков», универсальное кодирование видео (VVC) использует фильтр устранения блочности с более длинными отводами. Здесь термин «блоки» используется в очень общем смысле и может относиться к «блоку преобразования (TB), блоку предсказания (PB) или единичному блоку кодирования (CU)». Фильтр с более длинными отводами для компонентов яркости изменяет максимум 7 дискретных отсчетов для каждой строки дискретных отсчетов, перпендикулярной и смежной с краем, и применяется к блокам размером >=32 дискретных отсчетов в направлении устранения блочности, т.е. для вертикальных краев блок ширина должна быть >=32 дискретных отсчета, а для горизонтальных краев высота блока должна быть >=32 дискретных отсчета.
Фильтр с более длинными отводами для компонентов цветности применяется к блокам цветности, когда оба блока цветности, смежные с данным краем, имеют размер >=8 дискретных отсчетов, и он изменяет максимум три дискретных отсчета по обе стороны от края. Следовательно, для вертикальных краев ширина блока обоих блоков цветности, примыкающих к краю, должна быть >=8 дискретных отсчетов, а для горизонтальных краев высота блока обоих блоков, примыкающих к краю, должна быть >=8 дискретных отсчетов.
Текст спецификации устранения блочности в VVC 6.0 добавлен ниже:
Процесс фильтра устранения блочности
8.8.3.1 Общие положения
Входными данными для этого процесса являются восстановленное изображение до устранения блочности, т.е. массив recPictureL и, когда ChromaArrayType не равен 0, массивы recPictureCb и recPictureCr.
Результатами этого процесса являются модифицированное восстановленное изображение после устранения блочности, т.е. массив recPictureL и, когда ChromaArrayType не равен 0, массивы recPictureCb и recPictureCr.
Сначала фильтруются вертикальные края изображения. Затем горизонтальные края в изображении фильтруются с дискртеными отсчетами, измененными процессом фильтрации вертикальных краев в качестве входных данных. Вертикальные и горизонтальные границы в CTB каждой CTU обрабатываются отдельно на основе единичных блоков кодирования. Вертикальные края блоков кодирования в единичном блоке кодирования фильтруются, начиная с края на левой стороне блоков кодирования, проходя через края к правой стороне блоков кодирования в их геометрическом порядке. Горизонтальные края блоков кодирования в единичном блоке кодирования фильтруются, начиная с края наверху блоков кодирования и проходя через края к нижней части блоков кодирования в их геометрическом порядке.
ПРИМЕЧАНИЕ. - Хотя в настоящейм документе процесс фильтрации определяется на основе изображения, процесс фильтрации может быть реализован на основе единичных блоков кодирования с эквивалентным результатом при условии, что декодер должным образом учитывает порядок зависимости обработки, чтобы получить одинаковые выходные значения.
Процесс фильтра устранения блочности применяется ко всем краям субблоков кодирования и краям блоков преобразования изображения, за исключением следующих типов краев:
Края, которые находятся на границе изображения,
Края, совпадающие с границами суб-снимка, для которых loop_filter_across_subpic_enabled_flag[ SubPicIdx ] равен 0,
Края, совпадающие с виртуальными границами снимка, когда pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1,
Края, совпадающие с границами фрагментов, когда loop_filter_across_bricks_enabled_flag равен 0,
Края, совпадающие с границами сегментов, когда loop_filter_across_slices_enabled_flag равен 0,
Края, совпадающие с верхней или левой границей сегментов с slice_deblocking_filter_disabled_flag равным 1,
Края внутри фрагментов с slice_deblocking_filter_disabled_flag, равным 1,
Края, которые не соответствуют границам сетки 4×4 дискртеных отсчета компонента яркости,
Края, которые не соответствуют границам сетки 8×8 дискртеных отсчета компонента цветности,
Края внутри компонента яркости, для которых обе стороны края имеют intra_bdpcm_flag, равный 1,
Края подблоков цветности, которые не являются краями связанной единичные блоки преобразования.
Тип края, вертикальный или горизонтальный, представлен переменной edgeType, как указано в таблице 8 17.
Таблица 8 17 - Имя связи с edgeType | |
тип края | Имя типа края |
0 (вертикальный край) | EDGE_VER |
1 (горизонтальный край) | EDGE_HOR |
Когда slice_deblocking_filter_disabled_flag текущего сегмента равен 0, применяется следующее:
Переменная treeType устанавливается равной DUAL_TREE_LUMA.
Вертикальные края фильтруются посредством вызова процесса фильтрации с устранением блочности для одного направления, как указано в пункте 8.8.3.2, с переменной treeType, восстановленным изображением до устранения блочности, т. е. массивом recPictureL и переменной edgeType, установленной равной EDGE_VER, в качестве входных данных, и модифицированное восстановленное изображение после устранения блочности, т. е. массив recPictureL в качестве результатов.
Горизонтальные границы фильтруются посредством вызова процесса фильтрации с устранением блочности для одного направления, как указано в пункте 8.8.3.2, с переменной treeType, модифицированным восстановленным изображением после устранения блочности, т. е. массивом recPictureL и переменной edgeType, установленной равной EDGE_HOR, в качестве входных данных, и модифицированное восстановленное изображение после устранения блочности, т. е. массив recPictureL в качестве результатов.
Когда ChromaArrayType не равен 0, применяется следующее:
Переменная treeType устанавливается равной DUAL_TREE_CHROMA.
Вертикальные края фильтруются посредством вызова процесса фильтрации с устранением блочности для одного направления, как указано в пункте 8.8.3.2, с переменной treeType, восстановленным изображением до устранения блочности, т. е. массивами recPictureCb и recPictureCr, и переменной edgeType, установленной равной EDGE_VER, как входы, а модифицированное восстановленное изображение после устранения блочности, т.е. массивы recPictureCb и recPictureCr в качестве результатов.
Горизонтальные границы фильтруются посредством вызова процесса фильтрации с устранением блочности для одного направления, как указано в пункте 8.8.3.2, с переменной treeType, модифицированным восстановленным изображением после устранения блочности, т. е. массивами recPictureCb и recPictureCr, и переменной edgeType, установленной равной EDGE_HOR, как входы, а модифицированное восстановленное изображение после устранения блочности, т.е. массивы recPictureCb и recPictureCr в качестве результатов.
8.8.3.2 Процесс фильтрации с устранением блочности для одного направления
Входные данные для этого процесса являются следующими:
переменная treeType, указывающая, обрабатываются ли в данный момент компоненты яркости (DUAL_TREE_LUMA) или цветности (DUAL_TREE_CHROMA),
когда treeType равен DUAL_TREE_LUMA, восстановленное изображение до устранения блочности, т. е. массив recPictureL,
когда ChromaArrayType не равен 0, а treeType равен DUAL_TREE_CHROMA, массивы recPictureCb и recPictureCr,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край.
Результатами этого процесса являются модифицированное восстановленное изображение после устранения блочности, т.е.:
когда treeType равен DUAL_TREE_LUMA, массив recPictureL,
когда ChromaArrayType не равен 0, а treeType равен DUAL_TREE_CHROMA, массивы recPictureCb и recPictureCr.
Переменные firstCompIdx и lastCompIdx получаются следующим образом:
firstCompIdx=(treeType== DUAL_TREE_CHROMA)? 1 : 0 (8-1022)
lastCompIdx=(treeType== DUAL_TREE_LUMA | | ChromaArrayType== 0)? 0 : 2 (8-1023)
Для каждого единичного блока кодирования и каждого блока кодирования на цветовой компонент единичного блока кодирования, обозначенного индексом цветового компонента cIdx в диапазоне от firstCompIdx до lastCompIdx включительно, с шириной блока кодирования nCbW, высотой блока кодирования nCbH и расположением верхнего левого дискретного отсчета кодирования блок (xCb, yCb), когда cIdx равен 0, или когда cIdx не равен 0, а edgeType равен EDGE_VER и xCb % 8 равен 0, или когда cIdx не равен 0, а edgeType равен EDGE_HOR и yCb % 8 равно 0, края фильтруются по следующим упорядоченным этапам:
1. Переменная filterEdgeFlag выводится следующим образом:
Если edgeType равен EDGE_VER и выполняется одно или более из следующих условий, filterEdgeFlag устанавливается равным 0:
Левая граница текущего блока кодирования является левой границей изображения (снимка).
Левая граница текущего блока кодирования является левой или правой границей субкадра, а loop_filter_across_subpic_enabled_flag[ SubPicIdx ] равен 0.
Левая граница текущего блока кодирования является левой границей фрагмента, а loop_filter_across_bricks_enabled_flag равен 0.
Левая граница текущего блока кодирования является левой границей сегмента, а loop_filter_across_slices_enabled_flag равен 0.
Левая граница текущего блока кодирования является одной из вертикальных виртуальных границ изображения, а pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1.
В противном случае, если edgeType равен EDGE_HOR и выполняется одно или более из следующих условий, переменная filterEdgeFlag устанавливается равной 0:
Верхняя граница текущего блока кодирования яркости является верхней границей изображения.
Верхняя граница текущего блока кодирования является верхней или нижней границей суб-снимка, а loop_filter_across_subpic_enabled_flag[ SubPicIdx ] равен 0.
Верхняя граница текущего блока кодирования является верхней границей фрагмента, а loop_filter_across_bricks_enabled_flag равен 0.
Верхняя граница текущего блока кодирования является верхней границей сегмента, а loop_filter_across_slices_enabled_flag равен 0.
Верхняя граница текущего блока кодирования является одной из горизонтальных виртуальных границ изображения, а pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1.
В противном случае filterEdgeFlag устанавливается равным 1.
2. Все элементы двумерного массива (nCbW)x(nCbH) edgeFlags, maxFilterLengthQs и maxFilterlengthPs инициализируются равными нулю.
3. Процесс выведения границы блока преобразования, указанный в пункте 8.8.3.3, вызывается с указанием местоположения (xCb, yCb), ширины блока кодирования nCbW, высоты блока кодирования nCbH, переменной cIdx, переменной filterEdgeFlag, массива edgeFlags, максимального массивы длин фильтров maxFilterLengthPs и maxFilterLengthQs и переменная edgeType в качестве входных данных и измененный массив edgeFlags, модифицированные массивы максимальных длин фильтров maxFilterLengthPs и maxFilterLengthQs в качестве выходных данных.
4. Когда cIdx равен 0, вызывается процесс выведения границы подблока кодирования, указанный в пункте 8.8.3.4, с расположением (xCb, yCb), шириной блока кодирования nCbW, высотой блока кодирования nCbH, массивом edgeFlags, максимальным фильтром массивы длины maxFilterLengthPs и maxFilterLengthQs и переменная edgeType в качестве входных данных и измененный массив edgeFlags, измененные массивы максимальной длины фильтра maxFilterLengthPs и maxFilterLengthQs в качестве выходных данных.
5. Массив дискретных отсчетов снимка recPicture выводится следующим образом:
Если cIdx равен 0, recPicture устанавливается равным восстановленному массиву дискретных отсчетов изображения яркости до устранения блочности recPictureL.
В противном случае, если cIdx равен 1, recPicture устанавливается равным восстановленному массиву дискретных отсчетов изображения цветности до устранения блочности recPictureCb.
В противном случае (cIdx равно 2) recPicture устанавливается равным восстановленному массиву дискретных отсчетов изображения цветности до устранения блочности recPictureCr.
6. Процесс выведения мощности фильтрации границ, указанный в пункте 8.8.3.5, вызывается с использованием массива дискретных отсчетов изображения recPicture, положения яркости (xCb, yCb), ширины блока кодирования nCbW, высоты блока кодирования nCbH, переменной edgeType, переменной cIdx и массив edgeFlags в качестве входных данных и массив (nCbW)x(nCbH) bS в качестве выходных данных.
7. Процесс фильтрации границ для одного направления вызывается для блока кодирования, как указано в пункте 8.8.3.6, с переменной edgeType, переменной cIdx, восстановленным изображением до устранения блочности recPicture, местоположением (xCb, yCb), шириной блока кодирования nCbW. , высота блока кодирования nCbH и массивы bS, maxFilterLengthPs и maxFilterLengthQs в качестве входных данных и модифицированное восстановленное изображение recPicture в качестве выходных данных.
8.8.3.3 Процесс выведения границы блока преобразования
Входные данные для этого процесса являются следующими:
местоположение (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета текущего изображения,
переменная nCbW, определяющая ширину текущего блока кодирования,
переменная nCbH, определяющая высоту текущего блока кодирования,
переменная cIdx, определяющая компонент цвета текущего блока кодирования,
переменная filterEdgeFlag,
двумерный (nCbW)x(nCbH) массив edgeFlags,
двумерные массивы (nCbW)x(nCbH) maxFilterLengthQs и maxFilterLengthPs,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край.
Результатами этого процесса являются:
модифицированный двумерный (nCbW)x(nCbH) массив edgeFlags,
модифицированные двумерные массивы (nCbW)x(nCbH) maxFilterLengthQs, maxFilterLengthPs.
В зависимости от типа edgeType массивы edgeFlags, maxFilterLengthPs и maxFilterLengthQs получаются следующим образом:
Переменная gridSize устанавливается следующим образом:
gridSize=cIdx== 0 ? 4 : 8 (8-1024)
Если edgeType равен EDGE_VER, применяется следующее:
Переменная numEdges устанавливается равной Max(1, nCbW/gridSize).
Для xEdge=0..numEdges - 1 и y=0..nCbH - 1 применимо следующее:
Горизонтальное положение x внутри текущего блока кодирования устанавливается равным xEdge * gridSize.
Значение edgeFlags[ x ][ y ] выводится следующим образом:
Если pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1 и (xCb+x) равен PpsVirtualBoundariesPosX[ n ] для любого n=0..pps_num_ver_virtual_boundaries - 1, edgeFlags[ x ][ y ] устанавливается равным 0.
В противном случае, если x равно 0, edgeFlags[ x ][ y ] устанавливается равным filterEdgeFlag.
В противном случае, если местоположение (xCb+x , yCb+y) находится на краю блока преобразования, edgeFlags[ x ][ y ] устанавливается равным 1.
Когда edgeFlags[ x ][ y ] равен 1, применяется следующее:
Если cIdx равен 0, применяется следующее:
Значение maxFilterLengthQs[ x ][ y ] выводится следующим образом:
Если ширина в отсчетах яркости блока преобразования в положении яркости (xCb+x, yCb+y) равна или меньше 4 или ширина в отсчетах яркости блока преобразования в местоположении яркости (xCb+x - 1, yCb+y) равно или меньше 4, maxFilterLengthQs[ x ][ y ] устанавливается равным 1.
В противном случае, если ширина в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x, yCb+y) равна или больше 32, maxFilterLengthQs[ x ][ y ] устанавливается равным 7.
В противном случае maxFilterLengthQs[ x ][ y ] устанавливается равным 3.
Значение maxFilterLengthPs[ x ][ y ] выводится следующим образом:
Если ширина в отсчетах яркости блока преобразования в положении яркости (xCb+x, yCb+y) равна или меньше 4 или ширина в отсчетах яркости блока преобразования в местоположении яркости (xCb+x - 1, yCb+y) равно или меньше 4 , maxFilterLengthPs[ x ][ y ] устанавливается равным 1.
В противном случае, если ширина в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x - 1, yCb+y) равна или превышает 32, maxFilterLengthPs[ x ][ y ] устанавливается равным 7.
В противном случае maxFilterLengthPs[ x ][ y ] устанавливается равным 3.
В противном случае (cIdx не равен 0) значения maxFilterLengthPs[x][y] и maxFilterLengthQs[x][y] получаются следующим образом:
Если ширина в дискретных отсчетах цветности блока преобразования в расположении цветности (xCb+x, yCb+y) и ширина в расположении цветности (xCb+x - 1, yCb+y) равны или больше 8, maxFilterLengthPs[ x ][ y ] и maxFilterLengthQs[ x ][ y ] устанавливаются равными 3.
В противном случае maxFilterLengthPs[x][y] и maxFilterLengthQs[x][y] устанавливаются равными 1.
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
Переменная numEdges устанавливается равной Max(1, nCbH/gridSize).
Для yEdge=0..numEdges - 1 и x=0..nCbW - 1 применимо следующее:
Вертикальное положение y внутри текущего блока кодирования устанавливается равным yEdge * gridSize.
Значение edgeFlags[ x ][ y ] выводится следующим образом:
Если pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1 и (yCb+y) равен PpsVirtualBoundariesPosY[ n ] для любого n=0..pps_num_hor_virtual_boundaries - 1, edgeFlags[ x ][ y ] устанавливается равным 0.
В противном случае, если y равно 0, edgeFlags[ x ][ y ] устанавливается равным filterEdgeFlag.
В противном случае, если местоположение (xCb+x , yCb+y) находится на краю блока преобразования, edgeFlags[ x ][ y ] устанавливается равным 1.
Когда edgeFlags[ x ][ y ] равен 1, применяется следующее:
Если cIdx равен 0, применяется следующее:
Значение maxFilterLengthQs[ x ][ y ] выводится следующим образом:
Если высота в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x, yCb+y) равна или меньше 4 или высота в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x, yCb+y - 1) равно или меньше 4, maxFilterLengthQs[ x ][ y ] устанавливается равным 1.
В противном случае, если высота в дискретных отсчетах яркости блока преобразования в расположении яркости (xCb+x, yCb+y) равна или больше 32, maxFilterLengthQs[ x ][ y ] устанавливается равным 7.
В противном случае maxFilterLengthQs[ x ][ y ] устанавливается равным 3.
Значение maxFilterLengthPs[ x ][ y ] выводится следующим образом:
Если высота в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x, yCb+y) равна или меньше 4 или высота в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x, yCb+y - 1) равно или меньше 4, maxFilterLengthPs[ x ][ y ] устанавливается равным 1.
В противном случае, если высота в дискретных отсчетах яркости блока преобразования в местоположении яркости (xCb+x, yCb+y - 1) равна или больше 32, maxFilterLengthPs[ x ][ y ] устанавливается равным 7.
В противном случае maxFilterLengthPs[ x ][ y ] устанавливается равным 3.
В противном случае (cIdx не равен 0) значения maxFilterLengthPs[x][y] и maxFilterLengthQs[x][y] получаются следующим образом:
Если выполняются все следующие условия, maxFilterLengthPs[ x ][ y ] и maxFilterLengthQs[ x ][ y ] устанавливаются равными 3:
Высота в дискретных отсчетах цветности блока преобразования в расположении цветности (xCb+x, yCb+y) и высота в расположении цветности (xCb+x, yCb+y - 1) равны или больше 8.
(yCb+y) % CtbHeightC больше 0, т. е. горизонтальный край не перекрывается с верхней границей цветности CTB.
В противном случае maxFilterLengthPs[x][y] и maxFilterLengthQs[x][y] устанавливаются равными 1.
8.8.3.4 Процесс выведения границы подблока кодирования
Входные данные для этого процесса являются следующими:
местоположение (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета текущего изображения,
переменная nCbW, определяющая ширину текущего блока кодирования,
переменная nCbH, определяющая высоту текущего блока кодирования,
двумерный (nCbW)x(nCbH) массив edgeFlags,
двумерные массивы (nCbW)x(nCbH) maxFilterLengthQs и maxFilterLengthPs,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край.
Результатами этого процесса являются:
модифицированный двумерный (nCbW)x(nCbH) массив edgeFlags,
модифицированные двумерные массивы (nCbW)x(nCbH) maxFilterLengthQs и maxFilterLengthPs.
Количество субблоков кодирования в горизонтальном направлении numSbX и в вертикальном направлении numSbY получают следующим образом:
Если inter_affine_flag[xCb][yCb] равен 1 или merge_subblock_flag[xCb][yCb] равен 1, numSbX и numSbY устанавливаются равными NumSbX[xCb][yCb] и NumSbY[xCb][yCb] соответственно.
В противном случае numSbX и numSbY оба устанавливаются равными 1.
В зависимости от значения edgeType применяется следующее:
Если edgeType равен EDGE_VER, применяется следующее:
Переменная sbW устанавливается равной Max(8, nCbW/numSbX).
Массив edgeTbFlags устанавливается равным edgeFlags.
Для xEdge=0..min((nCbW/8) - 1, numSbX - 1), y=0..nCbH - 1:
Горизонтальное положение x внутри текущего блока кодирования устанавливается равным xEdge *sbW.
Значение edgeFlags[ x ][ y ] выводится следующим образом:
Если pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1, а x равен PpsVirtualBoundariesPosX[n] для любого n=0..pps_num_ver_virtual_boundaries - 1, применяется следующее:
edgeFlags[x][y]=0 (8 1025)
Иначе применяется следующее:
edgeFlags[x][y]=1 (8 1026)
Когда edgeFlags[x][y] равен 1, значения maxFilterLengthPs[x][y] и maxFilterLengthQs[x][y] изменяются следующим образом:
Если x равно 0, применяется следующее:
Когда numSbX больше 1, применяется следующее:
maxFilterLengthQs[x][y]=Min(5, maxFilterLengthQs[x][y]) (8 1027)
Когда inter_affine_flag[ xCb - 1 ][ yCb ] равен 1 или merge_subblock_flag [ xCb - 1 ][ yCb ] равен 1, применяется следующее:
maxFilterLengthPs[x][y]=Min(5, maxFilterLengthPs[x][y]) (8 1028)
В противном случае, если edgeTbFlags[ x ][ y ] равен 1, применяется следующее:
maxFilterLengthPs[x][y]=Min(5, maxFilterLengthPs[x][y]) (8 1029)
maxFilterLengthQs[x][y]=Min(5, maxFilterLengthQs[x][y]) (8 1030)
В противном случае, если выполняется одно или более из следующих условий:
(x+4) больше или равно nCbW,
edgeTbFlags[ x - 4 ][ y ] равно 1,
edgeTbFlags[ x+4 ][ y ] равно 1,
применяется следующее:
maxFilterLengthPs[x][y]=1 (8 1031)
maxFilterLengthQs[x][y]=1 (8 1032)
В противном случае, если выполняется одно или более из следующих условий:
xEdge равен 1,
xEdge равно (nCbW/8) - 1,
edgeTbFlags[ x - sbW ][ y ] равно 1,
edgeTbFlags[ x+sbW ][ y ] равно 1,
применяется следующее:
maxFilterLengthPs[x][y]=2 (8 1033)
maxFilterLengthQs[x][y]=2 (8 1034)
Иначе применяется следующее:
maxFilterLengthPs[x][y]=3 (8 1035)
maxFilterLengthQs[x][y]=3 (8 1036)
В противном случае, если edgeType равен EDGE_HOR, применяется следующее:
Переменная sbH устанавливается равной Max(8, nCbH/numSbY).
Массив edgeTbFlags устанавливается равным edgeFlags.
Для yEdge=0..min((nCbH/8) - 1, numSbY - 1), x=0..nCbW - 1:
Вертикальное положение y внутри текущего блока кодирования устанавливается равным yEdge *sbH.
Значение edgeFlags[ x ][ y ] выводится следующим образом:
Если pps_loop_filter_across_virtual_boundaries_disabled_flag равен 1, а y равен PpsVirtualBoundariesPosY[n] для любого n=0..pps_num_hor_virtual_boundaries - 1, применяется следующее:
edgeFlags[x][y]=0 (8 1037)
Иначе применяется следующее:
edgeFlags[x][y]=1 (8 1038)
Когда edgeFlags[x][y] равен 1, значения maxFilterLengthPs[x][y] и maxFilterLengthQs[x][y] изменяются следующим образом:
Если y равно 0, а edgeFlags[ x ][ y ] равно 1, применяется следующее:
Когда numSbY больше 1, применяется следующее:
maxFilterLengthQs[x][y]=Min(5, maxFilterLengthQs[x][y]) (8 1039)
Когда inter_affine_flag[xCb][yCb-1] равен 1 или merge_subblock_flag[xCb][yCb-1] равен 1, применяется следующее:
maxFilterLengthPs[x][y]=Min(5, maxFilterLengthPs[x][y]) (8 1040)
В противном случае, если edgeTbFlags[ x ][ y ] равен 1, применяется следующее:
maxFilterLengthPs[x][y]=Min(5, maxFilterLengthPs[x][y]) (8 1041)
maxFilterLengthQs[x][y]=Min(5, maxFilterLengthQs[x][y]) (8 1042)
В противном случае, если выполняется одно или более из следующих условий:
(y+4) больше или равно nCbH,
edgeTbFlags[x][y-4] равно 1,
edgeTbFlags[x][y+4] равно 1,
применяется следующее:
maxFilterLengthPs[x][y]=1 (8 1045)
maxFilterLengthQs[x][y]=1 (8 1046)
В противном случае, если выполняется одно или более из следующих условий:
yEdge равно 1,
yEdge равно (nCbH/8) - 1,
edgeTbFlags[x][y-sbH] равен 1,
edgeTbFlags[x][y+sbH] равен 1,
применяется следующее:
maxFilterLengthPs[x][y]=2 (8 1043)
maxFilterLengthQs[x][y]=2 (8 1044)
Иначе применяется следующее:
maxFilterLengthPs[x][y]=3 (8 1047)
maxFilterLengthQs[x][y]=3 (8 1048)
8.8.3.5 Процесс выведения интенсивности фильтрации границ
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображений recPicture,
местоположение (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета текущего изображения,
переменная nCbW, определяющая ширину текущего блока кодирования,
переменная nCbH, определяющая высоту текущего блока кодирования,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменная cIdx, определяющая компонент цвета текущего блока кодирования,
двумерный (nCbW)x(nCbH) массив edgeFlags.
Результатом этого процесса является двумерный (nCbW)x(nCbH) массив bS, определяющий интенсивность фильтрации границ.
Переменные xDi, yDj, xN и yN получаются следующим образом:
Переменная gridSize устанавливается следующим образом:
gridSize=cIdx== 0 ? 4 : 8 (8-1049)
Если edgeType равен EDGE_VER,
xDi=(i * размер сетки) (8 1050)
yDj=cIdx== 0 ? (j << 2) : (j << 1) (8 1051)
xN устанавливается равным Max(0, (nCbW/gridSize) - 1) (8 1052)
yN=cIdx== 0 ? (nCbH/4) - 1 : (nCbH/2) - 1 (8 1053)
В противном случае (edgeType равен EDGE_HOR),
xDi=cIdx== 0 ? (i << 2) : (я << 1) (8 1054)
yDj=(j * размер сетки) (8 1055)
xN=cIdx== 0 ? (nCbW/4) - 1 : (nCbW/2) - 1 (8 1056)
yN=Max(0, (nCbH/размер сетки) - 1) (8 1057)
Для xDi с i=0..xN и yDj с j=0..yN применимо следующее:
Если edgeFlags[xDi][yDj] равен 0, переменная bS[xDi][yDj] устанавливается равной 0.
Иначе применяется следующее:
Значения дискретных отсчетов p0 и q0 получаются следующим образом:
Если edgeType равен EDGE_VER, p0 устанавливается равным recPicture[ xCb+xDi - 1 ][ yCb+yDj ], а q0 устанавливается равным recPicture [ xCb+xDi ][ yCb+yDj ].
В противном случае (edgeType равен EDGE_HOR), p0 устанавливается равным recPicture[ xCb+xDi ][ yCb+yDj - 1 ], а q0 устанавливается равным recPicture [ xCb+xDi ][ yCb+yDj ].
Переменная bS[ xDi ][ yDj ] выводится следующим образом:
Если cIdx равен 0 и оба дискретных отсчета p0 и q0 находятся в блоке кодирования с intra_bdpcm_flag, равным 1, bS[xDi][yDj] устанавливается равным 0.
В противном случае, если дискретный отсчет p0 или q0 находится в блоке кодирования единичные блоки кодирования, кодированной в режиме внутреннего предсказания, bS[xDi][yDj] устанавливается равным 2.
В противном случае, если край блоки является краем блока преобразования и дискретный отсчет p0 или q0 находится в блоке кодирования с ciip_flag, равным 1, bS[xDi][yDj] устанавливается равным 2.
В противном случае, если край блоки является краем блока преобразования и дискретный отсчет p0 или q0 находится в блоке преобразования, который содержит один или более ненулевых уровней коэффициента преобразования, bS[ xDi ][ yDj ] устанавливается равным 1.
В противном случае, если край блоки является краем блока преобразования, cIdx больше 0, а дискретный отсчет p0 или q0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, bS[xDi][yDj] устанавливается равным 1.
В противном случае, если режим предсказания подблока кодирования, содержащего дискретный отсчет p0, отличается от режима предсказания подблока кодирования, содержащего дискретный отсчет q0 (т. е. один из подблоков кодирования кодируется в режиме предсказания IBC, а другой кодируется в режиме межкадрового предсказания), bS[ xDi ][ yDj ] устанавливается равным 1.
В противном случае, если cIdx равен 0 и выполняется одно или более из следующих условий, bS[ xDi ][ yDj ] устанавливается равным 1:
Подблок кодирования, содержащий дискретный отсчет p0, и подблок кодирования, содержащий дискретный отсчет q0, оба кодируются в режиме предсказания IBC, и абсолютная разность между горизонтальной или вертикальной составляющей блочных векторов, используемых при предсказании двух подблоков кодирования, больше или равно 8 в единицах 1/16 дискретных отсчетов яркости.
Для предсказания подблока кодирования, содержащего дискретный отсчет p0, используются другие опорные изображения или другое количество векторов движения, чем для предсказания подблока кодирования, содержащего дискретный отсчет q0.
ПРИМЕЧАНИЕ 1. - Определение того, являются ли опорные изображения (снимки), используемые для двух подблоков кодирования, одинаковыми или разными, основано только на том, на какие изображения ссылаются, независимо от того, сформировано ли предсказание с использованием индекса в списке опорных изображений 0 или индекса в список 1 опорных изображений, и независимо от того, отличается ли позиция индекса в списке опорных изображений.
ПРИМЕЧАНИЕ 2. - Количество векторов движения, которые используются для предсказания подблока кодирования с покрытием верхнего левого дискретного отсчета (xSb, ySb), равно PredFlagL0[xSb][ySb] + PredFlagL1[xSb][ySb].
Один вектор движения используется для предсказания подблока кодирования, содержащего дискретный отсчет p0, и один вектор движения используется для предсказания подблока кодирования, содержащего дискретный отсчет q0, и абсолютная разность между горизонтальным или вертикальным компонентом используемых векторов движения больше или равна до 8 в единицах 1/16 дискретных отсчетов яркости.
Два вектора движения и два разных опорных изображения используются для предсказания подблока кодирования, содержащего отсчет p0, два вектора движения для тех же двух опорных изображений используются для предсказания подблока кодирования, содержащего отсчет q0, и абсолютной разности между горизонтальной или вертикальной составляющей из двух векторов движения, используемых при предсказании двух подблоков кодирования для одного и того же опорного изображения, больше или равно 8 в единицах 1/16 дискретных отсчетов яркости.
Два вектора движения для одного и того же опорного изображения используются для предсказания подблока кодирования, содержащего дискретный отсчет p0, два вектора движения для одного и того же опорного изображения используются для предсказания подблока кодирования, содержащего дискретный отсчет q0, и выполняются оба следующих условия:
Абсолютная разница между горизонтальным или вертикальным компонентом векторов движения списка 0, используемых в предсказании двух подблоков кодирования, больше или равна 8 в 1/16 отсчетах яркости, или абсолютная разница между горизонтальным или вертикальным компонентом списка 1 векторов движения, используемых при предсказании двух подблоков кодирования, больше или равно 8 в единицах 1/16 дискретных отсчетов яркости.
Абсолютная разность между горизонтальной или вертикальной составляющей вектора движения списка 0, используемого при предсказании подблока кодирования, содержащего дискретный отсчет p0, и вектора движения списка 1, используемого при предсказании подблока кодирования, содержащего дискретный отсчет q0, больше или равна 8 в единицах 1/16 дискретных отсчетов яркости, или абсолютная разница между горизонтальным или вертикальным компонентом вектора движения списка 1, используемого при прогнозировании подблока кодирования, содержащего отсчет p0, и вектора движения списка 0, используемого при прогнозировании кодирования подблок, содержащий дискртеный отсчет q0, больше или равен 8 в единицах 1/16 дискретных отсчетов яркости.
В противном случае переменная bS[ xDi ][ yDj ] устанавливается равной 0.
8.8.3.6 Процесс фильтрации краев для одного направления
Входные данные для этого процесса являются следующими:
переменная edgeType, указывающая, обрабатываются ли в данный момент вертикальные края (EDGE_VER) или горизонтальные края (EDGE_HOR),
переменная cIdx, указывающая текущий компонент цвета,
восстановленное изображение перед блочности устранением recPicture,
местоположение (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета текущего изображения,
переменная nCbW, определяющая ширину текущего блока кодирования,
переменная nCbH, определяющая высоту текущего блока кодирования,
массив bS, задающий прочность границы,
массивы maxFilterLengthPs и maxFilterLengthQs.
Результатом этого процесса является модифицированное восстановленное изображение после устранения блочности recPicture.
Для процесса фильтрации краев применяется следующее:
Переменная gridSize устанавливается следующим образом:
gridSize=cIdx== 0 ? 4 : 8 (8-1058)
Переменные subW, subH, xN, yN выводятся следующим образом:
subW=cIdx== 0 ? 1 : SubWidthC (8 1059)
subH=cIdx== 0 ? 1 : SubHeightC (8 1060)
xN=edgeType== EDGE_VER ? Макс(0, (nCbW/размер сетки) - 1) : (nCbW/4/subW) - 1 (8 1061)
yN=edgeType== EDGE_VER ? (nCbH/4/subH) - 1 : Max(0, (nCbH/размер сетки) - 1) (8 1062)
Переменные xDk при k=0..xN и yDm при m=0..yN получаются следующим образом:
xDk=edgeType== EDGE_VER ? (k *размер сетки) : (k << (2/subW)) (8 1063)
yDm=edgeType== EDGE_VER ? (m << (2/subH)): (m * размер сетки) (8 1064)
Для xDk с k=0..xN и yDm с m=0..yN применимо следующее:
Когда bS[ xDk ][ yDm ] больше 0, применяются следующие упорядоченные этапы:
Если cIdx равен 0, процесс фильтрации краев в блоке кодирования яркости текущей единичные блоки кодирования состоит из следующих упорядоченных этапов:
1. Процесс принятия решения в отношении краев блока яркости, как указано в пункте 8.8.3.6.1, вызывается с использованием массива дискретных отсчетов изображения яркости recPicture, местоположения блока кодирования яркости (xCb, yCb), местоположения блока яркости (xBl, yBl) устанавливается равным (xDk, yDm), направление края edgeType, сила фильтрации границы bS[ xDk ][ yDm ], максимальная длина фильтра maxFilterLengthP устанавливается равной maxFilterLengthPs[ xDk ][ yDm ] и maxFilterLengthQ устанавливается равной maxFilterLengthQs[ xDk ] [ yDm ] в качестве входных данных, а решения dE, dEp и dEq, измененные максимальные длины фильтра maxFilterLengthP и maxFilterLengthQ и переменная tC в качестве выходных данных.
2. Процесс фильтрации краев блоков, как указано в пункте 8.8.3.6.2, вызывается с массивом дискретных отсчетов изображения яркости recPicture, расположением блока кодирования яркости (xCb, yCb), положением яркости блока (xBl, yBl), установленными равный (xDk, yDm), edgeType направления края, решения dE, dEp и dEq, максимальные длины фильтра maxFilterLengthP и maxFilterLengthQ и переменная tC в качестве входных данных, и модифицированный массив дискретных отсчетов изображения яркости recPicture в качестве выходных данных.
В противном случае (cIdx не равен 0) процесс фильтрации краев в блоке кодирования цветности текущей единичные блоки кодирования, заданной cIdx, состоит из следующих упорядоченных шагов:
1. Переменная cQpPicOffset выводится следующим образом:
cQpPicOffset=cIdx== 1 ? pps_cb_qp_offset : pps_cr_qp_offset (8 1065)
2. Процесс принятия решения в отношении краев блока цветности, как указано в пункте 8.8.3.6.3, вызывается с использованием массива дискретных отсчетов изображения цветности recPicture, местоположения блока кодирования цветности (xCb, yCb), местоположения блока цветности (xBl, yBl). установить равным (xDk, yDm), направление края edgeType, переменную cIdx, переменную cQpPicOffset, интенсивность фильтрации границ bS[xDk][yDm] и переменную maxFilterLengthCbCr установить равной maxFilterLengthPs[xDk][yDm] в качестве входных данных, и измененная переменная maxFilterLengthCbCr, и переменная tC в качестве результатов.
3. Когда maxFilterLengthCbCr больше 0, запускается процесс фильтрации краев блоков цветности, как указано в пункте 8.8.3.6.4, с массивом дискретных отсчетов изображения цветности recPicture, расположением блока кодирования цветности (xCb, yCb), положением цветности блок (xBl, yBl), установленный равным (xDk, yDm), направление края edgeType, переменная maxFilterLengthCbCr и переменная tC в качестве входных данных, и модифицированный массив дискретных отсчетов изображения цветности recPicture в качестве выходных данных.
8.8.3.6.1 Процесс принятия решения в отношении краев блока яркости
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображений recPicture,
местоположение (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета текущего изображения,
местоположение (xBl, yBl), определяющее верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета текущего блока кодирования,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменная bS, определяющая интенсивность фильтрации границ,
переменная maxFilterLengthP, указывающая максимальную длину фильтра,
переменная maxFilterLengthQ, определяющая максимальную длину фильтра.
Результатами этого процесса являются:
переменные dE, dEp и dEq, содержащие решения,
измененные переменные длины фильтра maxFilterLengthP и maxFilterLengthQ,
переменная тс.
Значения дискретных отсчетов pi,k и qj,k с i=0..maxFilterLengthP, j=0..maxFilterLengthQ и k=0 и 3 получаются следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
qj,k=recPictureL[ xCb+xBl+j ][ yCb+yBl+k ] (8 1066)
pi,k=recPictureL[ xCb+xBl - i - 1 ][ yCb+yBl+k ] (8 1067)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
qj,k=recPicture[ xCb+xBl+k ][ yCb+yBl+j ] (8 1068)
pi,k=recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ] (8 1069)
Переменная qpOffset выводится следующим образом:
Если значение sps_ladf_enabled_flag равно 1, применяется следующее:
Переменная lumaLevel восстановленного уровня яркости выводится следующим образом:
lumaLevel=((p0,0+p0,3+q0,0+q0,3) >> 2), (8 1070)
Переменная qpOffset устанавливается равной sps_ladf_lowest_interval_qp_offset и изменяется следующим образом:
для (i=0; i < sps_num_ladf_intervals_minus2+1; i++) { if (lumaLevel > SpsLadfIntervalLowerBound [ i+1 ]) qpOffset=sps_ladf_qp_offset [ i ] (8 1071) else break }
В противном случае qpOffset устанавливается равным 0.
Переменные QpQ и QpP устанавливаются равными значениям QpY единичных блоков кодирования, которые включают в себя блоки кодирования, содержащие дискретный отсчет q0,0 и p0,0 соответственно. //Здесь QpQ и QpP представляют значения QP яркости соответственно, чтобы различать два значения QP яркости, они будут представлены QpYQ и QpYP соответственно в части формулы изобртеения//
Переменная qP выводится следующим образом:
qP=((QpQ+QpP+1) >> 1) + qpOffset (8 1072)
Значение переменной β' определяется, как указано в Таблице 8 18, на основе параметра квантования Q, полученного следующим образом:
Q=Clip3(0, 63, qP + (slice_beta_offset_div2 << 1)) (8 1073)
где slice_beta_offset_div2 - значение синтаксического элемента slice_beta_offset_div2 для сегмента, содержащего дискртеный отсчет q0,0.
Переменная β выводится следующим образом:
β=β′ * (1 << (BitDepthY - 8)) (8 1074)
Значение переменной tC' определяется, как указано в таблице 8 18, на основе параметра квантования Q, полученного следующим образом:
Q=Clip3(0, 65, qP+2 * (bS - 1) + (slice_tc_offset_div2 << 1)) (8 1075)
где slice_tc_offset_div2 - значение синтаксического элемента slice_tc_offset_div2 для сегмента, содержащего дискртеный отсчет q0,0.
Переменная tC выводится следующим образом:
tC=BitDepthY < 10? (tC′ + 2) >> (10 - BitDepthY) : tC′ * (1 << (BitDepthY - 10)) (8 1076)
Применяются следующие упорядоченные этапы:
1. Переменные dp0, dp3, dq0 и dq3 получаются следующим образом:
dp0=Abs(p2,0 - 2 * p1,0+p0,0) (8 1077)
dp3=Abs(p2,3 - 2 * p1,3+p0,3) (8 1078)
dq0=Abs(q2,0 - 2 * q1,0+q0,0) (8 1079)
dq3=Abs(q2,3 - 2 * q1,3+q0,3) (8 1080)
2. Когда maxFilterLengthP и maxFilterLengthQ равны или больше 3, переменные sp0, sq0, spq0, sp3, sq3 и spq3 получаются следующим образом:
sp0=Abs(p3,0 - p0,0) (8 1081)
sq0=Abs(q0,0 - q3,0) (8 1082)
spq0=Abs(p0,0 - q0,0) (8 1083)
sp3=Abs(p3,3 - p0,3) (8 1084)
sq3=Abs(q0,3 - q3,3) (8 1085)
spq3=Abs(p0,3 - q0,3) (8 1086)
3. Переменные sidePisLargeBlk и sideQisLargeBlk устанавливаются равными 0.
4. Когда maxFilterLengthP больше 3, sidePisLargeBlk устанавливается равным 1:
5. Когда maxFilterLengthQ больше 3, sideQisLargeBlk устанавливается равным 1:
6. Когда edgeType равен EDGE_HOR и (yCb+yBl)% CtbSizeY равен 0, sidePisLargeBlk устанавливается равным 0.
7. Переменные dSam0 и dSam3 инициализируются равными 0.
8. Когда sidePisLargeBlk или sideQisLargeBlk больше 0, применяется следующее:
Переменные dp0L, dp3L получаются, а maxFilterLengthP изменяется следующим образом:
Если sidePisLargeBlk равно 1, применяется следующее:
dp0L=(dp0+Abs(p5,0 - 2 * p4,0+p3,0) + 1) >> 1 (8 1087)
dp3L=(dp3+Abs(p5,3 - 2 * p4,3+p3,3) + 1) >> 1 (8 1088)
Иначе применяется следующее:
dp0L=dp0 (8 1089)
dp3L=dp3 (8 1090)
maxFilterLengthP=3 (8 1091)
Переменные dq0L и dq3L получаются следующим образом:
Если sideQisLargeBlk равно 1, применяется следующее:
dq0L=(dq0+Abs(q5,0 - 2 * q4,0+q3,0) + 1) >> 1 (8 1092)
dq3L=(dq3+Abs(q5,3 - 2 * q4,3+q3,3) + 1) >> 1 (8 1093)
Иначе применяется следующее:
dq0L=dq0 (8 1094)
dq3L=dq3 (8 1095)
Переменные dpq0L, dpq3L и dL получаются следующим образом:
dpq0L=dp0L+dq0L (8 1096)
dpq3L=dp3L+dq3L (8 1097)
dL=dpq0L+dpq3L (8 1098)
Когда dL меньше β, применяются следующие упорядоченные этапы:
Переменная dpq устанавливается равной 2 * dpq0L.
Переменная sp устанавливается равной sp0, переменная sq устанавливается равной sq0, а переменная spq устанавливается равной spq0.
Переменные p0 p3 qo и q3 сначала инициализируются равными 0, а затем изменяются в соответствии с параметрами sidePisLargeBlk и sideQisLargeBlk следующим образом:
Когда sidePisLargeBlk равно 1, применяется следующее:
р3=р3,0 (8 1099)
p0=pmaxFilterLengthP,0 (8 1100)
Когда sideQisLargeBlk равно 1, применяется следующее:
q3=q3,0 (8 1101)
q0=qmaxFilterLengthQ,0 (8 1102)
Для местоположения дискретного отсчета (xCb+xBl, yCb+yBl) процесс принятия решения в отношении дискретного отсчета яркости, как указано в пункте 8.8.3.6.5, вызывается с выборочными значениями p0, p3, q0, q3, переменными dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β и tC в качестве входных данных, а выход назначается решению dSam0.
Переменная dpq устанавливается равной 2 * dpq3L.
Переменная sp устанавливается равной sp3, переменная sq устанавливается равной sq3, а переменная spq устанавливается равной spq3.
Переменные p0 p3 q0 и q3 сначала инициализируются равными 0, а затем изменяются в соответствии с параметрами sidePisLargeBlk и sideQisLargeBlk следующим образом:
Когда sidePisLargeBlk равно 1, применяется следующее:
р3=р3,3 (8 1103)
p0=pmaxFilterLengthP,3 (8 1104)
Когда sideQisLargeBlk равно 1, применяется следующее:
q3=q3,3 (8 1105)
q0=qmaxFilterLengthQ,3 (8 1106)
Когда edgeType равен EDGE_VER для местоположения дискретного отсчета (xCb+xBl, yCb+yBl+3) или когда edgeType равен EDGE_HOR для местоположения дискретного отсчета (xCb+xBl+3, yCb+yBl), процесс принятия решения в отношении яркости Дискретный отсчет, как указано в пункте 8.8.3.6.5, вызывается со значениями дискретного отсчета p0, p3, q0, q3, переменными dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β и tC в качестве входных данных, а выход назначается решение dSam3.
9. Переменные dE, dEp и dEq получаются следующим образом:
Если dSam0 и dSam3 равны 1, переменная dE устанавливается равной 3, dEp устанавливается равной 1, а dEq устанавливается равной 1.
В противном случае применяются следующие упорядоченные этапы:
Переменные dpq0, dpq3, dp, dq и d получаются следующим образом:
dpq0=dp0+dq0 (8 1107)
dpq3=dp3+dq3 (8 1108)
dp=dp0+dp3 (8 1109)
dq=dq0+dq3 (8 1110)
d=dpq0+dpq3 (8 1111)
Переменные dE, dEp, dEq, sidePisLargeBlk и sideQisLargeBlk устанавливаются равными 0.
Когда d меньше β, а maxFilterLengthP и maxFilterLengthQ больше 2, применяются следующие упорядоченные этапы:
Переменная dpq устанавливается равной 2 * dpq0.
Переменная sp устанавливается равной sp0, переменная sq устанавливается равной sq0, а переменная spq устанавливается равной spq0.
Для местоположения дискретного отсчета (xCb+xBl, yCb+yBl) процесс принятия решения в отношении дискретного отсчета яркости, как указано в пункте 8.8.3.6.5, вызывается с переменными p0, p3, q0, q3, установленными равными 0, переменные dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β и tC в качестве входных данных, а выход назначается решению dSam0.
Переменная dpq устанавливается равной 2 * dpq3.
Переменная sp устанавливается равной sp3, переменная sq устанавливается равной sq3, а переменная spq устанавливается равной spq3.
Когда edgeType равен EDGE_VER для местоположения дискретного отсчета (xCb+xBl, yCb+yBl+3) или когда edgeType равен EDGE_HOR для местоположения дискретного отсчета (xCb+xBl+3, yCb+yBl), процесс принятия решения в отношении дискретного отсчета как указано в пункте 8.8.3.6.5, вызывается с переменными p0, p3, q0, q3, установленными равными 0, переменными dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β и tC в качестве входов и выходом назначается решение dSam3.
Когда d меньше β, применяются следующие упорядоченные этапы:
Переменная dE устанавливается равной 1.
Когда dSam0 равно 1, а dSam3 равно 1, переменная dE устанавливается равной 2.
Когда maxFilterLengthP больше 1, maxFilterLengthQ больше 1, а dp меньше (β + (β >> 1)) >> 3, переменная dEp устанавливается равной 1.
Когда maxFilterLengthP больше 1, maxFilterLengthQ больше 1, а dq меньше (β + (β >> 1)) >> 3, переменная dEq устанавливается равной 1.
Таблица 8.18 - Выведение пороговых переменных β' и tC' из входных данных Q | |||||||||||||||||
Q | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
β′ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 |
tC′ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Q | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
β′ | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 | 22 | 24 | 26 | 28 |
tC′ | 0 | 3 | 4 | 4 | 4 | 4 | 5 | 5 | 5 | 5 | 7 | 7 | 8 | 9 | 10 | 10 | 11 |
Q | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
β′ | 30 | 32 | 34 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 52 | 54 | 56 | 58 | 60 | 62 |
tC′ | 13 | 14 | 15 | 17 | 19 | 21 | 24 | 25 | 29 | 33 | 36 | 41 | 45 | 51 | 57 | 64 | 71 |
Q | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | ||
β′ | 64 | 66 | 68 | 70 | 72 | 74 | 76 | 78 | 80 | 82 | 84 | 86 | 88 | - | - | ||
tC′ | 80 | 89 | 100 | 112 | 125 | 141 | 157 | 177 | 198 | 222 | 250 | 280 | 314 | 352 | 395 |
8.8.3.6.2 Процесс фильтрации краев блоков яркости
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображений recPicture,
местоположение (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования относительно верхнего левого дискретного отсчета текущего изображения,
местоположение (xBl, yBl), определяющее верхний левый дискретный отсчет текущего блока относительно верхнего левого дискретного отсчета текущего блока кодирования,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменные dE, dEp и dEq, содержащие решения,
переменные maxFilterLengthP и maxFilterLengthQ, содержащие максимальную длину фильтра,
переменная тс.
Результатом этого процесса является измененный массив дискретных отсчетов изображений recPicture.
В зависимости от значения edgeType применяется следующее:
Если edgeType равен EDGE_VER, применяются следующие упорядоченные этапы:
1. Значения дискретных отсчетов pi,k и qi,k с i=0..maxFilterLengthP, j=0..maxFilterLengthQ и k=0..3 получаются следующим образом:
qj,k=recPictureL[ xCb+xBl+j ][ yCb+yBl+k ] (8 1112)
pi,k=recPictureL[ xCb+xBl - i - 1 ][ yCb+yBl+k ] (8 1113)
2. Когда dE не равно 0 и dE не равно 3, для каждого местоположения дискретного отсчета (xCb+xBl, yCb+yBl+k), k=0..3, применяются следующие упорядоченные этапы:
Процесс фильтрации в отношении дискретного отсчета яркости с использованием коротких фильтров, как указано в пункте 8.8.3.6.6, вызывается с выборочными значениями pi,k, qj,k с i=0..maxFilterLengthP, местоположениями (xPi, yPi), установленными равными (xCb+xBl - i - 1, yCb+yBl+k) и (xQi, yQi) положим равными (xCb+xBl+j, yCb+yBl+k) при j=0..maxFilterLengthQ, решение dE, переменные dEp и dEq и переменная tC в качестве входных данных, и количество отфильтрованных дискретных отсчетов nDp и nDq с каждой стороны границы блока и значения отфильтрованных дискретных отсчетов pi′ и qj′ в качестве выходных данных.
Когда nDp больше 0, значения отфильтрованных дискретных отсчетов pi′ с i=0..nDp - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ]=pi' (8 1114)
Когда nDq больше 0, значения отфильтрованных дискретных отсчетов qj′ с j=0..nDq - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl+j ][ yCb+yBl+k ]=qj′ (8 1115)
3. Когда dE равно 3, для каждого местоположения дискретного отсчета (xCb+xBl, yCb+yBl+k), k=0..3, применяются следующие упорядоченные этапы:
Процесс фильтрации в отношении дискретного отсчета яркости с использованием длинных фильтров, как указано в пункте 8.8.3.6.7, вызывается со значениями дискретного отсчета pi,k, qj,k с i=0..maxFilterLengthP и j=0..maxFilterLengthQ, положениями (xPi, yPi) устанавливается равным (xCb+xBl - i - 1, yCb+yBl+k) с i=0..maxFilterLengthP - 1 и (xQj, yQj) устанавливается равным (xCb+xBl+j, yCb+yBl+k) с j=0..maxFilterLengthQ - 1, переменные maxFilterLengthP, maxFilterLengthQ и tC в качестве входных данных и значения отфильтрованных дискретных отсчетов pi′ и qj′ в качестве выходных данных.
Значения отфильтрованных дискретных отсчетов pi′ с i=0..maxFilterLengthP - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ]=pi' (8 1116)
Значения отфильтрованных дискретных отсчетов qj′ с j=0..maxFilterLengthQ - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl+j ][ yCb+yBl+k ]=qj′ (8 1117)
В противном случае (edgeType равен EDGE_HOR) применяются следующие упорядоченные этапы:
1. Значения дискретных отсчетов pi,k и qj,k с i=0..maxFilterLengthP, j=0..maxFilterLengthQ и k=0..3 получаются следующим образом:
qj,k=recPictureL[xCb+xBl+k][yCb+yBl+j] (8 1118)
pi,k=recPictureL[ xCb+xBl+k][yCb+yBl - i - 1 ] (8 1119)
2. Когда dE не равно 0 и dE не равно 3, для каждого местоположения дискретного отсчета (xCb+xBl+k, yCb+yBl), k=0..3, применяются следующие упорядоченные этапы:
a. Процесс фильтрации в отношении дискретного отсчета яркости с использованием коротких фильтров, как указано в пункте 8.8.3.6.6, вызывается с выборочными значениями pi,k, qj,k с i=0..maxFilterLengthP, местоположениями (xPi, yPi), установленными равными (xCb+xBl+k, yCb+yBl - i - 1) и (xQj, yQj) положим равными (xCb+xBl+k, yCb+yBl+j) при j=0..maxFilterLengthQ, решение dE, переменные dEp и dEq и переменная tC в качестве входных данных, и количество отфильтрованных дискретных отсчетов nDp и nDq с каждой стороны границы блока и значения отфильтрованных дискретных отсчетов pi′ и qj′ в качестве выходных данных.
b. Когда nDp больше 0, значения отфильтрованных дискретных отсчетов pi′ с i=0..nDp - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ]=pi' (8 1120)
c. Когда nDq больше 0, значения отфильтрованных дискретных отсчетов qj′ с j=0..nDq - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl+k ][ yCb+yBl+j ]=qj′ (8 1121)
3. Когда dE равно 3, для каждого местоположения дискретного отсчета (xCb+xBl+k, yCb+yBl), k=0..3, применяются следующие упорядоченные этапы:
a. Процесс фильтрации в отношении дискретного отсчета яркости с использованием длинных фильтров, как указано в пункте 8.8.3.6.7, вызывается со значениями дискретного отсчета pi,k, qj,k с i=0..maxFilterLengthP и j=0..maxFilterLengthQ, положениями (xPi, yPi) устанавливается равным (xCb+xBl+k, yCb+yBl - i - 1) с i=0..maxFilterLengthP - 1 и (xQj, yQj) устанавливается равным (xCb+xBl+k, yCb+yBl+j) с j=0..maxFilterLengthQ - 1, переменные maxFilterLengthP, maxFilterLengthQ и переменная tC в качестве входных данных и отфильтрованные значения дискретных отсчетов pi′ и qj′ в качестве выходных данных.
b. Значения отфильтрованных дискретных отсчетов pi′ с i=0..maxFilterLengthP - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ]=pi' (8 1122)
c. Значения отфильтрованных дискретных отсчетов qj′ с j=0..maxFilterLengthQ - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl+k ][ yCb+yBl+j ]=qj′ (8 1123)
8.8.3.6.3 Процесс принятия решения в отношении краев блока цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображения цветности recPicture,
местоположение цветности (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования цветности относительно верхнего левого дискретного отсчета цветности текущего изображения,
местоположение цветности (xBl, yBl), определяющее верхний левый дискретный отсчет текущего блока цветности относительно левой верхней дискретного отсчета текущего блока кодирования цветности,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменная cIdx, указывающая индекс компонента цвета,
переменная cQpPicOffset, указывающая смещение параметра квантования цветности на уровне изображения,
переменная bS, определяющая интенсивность фильтрации границ,
переменная maxFilterLengthCbCr.
Результатами этого процесса являются:
модифицированная переменная maxFilterLengthCbCr,
переменная тс.
Переменная maxK выводится следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
maxK=(SubHeightC== 1) ? 3 : 1 (8-1124)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
maxK=(SubWidthC== 1) ? 3 : 1 (8-1125)
Значения pi и qi при i=0.. maxFilterLengthCbCr и k=0.. maxK получаются следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
qi,k=recPicture[ xCb+xBl+i ][ yCb+yBl+k ] (8 1126)
pi,k=recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ] (8 1127)
subSampleC=SubHeightC (8 1128)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
qi,k=recPicture[ xCb+xBl+k ][ yCb+yBl+i ] (8 1129)
pi,k=recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ] (8 1130)
subSampleC=SubWidthC (8 1131)
Переменные QpQ и QpP устанавливаются равными значениям QpY единичных блоков кодирования, которые включают в себя блоки кодирования, содержащие дискретный отсчет q0,0 и p0,0 соответственно.
Переменная QpC выводится следующим образом:
qPi=Clip3(0, 63, ((QpQ+QpP+1) >> 1) + cQpPicOffset) (8 1132)
QpC=ChromaQpTable[ cIdx - 1 ][ qPi ] (8 1133)
ПРИМЕЧАНИЕ. - Переменная cQpPicOffset обеспечивает корректировку значения pps_cb_qp_offset или pps_cr_qp_offset в зависимости от того, является ли фильтруемый компонент цветности компонентом Cb или Cr. Однако, чтобы избежать необходимости изменять величину корректировки в изображении, процесс фильтрации не включает корректировку значения slice_cb_qp_offset или slice_cr_qp_offset, и (когда cu_chroma_qp_offset_enabled_flag равен 1) значения CuQpOffsetCb, CuQpOffsetCr или CuQpOffsetCbCr.
Значение переменной β' определяется, как указано в Таблице 8 18, на основе параметра квантования Q, полученного следующим образом:
Q=Clip3(0, 63, QpC + (slice_beta_offset_div2 << 1)) (8 1134)
где slice_beta_offset_div2 - значение синтаксического элемента slice_beta_offset_div2 для сегмента, содержащего дискртеный отсчет q0,0.
Переменная β выводится следующим образом:
β=β′ * (1 << (BitDepthC - 8)) (8 1135)
Значение переменной tC' определяется, как указано в таблице 8 18, на основе параметра квантования цветности Q, полученного следующим образом:
Q=Clip3(0, 65, QpC+2 * (bS - 1) + (slice_tc_offset_div2 << 1)) (8 1136)
где slice_tc_offset_div2 - значение синтаксического элемента slice_tc_offset_div2 для сегмента, содержащего дискртеный отсчет q0,0.
Переменная tC выводится следующим образом:
tC=(BitDepthC < 10) ? (tC′ + 2) >> (10 - BitDepthC) : tC′ * (1 << (BitDepthC - 8)) (8 1137)
Когда maxFilterLengthCbCr равен 1, а bS не равен 2, maxFilterLengthCbCr устанавливается равным 0.
Когда maxFilterLengthCbCr равен 3, применяются следующие упорядоченные этапы:
1. Переменные n1, dpq0, dpq1, dp, dq и d получаются следующим образом:
n1=(subSampleC== 2) ? 1 : 3 (8-1138)
dp0=Abs(p2,0 - 2 * p1,0+p0,0) (8 1139)
dp1=Abs(p2,n1 - 2 * p1,n1+p0,n1) (8 1140)
dq0=Abs(q2,0 - 2 * q1,0+q0,0) (8 1141)
dq1=Abs(q2,n1 - 2 * q1,n1+q0,n1) (8 1142)
dpq0=dp0+dq0 (8 1143)
dpq1=dp1+dq1 (8 1144)
dp=dp0+dp1 (8 1145)
dq=dq0+dq1 (8 1146)
d=dpq0+dpq1 (8 1147)
2. Переменные dSam0 и dSam1 устанавливаются равными 0.
3. Когда d меньше β, применяются следующие упорядоченные этапы:
Переменная dpq устанавливается равной 2 * dpq0.
Переменная dSam0 получается посредством запуска процесса принятия решения в отношении дискретного отсчета цветности, как указано в пункте 8.8.3.6.8 для местоположения дискретного отсчета (xCb+xBl, yCb+yBl) с выборочными значениями p0,0, p3,0, q0,0. , и q3,0, переменные dpq, β и tC в качестве входов, а выход присваивается решению dSam0.
Переменная dpq устанавливается равной 2 * dpq1.
Переменная dSam1 изменяется следующим образом:
Если edgeType равен EDGE_VER, для местоположения дискретного отсчета (xCb+xBl, yCb+yBl+n1), процесс принятия решения в отношении дискретного отсчета цветности, как указано в пункте 8.8.3.6.8, вызывается с выборочными значениями p0,n1, p3, n1, q0,n1 и q3,n1, переменные dpq, β и tC в качестве входов, а выход назначается решению dSam1.
В противном случае (edgeType равен EDGE_HOR) для местоположения дискретного отсчета (xCb+xBl+n1, yCb+yBl) процесс принятия решения в отношении дискретного отсчета цветности, как указано в пункте 8.8.3.6.8, вызывается с выборочными значениями p0,n1, p3,n1, q0,n1 и q3,n1, переменные dpq, β и tC в качестве входов, а выход назначается решению dSam1.
4. Переменная maxFilterLengthCbCr изменяется следующим образом:
Если dSam0 равно 1, а dSam1 равно 1, maxFilterLengthCbCr устанавливается равным 3.
В противном случае maxFilterLengthCbCr устанавливается равным 1.
Следует отметить, что, как показано в 8-1132 и 8 1133 раздела 8.8.3.6.3, при традиционном подходе QP яркости (например, qPi) выводится на основе среднего значения QP яркости двух соседних блоков (например, QpQ и QpP); затем QP цветности (например, QpC) получается из QP яркости (например, qPi) (с использованием одной LUT). Вариант осуществления настоящего раскрытия улучшен по сравнению с традиционным подходом, и подробности того, как выполняется процесс принятия решения в отношении края блока цветности, будут описаны ниже.
8.8.3.6.4 Процесс фильтрации краев блока цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображения цветности recPicture,
местоположение цветности (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования цветности относительно верхнего левого дискретного отсчета цветности текущего изображения,
местоположение цветности (xBl, yBl), определяющее верхний левый дискретный отсчет текущего блока цветности относительно левой верхней дискретного отсчета текущего блока кодирования цветности,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменная maxFilterLengthCbCr, содержащая максимальную длину фильтра цветности,
переменная тс.
Результатом этого процесса является модифицированный массив дискретных отсчетов изображения цветности recPicture.
Переменная maxK выводится следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
maxK=(SubHeightC== 1) ? 3 : 1 (8-1148)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
maxK=(SubWidthC== 1) ? 3 : 1 (8-1149)
Значения pi и qi при i=0..maxFilterLengthCbCr и k=0..maxK получаются следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
qi,k=recPicture[ xCb+xBl+i ][ yCb+yBl+k ] (8 1150)
pi,k=recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ] (8 1151)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
qi,k=recPicture[ xCb+xBl+k ][ yCb+yBl+i ] (8 1152)
pi,k=recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ] (8 1153)
В зависимости от значения edgeType применяется следующее:
Если edgeType равен EDGE_VER, для каждого местоположения дискретного отсчета (xCb+xBl, yCb+yBl+k), k=0..maxK, применяются следующие упорядоченные этапы:
1. Процесс фильтрации дискретного отсчета цветности, как указано в пункте 8.8.3.6.9, вызывается с помощью переменной maxFilterLengthCbCr, значений дискретного отсчета pi,k, qi,k с i=0..maxFilterLengthCbCr, местоположений (xCb+xBl - i - 1, yCb+yBl+k) и (xCb+xBl+i, yCb+yBl+k) с i=0..maxFilterLengthCbCr - 1, и переменная tC в качестве входных данных, и отфильтрованные значения дискретных отсчетов pi′ и qi′ с i=0..maxFilterLengthCbCr - 1 в качестве результатов.
2. Значения отфильтрованных дискретных отсчетов pi' и qi' с i=0..maxFilterLengthCbCr - 1 заменяют соответствующие дискретные отсчеты внутри массива дискретных отсчетов recPicture следующим образом:
recPicture[ xCb+xBl+i ][ yCb+yBl+k ]=qi′ (8 1154)
recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ]=pi' (8 1155)
В противном случае (edgeType равен EDGE_HOR) для каждого местоположения дискретного отсчета (xCb+xBl+k, yCb+yBl), k=0..maxK, применяются следующие упорядоченные этапы:
1. Процесс фильтрации дискретного отсчета цветности, как указано в пункте 8.8.3.6.9, вызывается с помощью переменной maxFilterLengthCbCr, значений дискретного отсчета pi,k, qi,k, i=0..maxFilterLengthCbCr, местоположений (xCb+xBl+k , yCb+yBl - i - 1) и (xCb+xBl+k, yCb+yBl+i), и переменную tC в качестве входных данных и отфильтрованные значения дискретных отсчетов pi′ и qi′ в качестве выходных данных.
2. Значения отфильтрованных дискретных отсчетов pi' и qi' заменяют соответствующие дискретные отсчеты в массиве дискретных отсчетов recPicture следующим образом:
recPicture [ xCb+xBl+k ][ yCb+yBl+i ]=qi ' (8 1156)
recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ]=pi' (8 1157)
Следует отметить, что процесс фильтрации края блока цветности на основе порогового параметра (например, переменной tC) можно найти в таких документах, как приведенный выше раздел 8.8.3.6.4 спецификации VVC, и он не будет повторяться в последующий.
8.8.3.6.5 Процесс принятия решения в отношении дискретного отсчета яркости
Входные данные для этого процесса являются следующими:
значения дискретных отсчетов p0, p3, q0 и q3,
переменные dpq, sp, sq, spq, sidePisLargeBlk, sideQisLargeBlk, β и tC.
Результом этого процесса является переменная dSam, содержащая решение.
Переменные sp и sq изменяются следующим образом:
Когда sidePisLargeBlk равно 1, применяется следующее:
sp=(sp+Abs(p3 - p0) + 1) >> 1 (8 1158)
Когда sideQisLargeBlk равно 1, применяется следующее:
sq=(sq+Abs(q3 - q0) + 1) >> 1 (8 1159)
Переменная sThr выводится следующим образом:
Если sidePisLargeBlk равно 1 или sideQisLargeBlk равно 1, применяется следующее:
sThr=3 * β >> 5 (8 1160)
Иначе применяется следующее:
sThr=β >> 3 (8 1161)
Переменная dSam определяется следующим образом:
Если выполняются все следующие условия, dSam устанавливается равным 1:
dpq меньше (β >> 2),
sp+sq меньше sThr,
spq меньше, чем (5 * tC+1) >> 1.
В противном случае dSam устанавливается равным 0.
8.8.3.6.6 Процесс фильтрации дискретного отсчета яркости с использованием коротких фильтров
Входные данные для этого процесса являются следующими:
значения дискретных отсчетов pi и qi с i=0..3,
местоположения pi и qi, (xPi, yPi) и (xQi, yQi) с i=0..2,
переменная dE,
переменные dEp и dEq, содержащие решения в отношении фильтрации дискретных отсчетов p1 и q1 соответственно,
переменная тс.
Результатами этого процесса являются:
количество отфильтрованных дискретных отсчетов nDp и nDq,
отфильтрованные значения дискретных отсчетов pi′ и qj′ с i=0..nDp - 1, j=0..nDq - 1.
В зависимости от значения dE применяется следующее:
Если переменная dE равна 2, nDp и nDq устанавливаются равными 3, и применяется следующая строгая фильтрация:
p0′=Clip3(p0 - 3 * tC, p0+3 * tC, (p2+2 * p1+2 * p0+2 * q0+q1+4) >> 3) (8 1162)
p1′=Clip3(p1 - 2 * tC, p1+2 * tC, (p2+p1+p0+q0+2) >> 2) (8 1163)
p2′=Clip3(p2 - 1 * tC, p2+1*tC, (2 * p3+3 * p2+p1+p0+q0+4) >> 3) (8 1164)
q0′=Clip3(q0 - 3 * tC, q0+3 * tC, (p1+2 * p0+2 * q0+2 * q1+q2+4) >> 3) (8 1165)
q1′=Clip3(q1 - 2 * tC, q1+2 * tC, (p0+q0+q1+q2+2) >> 2) (8 1166)
q2′= Clip3(q2 - 1 * tC, q2+1 * tC, (p0+q0+q1+3 * q2+2 * q3+4) >> 3) (8 1167)
В противном случае nDp и nDq устанавливаются равными 0, и применяется следующая слабая фильтрация:
применяется следующее:
Δ=(9 * (q0 - p0) - 3 * (q1 - p1) + 8) >> 4 (8 1168)
Когда Abs(Δ) меньше tC * 10, применяются следующие упорядоченные этапы:
Значения отфильтрованных дискретных отсчетов p0' и q0' задаются следующим образом:
Δ=Clip3(-tC, tC, Δ) (8 1169)
p0′=Clip1Y(p0 + Δ) (8 1170)
q0′=Clip1Y(q0 - Δ) (8 1171)
Когда dEp равно 1, отфильтрованное значение дискретные отсчеты p1' определяется следующим образом:
Δp=Clip3(-(tC >> 1), tC >> 1, (((p2+p0+1) >> 1) - p1 + Δ) >> 1) (8 1172)
p1′=Clip1Y(p1 + Δp) (8 1173)
Когда dEq равно 1, значение отфильтрованной дискретного отсчета q1' определяется следующим образом:
Δq=Clip3(-(tC >> 1), tC >> 1, (((q2+q0+1) >> 1) - q1 - Δ) >> 1) (8 1174)
q1′=Clip1Y(q1 + Δq) (8 1175)
nDp устанавливается равным dEp+1, а nDq устанавливается равным dEq+1.
Когда nDp больше 0 и выполняется одно или более из следующих условий, nDp устанавливается равным 0:
cu_transquant_bypass_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискртеный отсчет p0, равен 1.
pred_mode_plt_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет p0, равен 1.
Когда nDq больше 0 и выполняется одно или более из следующих условий, nDq устанавливается равным 0:
cu_transquant_bypass_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискртеный отсчет q0, равен 1.
pred_mode_plt_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет q 0, равен 1.
8.8.3.6.7 Процесс фильтрации дискретного отсчета яркости с использованием длинных фильтров
Входные данные для этого процесса являются следующими:
переменные maxFilterLengthP и maxFilterLengthQ,
значения дискретных отсчетов pi и qj с i=0..maxFilterLengthP и j=0..maxFilterLengthQ,
местоположения pi и qj, (xPi, yPi) и (xQj, yQj) с i=0..maxFilterLengthP - 1 и j=0..maxFilterLengthQ - 1,
переменная тс.
Результатами этого процесса являются:
отфильтрованные значения дискретных отсчетов pi 'и qj 'при i=0..maxFilterLengthP - 1, j=0..maxFilterLenghtQ - 1.
Переменная refMiddle выводится следующим образом:
Если maxFilterLengthP равно maxFilterLengthQ, а maxFilterLengthP равно 5, применяется следующее:
refMiddle=(p4+p3+2 * (p2+p1+p0+q0+q1+q2) + q3+q4+8) >> 4 (8 1176)
В противном случае, если maxFilterLengthP равен maxFilterLengthQ, а maxFilterLengthP не равен 5, применяется следующее:
refMiddle=(p6+p5+p4+p3+p2+p1+2 * (p0+q0) + q1+q2+q3+q4+q5+q6+8) >> 4 (8 1177)
В противном случае, если выполняется одно из следующих условий,
maxFilterLengthQ равно 7 и maxFilterLengthP равно 5,
maxFilterLengthQ равно 5 и maxFilterLengthP равно 7,
применяется следующее:
refMiddle=(p4+p3+2 * (p2+p1+p0+q0+q1+q2) + q3+q4+8) >> 4 (8 1178)
В противном случае, если выполняется одно из следующих условий,
maxFilterLengthQ равно 5 и maxFilterLengthP равно 3,
maxFilterLengthQ равно 3 и maxFilterLengthP равно 5,
применяется следующее:
refMiddle=(p3+p2+p1+p0+q0+q1+q2+q3+4) >> 3 (8 1179)
В противном случае, если maxFilterLengthQ равно 7, а maxFilterLengthP равно 3, применяется следующее:
refMiddle=(2 * (p2+p1+p0+q0) + p0+p1+q1+q2+q3+q4+q5+q6+8) >> 4 (8 1180)
Иначе применяется следующее:
refMiddle=(p6+p5+p4+p3+p2+p1+2 * (q2+q1+q0+p0) + q0+q1+8) >> 4 (8 1181)
Переменные refP и refQ получаются следующим образом:
refP=(pmaxFilterLengtP+pmaxFilterLengthP-1+1) >> 1 (8 1182)
refQ=(qmaxFilterLengtQ+qmaxFilterLengthQ-1+1) >> 1 (8 1183)
Переменные fi и tCPDi определяются следующим образом:
Если maxFilterLengthP равно 7, применяется следующее:
f0..6={ 59, 50, 41, 32, 23, 14, 5 } (8 1184)
tCPD0..6={ 6, 5, 4, 3, 2, 1, 1 } (8 1185)
В противном случае, если maxFilterLengthP равно 5, применяется следующее:
f0..4={ 58, 45, 32, 19, 6 } (8 1186)
tCPD0..4={ 6, 5, 4, 3, 2 } (8 1187)
Иначе применяется следующее:
f0..2={ 53, 32, 11 } (8 1188)
tCPD0..2={ 6, 4, 2} (8 1189)
Переменные gj и tCQDj определяются следующим образом:
Если maxFilterLengthQ равно 7, применяется следующее:
g0..6={ 59, 50, 41, 32, 23, 14, 5 } (8 1190)
tCQD0..6={ 6, 5, 4, 3, 2, 1, 1 } (8 1191)
В противном случае, если maxFilterLengthQ равно 5, применяется следующее:
g0..4={ 58, 45, 32, 19, 6 } (8 1192)
tCQD0..4={ 6, 5, 4, 3, 2 } (8 1193)
Иначе применяется следующее:
g0..2={ 53, 32, 11 } (8 1194)
tCQD0..2={ 6, 4, 2 } (8 1195)
Значения отфильтрованных дискретных отсчетов pi' и qj' с i=0..maxFilterLengthP - 1 и j=0..maxFilterLengthQ - 1 получаются следующим образом:
pi′=Clip3(pi - (tC*tCPDi) >> 1, pi + (tC*tCPDi) >> 1, (refMiddle*fi+refP*(64 - fi) + 32) >> 6) (8 1196)
qj′=Clip3(qj - (tC*tCQDj) >> 1, qj + (tC*tCQDj) >> 1, (refMiddle*gj+refQ*(64 - gj) + 32) >> 6) (8 1197)
Когда одно или более из следующих условий выполняются, значение отфильтрованной дискретного отсчета pi′ заменяется соответствующим входным значением дискретного отсчета pi с i=0..maxFilterLengthP - 1:
cu_transquant_bypass_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет pi, равен 1.
pred_mode_plt_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет pi, равен 1.
Когда одно или более из следующих условий выполняются, значение отфильтрованной дискретного отсчета qi′ заменяется соответствующим значением входной дискретного отсчета qj с j=0..maxFilterLengthQ - 1:
cu_transquant_bypass_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискртеный отсчет qi, равен 1.
pred_mode_plt_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет qj, равен 1.
8.8.3.6.8 Процесс принятия решения в отношении дискретного отсчета цветности
Входные данные для этого процесса являются следующими:
значения дискретных отсчетов p0, p3, q0 и q3,
переменные dpq, β и tC.
Результом этого процесса является переменная dSam, содержащая решение.
Переменная dSam определяется следующим образом:
Если выполняются все следующие условия, dSam устанавливается равным 1:
dpq меньше (β >> 2),
Abs(p3 - p0) + Abs(q0 - q3) меньше, чем (β >> 3),
Abs(p0 - q0) меньше, чем (5 * tC+1) >> 1.
В противном случае dSam устанавливается равным 0.
//отмечено, что как показано на Фиг. 11, переменная dSam, содержащая решение 1107, когда dSam установлено равным 1, это означает, что результатом решения 1107 является ДА, тогда в одном примере может быть выполнен этап 1109; когда dSam установлен равным 0, это означает, что результатом решения 1107 является НЕТ, тогда в одном примере может быть выполнен шаг 1105.//
8.8.3.6.9 Процесс фильтрации дискретного отсчета цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
переменная maxFilterLength,
значения дискретных отсчетов цветности pi и qi с i=0..maxFilterLengthCbCr,
местоположения цветности pi и qi, (xPi, yPi) и (xQi, yQi) с i=0..maxFilterLengthCbCr - 1,
переменная тс.
Результатами этого процесса являются отфильтрованные значения дискретных отсчетов pi' и qi' с i=0..maxFilterLengthCbCr - 1.
Значения отфильтрованных дискретных отсчетов pi′ и qi′ с i=0..maxFilterLengthCbCr - 1 получаются следующим образом:
Если maxFilterLengthCbCr равно 3, применяется следующая строгая фильтрация:
p0′=Clip3(p0 - tC, p0+tC, (p3+p2+p1+2 * p0+q0+q1+q2+4) >> 3) (8 1198)
p1′=Clip3(p1 - tC, p1+tC, (2 * p3+p2+2 * p1+p0+q0+q1+4) >> 3) (8 1199)
p2′=Clip3(p2 - tC, p2+tC, (3 * p3+2 * p2+p1+p0+q0+4) >> 3) (8 1200)
q0′=Clip3(q0 - tC, q0+tC, (p2+p1+p0+2 * q0+q1+q2+q3+4) >> 3) (8 1201)
q1′=Clip3(q1 - tC, q1+tC, (p1+p0+q0+2 * q1+q2+2 * q3+4) >> 3) (8 1202)
q2′= Clip3(q2 - tC, q2+tC, (p0+q0+q1+2 * q2+3 * q3+4) >> 3) (8 1203)
В противном случае применяется следующая слабая фильтрация:
Δ=Clip3(-tC, tC, ((((q0 - p0) << 2) + p1 - q1+4) >> 3)) (8 1204)
p0′=Clip1C(p0 + Δ) (8 1205)
q0′=Clip1C(q0 - Δ) (8 1206)
Когда одно или более из следующих условий выполняются, значение отфильтрованной дискретного отсчета pi′ заменяется соответствующим входным значением дискретного отсчета pi с i=0..maxFilterLengthCbCr - 1:
cu_transquant_bypass_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет pi, равен 1.
pred_mode_plt_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет pi, равен 1.
Когда одно или более из следующих условий выполняются, значение отфильтрованной дискретного отсчета qi' заменяется соответствующим входным значением дискретного отсчета qi с i=0..maxFilterLengthCbCr - 1:
cu_transquant_bypass_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискртеный отсчет qi, равен 1.
pred_mode_plt_flag единичные блоки кодирования, которая включает в себя блок кодирования, содержащий дискретный отсчет qi, равен 1.
Хотя модуль 220 контурного фильтра показан на Фиг. 2 как контурный фильтр, в других конфигурациях модуль 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.
Универсальное кодирование видео (VVC) использует инструмент, называемый остаточным кодированием совместной цветности (JCCR), который сигнализируется в битовом потоке с использованием флага «tu_joint_cbcr_residual_flag». Этот инструмент определяет, кодируются ли остаточные дискретные отсчеты для обоих компонентов Cb и Cr цветности как единый блок преобразования. Флаг «tu_joint_cbcr_residual_flag», равный 1, указывает, что синтаксис блока преобразования включает в себя уровни коэффициентов преобразования для одного блока преобразования, из которого выводятся остаточные дискретные отсчеты как для Cb, так и для Cr. Инструмент JCCR использует тот факт, что остатки как Cb, так и Cr в основном обратно коррелируются друг с другом.
В зависимости от tu_joint_cbcr_residual_flag, tu_cbf_cb и tu_cbf_cr переменная TuCResMode выводится следующим образом, где tu_cbf_cb указывает флаг кодированного блока компонента Cb, tu_cbf_cr - флаг кодированного блока компонента Cr. А TuCResMode указывает на режим JCCR.
Если tu_joint_cbcr_residual_flag равен 0, переменная TuCResMode устанавливается равной 0;
В противном случае, если tu_cbf_cb равно 1 и tu_cbf_cr равно 0, переменная TuCResMode устанавливается равной 1;
В противном случае, если tu_cbf_cb равно 1, переменная TuCResMode устанавливается равной 2;
В противном случае переменная TuCResMode устанавливается равной 3.
Соотношение между «восстановлением остатков Cb и Cr» на основе переменных tu_cbf_cb и tu_cbf_cr, переменной TuCResMode показано в таблице ниже.
tu_cbf_cb | tu_cbf_cr | TuCResMode | Восстановление остатков Cb и Cr |
1 | 0 | 1 | resCb[x][y]=resJointC[x][y] resCr[x][y]=(CSign * resJointC[x][y]) >> 1 |
1 | 1 | 2 | resCb[x][y]=resJointC[x][y] resCr[x][y]=CSign * resJointC[x][y] |
0 | 1 | 3 | resCb[x][y]=(CSign * resJointC[x][y]) >> 1 resCr[x][y]=resJointC[x][y] |
Переменная CSgin имеет знаковое значение (+1 или -1), и об этом сообщается в заголовке сегмента. resJointC[x][y] - фактически переданный остаток в битовом потоке.
resCb[ x ][ y ] указывает производные остаточные дискретные отсчеты для компонента Cb цветности;
resCr[ x ][ y ] указывает производные остаточные дискретные отсчеты для компонента Cr цветности.
Настоящее раскрытие может использовать соответствующие таблицы привязки QP цветности для каждого из компонентов Chroma Cb и Cr и объединенных остатков Cb-Cr. Когда синтаксический элемент «same_qp_table_for_chroma» равен 1, это указывает, что используются одни и те же таблицы QP цветности, и эти же таблицы применяются к остаткам Cb, Cr и объединенным остаткам Cb-Cr. Когда «same_qp_table_for_chroma» равно 0, это означает, что для Cb, Cr или объединенных остатков Cb-Cr используется другая таблица привязки QP цветности. Три таблицы привязки цветности могут быть представлены в различных формах.
Как показано на Фиг. 12А и 12В имеются три подтаблицы (т.е. строки со индексным значением, равным 0, 1 и 2). Поскольку содержимое строки 2 отличается от строки 0 и/или 1, синтаксический элемент same_qp_table_for_chroma должен быть равен 0. В противном случае, если синтаксический элемент same_qp_table_for_chroma равен 1, содержимое строк 1 и 2 должно совпадать с содержимым строки 0.
Как показано на Фиг. 13, имеются три отдельные таблицы, предназначенные для остатков Cb, Cr и объединенных остатков Cb-Cr соответственно. Поскольку содержимое таблиц для Cb, Cr и объединенных остатков Cb-Cr отличается друг от друга, синтаксический элемент same_qp_table_for_chroma должен быть равен 0. В противном случае, если синтаксический элемент same_qp_table_for_chroma равен 1, содержимое таблиц для Cb, Cr и объединенных остатков Cb-Cr должно быть одинаковым.
Синтаксические элементы num_points_in_qp_table_minus1[i], delta_qp_in_val_minus1[i][j], delta_qp_out_val[i][j] дополнительно используются для получения таблиц привязки QP цветности. Семантика этих элементов синтаксиса и процедура получения таблиц сопоставления QP цветности показаны ниже:
num_points_in_qp_table_minus1[ i ] плюс 1 задает количество точек, используемых для описания i-й таблицы привязки QP цветности. Значение num_points_in_qp_table_minus1[ i ] должно находиться в диапазоне от 0 до 63+QpBdOffsetC включительно. Когда num_points_in_qp_table_minus1[0] отсутствует в битовом потоке, предполагается, что значение num_points_in_qp_table_minus1[0] равно 0.
delta_qp_in_val_minus1[ i ][ j ] задает значение дельты, используемое для получения входной координаты j-й опорной точки i-й таблицы привязки QP цветности. Когда delta_qp_in_val_minus1[0][j] отсутствует в битовом потоке, значение delta_qp_in_val_minus1[0][j] считается равным 0.
delta_qp_out_val[ i ][ j ] задает значение дельты, используемое для получения выходной координаты j-й опорной точки i-й таблицы привязки QP цветности. Когда delta_qp_out_val[0][j] отсутствует в битовом потоке, значение delta_qp_out_val[0][j] считается равным 0.
Следует отметить, что в настоящем раскрытии детали примера того, как выведение первой таблицы привязки QP цветности, второй таблицы привязки QP цветности и третьей таблицы привязки QP цветности, будут описаны далее.
i-я таблица привязки QP цветности ChromaQpTable[ i ] для i=0..same_qp_table_for_chroma ? 0 : 2 выводится следующим образом: qpInVal[i][0]=-QpBdOffsetC+delta_qp_in_val_minus1[i][0] qpOutVal[i][0]=-QpBdOffsetC+delta_qp_out_val[i][0]
для (j=1; j <=num_points_in_qp_table_minus1[i];j++) {
qpInVal[i][j]=qpInVal[i][j - 1] + delta_qp_in_val_minus1[i][j] + 1
qpOutVal[i][j]=qpOutVal[i][j - 1 ] + delta_qp_out_val[ i ][ j ]
}
ChromaQpTable[ i ][ qpInVal [ i ][ 0 ] ]=qpOutVal [ i ][ 0 ]
для (k=qpInVal [ i ][ 0 ] - 1; k >= -QpBdOffsetC; k - -)
ChromaQpTable[ i ][ k ]=Clip3(-QpBdOffsetC, 63, ChromaQpTable[ i ][ k+1 ] - 1) (7 31)
для (j=0; j < num_points_in_qp_table_minus1[ i ]; j++) {
sh=(delta_qp_in_val_minus1[ i ][j+1 ] + 2) >> 1
для (k=qpInVal[ i ][j ] + 1, m=1; k <= qpInval[ i ][j+1 ]; k++, m++)
ChromaQpTable[i][k]=ChromaQpTable[i][qpInVal[i][j]] + (delta_qp_out_val[i][j+1] * m+sh) / (delta_qp_in_val_minus1[i] [j+1] + 1)
}
для (k=qpInVal[ i ][ num_points_in_qp_table_minus1[ i ] ] + 1; k <= 63; k++)
ChromaQpTable[i][k]=Clip3(-QpBdOffsetC, 63, ChromaQpTable[i][k-1] + 1)
Когда same_qp_table_for_chroma равно 1, ChromaQpTable[1][k] и ChromaQpTable[2][k] устанавливаются равными ChromaQpTable[0][k] для k=-QpBdOffsetC..63.
Требованием соответствия битового потока является то, что значения qpInVal[i][j] и qpOutVal[i][j] должны находиться в диапазоне от -QpBdOffsetC до 63 включительно для i=0..same_qp_table_for_chroma? 0 : 2 и j=0..num_points_in_qp_table_minus1[i].
Обратите внимание, что таблица ChormaQPmapping также может быть выражена с помощью простой формулы, которая принимает в качестве входных данных значение QP яркости (QPi) и значение (cIdx) компонента цвета, а затем выводит соответствующее значение Qp цветности (QPc). Формула может отражать линейную зависимость между QP яркости и QP цветности. Например, формула может быть следующей:
QPc=QPi - x, где x является постоянной величиной, зависящей от значения цветового компонента (cIdx), и x может принимать разные значения для разных индексов цветового компонента, включая объединенный компонент Cb-Cr.
Варианты осуществления кодера 20 (соответственно модуль 220 контурного фильтра) могут быть выполнены с возможностью вывода параметров контурного фильтра (таких как информация об адаптивном смещении дискретных отсчетов), например, напрямую или энтропийно кодированных с помощью блока 270 энтропийного кодирования или любого другого блока энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра для декодирования.
Буфер декодированных снимков
Буфер 230 декодированных снимков (DPB) может быть памятью, в которой хранятся опорные снимки или, в общем, данные опорных снимков для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть образован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных снимков может быть выполнен с возможностью хранения одного или более фильтрованных блоков 221. Буфер 230 декодированных снимков может быть дополнительно выполнен с возможностью хранения других ранее отфильтрованных блоков, например ранее восстановленных и отфильтрованных блоков 221, того же самого текущего снимка или разных снимков, например ранее восстановленных снимков, и может предоставлять полные ранее восстановленные, т.е. декодированные, снимки (и соответствующие опорные блоки и дискретные отсчеты) и/или частично восстановленный текущий снимок (и соответствующие опорные блоки и дискретные отсчеты), например, для интер-предсказания. Буфер 230 декодированных снимков (DPB) также может быть выполнен с возможностью хранения одного или более нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных дискретных отсчетов, например если восстановленный блок 215 не фильтруется модулем 220 контурного фильтра, или любой другой дополнительно обработанной версии восстановленных блоков или дискретных отсчетов.
Выбор режима (Разбиение и Предсказание)
Модуль 260 выбора режима содержит модуль 262 разбиения, модуль 244 интер-предсказания и модуль 254 интра-предсказания и выполнен с возможностью приема или получения данных исходного снимка, например исходного блока 203 (текущего блока 203 текущего снимка 17), и данных восстановленного снимка, например отфильтрованных и/или нефильтрованных восстановленных дискретных отсчетов или блоков того же самого (текущего) снимка и/или из одного или множества ранее декодированных снимков, например из буфера 230 декодированных снимков или других буферов (например, линейного (строкового) буфера, не показан). Данные восстановленного снимка используются в качестве данных опорного снимка для предсказания, например интер-предсказания или интра-предсказания, чтобы получить блок 265 предсказания или предиктор 265.
Модуль 260 выбора режима может быть выполнен с возможностью определения или выбора разбиения для текущего режима предсказания блока (включая отсутствие разбиения) и режима предсказания (например, режима внутреннего или интер-предсказания) и генерации соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
Варианты осуществления модуля 260 выбора режима могут быть выполнены с возможностью выбора разбиения и режима предсказания (например, из тех, которые поддерживаются или доступны для модуля 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные издержки на сигнализацию (минимальные издержки на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или балансирует оба. Модуль 260 выбора режима может быть выполнен с возможностью определения режима разбиения и предсказания на основе оптимизации искажения скорости (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости. Такие термины, как «лучший», «минимум», «оптимальный» и т.д. В этом контексте не обязательно относятся к общему «лучшему», «минимуму», «оптимальному» и т.д., Но также могут относиться к выполнению прекращения или критерий выбора, такой как значение, превышающее или падающее ниже порогового значения, или другие характеристик, потенциально ведущие к «неоптимальному выбору», но уменьшающие сложность и время обработки.
Другими словами, модуль 262 разбиения может быть выполнен с возможностью разбиения снимка из видеопоследовательности на последовательность единичных блоков дерева кодирования (CTU), а CTU 203 может быть дополнительно разделен на более мелкие блочные разделы или подблоки (которые снова образуют блоков), например, итеративно с использованием разбиения на квадранты (QT), двоичного разбиения (BT) или разбиения на троичное дерево (TT) или любого их сочетания, и для выполнения, например, предсказания для каждого из разбиений блока или подблоков, при этом выбор режима включает в себя выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разбиений или подблоков блока.
Далее более подробно поясняется разбиение (например, посредством модуля 260 разбиения) и обработка предсказания (посредством модуля 244 интер-предсказания и модуля 254 интра-предсказания), выполняемые примерным видеокодером 20.
Разбиение
Модуль 262 разбиения может быть выполнен с возможностью разбиения снимка из видеопоследовательности на последовательность единиц дерева кодирования (CTU), а модуль 262 разбиения может разбивать (или разделять) блок 203 дерева кодирования (CTU) на меньшие разделы, например блоки меньшего размера квадратного или прямоугольного размера. Для снимка, который имеет три массива дискретных отсчетов, CTU состоит из блока N × N дискретных отсчетов яркости вместе с двумя соответствующими блоками дискретных отсчетов цветности. Максимально допустимый размер блока яркости в CTU определен равным 128 × 128 в развивающемся универсальном кодировании видео (VVC), но в будущем может быть указано значение, а не 128×128, например 256×256. CTU снимка могут быть кластеризованы/сгруппированы как сегменты/группы клеток, клетки или блоки. Клетка покрывает прямоугольную область снимка, и она может быть разделена на один или более фрагментов. Фрагмент состоит из некоторого количества рядов CTU внутри клетки. Клетку, не разделенную на несколько фрагментов, можно назвать фрагментом. Однако фрагмент - это истинное подмножество клетки и не называется клеткой. В VVC поддерживаются два режима групп клеток, а именно режим растрового сканирования сегмента/группы клеток и режим прямоугольного сегмента. В режиме растровым сканированием группы клеток группа клеток/сегмент содержит последовательность клеток при поклеточном растровом сканировании снимка. В режиме прямоугольного сегмента сегмент содержит несколько фрагментов снимка, которые вместе образуют прямоугольную область снимка. Фрагменты внутри прямоугольного сегмента находятся в порядке растрового сканирования сегмента. Эти меньшие блоки (которые также могут называться подблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также относится к разбиению дерева или иерархическому разбиению дерева, в котором корневой блок, например, на уровне корневого дерева 0 (уровень иерархии 0, глубина 0), может быть рекурсивно разделен, например разделен на два или более блока следующий более низкий уровень дерева, например узлы на уровне дерева 1 (уровень иерархии 1, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровень дерева 2 (уровень иерархии 2, глубина 2) и т.д. До тех пор, пока разбиение не будет завершено, например, потому что критерий завершения выполняется, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые не разделяются далее, также называются концевыми блоками или концевыми узлами дерева. Дерево, использующее разбиение на два разбиения, называется двоичным деревом (BT), дерево, использующее разбиение на три разбиения, называется тройным деревом (TT), а дерево, использующее разбиение на четыре разбиения, называется деревом квадрантов (QT).
Например, единичный блок дерева кодирования (CTU) может быть или содержать CTB дискретных отсчетов яркости, два соответствующих CTB дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или CTB дискретных отсчетов монохромного снимка или снимка, которое кодируется. с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов. Соответственно, блок дерева кодирования (CTB) может быть блоком NxN дискретных отсчетов для некоторого значения N, так что разбиение компонента на CTB является разбиением. Единичный блок кодирования (CU) может быть или содержать блок кодирования дискретных отсчетов яркости, два соответствующих блока кодирования дискретных отсчетов цветности снимка, которое имеет три массива дискретных отсчетов, или блок кодирования дискретных отсчетов монохромного снимка или снимка, который кодируется с использованием трех отдельных цветовых плоскости и синтаксические структуры, используемые для кодирования дискретных отсчетов. Соответственно, блок кодирования (CB) может быть блоком MxN дискретных отсчетов для некоторых значений M и N, так что разбиение CTB на блоки кодирования является разбиением.
В вариантах осуществления, например, согласно HEVC, единица дерева кодирования (CTU) может быть разделена на CU с использованием структуры дерева квадрантов, обозначенной как дерево кодирования. Решение о том, кодировать ли область снимка с использованием межснимочного (интер) (временного) или внутриснимочного (интра) (пространственного) предсказания, принимается на уровне конечных CU. Каждый концевой CU может быть дополнительно разделен на один, два или четыре PU в соответствии с типом разбиения PU. Внутри одного PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока посредством применения процесса предсказания на основе типа разбиения PU, концевой CU может быть разделен на блоки преобразования (TU) в соответствии с другой структурой дерева квадрантов, аналогичной дереву кодирования для CU.
В вариантах осуществления, например, в соответствии с последним разрабатываемым в настоящее время стандартом кодирования видео, который называется универсальным кодированием видео (VVC), объединенное дерево квадратов с вложенным множеством типов, использующее двоичное и троичное разбиение, структура сегментации, например, используемая для разбиения блок дерева кодирования. В структуре дерева кодирования внутри единицы дерева кодирования CU может иметь квадратную или прямоугольную форму. Например, единичный блок дерева кодирования (CTU) сначала разделяется четвертичным деревом. Затем концевые узлы дерева квадрантов могут быть дополнительно разделены с помощью многотипной древовидной структуры. Существует четыре типа разбиения в многотипной древовидной структуре: вертикальное двоичное разбиение (SPLIT_BT_VER), горизонтальное двоичное разбиение (SPLIT_BT_HOR), вертикальное троичное разбиение (SPLIT_TT_VER) и горизонтальное троичное разбиение (SPLIT_TT_HOR). Концевые узлы многотипного дерева называются единицами кодирования (CU), и, если CU не слишком велик для максимальной длины преобразования, эта сегментация используется для предсказания и обработки преобразования без какого-либо дальнейшего разбиения. Это означает, что в большинстве случаев CU, PU и TU имеют одинаковый размер блока в дереве квадрантов с вложенной структурой блока кодирования многотипного дерева. Исключение возникает, когда максимальная поддерживаемая длина преобразования меньше, чем ширина или высота цветового компонента CU. VVC разрабатывает уникальный механизм сигнализации информации о разбиении разделов в дереве квадрантов с вложенной древовидной структурой кодирования с множеством типов. В механизме сигнализации единица дерева кодирования (CTU) рассматривается как корень дерева квадрантов и сначала разделяется структурой дерева квадрантов. Каждый концевой узел дерева квадрантов (если он достаточно большой, чтобы его можно было использовать) затем разбивается на части с помощью многотипной древовидной структуры. В многотипной древовидной структуре первый флаг (mtt_split_cu_flag) сигнализируется, чтобы указать, разделен ли узел дальше; когда узел дополнительно разбивается на разделы, второй флаг (mtt_split_cu_vertical_flag) сигнализируется, чтобы указать направление разбиения, а затем сигнализируется третий флаг (mtt_split_cu_binary_flag), чтобы указать, является ли разбиение двоичным или троичным. На основе значений mtt_split_cu_vertical_flag и mtt_split_cu_binary_flag, режим разрезания многотипного дерева (MttSplitMode) CU может быть получен декодером на основе предварительно заданного правила или таблицы. Следует отметить, что для определенного дизайна, например, для конвейерной обработки блока яркости 64 × 64 и конвейерной обработки цветности 32 × 32 в аппаратных декодерах VVC, разбиение TT запрещено, когда ширина или высота блока кодирования яркости больше 64, так как показано на фигуре 6. Разбиение TT также запрещено, если ширина или высота блока кодирования цветности больше 32. Конструкция конвейерной обработки делит снимок на блоки данных виртуального конвейера (VPDU), которые определены как неперекрывающиеся блоки в снимке. В аппаратных декодерах последовательные блоки VPDU обрабатываются несколькими этапами конвейера одновременно. Размер VPDU примерно пропорционален размеру буфера на большинстве этапов конвейера, поэтому важно, чтобы размер VPDU был небольшим. В большинстве аппаратных декодеров размер VPDU может быть установлен равным максимальному размеру блока преобразования (TB). Однако в VVC разбиение троичного дерева (TT) и двоичного дерева (BT) может привести к увеличению размера VPDU.
Кроме того, следует отметить, что, когда часть блока узла дерева превышает нижнюю или правую границу снимка, блок узла дерева принудительно разделяется до тех пор, пока все дискретные отсчеты каждого кодированного CU не окажутся внутри границ снимка.
В качестве примера инструмент интра-подразбиений (Intra Sub-Partitions (ISP)) может разделять блоки яркости с внутренним предсказанием по вертикали или горизонтали на 2 или 4 подразбиения в зависимости от размера блока.
В одном примере модуль 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разбиения, описанных в данном документе.
Как описано выше, видеокодер 20 выполнен с возможностью определения или выбора наилучшего или оптимального режима предсказания из набора (например, предварительно определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы интра-предсказания и/или режимы интер-предсказания.
Интра-предсказание
Набор режимов интра-предсказания может содержать 35 различных режимов интра-предсказания, например ненаправленные режимы, такие как режим постоянного (или среднего) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 различных режимов интра-предсказания, например, ненаправленные режимы, такие как режим постоянного тока (или среднего) и планарный режим, или направленные режимы, например, как определено для VVC. В качестве примера, несколько обычных режимов углового интра-предсказания адаптивно заменяются режимами широкоугольного интра-предсказания для неквадратных блоков, например, как определено в VVC. В качестве другого примера, чтобы избежать операций деления для предсказания DC, только длинная сторона используется для вычисления среднего для неквадратных блоков. И результаты интра-предсказания планарного режима могут быть дополнительно модифицированы с помощью способа объединения позиционно-зависимого интра-предсказания (PDPC).
Модуль 254 интра-предсказания выполнен с возможностью использования восстановленных дискретных отсчетов соседних блоков одного и того же текущего снимка для генерации блока 265 интра-предсказания согласно режиму интра-предсказания набора режимов интра-предсказания.
Модуль 254 интра-предсказания (или, в общем, модуль 260 выбора режима) дополнительно выполнен с возможностью вывода параметров интра-предсказания (или, в общем, информации, указывающей выбранный режим интра-предсказания для блока) в модуль 270 энтропийного кодирования в форме синтаксиса элементы 266 для включения в данные 21 кодированного снимка, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.
Интер-предсказание
Набор (или возможно) режимы интер-предсказания зависит от доступных опорных снимков (т.е. предыдущим, по меньшей мере, частично декодированных снимков, например, хранится в DBP 230) и других параметрах интер-предсказания, например, используется ли весь опорный снимок или только часть, например, область поиска окна вокруг области текущего блока, опорного снимка для поиска наилучшего соответствия опорного блока, и/или, например, применяются ли интерполяции пикселей, например, интерполяция половины/полу-пикселя, четверть пикселя и/или 1/16 пикселя или нет.
В дополнение к вышеупомянутым режимам предсказания может применяться режим пропуска, прямой режим и/или другой режим интер-предсказания.
Например, при расширенном предсказании с объединением список потенциально подходящих вариантов на объединение для такого режима создается посредством включения следующих пяти типов потенциально подходящих вариантов по порядку: Пространственный MVP из пространственных соседних CU, Temporal MVP из совместно размещенных CU, MVP на основе истории из таблицы FIFO, попарный средний MVP и нулевые MV. И уточнение вектора движения на стороне декодера (DMVR) на основе двустороннего согласования может применяться для повышения точности MV режима объединения. Режим объединения с MVD (MMVD), который происходит из режима объединения с разностями векторов движения. Флаг MMVD сигнализируется сразу после отправки флага пропуска и флага объединения, чтобы указать, используется ли режим MMVD для CU. И может применяться схема адаптивного разрешения вектора движения (AMVR) на уровне CU. AMVR позволяет кодировать MVD У CU с разной точностью. В зависимости от режима предсказания для текущего CU, MVD текущего CU могут выбираться адаптивно. Когда CU кодируется в режиме объединения, объединенный режим интер-/интра-предсказания (CIIP) может применяться к текущему CU. Для получения предсказания CIIP выполняется взвешенное усреднение сигналов внутреннего и интра-предсказания. Предсказание с компенсацией аффинного движения, поле аффинного движения блока описывается информацией о движении двух контрольных точек (4 параметра) или трех векторов движения контрольных точек (6 параметров). Предсказание временного вектора движения на основе подблоков (SbTMVP), которое аналогично предсказанию временного вектора движения (TMVP) в HEVC, но предсказывает векторы движения суб-CU в текущем CU. Двунаправленный оптический поток (BDOF), ранее называвшийся BIO, является более простой версией, требующей гораздо меньших вычислений, особенно с точки зрения количества умножений и размера умножителя. Режим треугольного разбиения, в таком режиме CU делится равномерно на два треугольных разбиения с использованием либо диагонального разбиения, либо антидиагонального разбиения. Кроме того, режим двойного предсказания выходит за рамки простого усреднения, чтобы обеспечить взвешенное усреднение двух сигналов предсказания.
Модуль 244 интер-предсказания может включать в себя модуль оценки движения (ME) (не показан на Фиг. 2) и модуль компенсации движения (MC) (оба не показаны на Фиг. 2). Модуль оценки движения может быть выполнен с возможностью приема или получения блока 203 снимка (блока 203 текущего снимка текущего снимка 17) и декодированного снимка 231, или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или более множество других/различных ранее декодированных снимков 231 для оценки движения. Например, видеопоследовательность может содержать текущий снимок и ранее декодированные снимки 231, или, другими словами, текущий снимок и ранее декодированные снимки 231 могут быть частью или формировать последовательность снимков, образующих видеопоследовательность.
Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или различных снимков из множества других снимков и обеспечивает опорный снимок (или индекс опорного снимка) и/или смещение (пространственное смещение) между положением (координатами X, Y) опорного блока и положением текущего блока в качестве взаимосвязанных параметров предсказания в модуль оценки движения. Это смещение также называется вектором движения (MV).
Модуль компенсации движения выполнен с возможностью получения, например, приема параметра интер-предсказания и выполнения интер-предсказания на основе или с использованием параметра интер-предсказания для получения блока 265 интер-предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно выполнение интерполяции до субпиксельной точности. Интерполяционная фильтрация может генерировать дополнительные дискретные отсчеты пикселей из дискретных отсчетов известных пикселей, таким образом потенциально увеличивая количество блоков предсказания потенциально подходящих вариантов, которые могут использоваться для кодирования блока снимка. После приема вектора движения для PU текущего блока снимка модуль компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных снимков.
Модуль компенсации движения также может генерировать синтаксические элементы, связанные с блоками и видеосегментами, для использования видеодекодером 30 при декодировании блоков снимка видеосегмента. В дополнение или в качестве альтернативы сегментам и соответствующим элементам синтаксиса могут генерироваться или использоваться группы клеток и/или клетки и соответствующие синтаксические элементы.
Энтропийное кодирование
Модуль 270 энтропийного кодирования выполнен с возможностью применения, например, алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (VLC), схемы контекстно-адаптивного VLC (CAVLC), схемы арифметического кодирования, бинаризации, контекстно-адаптивного двоичного арифметического кодирования (CABAC), основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с разбиением интервала вероятности (PIPE) или другого способа или методики энтропийного кодирования) или обхода (без сжатия) в отношении квантованных коэффициентов 209, параметров интер-предсказания, параметров интра-предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения данных 21 кодированного снимка, которые могут выводиться через вывод 272, например в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать эти параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.
Другие изменения в структуре видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь модуль 208 квантования и модуль 210 обратного квантования, объединенные в единый блок.
Декодер и способ декодирования
На Фиг. 3 показан пример видеодекодера 30, который выполнен с возможностью реализации способов настоящей заявки. Видеодекодер 30 выполнен с возможностью приема данных 21 кодированного снимка (например, кодированного битового потока 21), например кодированных кодером 20, чтобы получить декодированный снимок 331. Данные кодированного снимка или кодированный битовый поток содержат информацию для декодирования данных кодированного снимка, например данных, которые представляют блоки снимка кодированного сегмента видео (и/или клеток или групп клеток) и связанные синтаксические элементы.
В примере на Фиг. 3, декодер 30 содержит модуль 304 энтропийного декодирования, модуль 310 обратного квантования, модуль 312 обработки обратного преобразования, модуль 314 восстановления (например, сумматор 314), модуль 320 контурного фильтра, буфер 330 (DPB) декодированных снимков, модуль 360 применения режима, модуль 344 интер-предсказания и модуль 354 интра-предсказания. Модуль 344 интер-предсказания может быть или включать в себя модуль компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг. 2.
Как описано в отношении кодера 20, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 220 контурного фильтра, буфер 230 (DPB) декодированных снимков, модуль 344 интер-предсказания и модуль 354 интра-предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, модуль 310 обратного квантования может быть идентичен по функции модулю 110 обратного квантования, модуль 312 обработки обратного преобразования может быть идентичен по функции модулю 212 обработки обратного преобразования, модуль 314 восстановления может быть идентичен по функции модулю 214 восстановления, модуль 320 контурного фильтра может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных снимков может быть идентичен по функции буферу 230 декодированных снимков. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.
Энтропийное декодирование
Модуль 304 энтропийного декодирования выполнен с возможностью синтаксического анализа битового потока 21 (или, в общем, данных 21 кодированного снимка) и выполнения, например, энтропийного декодирования для данных 21 кодированного снимка, чтобы получить, например, квантованные коэффициенты 309 и/или параметры декодированного кодирования (не показаны на Фиг. 3), например, любые или все из параметров интер-предсказания (например, индекс опорного снимка и вектор движения), параметр интра-предсказания (например, индекс или режим интра-предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра и/или другие синтаксические элементы. Модуль 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении модуля 270 энтропийного кодирования кодера 20. Модуль 304 энтропийного декодирования может быть дополнительно выполнен с возможностью предоставления параметров интер-предсказания, параметра интра-предсказания и/или других элементов синтаксиса модулю 360 применения режима и других параметров другим модулям декодера 30. Видеодекодер 30 может принимать синтаксические элементы на уровне видеосегмента и/или уровне видеоблока. В дополнение или в качестве альтернативы сегментам и соответствующим синтаксическим элементам могут приниматься и/или использоваться группы клеток и/или клетки и соответствующие синтаксические элементы.
Обратное квантование
Модуль 310 обратного квантования может быть выполнен с возможностью приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством модуля 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в видеосегменте (или клетке или группе клеток), для определения степени квантования и, аналогично, степени обратного квантования, которая должна быть применена.
Обратное преобразование
Модуль 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также называемых коэффициентами 311 преобразования, и для применения преобразования к деквантованным коэффициентам 311, чтобы получить восстановленные остаточные блоки 213 в области дискретных отсчетов. Восстановленные остаточные блоки 213 также могут упоминаться как блоки 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или принципиально аналогичным процессом обратного преобразования. Модуль 312 обработки обратного преобразования может быть дополнительно выполнен с возможностью приема параметров преобразования или соответствующей информации из данных 21 кодированного снимка (например, посредством синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования), чтобы определять преобразование, которое должно применяться к деквантованным коэффициентам 311.
Восстановление
Модуль 314 восстановления (например, сумматор 314) может быть выполнен с возможностью добавления восстановленного остаточного блока 313 к блоку 365 предсказания, чтобы получить восстановленный блок 315 в области дискретных отсчетов, например, посредством добавления значений дискретных отсчетов восстановленных остаточный блок 313 и значения дискретных отсчетов блока 365 предсказания.
Фильтрация
Модуль 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) выполнен с возможностью фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Модуль 320 контурного фильтра может содержать один или более контурных фильтров, таких как фильтр устранения блочности, фильтр с адаптивным смещением дискретных отсчетов (SAO) или один или более других фильтров, например адаптивный контурный фильтр (ALF), фильтр подавления шума (NSF) или любое их сочетание. В одном примере модуль 220 контурного фильтра может содержать фильтр устранения блочности, фильтр SAO и фильтр ALF. Порядок процесса фильтрации может быть фильтром расформирования блоков, SAO и ALF. В другом примере добавляется процесс, называемый отображением яркости с масштабированием цветности (LMCS) (а именно, адаптивным внутриконтурным преобразователем). Этот процесс выполняется перед расформированием блоков. В другом примере процесс фильтрации расформирования блоков может также применяться к внутренним краям подблока, например краям аффинных подблоков, краям подблоков ATMVP, краям преобразования подблоков (SBT) и краям внутри подблока (ISP). Хотя модуль 320 контурного фильтра показан на Фиг. 3 как контурный фильтр, в других конфигурациях модуль 320 контурного фильтра может быть реализован как постконтурный фильтр.
Буфер декодированных снимков
Декодированные видеоблоки 321 снимка затем сохраняются в буфере 330 декодированных снимков, который сохраняет декодированные снимки 331 в качестве опорных снимков для последующей компенсации движения для других снимков и/или для вывода, соответственно, отображения.
Декодер 30 выполнен с возможностью вывода декодированного снимка 311, например, через вывод 312 для представления или просмотра пользователю.
Предсказание
Модуль 344 интер-предсказания может быть идентичен модулю 244 интер-предсказания (в частности, модулю компенсации движения), а модуль 354 интра-предсказания может быть идентичен модулю 254 интра-предсказания по функции, и принимает решения по разбиению или разделению и выполняет предсказание на основе параметров разбиения и/или предсказания или соответствующей информации, принимаемой из кодированных данных 21 изображения (например, посредством анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Модуль 360 применения режима может быть выполнен с возможностью осуществления предсказания (интра- или интер-предсказания) для каждого блока на основе восстановленных снимков, блоков или соответствующих дискретных отсчетов (фильтрованных или нефильтрованных) для получения блока 365 предсказания.
Когда видеосегмент кодируется как сегмент с интра-кодированием (I), модуль 354 интра-предсказания модуля 360 применения режима конфигурируется для генерации блока 365 предсказания для блока снимка текущего видеосегмента на основе сигнального режима интра-предсказания и данных из ранее декодированные блоки текущего снимка. Когда видеоиснимок кодируется с интер-кодированием (то есть B или P) сегмент, модуль 344 интер-предсказания (например, модуль компенсации движения) модуля 360 применения режима конфигурируется для создания блоков 365 предсказания для видеоблока текущего видео. сегмент на основе векторов движения и других элементов синтаксиса, полученных от модуля 304 энтропийного декодирования. Для интер-предсказания блоки предсказания могут быть созданы из одного из опорных снимков в одном из списков опорных снимков. Видеодекодер 30 может создавать списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных снимков, хранящихся в DPB 330. То же самое или подобное может применяться для или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к сегментам (например, видеосегментам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.
Модуль 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеосегмента посредством анализа векторов движения или связанной информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, модуль 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков видеосегмента, типа сегмента интер-предсказания (например, B-сегмент, P-сегмент или GPB-сегмент), информация о конструкции для одного или более списков опорных снимков для сегмента, векторы движения для каждого видеоблока с интер-кодированием сегмента, статус интер-предсказания для каждого видеоблока с интер-кодированием сегмента и другие информация для декодирования видеоблоков в текущем видеосегменте. То же самое или подобное может применяться для вариантов осуществления или посредством вариантов осуществления с использованием групп клеток (например, групп видеоклеток) и/или клеток (например, видеоклеток) в дополнение или альтернативно к сегментам (например, видеосегментам), например, видео может быть кодировано с использованием групп I, P или B клеток и/или клеток.
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием сегментов (также называемых видео сегментами), при этом снимок может быть разделен на или декодировано с использованием одного или более сегментов (обычно без перекрытия), и каждый сегмент может содержать один или более блоков (например, CTU) или одну или более групп блоков (например, клеток (tile) (H.265/HEVC и VVC) или фрагментов (brick) (VVC)).
Варианты осуществления видеодекодера 30, как показано на Фиг. 3, могут быть выполнены с возможностью разбиения и/или декодирования снимка с использованием групп сегментов/клеток (также называемых группами клеток) и/или клеток (также называемых видеоклетками), при этом снимок может быть разделен на или декодировано с использованием одной или более групп сегментов/клеток (обычно не перекрывающихся), и каждая группа сегментов/клеток может содержать, например, один или более блоков (например, CTU) или одну или более клеток, при этом каждая клетка, например, может иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например полные или дробные блоки.
Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 кодированного снимка. Например, декодер 30 может создавать выходной видеопоток без модуля 320 контурного фильтра. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без модуля 312 обработки обратного преобразования для определенных блоков или кадров. В другой реализации видеодекодер 30 может иметь модуль 310 обратного квантования и модуль 312 обработки обратного преобразования, объединенные в один модуль.
Следует понимать, что в кодере 20 и декодере 30 результат обработки текущего этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после интерполяционной фильтрации, вывода вектора движения или контурной фильтрации может выполняться дополнительная операция, такая как обрезка или сдвиг, над результатом обработки интерполяционной фильтрации, вывода вектора движения или контурной фильтрации.
Следует отметить, что дополнительные операции могут применяться к получаемым векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения подблока в аффинном, планарном режимах, режиме ATMVP, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предварительно определенным диапазоном согласно его представляющему биту. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1)~2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth равна 16, то диапазон составляет -32768~32767; если bitDepth равна 18, то диапазон составляет -131072~131071. Например, значение получаемого вектора движения (например, MV четырех подблоков 4×4 в одном блоке 8×8) ограничивается таким образом, чтобы максимальная разность между целыми частями MV четырех подблоков 4×4 не превышала N пикселей, например была не более 1 пикселя. Здесь представлены два способа ограничения вектора движения согласно bitDepth.
Фиг. 4 является схематической диаграммой устройства 400 видеокодирования согласно варианту осуществления раскрытия. Устройство 400 видеокодирования подходит для реализации раскрытых вариантов осуществления, как описано в данном документе. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30 с Фиг. 1A или кодер, такой как видеокодер 20 с Фиг. 1А.
Устройство 400 видеокодирования содержит входные порты 410 (или порты 410 ввода) и модули 420 приемника (Rx) для приема данных; процессор, логический модуль или центральный процессор (CPU) 430 для обработки данных; модули 440 передатчика (Tx) и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодирования может также содержать оптико-электрические (OE) компоненты и электрическо-оптические (EO) компоненты, подключенные к входным портам 410, модулям 420 приемника, модулям 440 передатчика и выходным портам 450 для выход или попадание оптических или электрических сигналов.
Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или более микросхем ЦП, ядер (например, как многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, модулями 420 приемника, модулями 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования. Модуль 470 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодирования реализует, обрабатывает, подготавливает или предоставляет различные операции кодирования. Таким образом, разрешение модуля 470 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодирования и обеспечивает преобразование устройства 400 видеокодирования в другое состояние. В качестве альтернативы модуль 470 кодирования реализован как инструкции, хранящиеся в памяти 460 и выполняемые процессором 430.
Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 460 может быть, например, энергозависимой и/или долговременной и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую память с произвольным доступом (SRAM)).
Фиг. 5 является упрощенной блок-схемой устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг. 1A согласно примерному варианту осуществления.
Процессор 502 в устройстве 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, существующую в настоящее время или разработанную в будущем. Хотя раскрытые реализации могут быть реализованы с одним процессором, как показано, например процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более чем одного процессора.
Память 504 в устройстве 500 может быть постоянным запоминающим устройством (ROM) или устройством оперативной памяти (RAM) в реализации. В качестве памяти 504 может использоваться любой другой подходящий тип запоминающего устройства. Память 504 может включать в себя код и данные 506, к которым обращается процессор 502, используя шину 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные здесь способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение кодирования видео, которое выполняет описанные здесь способы.
Устройство 500 может также включать в себя одно или более устройств вывода, например дисплей 518. Дисплей 518 может быть, в одном примере, сенсорным дисплеем, который объединяет дисплей с сенсорным элементом, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.
Хотя здесь изображена как одна шина, шина 512 устройства 500 может состоять из многочисленных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами устройства 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, устройство 500 может быть реализовано в самых разнообразных конфигурациях.
Далее описываются варианты осуществления настоящего изобретения со ссылкой на прилагаемые чертежи спецификации. Следует понимать, что описанные здесь варианты осуществления используются просто для описания и объяснения настоящего изобретения, но не предназначены для ограничения настоящего изобретения.
Примеры сценариев применения фильтра устранения блочности показаны на Фиг. 6А и 6В. Как показано на рисунке 6А. Блоки 601, 602, также обозначаемые как P, Q, представляют собой два блока кодирования или блоков преобразования, размер CU составляет 16 x4 дискретных отсчетов. Как показано на Фиг. 6А и 6В, представленная здесь технология применима как к вертикальным, так и к горизонтальным краям.
Кодирование видео может выполняться на основе цветового пространства и цветового формата. Например, цветное видео играет важную роль в мультимедийных системах, где для эффективного представления цвета используются различные цветовые пространства. Цветовое пространство задает цвет числовыми значениями с использованием нескольких компонентов. Популярным цветовым пространством является цветовое пространство RGB, в котором цвет представлен как комбинация значений трех основных цветовых компонентов (т. е. красного, зеленого и синего). Для сжатия цветного видео широко используется цветовое пространство YCbCr, как описано в A. Ford и A. Roberts, «Colour space converts», Вестминстерский университет, Лондон, Tech. Республика, август 1998 г.
YCbCr можно легко преобразовать из цветового пространства RGB посредством линейного преобразования, а избыточность между различными компонентами, а именно избыточность между компонентами, значительно снижается в цветовом пространстве YCbCr. Одним из преимуществ YCbCr является обратная совместимость с черно-белым телевидением, поскольку сигнал Y передает информацию о яркости. Кроме того, пропускная способность цветности может быть уменьшена за счет субдискретизации компонентов Cb и Cr в формате дискретизации цветности 4:2:0 со значительно меньшим субъективным воздействием, чем субдискретизация в цветовом пространстве RGB. Из-за этих преимуществ YCbCr является основным цветовым пространством для сжатия видео. Существуют и другие цветовые пространства, такие как YCoCg, используемые при сжатии видео. В этом раскрытии, независимо от фактического используемого цветового пространства, яркость (или L, или Y) и две цветности (Cb и Cr) используются для представления трех цветовых компонентов в схеме сжатия видео.
Например, когда структура дискретизации формата цветности представляет собой дискретизацию 4:2:0, каждый из двух массивов цветности имеет половину высоты и половину ширины массива яркости. Пример номинального вертикального и горизонтального относительного расположения дискретных отсчетов яркости и цветности на изображениях показан на Фиг. 7А. Фиг. 7B иллюстрирует пример дискретизации 4:2:0. Фиг. 7B иллюстрирует пример совместно расположенных блока яркости и блока цветности. Если формат видео YUV4:2:0, то имеется один блок яркости 16×16 и два блока цветности 8×8.
В частности, блок кодирования или блок преобразования содержит блок яркости и два блока цветности.
Как показано, блок яркости содержит в четыре раза больше дискретных отсчетов, чем блок цветности. В частности, блок цветности содержит N дискретных отсчетов на N дискретных отсчетов, в то время как блок яркости содержит 2N дискретных отсчетов на 2N дискретных отсчетов. Следовательно, блок яркости в четыре раза превышает разрешение блока цветности. Например, когда используется формат YUV4:2:0, дискретные отсчеты яркости могут быть подвергнуты понижающей дискретизации с коэффициентом в четыре (например, ширина в два раза и высота в два раза). YUV - это система кодирования цвета, которая использует цветовое пространство с точки зрения компонентов яркости Y и двух компонентов цветности U и V.
Пример сценария для применения фильтра устранения блочности для двух яркостных блоков изображен на Фиг. 8. Существует край 803 блока яркости между первым блоком 801 яркости первого блока (601, 601') изображения и вторым блоком 802 яркости второго блока (602, 602') изображения.
Сценарии, где фильтр устранения блочности применяется для двух блоков цветности, изображены на Фиг. 9A-9H. Фиг. 9А иллюстрирует блок P 901 цветности первого блока (601, 601') изображения, блок Q 902 цветности второго блока (602, 602') изображения и край 903 блока цветности, для которого используется фильтр устранения блочности Как показано на Фиг. 9А, вертикальный край 903 блока цветности между блоками 901, 902 цветности фильтруется согласно варианту осуществления настоящего изобретения. Каждая из Фиг. 9B-9H показывает пример блока цветности для блока P цветности и блока Q цветности. Например, на Фиг. 9В, вертикальный край 913 компонента Cb между компонентами 911, 912 Cb фильтруется согласно варианту осуществления настоящего изобретения. На Фиг. 9С вертикальный край 923 компонента Cr между компонентами 921, 922 Cr отфильтрован в соответствии с вариантом осуществления настоящего изобретения.
В предыдущем варианте устранения блочности VVC всякий раз, когда данный блок цветности (Chroma) (Cb или Cr) использует инструмент кодирования объединенных остатков Cb-Cr (JCCR), соответствующий QP, используемый в устранении блочности цветности, получается из таблицы привязки ChromaQP, разработанной для отдельных компонентов Cb и Cr. Для кодированных блоков объединенных Cb-Cr или компонентов объединенных Cb-Cr использование ChromaQPTable, разработанной для компонентов Cb и Cr, может привести к неправильному выводу QP цветности и, следовательно, к решениям о устранении блочности и/или процессу устранения блочности (который зависит от значения QP цветности) находятся под влиянием. Это приводит к неточным решениям по устранению блочности и/или процессу устранения блочности и, следовательно, может привести к артефактам блочности, остающимся на изображении, что влияет на общее визуальное качество кодированного изображения.
В предыдущем варианте устранения блочности для универсального видеокодирования (VVC) QP цветности выводится следующим образом:
Переменные QpQ и QpP устанавливаются равными значениям QpY единичных блоков кодирования, которые включают в себя блоки кодирования, содержащие дискретный отсчет q0,0 и p0,0 соответственно. Можно понять, что переменная QpQ представляет значение QpY для соответствующего блока яркости Q, а переменная QpP представляет значение QpY для соответствующего блока яркости P.
Переменная QpC выводится следующим образом:
qPi=Clip3(0, 63, ((QpQ+QpP+1) >> 1) + cQpPicOffset) (8 1132)
QpC=ChromaQpTable[ cIdx - 1 ][ qPi ] (8 1133)
Поэтому значение QP цветности, используемое при устранении блочности цветности, в основном выводится посредством усреднения значений QP яркости, а затем используется таблица ChromaQPtable для привязки усредненного QP яркости с QP цветности.
Проблема предыдущей схемы устранения блочности заключается в том, что для кодированных блоков объединенных остатков Cb-Cr (JCCR) или объединенных компонентов Cb-Cr привязка QP цветности также выполняется посредством использования таблицы QP цветности, которая специально разработана для компонентов Cb и Cr.
Варианты осуществления настоящего изобретения направлены на улучшение обычной фильтрации в отношении устранения блочности. Представленное здесь раскрытие включает в себя устройство фильтра устранения блочности, кодер, декодер и соответствующие способы, которые могут выполнять устранение блочности края (903, 913, 923, 933, 943, 953, 963, 973) блока цветности между первым блоком цветности (901 , 911, 921, 931, 941, 951, 961, 971) первого блока (601, 601') изображения и второго блока (902, 912, 922, 932, 942, 952, 962, 972) цветности второго блока (602, 602') изображения точно. Кроме того, устранение блочности должна быть эффективной и точной.
Варианты технической реализации настоящей заявки
В соответствии с вариантом осуществления настоящего изобретения всякий раз, когда данный блок цветности (Cb или Cr) использует инструменты кодирования объединенной цветности (JCCR), параметр QPC квантования цветности определяется на основе усредненного параметра квантования яркости с использованием правила преобразования, которое отличается, когда по сравнению с компонентом цветности Cb и Cr.
В соответствии с вариантом осуществления настоящего изобретения всякий раз, когда данный блок цветности (Cb или Cr) использует инструменты кодирования объединенной цветности (JCCR), соответствующий QP, который используется при устранении блочности цветности, должен быть получен с использованием ChromaQPTable, которая предназначена для кодированных блоков объединенных Cb-Cr или объединенных компонентов Cb-Cr (сокращение от блоков JCCR).
Таблица привязки QP цветности специально разработана для блоков JCCR, индекс которых представлен целочисленным значением. Индексное значение не совпадает со индексным значением Cb и Cr и может принимать значения 3, 4, 5….
В одном примере, как показано на Фиг. 13, каждый компонент цветности (Cb, Cr или объединенных Cb-Cr) имеет свою собственную таблицу привязки QP цветности. В другом примере, как показано на Фиг. 12А и 12В, представлена одна таблица с тремя разными записями для Cb, Cr и объединенными Cb-Cr.
В одном аспекте настоящее изобретение предназначено для правильного получения QP цветности, который используется, когда, по меньшей мере, один из блоков цветности, соседних друг с другом, является кодированными блоками объединенных остатков Cb-Cr (JCCR), или, по меньшей мере, один из блоков цветности кодируется с использованием режим объединенных остатков Cb-Cr (JCCR).
В другом аспекте настоящее изобретение предназначено для выполнения решений по устранению блочности и/или процесса фильтрации по устранению блочности, которые косвенно зависят от значения QP цветности, которое получено правильно, и, следовательно, артефакты блочности могут быть уменьшены и, в свою очередь, улучшены общее субъективное качество.
Первый вариант осуществления настоящей заявки
Согласно первому аспекту изобретение относится к способу устранения блочности для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения при кодировании изображения и/или декодировании изображения,
при этом способ устранения блочности содержит:
выполнение процесса принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит:
в случае, если по меньшей мере один из первого блока цветности и второго блока цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) (или по меньшей мере один из первого блока цветности и второго блока цветности использует объединенные остатки Cb-Cr (JCCR) или по меньшей мере один из первого блока цветности и второго блока цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR)),
определение усредненного параметра qPi квантования яркости на основе первого QP яркости (такого как QpYP) первого блока яркости первого блока изображения и второго QP яркости (такого как QpYQ) второго блока яркости второго блока изображения; и
определение параметра QPC квантования цветности на основе усредненного параметра qPi квантования яркости посредством использования таблицы привязки Qp цветности (такой как ChromaQPTable), индекс которой является первым индексным значением, или с помощью таблицы привязки Qp цветности, содержащей информационные записи, индекс которой является первым индексным значением, при этом первое индексное значение указывает, что по меньшей мере один из первого блока цветности и второго блока цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR), или первое индексное значение соответствует случаю, в котором по меньшей мере один из первый блок цветности и второй блок цветности используют инструменты JCCR;
выполнение процесса фильтрации в отношении края блока цветности на основе результата принятия решения в процессе принятия решения.
результат решения указывает определение того, следует ли фильтровать край (403, 504, 903) блока и/или следует ли выполнять длинную фильтрацию.
В возможном варианте реализации способа согласно первому аспекту как таковому,
первое индексное значение соответствует таблице привязки QP цветности, или
первое индексное значение соответствует информационным записям таблицы привязки QP цветности.
В возможном варианте реализации способа согласно любой предшествующей реализации первого аспекта или первого аспекта как такового, в котором первое индексное значение отличается от значения индекса (cIdx) компонента (Cb, Cr), или первого индексное значение отличается от значения индекса (cIdx) компонента (Cb, Cr) минус 1.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором первое индексное значение равно 2, или первое индексное значение представляет собой значение индекса (cIdx) компонента (объединенный компонент Cb-Cr) равное 3.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором параметр QPC квантования цветности используется для процесса принятия решения в отношении края блока цветности, или параметр QPC квантования цветности непосредственно или косвенно используется для определения того, должен ли фильтроваться край блока цветности и/или должна ли выполняться длинная фильтрация.
В возможном варианте реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,
значение первой пороговой переменной (такой как β') определяется на основе параметра QPC квантования цветности или первого усеченного Qpc посредством использования таблицы привязки; и
значение первой переменной (такой как β) выводится на основе значения первой пороговой переменной (такой как β');
при этом значение первой переменной (например, β) используется для процесса принятия решения в отношении края блока цветности, или значение первой переменной (например, β) используется для определения того, следует ли фильтровать край блока цветности, и/ или должна ли быть выполнена длинная фильтрация.
В возможном варианте реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,
значение второй пороговой переменной (такой как tC') определяется на основе параметра QPC квантования цветности или второго усеченного Qpc посредством использования таблицы привязки;
значение второй переменной (такой как tC) выводится на основе значения второй пороговой переменной (такой как tC');
при этом значение второй переменной (такой как tC) используется для процесса принятия решения в отношении края блока цветности (или значение второй переменной (такой как tC) используется для определения того, следует ли фильтровать границу блока цветности и /или следует ли выполнять длинную фильтрацию) и процесс фильтрации края блока цветности.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором таблица привязки содержит отображение между множеством первых пороговых переменных, множеством вторых пороговых переменных и множество параметров квантования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения и второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения, и/или
при этом первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, а второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, где по меньшей мере один из первого компонента цветности (такого как компонент Cb) первого блока изображения и первого компонента цветности (например компонент Cb) второго блока изображения, являются объединенными компонентами Cb-Cr или кодируются с использованием режима объединенных остатков Cb-Cr (JCCR), и/или
при этом по меньшей мере один из второго компонента цветности (такого как компонент Cr) первого блока изображения и второй компонент цветности (такой как компонент Cr) второго блока изображения являются объединенными компонентами Cb-Cr или кодируются с использованием режима объединенных остатков Cb-Cr (JCCR) или
при этом по меньшей мере один из первого и второго блоков цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором первый блок изображения и второй блок изображения являются блоками преобразования;
или
первый блок изображения и второй блок изображения являются блоками кодирования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором определяют, используют ли по меньшей мере один из первого блока цветности и второго блока цветности инструменты объединенного кодирования остатков цветности (JCCR), на основе флага уровня TU блока преобразования (например, tu_joint_cbcr_residual_flag).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором, когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для первого блока изображения является истинным, первый блок цветности использует средства объединенного кодирования остатков цветности (JCCR) (или первый блок цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR), или первый блок цветности является кодированным блоком Объединенных остатков Cb-Cr (JCCR) или компонент объединенных Cb-Cr); или
когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для второго блока изображения имеет значение true (истина), второй блок цветности использует инструменты кодирования объединенных остатков цветности (JCCR) (или второй блок цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR) или второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) или компонент объединенных Cb-Cr).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором таблица привязки Qp цветности специально разработана для кодированного блока объединенных остатков Cb-Cr (JCCR) или отображения Qp цветности Таблица предназначена для первого компонента цветности (например, компонента Cb), второго компонента цветности (например, компонента Cr) и объединенных компонентов Cb-Cr.
В возможном варианте реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,
таблица привязки QP цветности (такая как ChromaQPTable) содержит соответствие между множеством параметров QPC квантования цветности и множеством параметров qPi квантования яркости, и множество параметров QPC квантования цветности связаны с первым индексным значением; или
таблица привязки QP цветности (например, ChromaQPTable) содержит:
первый набор параметров квантования QPJCCR цветности, второй набор параметров QPCb квантования цветности и третий набор параметров QPCr квантования цветности, каждый из первого набора, второго набора и третьего набора соответствует множеству параметры qPi квантования яркости, при этом первый набор параметров квантования QPJCCR цветности связан с первым индексным значением; второй набор параметров QPCb квантования цветности связан со вторым индексным значением; и третий набор параметров QPCr квантования цветности связан с третьим индексным значением.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором первое индексное значение (такое как 3) указывает по меньшей мере один из первого блока цветности и второго блока цветности (402, 502) представляет собой блок кодированный блок объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, где первое индексное значение или индекс (cIdx) объединенных компонентов Cb-Cr представляет собой целочисленное значение, такое как 3, 4, 5,….
В возможном варианте реализации способа согласно любой предшествующей реализации первого аспекта или первому аспекту как таковому,
в случае, когда первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения, а второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения, индекс (cIdx) компонента цвета имеет второе значение, равное 1; или
в случае, когда первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, а второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения, индекс (cIdx) компонента цвета имеет третье значение, равное 2; или
в случае, когда первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения, а второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения, и по меньшей мере один из первых компонентов цветности представляет собой компонент Объединенных остатков Cb-Cr (JCCR), индекс (cIdx) компонента цвета имеет первое значение, равное 3; или
в случае, когда первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, а второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения, и по меньшей мере один из вторых компонентов цветности представляет собой компонент Объединенных остатков Cb-Cr (JCCR), индекс (cIdx) компонента цвета имеет первое значение, равное 3; или
в случае, когда по меньшей мере один из первого и второго блоков цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR), индекс (cIdx) компонента цвета имеет первое значение, равное 3.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором таблица привязки QP цветности (такая как ChromaQPTable) содержит:
первый набор параметров квантования QPJCCR цветности, второй набор параметров QPCb квантования цветности и третий набор параметров QPCr квантования цветности, каждый из первого набора, второго набора и третьего набора соответствует четвертому набору параметров qPi квантования яркости, при этом первый набор параметров квантования QPJCCR цветности связан с индексом (cIdx) компонента цвета, имеющим первое значение; второй набор параметров QPCb квантования цветности связан с индексом (cIdx) компонента цвета, имеющим второе значение; и третий набор параметров QPCr квантования цветности связан с индексом (cIdx) компонента цвета, имеющим третье значение.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором таблица привязки QP цветности (такая как ChromaQPTable) содержит соответствие между множеством параметров QPC квантования цветности и множеством параметров qPi квантования яркости и множества параметров QPC квантования цветности связаны с первым индексным значением компонента (объединенных компонентов Cb-Cr) (cIdx).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором первый блок (401, 501) цветности имеет размер блока, равный M*N или N*M, и M и N представляет ширину и высоту первого блока цветности соответственно, или N и M представляют соответственно ширину и высоту первого блока цветности;
при этом второй блок (402, 502) цветности имеет размер блока, равный L*T или T*L, и L и T представляют ширину и высоту второго блока цветности соответственно, или T и L представляют ширину и высоту второго блока цветности соответственно,
где N или T представляет собой четное целое число 2n, большее или равное пороговому значению (например, 4, 8, 16, 32…), а n представляет собой положительное целое число.
В возможном варианте реализации способа согласно любой предыдущей реализации первого аспекта или первого аспекта как такового,
- если край (903) блока цветности представляет собой горизонтальный край (903) блока цветности, направление по высоте N первого блока цветности перпендикулярно краю (903) блока цветности, а направление по высоте T второй блок цветности перпендикулярен краю блока цветности (903), при этом одна или обе высоты первого и второго блоков цветности представляют собой четное целое число 2n больше 4 (или больше или равно 8); или
- если край (903) блока цветности является вертикальным краем блока цветности (403, 504), направление по ширине N первого блока цветности перпендикулярно краю (903) блока, а направление по ширине T при этом второй блок цветности перпендикулярен краю блока (903), при этом одна или обе ширины первого и второго блоков цветности представляют собой четное целое число 2n больше 4 (или больше или равно 8).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией первого аспекта или первого аспекта как такового, в котором второй блок изображения является текущим блоком, а первый блок изображения является соседним блоком текущего блока.
Решение 1 : выполняется проверка, используется ли в блоке P или блоке Q или в обоих блоках P и Q инструмент Объединенных остатков Cb-Cr (JCCR). Если ни один из блоков P и Q не использует JCCR, то привязка QP цветности выполняется так же, как это делается в настоящее время для блоков Cb и Cr (см. уравнения 8-1132 и 8-1133). Но если в одном из блоков используется инструмент JCCR, то среднее значение QP яркости для двух блоков P и Q получается так же, как в настоящее время разработано в VVC 6.0 (см. уравнение 8-1132). Кроме того, при привязке QP яркости с QP цветности, в качестве примера, используется таблица привязки QP цветности, которая разработана для кодированного блока объединенных остатков Cb-Cr (JCCR) или объединенных компонентов Cb-Cr, в качестве альтернативы используется таблица QP цветности. Можно использовать таблицу привязки QP, которая разработана для объединенных компонентов Cb-Cr и компонентов Chroma (Cb, Cr), как показано в уравнении 8 1133';
Поэтому уравнение 8-1132 остается тем же самым, но уравнение 8-1133', которое отличается от уравнения 8-1133, проиллюстрировано следующим образом:
qPi=Clip3(0, 63, ((QpQ+QpP+1) >> 1) + cQpPicOffset) (8 1132)
Qp C =ChromaQpTable[2][qPi] (8 1133')
Изменения текста спецификации для решения 1 представлены в соответствии с разделом 8.8.3.6.3 документа JVET-O2001 (версия - vE) следующим образом.
8.8.3.6.3 Процесс принятия решения в отношении краев блоков цветности
Переменные QpQ и QpP устанавливаются равными значениям QpY единичных блоков кодирования, которые включают в себя блоки кодирования, содержащие дискретный отсчет q0,0 и p0,0 соответственно.
Переменная QpC выводится следующим образом:
qPi=Clip3(0, 63, ((QpQ+QpP+1) >> 1) + cQpPicOffset) (8 1132)
- Если дискртеный отсчет p0,0 или q0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то
QpC=ChromaQpTable[ 2 ][ qPi ] (8 1133
- Иначе
QpC=ChromaQpTable[ cIdx - 1 ][ qPi ] (8 1133)
Можно отметить, что:
cIdx =0, если блоки, содержащие дискретный отсчет q0,0 и p0,0, являются блоками яркости или компонентами яркости,
cIdx =1, если блоки, содержащие дискретный отсчет q0,0 и p0,0, являются первыми компонентами цветности (Cb),
cIdx =2, если блоки, содержащие дискретный отсчет q0,0 и p0,0, являются вторыми компонентами цветности (Cr), и
cIdx =3, если один или оба блока, содержащие дискретный отсчет q0,0 и p0,0, являются кодированными блоками объединенных остатков Cb-Cr (JCCR) или составными компонентами Cb-Cr.
Этап определения того, используют ли блок P, блок Q или оба блока P и Q инструмент Объединенных Cb-Cr (JCCR), может включать в себя:
если дискртеный отсчет p0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то определяется, что блок P использует инструмент объединенных остатков Cb-Cr (JCCR); и/или
если дискртеный отсчет q0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то определяется, что блок Q использует инструмент объединенных остатков Cb-Cr (JCCR).
Полезные эффекты и преимущества решения 1 согласно варианту осуществления настоящего изобретения включают в себя то, что индексирование таблицы привязки ChromaQPTable модифицируется на основе проверки того, использует ли текущий блок JCCR или нет, без существенных изменений преобразования.
Второй вариант осуществления настоящей заявки
Согласно второму аспекту изобретение относится к способу устранения блочности для устранения блочности края 903, 913, 923 блока цветности между первым блоком 901, 911, 921 цветности первого блока 601, 601' изображения и вторым блоком 902 цветности, 912, 922 второго блока 602, 602' изображения при кодировании изображения и/или декодировании изображения,
при этом способ устранения блочности содержит:
выполнение процесса принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит:
определение параметра QPCp квантования цветности для первого блока 901, 911, 921 цветности на основе первого QP яркости (такого как QpYP) первого блока 801, 802 яркости первого блока 901, 911, 921 изображения с использованием Qp цветности таблицу привязки (например, ChromaQpTable[0], ChromaQpTable[1], ChromaQpTable[2] таблицы 1200, 1200', 1301, 1302, 1303) или информационные записи таблицы привязки QP цветности, которая указана индексом (например, индекс компонента, cIdx или индекс строки), и индекс, имеющий первое индексное значение (например, 3), когда первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR), или индекс (cIdx), имеющий второе индексное значение (например, 1 или 2), когда первый блок цветности является компонентом цветности первого блока изображения;
определение параметра QPCq квантования цветности для второго блока 902, 912, 922 цветности на основе второго QP яркости (такого как QpYQ) второго блока (401, 501) яркости второго блока изображения посредством использования таблицы привязки Qp цветности например, ChromaQPTable) или информационные записи таблицы привязки QP цветности, которая указывается индексом (например, индексом компонента, cIdx) и индексом (cIdx), имеющим первое значение (например, 3), когда второй блок цветности является кодированный блок объединенных остатков Cb-Cr (JCCR) или индекс (cIdx), имеющий второе значение (такое как 1 или 2), когда второй блок цветности является компонентом цветности второго блока изображения; и
определение усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметра QpCq квантования цветности для второго блока цветности;
выполнение процесса фильтрации в отношении края блока цветности на основе результата принятия решения в процессе принятия решения.
Можно понять, что результат решения указывает, следует или нет фильтровать край блока, и/или следует или нет выполнять длинную фильтрацию.
В возможном варианте реализации способа согласно второму аспекту как таковому,
при этом разные индексные значения соответствуют разным информационным записям таблицы привязки QP цветности, или разные индексные значения соответствуют разным таблицам привязки QP цветности.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором этап определения усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметр QPCq квантования цветности для второго блока цветности содержит:
определение усредненного первого компонента цветности (такого как компонент Cb) параметра QpCb квантования на основе
первого компонента цветности (такой как компонент Cb) параметр QpCbp квантования для первого компонента цветности (такой как компонент Cb) первого блока изображения и
первого компонента цветности (такой как компонент Cb) параметр QpCbq квантования для первого компонента цветности (такой как компонент Cb) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором этап определения усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметр QPCq квантования цветности для второго блока цветности содержит:
определение усредненного второго компонента цветности (такого как компонент Cr) параметра QpCr квантования на основе
второго компонента цветности (такой как компонент Cr) параметр QpCrp квантования для второго компонента цветности (такой как компонент Cr) первого блока изображения и
второго компонента цветности (такой как компонент Cr) параметр QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором усредненный и округленный параметр QPC квантования цветности используется для процесса принятия решения в отношении края блока цветности, или усредненный и округленный параметр QPC квантования цветности параметр QPC квантования цветности прямо или косвенно используется для определения того, должен ли фильтроваться край блока цветности и/или должна ли выполняться длинная фильтрация.
В возможном варианте реализации способа согласно любой предшествующей реализации второго аспекта или второму аспекту как таковому,
значение первой пороговой переменной (такой как β') определяется на основе усредненного и округленного параметра QPC квантования цветности или первого усеченного Qpc посредством использования таблицы привязки; и
значение первой переменной (такой как β) выводится на основе значения первой пороговой переменной (такой как β');
при этом значение первой переменной (такой как β) используется для процесса принятия решения в отношении края блока цветности или используется для определения того, должен ли быть отфильтрован край блока и/или должна ли выполняться длинная фильтрация.
В возможном варианте реализации способа согласно любой предшествующей реализации второго аспекта или второму аспекту как таковому,
значение второй пороговой переменной (такой как tC') определяется на основе усредненного и округленного параметра QPC квантования цветности или второго усеченного Qpc посредством использования таблицы привязки;
значение второй переменной (такой как tC) выводится на основе значения второй пороговой переменной (такой как tC');
при этом значение второй переменной (такой как tC) используется для процесса принятия решения в отношении края блока цветности (или определения того, следует ли фильтровать край блока и/или должна ли выполняться длинная фильтрация), и процесс фильтрации в отношении края блока цветности.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором таблица привязки содержит отображение между множеством первых пороговых переменных, множеством вторых пороговых переменных и множество параметров квантования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения и второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения, или
при этом первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, а второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором первый блок изображения и второй блок изображения являются единичным блоками преобразования или блоками преобразования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором определяют, кодирован ли по меньшей мере один из первого блока цветности и второго блока цветности (402, 502) с использованием режима Объединенных остатков Cb-Cr (JCCR) или по меньшей мере один из первого блока цветности и второго блока цветности (402, 502), представляющий собой кодированный блок объединенных остатков Cb-Cr (JCCR) на основе флага уровня TU блока преобразования (например, tu_joint_cbcr_residual_flag).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором, когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для первого блока изображения является истинным, первый блок цветности использует инструменты объединенного кодирования остатков цветности (JCCR) или кодирование первого блока цветности с использованием режима объединенных остатков Cb-Cr (JCCR); или
когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для второго блока изображения имеет значение true, второй блок цветности использует инструменты кодирования объединенных остатков цветности (JCCR) или второй блок цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором таблица привязки QP цветности (такая как ChromaQPTable) содержит соответствие между множеством параметров QPC квантования цветности и множеством из параметров Qpluma квантования яркости, и множество параметров QPC квантования цветности связаны с первым индексным значением или вторым индексным значением.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового первый блок цветности имеет размер блока, равный M*N или N*M, и M и N представляют собой ширину и высоту. первого блока цветности соответственно, или N и М представляют соответственно ширину и высоту первого блока цветности;
при этом второй блок цветности имеет размер блока, равный L*T или T*L, и L и T представляют ширину и высоту второго блока цветности соответственно, или T и L представляют ширину и высоту второго блока цветности соответственно,
где N или T представляет собой четное целое число 2n, большее или равное пороговому значению (например, 4, 8, 16, 32…), а n представляет собой положительное целое число.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового,
- если край блока цветности является горизонтальным краем блока цветности, направление по высоте N первого блока цветности перпендикулярно краю блока цветности, а направление по высоте T второго блока цветности перпендикулярно блоку цветности край, в котором одна или обе высоты первого и второго блоков цветности представляют собой четное целое число 2n, большее 4 (или большее или равное 8), или
- если край блока цветности является вертикальным краем блока цветности, причем направление по ширине N первого блока цветности перпендикулярно краю блока, а направление по ширине T второго блока цветности перпендикулярно краю блока, при этом одна или обе ширины первого и второго блоков цветности представляют собой четное целое число 2n, большее 4 (или большее или равное 8).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией второго аспекта или второго аспекта как такового, в котором второй блок изображения является текущим блоком, а первый блок изображения является соседним блоком текущего блока.
Решение 2:
Основываясь на флаге JCCR, QP яркости сопоставляется (привязывается к) с QP цветности для каждого из блоков P и Q отдельно с использованием соответствующих таблиц сопоставления QP цветности, а затем среднее значение QP цветности устанавливается в качестве конечного значения QP, которое используется. для устранения блочности.
Если в блоке Q используется инструмент Объединенных остатков Cb-Cr (JCCR), то QpcQ=ChromaQpTable[2 ][ QpQ+cQpPicOffset], иначе QpcQ=ChromaQpTable[cIdx -1 ][ QpQ+cQpPicOffset]
Если блок P использует JCCR, то Qpcp=ChromaQpTable[2][Qpp+cQpPicOffset], иначе Qpcp=ChromaQpTable[cIdx-1][Qpp+cQpPicOffset]
Qp C =Clip3(0, 63, ((QpcQ+QpcP+1) >> 1)) (8 1132')
Можно понять, что ChromaQpTable[2] представляет собой таблицу привязки QP цветности для кодированного блока объединенных остатков Cb-Cr (JCCR).
Этап определения того, использует ли блок P, блок Q или оба блока P и Q инструмент JCCR, может включать:
если дискртеный отсчет p0,0 находится в блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то определяется, что блок P использует инструмент JCCR; и/или
если дискртеный отсчет q0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то определяется, что блок Q использует инструмент JCCR.
Изменения текста спецификации для решения 2 приведены в соответствии с разделом 8.8.3.6.3 документа JVET-O2001 (версия - vE).
8.8.3.6.3 Процесс принятия решения в отношении краев блока цветности
Переменные QpQ и QpP устанавливаются равными значениям QpY единичных блоков кодирования, которые включают в себя блоки кодирования, содержащие дискретный отсчет q0,0 и p0,0 соответственно.
Переменная QpC выводится следующим образом:
Если дискртеный отсчет p0,0 или q0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то
Если дискртеный отсчет p0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то
QpCp=ChromaQpTable[ 2 ][ QpP+cQpPicOffset ]
иначе
QpCp=ChromaQpTable [ cIdx - 1 ][ QpP+cQpPicOffset ]
Если дискртеный отсчет q0,0 находится в единичном блоке преобразования с tu_joint_cbcr_residual_flag, равным 1, то
QpCq=ChromaQpTable[ 2 ][ Qpq+cQpPicOffset ]
иначе
QpCq=ChromaQpTable [ cIdx - 1 ][ Qpq+cQpPicOffset ]
QpC=Clip3(0, 63, ((QpCp+QpCq+1) >> 1)) (8 1132)
иначе
qPi=Clip3(0, 63, ((QpQ+QpP+1) >> 1) + cQpPicOffset) (8 1132)
QpC=ChromaQpTable[ cIdx - 1 ][ qPi ] (8 1133)
Можно понять, что переменная QpQ представляет значение QpY для соответствующего блока Q яркости, а переменная QpP представляет значение QpY для соответствующего блока P яркости.
Полезные эффекты и преимущества решения 2 в соответствии с вариантом осуществления настоящего изобретения заключаются в том, что окончательный полученный QP для блоков JCCR является более точным по сравнению с решением 1 и, следовательно, может привести к лучшим решениям о устранении блочности, что приведет к лучшему субъективному качеству.
Третий вариант осуществления настоящей заявки
В соответствии с третьим аспектом изобретение относится к способу устранения блочности для устранения блочности границы блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения при кодировании изображения и/или декодировании изображения,
при этом способ устранения блочности содержит:
выполнение процесса принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит:
определение параметра QPCp квантования цветности для первого блока цветности на основе первого QP яркости (такого как QpYP) первого блока (801, 802) яркости первого блока изображения посредством использования таблицы привязки Qp цветности (такой как ChromaQPTable) или информационные записи таблицы привязки QP цветности, которая указана индексом (например, индексом компонента, cIdx или индексом строки), и индексом (cIdx), имеющим первое индексное значение (например, 3), когда первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) или индекс (cIdx), имеющий второе индексное значение (такое как 1 или 2), когда первый блок цветности является компонентом цветности первого блока изображения;
определение параметра QPCq квантования цветности для второго блока цветности на основе второго QP яркости (такого как QpYQ) второго блока (802, 801) яркости второго блока изображения посредством использования таблицы привязки Qp цветности (такой как ChromaQPTable) или информационные записи таблицы привязки QP цветности, которая указывается индексом (например, индексом компонента, cIdx) и индексом (cIdx), имеющим первое значение (например, 3), когда второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) или индекс (cIdx), имеющий второе значение (такое как 1 или 2), когда второй блок цветности является компонентом цветности второго блока изображения; и
определение усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметра QpCq квантования цветности для второго блока цветности;
выполнение процесса фильтрации в отношении края блока цветности на основе результата принятия решения в процессе принятия решения.
Можно понять, что результат решения указывает, должен ли быть отфильтрован край блока или нет, и/или
должна быть выполнена длинная фильтрация или нет.
В возможном варианте реализации способа согласно третьему аспекту как таковому,
разные индексные значения соответствуют разным информационным записям таблицы привязки QP цветности, или разные индексные значения соответствуют разным таблицам привязки QP цветности.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, при этом, когда в случае, когда первый блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой первый режим JCCR (такой как 1),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbp квантования для первого компонента цветности (такого как компонент Cb) первого блока изображения на основе QP первой яркости (такого как QpYP) первого блока яркости первого изображения блок посредством использования таблицы привязки Qp цветности, индекс которой (такой как индекс компонента, cIdx) является первым индексным значением, или посредством использования таблицы привязки Qp цветности, содержащей информационные записи, индекс которой (например, индекс компонента, cIdx) является первым индексным значением; и
определение второго компонента цветности (такого как компонент Cr) параметра QpCrp квантования для второго компонента цветности (такого как компонент Cr) первого блока изображения на основе параметра QpCbp квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, при этом, когда в случае, когда второй блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой первый режим JCCR (такой как 1),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbq квантования для первого компонента цветности (такого как компонент Cb) второго блока изображения на основе второго QP яркости (такого как QpYQ) второго блока яркости второго изображения блок посредством использования таблицы привязки Qp цветности, индекс которой (такой как индекс компонента, cIdx) является первым индексным значением, или посредством использования таблицы привязки Qp цветности, содержащей информационные записи, индекс которой (например, индекс компонента, cIdx) является первым индексным значением; и
определение второго компонента цветности (такого как компонент Cr) параметра QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения на основе параметра QpCbq квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предыдущей реализацией третьего аспекта или третьего аспекта как такового, при этом, когда в случае, когда первый блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой второй режим JCCR (такой как 2),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbp квантования для первого компонента цветности (такого как компонент Cb) первого блока изображения на основе QP первой яркости (такого как QpYP) первого блока яркости первого изображения блок посредством использования таблицы привязки Qp цветности, индекс которой (такой как индекс компонента, cIdx) является первым индексным значением, или посредством использования таблицы привязки Qp цветности, содержащей информационные записи, индекс которой (например, индекс компонента, cIdx) является первым индексным значением; и
установку второго компонента цветности (такого как компонент Cr) параметра QpCrp квантования для второго компонента цветности (такого как компонент Cr) первого блока изображения в качестве параметра QpCbp квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, при этом, когда в случае, когда второй блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой второй режим JCCR (такой как 2),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbq квантования для первого компонента цветности (такого как компонент Cb) второго блока изображения на основе второго QP яркости (такого как QpYQ) второго блока яркости второго блока изображения посредством использования таблицы привязки Qp цветности, индекс которой (такой как индекс компонента, cIdx) является первым индексным значением, или посредством использования таблицы привязки Qp цветности, содержащей информационные записи, индекс которой (например, индекс компонента, cIdx) является первым индексным значением; и
установку второго компонента цветности (такого как компонент Cr) параметра QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения в качестве параметра QpCbq квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, при этом, когда в случае, когда первый блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой третий режим JCCR (такой как 3),
определение второго компонента цветности (такого как компонент Cr) параметра QpCrp квантования для второго компонента цветности (такого как компонент Cr) первого блока изображения на основе первого QP яркости (такого как QpYP) первого блока яркости первого изображения блок посредством использования таблицы привязки Qp цветности, индекс которой (такой как индекс компонента, cIdx) является первым индексным значением, или посредством использования таблицы привязки Qp цветности, содержащей информационные записи, индекс которой (например, индекс компонента, cIdx) является первым индексным значением; и
определение параметра QpCbp квантования первого компонента цветности (такого как компонент Cb) для первого компонента цветности (такого как компонент Cb) первого блока изображения на основе параметра QpCrp квантования второго компонента цветности (такого как компонент Cr).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, при этом, когда в случае, когда второй блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой третий режим JCCR (такой как 3),
определение второго компонента цветности (такого как компонент Cr) параметра QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения на основе второго QP яркости (такого как QpYQ) второго блока яркости второго изображения блок посредством использования таблицы привязки Qp цветности, индекс которой (такой как индекс компонента, cIdx) является первым индексным значением, или посредством использования таблицы привязки Qp цветности, содержащей информационные записи, индекс которой (например, индекс компонента, cIdx) является первым индексным значением; и
определение параметра QpCbq квантования первого компонента цветности (такого как компонент Cb) для первого компонента цветности (такого как компонент Cb) второго блока изображения на основе параметра QpCrq квантования второго компонента цветности (такого как компонент Cr).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором этап определения усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметр QPCq квантования цветности для второго блока цветности содержит:
определение усредненного первого компонента цветности (такого как компонент Cb) параметра квантования QpCb на основе
первый компонент цветности (такой как компонент Cb) параметр QpCbp квантования для первого компонента цветности (такой как компонент Cb) первого блока изображения и
первый компонент цветности (такой как компонент Cb) параметр QpCbq квантования для первого компонента цветности (такой как компонент Cb) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором этап определения усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметр QPCq квантования цветности для второго блока цветности содержит:
определение усредненного второго компонента цветности (такого как компонент Cr) параметра QpCr квантования на основе
второй компонент цветности (такой как компонент Cr) параметр QpCrp квантования для второго компонента цветности (такой как компонент Cr) первого блока изображения и
второй компонент цветности (такой как компонент Cr) параметр QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором усредненный и округленный параметр QPC квантования цветности используется для процесса принятия решения в отношении края блока цветности, или усредненный и округленный параметр QPC квантования цветности параметр QPC квантования цветности прямо или косвенно используется для определения того, должен ли фильтроваться край блока цветности и/или должна ли выполняться длинная фильтрация.
В возможном варианте реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором
значение первой пороговой переменной (такой как β') определяется на основе усредненного и округленного параметра QPC квантования цветности или первого усеченного Qpc посредством использования таблицы привязки; и
значение первой переменной (такой как β) выводится на основе значения первой пороговой переменной (такой как β');
при этом значение первой переменной (такой как β) используется для процесса принятия решения в отношении края блока цветности или используется для определения того, должен ли быть отфильтрован край блока и/или должна ли выполняться длинная фильтрация.
В возможном варианте реализации способа согласно любой предыдущей реализации третьего аспекта или третьего аспекта как такового, в котором
значение второй пороговой переменной (такой как tC') определяется на основе усредненного и округленного параметра QPC квантования цветности или второго усеченного Qpc посредством использования таблицы привязки;
значение второй переменной (такой как tC) выводится на основе значения второй пороговой переменной (такой как tC');
при этом значение второй переменной (такой как tC) используется для процесса принятия решения в отношении края блока цветности (или определения того, следует ли фильтровать край блока и/или должна ли выполняться длинная фильтрация), и процесс фильтрации в отношении края блока цветности.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором таблица привязки содержит отображение между множеством первых пороговых переменных, множеством вторых пороговых переменных и множество параметров квантования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения и второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения, или
при этом первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, а второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором первый блок изображения и второй блок изображения являются единичным блоками преобразования или блоками преобразования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором определяют, кодирован ли по меньшей мере один из первого блока цветности и второго блока цветности (402, 502) с использованием режима Объединенных остатков Cb-Cr (JCCR) или по меньшей мере один из первого блока цветности и второго блока цветности (402, 502), представляющий собой кодированный блок Объединенных остатков Cb-Cr (JCCR) на основе флага уровня TU блока преобразования (например, tu_joint_cbcr_residual_flag).
В возможном варианте реализации способа в соответствии с любой предыдущей реализацией третьего аспекта или третьего аспекта как такового, в котором, когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для первого блока изображения является истинным, первый блок цветности использует соединение средства кодирования остатков цветности (JCCR) или кодирование первого блока цветности с использованием режима объединенных остатков Cb-Cr (JCCR); или
когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для второго блока изображения имеет значение true, второй блок цветности использует инструменты кодирования объединенных остатков цветности (JCCR) или второй блок цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором таблица привязки QP цветности (такая как ChromaQPTable) содержит соответствие между множеством параметров QPC квантования цветности и множеством из параметров Qpluma квантования яркости, и множество параметров QPC квантования цветности связаны с первым индексным значением или вторым индексным значением.
В возможном варианте реализации способа в соответствии с любой предыдущей реализацией третьего аспекта или третьего аспекта как такового, в котором первый блок цветности имеет размер блока, равный M*N или N*M, и M и N представляют собой ширину и высота первого блока цветности соответственно, или N и М представляют соответственно ширину и высоту первого блока цветности;
при этом второй блок цветности имеет размер блока, равный L*T или T*L, и L и T представляют ширину и высоту второго блока цветности соответственно, или T и L представляют ширину и высоту второго блока цветности соответственно,
где N или T представляет собой четное целое число 2n, большее или равное пороговому значению (например, 4, 8, 16, 32…), а n представляет собой положительное целое число.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового,
- если край блока цветности является горизонтальным краем блока цветности, причем направление по высоте N первого блока цветности перпендикулярно краю блока цветности, а направление по высоте T второго блока цветности перпендикулярно блоку цветности край, в котором одна или обе высоты первого и второго блоков цветности представляют собой четное целое число 2n, большее 4 (или большее или равное 8), или
- если край блока цветности является вертикальным краем блока цветности, причем направление по ширине N первого блока цветности перпендикулярно краю блока, а направление по ширине T второго блока цветности перпендикулярно краю блока, при этом одна или обе ширины первого и второго блоков цветности представляют собой четное целое число 2n, большее 4 (или большее или равное 8).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией третьего аспекта или третьего аспекта как такового, в котором второй блок изображения является текущим блоком, а первый блок изображения является соседним блоком текущего блока.
Решение 3:
входное значение QP цветности зависит от режима JCCR.
На основе режима JCCR определяются входные значения QP цветности.
Если режим JCCR == 1, то QpCb=ChromaQpTable[ 2 ][ Qpx ]
И QpCr=(QpCb+1) >> 1
Если режим JCCR == 2, то QpCb=ChromaQpTable[ 2 ][ Qpx ]
и QpCr=QpCb
Если режим JCCR == 3, то QpCr=ChromaQpTable[ 2 ][ Qpx ]
И QpCb=(QpCr+1) >> 1
* x в Qpx может быть значением QP блока P или Q.
Qp Cr =Clip3(0, 63, ((QpcrQ+QpcrP+1) >> 1)) (8 1132a)
Qp Cb =Clip3(0, 63, ((QpcbQ+QpcbP+1) >> 1)) (8 1132b)
На основе TuCResMode определяется вывод входных значений QP цветности для каждого из блоков P и Q.
Если TuCResMode == 1, то переменная QPcb получается как QPcb=ChromaQpTable[ 2 ][ QPx ], а значение QPCr получается как QPCr=(QpCb+1) >> 1
иначе, если TuCResMode == 2, то переменная QPcb получается как QPcb=ChromaQpTable[ 2 ][ QPx ], а значение QPCr получается как QPCr=QpCb
иначе, если TuCResMode == 3, то переменная QPcr получается как QPcr=ChromaQpTable[ 2 ][ QPx ], а значение QPCr получается как QPCb=(QpCr+1) >> 1
обратите внимание, что x в QPx может быть заменен на P или Q для соответствующих блоков.
Затем значения QPcr и QPcb можно получить следующим образом:
Qp Cr =Clip3(0, 63, ((QpcrQ+QpcrP+1) >> 1)) (8 1132a)
Qp Cb =Clip3(0, 63, ((QpcbQ+QpcbP+1) >> 1)) (8 1132b)
Полезные эффекты и преимущества решения 3 в соответствии с вариантом осуществления настоящего изобретения заключаются в том, что значение QP, используемое блоком цветности (Cb или Cr), также регулируется на основе режима JCCR (TuCResMode), и, следовательно, может быть получено более точное значение QP. быть получен для каждого из компонентов Cb и Cr, когда JCCR используется для совместной сигнализации компонентов Cb-Cr.
Четвертый вариант осуществления настоящей заявки
В соответствии с четвертым аспектом изобретение относится к способу устранения блочности для устранения блочности края (903, 913, 923) блока цветности между первым блоком (901, 911, 921, 931, 941, 951, 961, 971) цветности первого блока (601, 601') изображения и вторым блоком (902, 912, 922, 932, 942, 952, 962, 972) цветности второго блока (602, 602') изображения при кодировании изображения и/или декодирование изображения,
при этом способ устранения блочности содержит:
выполнение процесса принятия решения в отношении края блока цветности, при этом процесс принятия решения содержит:
определение параметра QPCp квантования цветности для первого блока (901, 911, 921, 931, 941, 951, 961, 971) цветности на основе первого QP яркости (такого как QpYP) для первого блока (801) яркости первого блока (601, 601') изображения и правило преобразования, при этом правило преобразования является первым правилом преобразования, когда первый блок (901, 911, 921, 931, 941, 951, 961, 971) цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR), или правило преобразования является вторым правилом преобразования, когда первый блок (901, 911, 921, 931, 941, 951, 961, 971) цветности является компонентом цветности первого блока изображения (601, 601');
определение параметра QPCq квантования цветности для второго блока (902, 912, 922, 932, 942, 952, 962, 972) цветности на основе второго QP яркости (такого как QpYQ) второго блока (802) яркости второго блок (602, 602') изображения и правило преобразования, при этом правило преобразования представляет собой первое правило преобразования, когда второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR), или правило преобразования представляет собой второе правило преобразования, когда второй блок цветности представляет собой компонент цветности второго блока (602, 602') изображения; и
определение усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока (901, 911, 921, 931, 941, 951, 961, 971) цветности и параметра QPCq квантования цветности для второго блока цветности (902, 912, 922, 932, 942, 952, 962, 972);
выполнение процесса фильтрации в отношении края (903, 913, 923) блока цветности на основе результата принятия решения в процессе принятия решения.
В возможном варианте реализации способа согласно четвертому аспекту как таковому первое правило преобразования предназначено для кодированного блока объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового второе правило преобразования содержит второе правило преобразования R21 и/или второе правило преобразования R22,
при этом второе правило преобразования R21 и второе правило преобразования R22 предназначены для первого компонента цветности (такого как компонент Cb) и второго компонента цветности (такого как компонент Cr) соответственно.
В возможном варианте реализации первое правило преобразования отличается от второго правила преобразования R21 и второго правила преобразования R22.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового правило преобразования представляет собой второе правило преобразования R21, когда первый блок цветности является первым компонентом (911) цветности первого блока (601, 601') изображения, и/или правилом преобразования является второе правило преобразования R22, когда первый блок цветности является вторым компонентом (921) цветности первого блока (601, 601') изображения;
или
правило преобразования представляет собой второе правило преобразования R21, когда второй блок цветности является первым компонентом (912) цветности второго блока (602, 602') изображения, и/или правило преобразования представляет собой второе правило преобразования R22, когда второй блок цветности блок является вторым компонентом (922) цветности второго блока (602, 602') изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое правило преобразования, второе правило преобразования R21 и второе правило преобразования R22 соответствуют (или представлены) соответствующим информационные записи таблицы привязки QP цветности (например, ChromaQPTable) или
первое правило преобразования, второе правило преобразования R21 и второе правило преобразования R22 соответствуют (или представлены) первой таблицей привязки Qp цветности (такой как ChromaQPTable), второй таблицей привязки QP цветности и третьей таблицей привязки Qp цветности соответственно.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое правило преобразования, второе правило преобразования R21 и второе правило преобразования R22 соответствуют первой формуле, второй формуле и третья формула соответственно;
или,
первое правило преобразования, второе правило преобразования R21 и второе правило преобразования R22 представляют собой первую формулу, вторую формулу и третью формулу соответственно.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое правило преобразования представлено в терминах таблицы привязки QP цветности (такой как ChromaQPTable) и первой формулы;
второе правило преобразования R21 представлено в терминах таблицы привязки QP цветности (такой как ChromaQPTable) и второй формулы;
второе правило преобразования R22 представлено в терминах таблицы привязки QP цветности (такой как ChromaQPTable) и третьей формулы.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое правило преобразования представлено в терминах таблицы привязки QP цветности (такой как ChromaQPTable) и первого набора формул;
второе правило преобразования R21 представлено в терминах таблицы привязки QP цветности (такой как ChromaQPTable) и второго набора формул;
второе правило преобразования R22 представлено в терминах таблицы привязки QP цветности (такой как ChromaQPTable) и третьего набора формул.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое правило преобразования, второе правило преобразования R21 и второе правило преобразования R22 указываются первым индексным значением, вторым индексное значение и третье индексное значение соответственно, или
первое правило преобразования, второе правило преобразования R21 и второе правило преобразования R22 соответствуют первому значению индекса, второму значению индекса и третьему значению индекса соответственно.
В возможном варианте реализации первое индексное значение, второе индексное значение и третье индексное значение отличаются друг от друга.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое индексное значение, второе индексное значение и третье индексное значение представляют собой разные целочисленные значения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое индексное значение, второе индексное значение и третье индексное значение являются индексами компонентов (такими как cIdx), имеющими разные значения, определяющие Объединенный кодированный блок Cb-Cr, компонент Cb и компонент Cr соответственно.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первое индексное значение равно 3, или 4, или 5, второе индексное значение равно 1 и третье индексное значение равно 2.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового усредненный и округленный параметр QPC квантования цветности используется для процесса принятия решения в отношении края блока цветности или
усредненный и округленный параметр QPC квантования цветности прямо или косвенно используется для определения того, должен ли быть отфильтрован край (903, 913, 923) блока цветности и/или должна ли быть выполнена длинная фильтрация.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового,
значение первой пороговой переменной (такой как β') определяется на основе усредненного и округленного параметра QPC квантования цветности или первого усеченного Qpc с использованием таблицы поиска; и
значение первой переменной (такой как β) выводится на основе значения первой пороговой переменной (такой как β');
при этом значение первой переменной (такой как β) используется для процесса принятия решения в отношении края блока цветности, или значение первой переменной (такой как β) используется для определения того, является ли граница (903, 913, 923) блока цветности должен быть отфильтрован и/или должна ли выполняться длинная фильтрация.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового,
значение второй пороговой переменной (такой как tC') определяется на основе усредненного и округленного параметра QPC квантования цветности или второго усеченного Qpc с использованием таблицы поиска;
значение второй переменной (такой как tC) выводится на основе значения второй пороговой переменной (такой как tC');
при этом значение второй переменной (такой как tC) используется для процесса принятия решения в отношении границы блока цветности (или значение второй переменной (такой как tC) используется для определения того, должен ли край (903, 913, 923) блока цветности быть отфильтрован и/или должна ли быть выполнена длительная фильтрация) и процесс фильтрации в отношении края блока цветности.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового справочная таблица содержит отображение между множеством первых пороговых переменных, множеством вторых пороговых переменных и множество параметров квантования.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первый блок цветности является первым компонентом цветности (такой как компонент Cb) первого блока изображения, а второй блок цветности является первым компонентом цветности (такой как компонент Cb) второго блока изображения и/или
при этом первый блок цветности является вторым компонентом цветности (такой как компонент Cr) первого блока изображения, а второй блок цветности является вторым компонентом цветности (такой как компонент Cr) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового по меньшей мере один из первого компонента цветности (такого как компонент Cb) первого блока изображения и первого компонента цветности (такого как компонент Cb) второго блока изображения кодируются с использованием режима объединенных остатков Cb-Cr (JCCR), или
при этом по меньшей мере один из второго компонента цветности (например, компонента Cr) первого блока изображения и второго компонента цветности (например, компонента Cr) второго блока изображения кодируется с использованием режима объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового первый блок изображения и второй блок изображения являются блоками преобразования; или первый блок изображения и второй блок изображения являются блоками кодирования.
В возможном варианте реализации способа в соответствии с любой предыдущей реализацией четвертого аспекта или четвертого аспекта как такового определяют, соответствует ли по меньшей мере один из первого блока (901, 911, 921, 931, 941, 951, 961, 971) цветности, а второй блок (902, 912, 922, 932, 942, 952, 962, 972) цветности кодируется с использованием режима Объединенных остатков Cb-Cr (JCCR) или по меньшей мере один из первого блока (901, 911, 921, 931, 941, 951, 961, 971) цветности, а второй блок (902, 912, 922, 932, 942, 952, 962, 972) цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR), основанный на флаг уровня блока преобразования TU (например, tu_joint_cbcr_residual_flag).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для первого блока изображения является истинным, первый блок цветности представляет собой кодированный блок объединенных остатков Cb-Cr (JCCR) или первый блок цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR); или
когда флаг уровня TU (такой как tu_joint_cbcr_residual_flag) для второго блока изображения имеет значение true, второй блок цветности является кодированным блоком Объединенных остатков Cb-Cr (JCCR) или второй блок цветности кодируется с использованием режима объединенных остатков Cb-Cr (JCCR).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового,
при этом первый блок (901, 911, 921, 931, 941, 951, 961, 971) цветности имеет размер блока, равный M*N или N*M, а M и N представляют ширину и высоту первого блока цветности соответственно , или N и M представляют соответственно ширину и высоту первого блока цветности;
при этом второй блок (902, 912, 922, 932, 942, 952, 962, 972) цветности имеет размер блока, равный L*T или T*L, а L и T представляют ширину и высоту второго блока цветности соответственно , или T и L представляют ширину и высоту второго блока цветности соответственно,
где N или T представляет собой четное целое число 2n (например, 4, или 8, или 16, или 32), и n представляет собой положительное целое число.
В возможном варианте реализации
- если край (903, 913, 923) блока цветности является горизонтальным краем блока цветности, причем направление по высоте N первого блока цветности перпендикулярно краю блока цветности, а направление по высоте T второго блока цветности блок перпендикулярен краю блока цветности; или
- если край (903, 913, 923) блока цветности является вертикальным краем (903, 913, 923) блока цветности, то направление по ширине N первого блока цветности перпендикулярно краю (903, 913, 923) блока, а направление по ширине Т второго блока цветности перпендикулярно краю (903, 913, 923) блока.
В возможном варианте реализации способа в соответствии с любой предыдущей реализацией четвертого аспекта или четвертого аспекта как такового второй блок изображения является текущим блоком, а первый блок изображения является соседним блоком текущего блока.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда в случае, когда первый блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой первый режим JCCR (такой как 1),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbp квантования для первого компонента цветности (такого как компонент Cb) первого блока изображения на основе QP первой яркости (такого как QpYP) первого блока (801) яркости первого блока изображения и первое правило преобразования; и
определение второго компонента цветности (такого как компонент Cr) параметра QpCrp квантования для второго компонента цветности (такого как компонент Cr) первого блока изображения на основе параметра QpCbp квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда в случае, когда второй блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой первый режим JCCR (такой как 1),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbq квантования для первого компонента цветности (такого как компонент Cb) второго блока изображения на основе второго QP яркости (такого как QpYQ) второго блока (802) яркости второго блока изображения и первое правило преобразования; и
определение второго компонента цветности (такого как компонент Cr) параметра QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения на основе параметра QpCbq квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, если режим JCCR==1, то QpCb=ChromaQpTable[2][Qpx], или если режим JCCR==1, тогда QpCb=ChromaQpTable[cIdx - 1][Qpx], cIdx=3;
и QpCr=(QpCb+1) >> 1,
где Qpx представляет первый QP яркости (такую как QpYP) первого блока яркости первого блока изображения или второй QP яркости (такую как QpYQ) второго блока яркости второго блока изображения;
при этом ChromaQpTable представляет таблицу привязки QP цветности, индекс которой равен 2, или таблицу привязки QP цветности, содержащую информационные записи, индекс которой равен 2; или при этом ChromaQpTable представляет таблицу привязки QP цветности, индекс которой равен 3, или таблицу привязки QP цветности, содержащую информационные записи, индекс которых равен 3.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда в случае, когда первый блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой второй режим JCCR (такой как 2),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbp квантования для первого компонента цветности (такого как компонент Cb) первого блока изображения на основе QP первой яркости (такого как QpYP) первого блока (801) яркости первого блока изображения и первое правило преобразования; и
установку второго компонента цветности (такого как компонент Cr) параметра QpCrp квантования для второго компонента цветности (такого как компонент Cr) первого блока изображения в качестве параметра QpCbp квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда в случае, когда второй блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой второй режим JCCR (такой как 2),
определение первого компонента цветности (такого как компонент Cb) параметра QpCbq квантования для первого компонента цветности (такого как компонент Cb) второго блока изображения на основе второго QP яркости второго блока яркости второго блока изображения, и первое правило преобразования; и
установку второго компонента цветности (такого как компонент Cr) параметра QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения в качестве параметра QpCbq квантования первого компонента цветности (такого как компонент Cb).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, если режим JCCR==2, то QpCb=ChromaQpTable[2][Qpx], или если режим JCCR==2, тогда QpCb=ChromaQpTable[cIdx - 1][Qpx], cIdx=3;
и QpCr=QpCb,
где Qpx представляет первый QP яркости первого блока яркости первого блока изображения или второй QP яркости второго блока яркости второго блока изображения;
при этом ChromaQpTable представляет таблицу привязки QP цветности, индекс которой равен 2, или таблицу привязки QP цветности, содержащую информационные записи, индекс которой равен 2; или при этом ChromaQpTable представляет таблицу привязки QP цветности, индекс которой равен 3, или таблицу привязки QP цветности, содержащую информационные записи, индекс которых равен 3.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда в случае, когда первый блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой третий режим JCCR (такой как 3),
определение второго компонента цветности (такого как компонент Cr) параметра QpCrp квантования для второго компонента цветности (такого как компонент Cr) первого блока изображения на основе QP первой яркости первого блока яркости первого блока изображения, и первое правило преобразования; и
определение параметра QpCbp квантования первого компонента цветности (такого как компонент Cb) для первого компонента цветности (такого как компонент Cb) первого блока изображения на основе параметра QpCrp квантования второго компонента цветности (такого как компонент Cr).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, когда в случае, когда второй блок цветности кодируется с использованием режима JCCR, а режим JCCR представляет собой третий режим JCCR (такой как 3),
определение второго компонента цветности (такого как компонент Cr) параметра QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения на основе второго QP яркости второго блока яркости второго блока изображения, и первое правило преобразования; и
определение параметра QpCbq квантования первого компонента цветности (такого как компонент Cb) для первого компонента цветности (такого как компонент Cb) второго блока изображения на основе параметра QpCrq квантования второго компонента цветности (такого как компонент Cr).
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового, если режим JCCR==3, то QpCr=ChromaQpTable[2][Qpx] или если режим JCCR==3, то QpCr=ChromaQpTable[cIdx - 1][Qpx], cIdx=3;
и QpCb=(QpCr+ 1) >> 1,
где Qpx представляет первый QP яркости первого блока яркости первого блока изображения или второй QP яркости второго блока яркости второго блока изображения;
при этом ChromaQpTable представляет таблицу привязки QP цветности, индекс которой равен 2, или таблицу привязки QP цветности, содержащую информационные записи, индекс которой равен 2; или при этом ChromaQpTable представляет таблицу привязки QP цветности, индекс которой равен 3, или таблицу привязки QP цветности, содержащую информационные записи, индекс которых равен 3.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового этап определения усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметр QPCq квантования цветности для второго блока цветности содержит:
определение усредненного и округленного первого компонента цветности (такого как компонент Cb) параметра квантования QpCb на основе
первый компонент цветности (такой как компонент Cb) параметр QpCbp квантования для первого компонента цветности (такой как компонент Cb) первого блока изображения и
первый компонент цветности (такой как компонент Cb) параметр QpCbq квантования для первого компонента цветности (такой как компонент Cb) второго блока изображения.
В возможном варианте реализации способа в соответствии с любой предшествующей реализацией четвертого аспекта или четвертого аспекта как такового этап определения усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока цветности и параметр QPCq квантования цветности для второго блока цветности содержит:
определение усредненного и округленного второго компонента цветности (такого как компонент Cr) параметра QpCr квантования на основе
второй компонент цветности (такой как компонент Cr) параметр QpCrp квантования для второго компонента цветности (такой как компонент Cr) первого блока изображения и
второй компонент цветности (такой как компонент Cr) параметр QpCrq квантования для второго компонента цветности (такого как компонент Cr) второго блока изображения.
Решение 4:
На основе типа блока цветности, т.е. Cb, Cr или Cb-Cr (кодированного блока компонента Cb, компонента Cr или объединенных Cb-Cr), а режим объединенных Cb-Cr для типа блока Cb-Cr равен 2, т. е. если TuCResMode[ xCb ][ yCb ] данного блока равен 2, как показано в уравнении 8-952 ниже, QP яркости отображается в QP цветности для каждого из блоков P и Q отдельно с использованием соответствующего правила преобразования (например, сочетания таблицы привязки QP и соответствующих формул), а затем среднее значение QP цветности блоков P и Q устанавливается в качестве окончательного значения QP, которое затем используется для дальнейших операций устранения блочности.
Один из примеров правил преобразования выглядит следующим образом:
Правило преобразования компонента Cb приведено в разделе 8.7.1 с использованием формул 8-935, 8-936 и 8-939; другими словами, уравнения 8-935, 8-936 и 8-939 являются примером второго правила преобразования R21, которое разработано для первого компонента цветности (такого как компонент Cb). Уравнение 8-936 представлено в терминах таблицы привязки QP цветности.
Правило преобразования компонента Cr приведено в разделе 8.7.1 с использованием формул 8-935, 8-937 и 8-940; другими словами, уравнения 8-935, 8-937 и 8-940 являются примером второго правила преобразования R22, которое разработано для вторых компонентов цветности (таких как компонент Cr). Уравнение 8-937 представлено в терминах таблицы привязки QP цветности.
Правило преобразования для компонента Cb-Cr (а именно объединенных компонентов Cb-Cr) приведено в разделе 8.7.1 с использованием формул 8-935, 8-938 и 8-941; другими словами, уравнения 8-935, 8-938 и 8-941 являются примером первого правила преобразования, разработанного для объединенных компонентов Cb-Cr. Уравнение 8-938 представлено в терминах таблицы привязки QP цветности.
Обратите внимание, что настоящее раскрытие предлагает использовать разные правила преобразования для разных компонентов цветности, но не ограничивается конкретными правилами или конкретными формулами, упомянутыми в разделе 8.7.1.
Точные изменения текста спецификации для решения 4 приведены ниже.
8.8.3.6.3 Процесс принятия решения в отношении краев блока цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображения цветности recPicture,
местоположение цветности (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования цветности относительно верхнего левого дискретного отсчета цветности текущего изображения,
местоположение цветности (xBl, yBl), определяющее верхний левый дискретный отсчет текущего блока цветности относительно левой верхней дискретного отсчета текущего блока кодирования цветности,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменная cIdx, указывающая индекс компонента цвета,
переменная cQpPicOffset, указывающая смещение параметра квантования цветности на уровне изображения,
переменная bS, определяющая интенсивность фильтрации границ,
переменная maxFilterLengthCbCr.
Результатами этого процесса являются:
модифицированная переменная maxFilterLengthCbCr,
переменная тс.
Переменная maxK выводится следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
maxK=(SubHeightC== 1) ? 3 : 1 (8-1124)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
maxK=(SubWidthC== 1) ? 3 : 1 (8-1125)
Значения pi и qi при i=0.. maxFilterLengthCbCr и k=0.. maxK получаются следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
qi,k=recPicture[ xCb+xBl+i ][ yCb+yBl+k ] (8 1126)
pi,k=recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ] (8 1127)
subSampleC=SubHeightC (8 1128)
переменная QpQ получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl+i, yCb+yBl+k]) и cIdx в качестве входных данных // Здесь QpQ - это значение QP цветности, чтобы различать значение QP яркости и значение QP цветности, оно будет представлено как QpCQ в части формулы изобретения//
переменная QpP получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl - i - 1 , yCb+yBl+k ) и cIdx в качестве входных данных // Здесь Qpp - это значение QP цветности, чтобы различать значение QP яркости и значение QP цветности, оно будет представлено QpCP в части заявки //
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
qi,k=recPicture[ xCb+xBl+k ][ yCb+yBl+i ] (8 1129)
pi,k=recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ] (8 1130)
subSampleC=SubWidthC (8 1131)
переменная QpQ получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl+k, yCb+yBl+i]) и cIdx в качестве входных данных// QpQ - значение QP цветности, он будет представлен QpCq в части формулы изобретения//
переменная QpP получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl+k, yCb+yBl - i - 1]) и cIdx в качестве входных данных// QpP является QP цветности значение, оно будет представлено QpCp в части формулы изобретения //
Значение переменной β' определяется, как указано в Таблице 8 18, на основе параметра квантования Q, полученного следующим образом:
Q=Clip3(0, 63, QpC + (slice_beta_offset_div2 << 1)) (8 1134)
где slice_beta_offset_div2 - значение синтаксического элемента slice_beta_offset_div2 для сегмента, содержащего дискртеный отсчет q0,0.
Переменная β выводится следующим образом:
β=β′ * (1 << (BitDepthC - 8)) (8 1135)
Значение переменной tC' определяется, как указано в таблице 8 18, на основе параметра квантования цветности Q, полученного следующим образом:
Q=Clip3(0, 65, QpC+2 * (bS - 1) + (slice_tc_offset_div2 << 1)) (8 1136)
где slice_tc_offset_div2 - значение синтаксического элемента slice_tc_offset_div2 для сегмента, содержащего дискртеный отсчет q0,0.
Переменная tC выводится следующим образом:
tC=(BitDepthC < 10) ? (tC′ + 2) >> (10 - BitDepthC) : tC′ * (1 << (BitDepthC - 8)) (8 1137)
……………….
8.8.3.6.10 Процесс выведения параметров квантования для блоков кодирования цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
Блок кодирования цветности, содержащий заданное местоположение дискретные отсчеты цветности (xCb, yCb)
переменная cIdx, указывающая индекс компонента цвета данного блока кодирования цветности,
Результом этого процесса является параметр квантования qP блока кодирования, содержащего дискретный отсчет (xCb, yCb).
если TuCResMode[ xCb ][ yCb ] равно 2, применяется следующее:
qP=Qp′CbCr - QpBdOffsetC (8 952)
В противном случае, если cIdx равен 1, применяется следующее:
qP=Qp′Cb- QpBdOffsetC (8 953)
В противном случае (cIdx равно 2) применяется следующее:
qP=Qp′Cr- QpBdOffsetC (8 954)
Обратите внимание, что переменные Qp'CbCr, Qp'Cb, Qp'Cr получены в разделе «8.7.1 Процесс выведения параметров квантования».
В одном примере реализации QPBdoffset вычитается из значения QP цветности (как показано в 8-952, 8-953, 8-954) и применяется усреднение (как показано в пересмотренном разделе 8.8.3.6.3, представленном ниже). В альтернативном варианте смещение QPBdoffset может быть вычтено из значения QP цветности на этапе усреднения. Эффекты этих двух альтернативных конструкций идентичны.
Подробности процесса получения параметров квантования (как показано в S1611 или S1621 на Фиг. 17) в соответствии с некоторыми вариантами осуществления настоящего раскрытия описаны в разделе 8.7.1 следующим образом:
8.7.1 Процесс выведения параметров квантования
Входные данные для этого процесса являются следующими:
местоположение яркости (xCb, yCb), указывающее верхний левый дискртеный отсчет яркости текущего блока кодирования относительно верхнего левого дискретного отсчета яркости текущего изображения,
переменная cbWidth, указывающая ширину текущего блока кодирования в дискретный отсчетх яркости,
переменная cbHeight, указывающая высоту текущего блока кодирования в дискретных отсчетов яркости,
переменная treeType, указывающая, используется ли одиночное дерево (SINGLE_TREE) или двойное дерево для разделения CTU, и, когда используется двойное дерево, обрабатываются ли в данный момент компоненты яркости (DUAL_TREE_LUMA) или цветности (DUAL_TREE_CHROMA).
В этом процессе получают параметр квантования яркости Qp'Y и параметры квантования QP цветности'Cb и Qp'Cr.
Положение яркости (xQg, yQg) указывает верхний левый дискртеный отсчет яркости текущей группы квантования относительно верхнего левого дискретного отсчета яркости текущего изображения. Горизонтальное и вертикальное положения xQg и yQg устанавливаются равными CuQgTopLeftX и CuQgTopLeftY соответственно.
ПРИМЕЧАНИЕ - : Текущая группа квантования представляет собой прямоугольную область внутри блока дерева кодирования, который использует один и тот же qPY_PRED. Его ширина и высота равны ширине и высоте узла дерева кодирования, в котором позиция верхнего левого дискретного отсчета яркости присваивается переменным CuQgTopLeftX и CuQgTopLeftY.
Когда treeType равен SINGLE_TREE или DUAL_TREE_LUMA, предсказанный параметр квантования яркости qPY_PRED получается с помощью следующих упорядоченных шагов:
1. Переменная qPY_PREV выводится следующим образом:
- Если выполняется одно или более из следующих условий, qPY_PREV устанавливается равным SliceQpY:
- Текущая группа квантования является первой группой квантования в сегменте.
- Текущая группа квантования является первой группой квантования в блоке.
- Текущая группа квантования является первой группой квантования в строке CTB блока, а entropy_coding_sync_enabled_flag равен 1.
- В противном случае qPY_PREV устанавливается равным параметру квантования яркости QpY последней единичные блоки кодирования яркости в предыдущей группе квантования в порядке декодирования.
2. Процесс определения доступности соседнего блока, как указано в пункте 6.4.4, запускается с расположением (xCurr, yCurr), установленным равным (xCb, yCb), соседним местоположением (xNbY, yNbY), установленным равным (xQg - 1, yQg), checkPredModeY устанавливается равным FALSE, а cIdx устанавливается равным 0 в качестве входных данных, а выход назначается availableA. Переменная qPY_A выводится следующим образом:
- Если выполняется одно или более из следующих условий, qPY_A устанавливается равным qPY_PREV:
- availableA равно FALSE (ЛОЖЬ).
- CTB, содержащий блок кодирования яркости, охватывающий положение яркости (xQg - 1, yQg), не равен CTB, содержащему текущий блок кодирования яркости в точке (xCb, yCb), т. е. выполняются все следующие условия:
- (xQg - 1) >> CtbLog2SizeY не равно (xCb) >> CtbLog2SizeY
- (yQg) >> CtbLog2SizeY не равно (yCb) >> CtbLog2SizeY
- В противном случае qPY_A устанавливается равным параметру квантования яркости QpY единичные блоки кодирования, содержащей покрытие блока кодирования яркости (xQg - 1, yQg).
3. Процесс определения доступности соседнего блока, как указано в пункте 6.4.4, запускается с расположением (xCurr, yCurr), установленным равным (xCb, yCb), соседним местоположением (xNbY, yNbY), установленным равным (xQg, yQg - 1).), checkPredModeY устанавливается равным FALSE, а cIdx устанавливается равным 0 в качестве входных данных, а выход назначается availableB. Переменная qPY_B выводится следующим образом:
- Если выполняется одно или более из следующих условий, qPY_B устанавливается равным qPY_PREV:
- availableB равно FALSE.
- CTB, содержащий блок кодирования яркости, охватывающий местоположение яркости (xQg, yQg - 1), не равен CTB, содержащему текущий блок кодирования яркости в точке (xCb, yCb), т. е. выполняются все следующие условия:
- (xQg) >> CtbLog2SizeY не равно (xCb) >> CtbLog2SizeY
- (yQg - 1) >> CtbLog2SizeY не равно (yCb) >> CtbLog2SizeY
- В противном случае qPY_B устанавливается равным параметру квантования яркости QpY единичные блоки кодирования, содержащей покрытие блока кодирования яркости (xQg, yQg - 1).
4. Предсказанный параметр квантования яркости qPY_PRED выводится следующим образом:
Если все следующие условия истинны, то qPY_PRED устанавливается равным параметру квантования яркости QpY единичные блоки кодирования, содержащей покрытие блока кодирования яркости (xQg, yQg - 1):
availableB равно TRUE (ИСТИНА).
текущая группа квантования является первой группой квантования в строке CTB внутри кирпича
В противном случае qPY_PRED выводится следующим образом:
qPY_PRED=(qPY_A+qPY_B+1) >> 1 (8 932)
Переменная QpY выводится следующим образом:
QpY=((qPY_PRED+CuQpDeltaVal+64+2 * QpBdOffsetY)% (64+QpBdOffsetY)) - QpBdOffsetY (8 933)
Параметр квантования яркости Qp'Y выводится следующим образом:
Qp'Y=QpY+QpBdOffsetY (8 934)
Когда ChromaArrayType не равен 0, а treeType равен SINGLE_TREE или DUAL_TREE_CHROMA, применяется следующее:
- Когда treeType равен DUAL_TREE_CHROMA, переменная QpY устанавливается равной параметру квантования яркости QpY единичные блоки кодирования яркости, которая охватывает местоположение яркости (xCb+cbWidth/2, yCb+cbHeight/2).
- Переменные qPCb, qPCr и qPCbCr получаются следующим образом:
qPiChroma=Clip3(-QpBdOffsetC, 63, QpY) (8 935)
qPiCb=ChromaQpTable[ 0 ][ qPiChroma ] (8 936)
qPiCr=ChromaQpTable[ 1 ][ qPiChroma ] (8 937)
qPiCbCr=ChromaQpTable[ 2 ][ qPiChroma ] (8 938)
- Параметры квантования цветности для компонентов Cb и Cr, Qp'Cb и Qp'Cr, и совместное кодирование Cb-Cr Qp'CbCr получаются следующим образом:
Qp′Cb =
Clip3(-QpBdOffsetC, 63, qPCb+pps_cb_qp_offset+slice_cb_qp_offset +CuQpOffsetCb) + QpBdOffsetC (8 939)
Qp′Cr =
Clip3(-QpBdOffsetC, 63, qPCr+pps_cr_qp_offset+slice_cr_qp_offset +CuQpOffsetCr) + QpBdOffsetC (8 940)
Qp′CbCr =
Clip3(-QpBdOffsetC, 63, qPCbCr+pps_cbcr_qp_offset+slice_cbcr_qp_offset +CuQpOffsetCbCr) + QpBdOffsetC (8 941)
Следует отметить, что, как показано в 8-935, QP яркости (например, QpY) не используется напрямую для получения QP цветности (например, qPiCb, qPiCr или qPiCbCr). Например, к QP (QpY) яркости может быть применен дополнительный этап, такой как отсечение.
Процесс принятия решения в отношении краев блока цветности (как показано на этапе S1601 на Фиг. 16) в соответствии с решением 4 настоящего раскрытия описан в пересмотренном разделе 8.8.3.6.3 следующим образом:
8.8.3.6.3 Процесс принятия решения в отношении краев блоков цветности
…
Переменные QpQ и QpP устанавливаются равными Qp′CbCr - QpBdOffsetC, когда TuCResMode[xCb][yCb] равно 2, Qp′Cb - QpBdOffsetC, когда cIdx равно 1; Qp′Cr - QpBdOffsetC, когда cIdx равно 2 единичным блокам кодирования, которые включают в себя блоки кодирования, содержащие дискретный отсчет q0,0 и p0,0 соответственно.
Переменная QpC выводится следующим образом:
QpC=(QpQ+QpP+1) >> 1
Обратитесь к разделу 8.8.3.6.3, в одном примере реализации QPBdoffset вычитается из значения QP цветности (как показано в 8-952, 8-953, 8-954), а затем применяется усреднение напрямую (как показано в раздел 8.8.3.6.3). Можно понять, что это практически то же самое, что и способ вычитания смещения QPBd во время этапа усреднения. Детали примера этапа 1631 (как показано на Фиг. 17) описаны в приведенном выше разделе 8.8.3.6.3 спецификации VVC и не будут повторяться в дальнейшем.
Решение 5:
Решение 5 в основном похоже на решение 4, за исключением того, что правила преобразования немного отличаются. Текст спецификации прикреплен ниже.
8.8.3.6.3 Процесс принятия решения в отношении краев блока цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
массив дискретных отсчетов изображения цветности recPicture,
местоположение цветности (xCb, yCb), указывающее верхний левый дискретный отсчет текущего блока кодирования цветности относительно верхнего левого дискретного отсчета цветности текущего изображения,
местоположение цветности (xBl, yBl), определяющее верхний левый дискретный отсчет текущего блока цветности относительно левой верхней дискретного отсчета текущего блока кодирования цветности,
переменная edgeType, указывающая, фильтруется ли вертикальный (EDGE_VER) или горизонтальный (EDGE_HOR) край,
переменная cIdx, указывающая индекс компонента цвета,
переменная cQpPicOffset, указывающая смещение параметра квантования цветности на уровне изображения,
переменная bS, определяющая интенсивность фильтрации границ,
переменная maxFilterLengthCbCr.
Результатами этого процесса являются:
модифицированная переменная maxFilterLengthCbCr,
переменная тс.
Переменная maxK выводится следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
maxK=(SubHeightC== 1) ? 3 : 1 (8-1124)
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
maxK=(SubWidthC== 1) ? 3 : 1 (8-1125)
Значения pi и qi при i=0.. maxFilterLengthCbCr и k=0.. maxK получаются следующим образом:
Если edgeType равен EDGE_VER, применяется следующее:
qi,k=recPicture[ xCb+xBl+i ][ yCb+yBl+k ] (8 1126)
pi,k=recPicture[ xCb+xBl - i - 1 ][ yCb+yBl+k ] (8 1127)
subSampleC=SubHeightC (8 1128)
переменная QpQ получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl+i, yCb+yBl+k) и cIdx в качестве входных данных.
переменная QpP получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl - i - 1 , yCb+yBl+k) и cIdx в качестве входных данных.
В противном случае (edgeType равен EDGE_HOR) применяется следующее:
qi,k=recPicture[ xCb+xBl+k ][ yCb+yBl+i ] (8 1129)
pi,k=recPicture [ xCb+xBl+k ][ yCb+yBl - i - 1 ] (8 1130)
subSampleC=SubWidthC (8 1131)
переменная QpQ получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl+k, yCb+yBl+i) и cIdx в качестве входных данных.
переменная QpP получается посредством вызова процесса получения QP цветности, как указано в пункте 8.8.3.6.10, с местоположением цветности (xCb+xBl+k , yCb+yBl - i - 1) и cIdx в качестве входных данных
8.8.3.6.10 Процесс выведения параметра квантования для блоков кодирования цветности
Этот процесс вызывается, только если ChromaArrayType не равен 0.
Входные данные для этого процесса являются следующими:
Блок кодирования цветности, содержащий заданное местоположение дискретные отсчеты цветности (xCb, yCb)
переменная cIdx, указывающая индекс компонента цвета данного блока кодирования цветности,
Результом этого процесса является параметр квантования qP блока кодирования, содержащего дискретный отсчет (xCb, yCb).
если TuCResMode[ xCb ][ yCb ] равно 2, применяется следующее:
qP=QpCbCr (8 952)
cQpPicOffset устанавливается равным pps_joint_cbcr_qp_offset
В противном случае, если cIdx равен 1, применяется следующее:
qP=QpCb (8 953)
В противном случае (cIdx равно 2) применяется следующее:
qP=QpCr (8 954)
qP=Clip3(0, 63, qP+cQpPicOffset)
ПРИМЕЧАНИЕ. - Переменная cQpPicOffset обеспечивает корректировку значения pps_cb_qp_offset или pps_cr_qp_offset в зависимости от того, является ли фильтруемый компонент цветности компонентом Cb или Cr. Однако, чтобы избежать необходимости изменять величину корректировки в пределах изображения, процесс фильтрации не включает корректировку значения slice_cb_qp_offset или slice_cr_qp_offset, и (когда cu_chroma_qp_offset_enabled_flag равен 1) значения CuQpOffsetCb, CuQpOffsetCr или CuQpOffsetCbCr.
ПРИМЕЧАНИЕ. - Переменные QpCbCr , QpCb , QpCr получаются, как в разделе 8.7.1 (Процесс выведения параметров квантования).
В уравнении 8 935 QpY представляет первый QP яркости (такую как QpYP) первого блока (801) яркости первого блока (601, 601') изображения или второй QP яркости (такую как QpYQ) второго блок (802) яркости второго блока (602, 602') изображения.
В уравнениях 8 936, 8 937, 8 938 ChromaQpTable представляет таблицу привязки QP цветности (такую как ChromaQPTable).
QpBdOffsetC представляет значение смещения диапазона параметра квантования цветности. Значение QpBdOffsetC выводится следующим образом: QpBdOffsetC=6 * битовая_глубина_цветности_минус8, где «битовая_глубина_цветности_минус8» является параметром, сигнализируемым в наборе параметров последовательности (SPS).
pps_cb_qp_offset и pps_cr_qp_offset задают смещения для параметра квантования яркости Qp'Y, используемого для получения Qp'Cb и Qp'Cr, соответственно. Значения pps_cb_qp_offset и pps_cr_qp_offset должны находиться в диапазоне от -12 до +12 включительно. Когда ChromaArrayType равен 0, pps_cb_qp_offset и pps_cr_qp_offset не используются в процессе декодирования, и декодеры должны игнорировать их значения.
pps_joint_cbcr_qp_offset задает смещение параметра квантования яркости Qp'Y, используемого для получения Qp'CbCr. Значение pps_joint_cbcr_qp_offset должно находиться в диапазоне от -12 до +12 включительно. Когда ChromaArrayType равен 0 или sps_joint_cbcr_enabled_flag равен 0, pps_joint_cbcr_qp_offset не используется в процессе декодирования, и декодеры должны игнорировать его значение.
slice_cb_qp_offset указывает разницу, которая должна быть добавлена к значению pps_cb_qp_offset при определении значения параметра квантования Qp'Cb. Значение slice_cb_qp_offset должно находиться в диапазоне от -12 до +12 включительно. Когда slice_cb_qp_offset отсутствует, предполагается, что оно равно 0. Значение pps_cb_qp_offset+slice_cb_qp_offset должно находиться в диапазоне от -12 до +12 включительно.
slice_cr_qp_offset указывает разницу, которая должна быть добавлена к значению pps_cr_qp_offset при определении значения параметра квантования Qp'Cr. Значение slice_cr_qp_offset должно находиться в диапазоне от -12 до +12 включительно. Когда slice_cr_qp_offset отсутствует, предполагается, что оно равно 0. Значение pps_cr_qp_offset+slice_cr_qp_offset должно находиться в диапазоне от -12 до +12 включительно.
slice_joint_cbcr_qp_offset указывает разницу, которая должна быть добавлена к значению pps_joint_cbcr_qp_offset при определении значения Qp'CbCr. Значение slice_joint_cbcr_qp_offset должно находиться в диапазоне от -12 до +12 включительно. Когда slice_joint_cbcr_qp_offset отсутствует, предполагается, что он равен 0. Значение pps_joint_cbcr_qp_offset+slice_joint_cbcr_qp_offset должно находиться в диапазоне от -12 до +12 включительно.
cu_chroma_qp_offset_flag, если он присутствует и равен 1, указывает, что запись в cb_qp_offset_list[] используется для определения значения CuQpOffsetCb, соответствующая запись в cr_qp_offset_list[] используется для определения значения CuQpOffsetCr и соответствующая запись в joint_cbcr_qp_offset_list. [ ] используется для определения значения CuQpOffsetCbCr. cu_chroma_qp_offset_flag, равный 0, указывает, что эти списки не используются для определения значений CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr.
cu_chroma_qp_offset_idx, если присутствует, определяет индекс в cb_qp_offset_list[], cr_qp_offset_list[] и joint_cbcr_qp_offset_list[], который используется для определения значения CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr. При наличии значение cu_chroma_qp_offset_idx должно находиться в диапазоне от 0 до chroma_qp_offset_list_len_minus1 включительно. Если он отсутствует, предполагается, что значение cu_chroma_qp_offset_idx равно 0.
Когда присутствует cu_chroma_qp_offset_flag, применяется следующее:
Переменная IsCuChromaQpOffsetCoded устанавливается равной 1.
Переменные CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr получаются следующим образом:
Если cu_chroma_qp_offset_flag равен 1, применяется следующее:
CuQpOffsetCb=cb_qp_offset_list[ cu_chroma_qp_offset_idx] (7 166)
CuQpOffsetCr=cr_qp_offset_list[ cu_chroma_qp_offset_idx] (7 167)
CuQpOffsetCbCr=Joint_cbcr_qp_offset_list[ cu_chroma_qp_offset_idx] (7 168)
В противном случае (cu_chroma_qp_offset_flag равен 0) CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr устанавливаются равными 0.
cb_qp_offset_list[i], cr_qp_offset_list[i] и joint_cbcr_qp_offset_list[i], задают смещения, используемые при выводе Qp'Cb, Qp'Cr и Qp'CbCr, соответственно. Значения cb_qp_offset_list[i], cr_qp_offset_list[i] и joint_cbcr_qp_offset_list[i] должны находиться в диапазоне от -12 до +12 включительно.
В частности, вариант осуществления устройства в основном подобен варианту осуществления способа, и поэтому он описан кратко; для процессов выполнения конкретных функций каждого блока можно сделать ссылку на частичные описания в варианте осуществления способа.
Фиг. 10 представляет собой блок-схему, иллюстрирующую примерное устройство 1000 фильтра устранения блочности в соответствии с способами, описанными в этом раскрытии (дополнительные подробности будут описаны ниже, например, на основе Фиг. 9A-9H или рис. 11-13 или рис. 16-17). Устройство 1000 фильтра устранения блочности может быть выполнено с возможностью выполнения способов устранения блочности в соответствии с различными примерами, описанными в настоящем раскрытии. Как правило, один или оба модуля 220 контурного фильтра с Фиг. 2, и модуля 320 контурного фильтра с Фиг. 3, может включать в себя компоненты, по существу аналогичные компонентам устройства 1000 фильтра устранения блочности. Другие устройства видеокодирования, такие как видеокодеры, видеодекодеры, видеокодеры/декодеры (КОДЕКИ) и т.п., также могут включать в себя компоненты, по существу аналогичные фильтру 1000 устранения блочности. Устройство 1000 фильтра устранения блочности может быть реализовано в аппаратных средствах, программном обеспечении или программно-аппаратных средствах или в любой их комбинации. При реализации в программном обеспечении или встроенном программном обеспечении также может быть предоставлено соответствующее аппаратное обеспечение (такое как один или более процессоров или блоков обработки и память для хранения инструкций для программного обеспечения или встроенного программного обеспечения).
В одном примере на Фиг. 10, устройство 1000 фильтра устранения блочности включает в себя модуль 1004 определения устранения блочности, определения 1002 поддержки, хранящиеся в памяти, модуль 1006 фильтрации с устранением блочности, параметры 1008 фильтра устранения блочности, хранящиеся в памяти, модуль 1003 определения местоположения краев и структуру 1005 данных местоположений краев. Любой или все компоненты фильтра 1000 устранения блочности могут быть функционально интегрированы. Компоненты фильтра 1000 устранения блочности проиллюстрированы отдельно только в иллюстративных целях. Как правило, фильтр 1000 устранения блочности принимает данные для декодированных блоков, например, от компонента 114, 214 суммирования, который объединяет данные предсказания с остаточными данными для блоков. Данные могут дополнительно включать в себя указание на то, как были предсказаны блоки. В одном примере, описанном ниже, устройство 1000 фильтра устранения блочности выполнено с возможностью приема данных, включающих в себя декодированный видеоблок, связанный с CTB (или CTU), и дерево квадрантов CU для CTB, где дерево квадрантов CU описывает, как CTB разбивается на CU или CB и TU или TB.
Устройство 1000 фильтра устранения блочности может поддерживать структуру 1005 данных местоположений краев в памяти устройства 1000 фильтра устранения блочности или во внешней памяти, предоставленной соответствующим устройством кодирования видео. В некоторых примерах модуль 1003 определения местоположения краев может принимать дерево квадрантов, соответствующее CTB, которое указывает, как CTB разбивается на CU или CB и TU или TB. Затем модуль 1003 определения местоположения краев может проанализировать дерево квадрантов CU, чтобы определить границы между декодированными видеоблоками, связанными с блоками TU или CU в CTB, которые являются кандидатами на деблокировку.
Структура 1005 данных местоположений краев может содержать массив, имеющий горизонтальное измерение, вертикальное измерение и измерение, представляющее горизонтальные края и вертикальные края. В общем, границы между видеоблоками могут возникать между двумя видеоблоками, связанными с CU наименьшего размера CTB, или TU, или CU. Если предположить, что CTB имеет размер N×N, и предположить, что CU наименьшего размера CTB имеет размер M×M, массив может иметь размер [N/M]×[N/M]×2, где «2» представляет два возможных направления краев между CU (горизонтальное и вертикальное). Например, если предположить, что CTB имеет 64×64 пикселя и CU или TU наименьшего размера 8×8, массив может содержать [8]×[8]×[2] записей.
Каждая запись обычно может соответствовать возможному краю между двумя видеоблоками. На самом деле края могут не существовать в каждой из позиций в LCU, соответствующей каждой из записей структуры 1005 данных местоположений краев. Соответственно, значения структуры данных могут быть инициализированы как ложные. В общем, модуль 1003 определения местоположения краев может анализировать дерево квадрантов CU, чтобы определять местоположения границ между двумя видеоблоками, связанными с TU или CU CTB, и устанавливать соответствующие значения в структуре 1005 данных местоположения краев в значение true.
В общем, записи массива могут описывать, существует ли соответствующий край в CTB в качестве кандидата на деблокировку. То есть, когда модуль 1003 определения местоположения краев определяет, что существует граница между двумя соседними видеоблоками, связанными с TU или CU CTB, модуль 1003 определения местоположения краев может установить значение соответствующей записи в структуре 1005 данных местоположений краев, чтобы указать, что край существует (например, до значения «истина»).
Модуль 1004 определения устранения блочности обычно определяет, следует ли, для двух соседних блоков, устранить блочность на краю между этими двумя соседними блоками. Модуль 1004 определения устранения блочности может определять местоположения краев, используя структуру 1005 данных местоположений краев. Когда значение структуры 1005 данных местоположений краев имеет логическое значение, модуль 1004 определения устранения блочности может определить, что «истинное» значение указывает на наличие края, а «ложное» значение указывает на отсутствие края в некоторых примерах.
В общем, модуль 1004 определения устранения блочности сконфигурирован с одной или более функциями определения устранения блочности. Функции могут включать в себя множество коэффициентов, применяемых к линиям пикселей, которые пересекают край между блоками. Например, функции могут применяться к линии пикселей, перпендикулярной краю, где некоторые пиксели находятся в одном из двух блоков, а некоторые - в другом из двух блоков. Определения 1002 поддержки определяют поддержку функций. В общем случае «поддержка» соответствует пикселям, к которым применяются функции.
Модуль 1004 определения устранения блочности может быть выполнен с возможностью применения одной или более функций определения устранения блочности к одному или более наборам поддержки, как определено определениями 1002 поддержки, чтобы определять, следует ли устранять блочность конкретного края между двумя блоками видеоданных. Пунктирная линия, исходящая из модуля 1004 определения устранения блочности, представляет данные для блоков, выводимых без фильтрации. В случаях, когда модуль 1004 определения устранения блочности определяет, что граница между двумя блоками не должна фильтроваться, фильтр 1000 устранения блочности может выводить данные для блоков без изменения данных. То есть данные могут обходить модуль 1006 фильтрации с устранением блочности. С другой стороны, когда модуль 1004 определения устранения блочности определяет, что блочность края должна быть устранена, модуль 1004 определения устранения блочности может заставить модуль 1006 фильтрации с устранением блочности фильтровать значения для пикселей рядом с краем, чтобы устранять блочность край.
Модуль 1006 фильтрации с устранением блочности извлекает определения фильтров устранения блочности из параметров 1008 фильтра устранения блочности для краев, подлежащих устранению блочности, как указано модулем 1004 определения устранения блочности. Как правило, фильтрация края использует значения пикселей из окрестности текущего края, подлежащего блочности устранению. Следовательно, как функции принятия решения о снятии блочности, так и фильтры устранения блочности могут иметь определенную опорную область по обеим сторонам края. Применяя фильтр устранения блочности к пикселям вблизи края, модуль 1006 фильтрации с устранением блочности может сглаживать значения пикселей таким образом, чтобы подавлялись высокочастотные переходы вблизи края. Таким образом, применение фильтр устранения блочности к пикселям вблизи края может уменьшить артефакты блочности вблизи края.
Фиг. 16 представляет собой блок-схему, иллюстрирующую другой примерный способ устранения блочности в соответствии с способами, описанными в этом раскрытии (дополнительные подробности будут описаны ниже, например, на основе Фиг. 9А-9Н, 10, 12, 13 и 17). Способ 1600 устранения блочности для устранения блочности края (903, 913, 923, 933, 943, 953, 963, 973) блока цветности между первым блоком (901, 911, 921, 931, 941, 951, 961, 971) цветности первого блока (601, 601') изображения и вторым блоком (902, 912, 922, 932, 942, 952, 962, 972) цветности второго блока (602, 602') изображения при кодировании изображения и /или декодирование изображения, при этом способ 1600 устранения блочности включает в себя:
выполнение 1601 процесса принятия решения в отношении края блока цветности, при этом, как показано на Фиг. 17, процесс принятия решения содержит:
определение 1611 параметра QPCp квантования цветности для первого блока (901, 911, 921, 931, 941, 951, 961, 971) цветности на основе первого QP яркости (такого как QpYP) для первого блока (801) яркости первого блока (601, 601') изображения и одной или более таблиц привязки параметров квантования (QP) цветности;
определение 1621 параметра QPCq квантования цветности для второго блока (902, 912, 922, 932, 942, 952, 962, 972) цветности на основе второго QP яркости (такого как QpYQ) для второго блока (802) яркости второго блока (602, 602') изображения и одной или более таблиц привязки QP цветности; и
определение 1631 усредненного и округленного параметра QPC квантования цветности на основе параметра QPCp квантования цветности для первого блока (901, 911, 921, 931, 941, 951, 961, 971) цветности и параметра QpCq квантования цветности для второго блока (902, 912, 922, 932, 942, 952, 962, 972) цветности;
определение 1641 порогового параметра (tC) на основе усредненного и округленного параметра (QpC) квантования цветности
выполнение 1603 процесса фильтрации края (903, 913, 923) блока цветности, по меньшей мере, на основе порогового параметра (tC).
Фиг. 11 представляет собой блок-схему, иллюстрирующую другой примерный способ устранения блочности в соответствии с способами, описанными в этом раскрытии (дополнительные подробности будут описаны ниже, например, на основе Фиг. 9, 10, 12 и 13).
Как показано на Фиг. 11, на этапе 1101 определяется, составляет ли размер обоих блоков, перпендикулярных данному краю и смежных с ним в направлении устранения блочности, >=8 дискретных отсчетов. Если да, то выполняется процесс принятия решения в отношении края блока цветности. Процесс принятия решения может включать этап 1103 и этап 1107. Подробности этапа 1103 будут предоставлены позже. На этапе 1107 определяется, следует ли применять длинный фильтр (такой как фильтр с более длинными отводами) или нет, фильтр цветности с более длинным отводом может быть применен на основе дополнительных решений фильтра цветности с более длинными отводами. Если размер блока составляет <=8 дискретных отсчетов, по меньшей мере, для одного из блоков, то вызывается нормальный слабый фильтр, который модифицирует максимум (1+1) дискретных отсчетов на основе значения прочности границы соответствующего края (на этапе 1105). т.е. если интенсивность (bS) границы >= 1, то применяется (1+1) слабый фильтр. Если значение bS равно 0, то для данного края фильтр устранения блочности вообще не применяется.
Если размер блока >=8 дискретных отсчетов для обоих блоков P и Q, то вычисляется среднее значение QP, которое используется для определения или получения значений tC и Beta. tC и Beta - это два пороговых значения, которые выводятся из соответствующих таблиц и индексируются средним значением QP обоих блоков P и Q.
Значения tC и Beta далее используются в решениях о устранении блочности, которые описаны выше в разделе 8.8.3.6.3, и в разделе 8.8.3.6.9 JVET-O2001. Если все решения оцениваются как истинные, то вызывается фильтр цветности с более длинными отводами (3+3). tC далее используется в процессе фильтрации дискретного отсчета цветности, который описан выше в разделе 8.8.3.6.9 JVET-O2001.
Поскольку решения о устранении блочности зависят от пороговых значений tC и значений бета, а процесс фильтрации дискретного отсчета цветности зависит от пороговых значений tC, при использовании способа значение QP цветности, которое используется для блоков, которые кодируются с использованием режима Объединенных остатков Cb-Cr (JCCR) можно правильно сопоставить с соответствующим значением QP яркости для принятия правильных решений по устранении блочности и, таким образом, достижения лучшего визуального качества.
Специалист в данной области техники поймет, что «блоки» («модули») на различных фигурах (способ и устройство) представляют или описывают функциональные возможности вариантов осуществления изобретения (а не обязательно отдельные «блоки» в аппаратном или программном обеспечении) и таким образом они в равной степени описывают функции или особенности вариантов осуществления устройства, и варианты осуществления способа (блок=этап).
Ниже приводится объяснение применений способа кодирования, и способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.
Фиг. 14 - это блок-схема, показывающая систему 3100 предоставления контента для реализации службы распространения контента. Эта система 3100 предоставления контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и, в необязательном порядке, включает в себя дисплей 3126. Устройство 3102 захвата обменивается данными с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, помимо прочего, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любое их сочетание и т.п.
Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, как показано в приведенных выше вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на фигурах), и сервер кодирует данные и передает кодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, помимо прочего, камеру, смартфон или планшет, компьютер или портативный компьютер, систему видеоконференцсвязи, PDA, установленное на транспортном средстве устройство или сочетание любого из них или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, как описано выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования видео. Когда данные включают в себя звук (то есть голос), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку кодирования звука. Для некоторых практических сценариев устройство 3102 захвата распределяет кодированные видео- и аудиоданные, мультиплексируя их вместе. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата отдельно распределяет кодированные аудиоданные и кодированные видеоданные на терминальное устройство 3106.
В системе 3100 предоставления контента терминальное устройство 310 принимает и воспроизводит кодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и восстановления данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, персональный цифровой помощник (PDA) 3122, установленное в транспортном средстве устройство 3124, или их сочетание, или подобное, способное декодировать вышеупомянутые кодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, как описано выше. Когда кодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения декодирования видео. Когда кодированные данные включают в себя звук, аудиодекодер, включенный в терминальное устройство, получает приоритет для выполнения обработки декодирования звука.
Для терминального устройства с дисплеем, например смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, персонального цифрового помощника (PDA) 3122 или установленное в транспортном средстве устройство 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, например STB 3116, системы 3118 видеоконференцсвязи или системы 3120 видеонаблюдения, в нем устанавливается контакт с внешним дисплеем 3126 для приема и отображения декодированных данных.
Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования снимка или устройство декодирования снимка, как показано в вышеупомянутых вариантах осуществления.
Фиг. 15 - схема, показывающая структуру примера терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, модуль 3202 обработки протокола анализирует протокол передачи потока. Протокол включает в себя, помимо прочего, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи в реальном времени HTTP (HLS), MPEG-DASH, транспортный протокол в реальном времени (RTP), протокол обмена сообщениями в реальном времени (RTMP), или любое их сочетание или тому подобное.
После того, как модуль 3202 обработки протокола обработает поток, создается файл потока. Файл выводится в модуль 3204 демультиплексирования. Модуль 3204 демультиплексирования может разделять мультиплексированные данные на кодированные аудиоданные и кодированные видеоданные. Как описано выше, для некоторых практических сценариев, например в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования модуля 3204 демультиплексирования.
Посредством обработки демультиплексирования генерируются элементарный поток (ES) видео, ES аудио и, в необязательном порядке, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, как объяснено в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерации видеокадра и подает эти данные в модуль 3212 синхронизации. Аудиодекодер 3208 декодирует аудио ES для генерации аудиокадра и подает эти данные в модуль 3212 синхронизации. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на Фиг. 15) перед подачей его в модуль 3212 синхронизации. Точно так же аудиокадр может сохраняться в буфере (не показан на Фиг. 15) перед подачей его в модуль 3212 синхронизации.
Модуль 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, модуль 3212 синхронизации синхронизирует представление видео и аудио информации. Информация может закодироваться в синтаксисе с использованием меток времени, касающихся представления кодированных аудио- и визуальных данных, и меток времени, касающихся доставки самого потока данных.
Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.
Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования снимка, либо устройство декодирования снимка в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.
Математические операторы
Математические операторы, используемые в настоящей заявке, аналогичны тем, которые используются в языке программирования C. Однако результаты операций целочисленного деления и арифметического сдвига определяются более точно, а также определяются дополнительные операции, такие как возведение в степень и деление с действительным знаком. Правила нумерации и подсчета обычно начинаются с 0, например, «первый» эквивалентен 0-му, «второй» эквивалентен 1-му и т.д.
Арифметические операторы
Следующие арифметические операторы определены следующим образом:
+ | Сложение |
- | Вычитание (как оператор с двумя аргументами) или отрицание (как унарный префиксный оператор) |
* | Умножение, в том числе матричное умножение |
xy | Возведение в степень. Определяет x в степени y. В других контекстах такое обозначение используется в качестве надстрочного индекса, которое не следует интерпретировать в качестве возведения в степень. |
/ | Целочисленное деление с усечением результата в сторону нуля. Например, 7/4 и -7/-4 усекаются до 1, а -7/4 и 7 /-4 усекаются до -1. |
÷ | Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. |
Используется для обозначения деления в математических уравнениях, где не предполагается усечение или округление. | |
Суммирование f(i), где i принимает все целые значения от x до y включительно. | |
x%y | Операция по модулю. Остаток от деления x на y, определена только для целых чисел x и y, где x >= 0 и y > 0. |
Логические операторы
Следующие логические операторы определены следующим образом:
x && y Булево логическое "и" для x и y
х || y Булево логическое "или" для x и y
! Булево логическое «не»
x?y:z Если x равен ИСТИНЕ или не равен 0, вычисляется значение y; в противном случае вычисляется значение z.
Операторы отношения
Следующие операторы отношения определены следующим образом:
> Больше чем
>= Больше или равно
< Менее чем
<= Меньше или равно
== Равно
!= Не равно
Когда оператор отношения применяется к элементу или переменной синтаксиса, которой присвоено значение «na» (не применимо), значение «na» обрабатывается как отдельное значение для элемента или переменной синтаксиса. Значение «na» не считается равным любому другому значению.
Побитовые операторы
Следующие побитовые операторы определены следующим образом:
& Побитовое "и". При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется посредством добавления более значимых битов, равных 0.
| Побитовое "или". При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется посредством добавления более значимых битов, равных 0.
^ Побитовое «исключающее ИЛИ». При работе с целочисленными аргументами оперирует дополнительным до двух представлением целочисленного значения. При работе с двоичным аргументом, который содержит меньше битов, чем другой аргумент, более короткий аргумент расширяется посредством добавления более значимых битов, равных 0.
x >> y Арифметический сдвиг вправо целочисленного представления x с двоичным дополнением на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в старшие значащие биты (MSB) в результате сдвига вправо, имеют значение, равное MSB x до операции сдвига.
x << y Арифметический сдвиг влево целочисленного представления x с дополнением до двух на y двоичных цифр. Эта функция определена только для неотрицательных целых значений y. Биты, сдвинутые в младшие значащие биты (LSB) в результате сдвига влево, имеют значение, равное 0.
Операторы присваивания
Следующие арифметические операторы определены следующим образом:
= Оператор присваивания
++ Приращение, т.е. x++ эквивалентно x=x+1; при использовании в индексе массива оценивается в значение переменной до операции приращения.
- Уменьшение, т.е. x- эквивалентно x=x-1; при использовании в индексе массива оценивает значение переменной до операции уменьшения.
+= Приращение на указанную величину, т.е. x+=3 эквивалентно x=x+3, а x+=(-3) эквивалентно x=x+(-3).
-= Уменьшение на указанную величину, т.е. x-=3 эквивалентно x=x-3, а x-=(-3) эквивалентно x=x-(-3).
Обозначение диапазона
Следующее обозначение используется для указания диапазона значений:
x=y..z x принимает целочисленные значения от y до z, включительно, где x, y и z являются целыми числами, и z больше y.
Математические функции
Определены следующие математические функции:
Asin(x) тригонометрическая функция арксинуса, работающая с аргументом x, который находится в диапазоне от -1,0 до 1,0 включительно, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах счисления радиан.
Atan(x) тригонометрическая функция арктангенса, работающая с аргументом x, с выходным значением в диапазоне от -π÷2 до π÷2 включительно в единицах счисления радиан.
Ceil(x) наименьшее целое число, большее или равное x.
Clip1Y(x)=Clip3(0, (1 << BitDepthY) - 1, x)
Clip1C(x)=Clip3(0, (1 << BitDepthC) - 1, x)
Cos(x) тригонометрическая функция косинуса, работающая с аргументом x в единицах счисления радиан.
Floor(x) наибольшее целое количество, меньшее или равное x.
Ln(x) натуральный логарифм x (логарифм по основанию e, где e - постоянная основания натурального логарифма 2,781 281 828…).
Log2(x) логарифм x по основанию 2.
Log10(x) логарифм x по основанию 10.
Round(x)=Sign(x)*Floor(Abs(x)+)
Sin(x) тригонометрическая функция синуса, работающая с аргументом x в единицах счисления радиан.
Swap(x, y)=(y, x)
Tan(x) тригонометрическая функция тангенса, работающая с аргументом x в единицах счисления радиан.
Порядок приоритетности операций
Когда порядок приоритетности в выражении явно не указан с помощью круглых скобок, применяются следующие правила:
- Операции с более высоким приоритетом оцениваются перед любой операцией с более низким приоритетом.
- Операции с одинаковым приоритетом оцениваются последовательно слева направо.
В таблице ниже указан приоритет операций от наивысшего к низшему; более высокая позиция в таблице указывает на более высокий приоритет.
Для тех операторов, которые также используются в языке программирования C, порядок приоритетности, используемый в этом описании, является таким же, что и в языке программирования C.
Таблица: Приоритетность операций от наивысшего (в верхней части таблицы) до низшего (в нижней части таблицы) |
операции (с операндами x, y и z) |
"x++", "x- -" |
"!x", "-x" (как унарный префиксный оператор) |
xy |
"x*y", "x/y", "x ÷ y", "", "x%y" |
"x+y", "x - y" (как оператор с двумя аргументами), " " |
"x << y", "x>>y" |
"x < y", "x <= y", "x > y", "x >= y" |
"x== y", "x != y" |
"x&y" |
"x | y" |
"x && y" |
"x | | y" |
"x ? y : z" |
"x..y" |
"x=y", "x += y", "x -= y" |
Текстовое описание логических операций
В тексте определение логических операций, которое математически бы описывалось в следующей форме:
если(условие 0)
операторная конструкция 0
иначе если(условие 1)
операторная конструкция 1
…
иначе /* информативный комментарий по оставшемуся условию */
операторная конструкция n
может быть описано следующим образом:
… как указано ниже /… применяется следующее:
- Если условие 0, операторная конструкция 0
- Иначе, Если условие 1, операторная конструкция 1
-…
- Иначе (информативный комментарий по оставшемуся условию), операторная конструкция n.
Каждая операторная конструкция «Если… Иначе, Если… Иначе,…» в тексте вводится словами «… как указано ниже» или «…применяется следующее», за которым сразу следует «Если…». Последним условием «Если… Иначе Если… Иначе,…» всегда является «Иначе,…». Чередование определений «Если… Иначе Если… Иначе,…» может быть идентифицировано посредством сопоставления «… как указано ниже» или «… применяется следующее» с завершающим «Иначе,…».
В тексте операторная конструкция логических операций, которая математически бы описывалась в следующей форме:
если(условие 0a && условие 0b)
операторная конструкция 0
иначе если(условие 1a | | условие 1b)
операторная конструкция 1
…
иначе
операторная конструкция n
может быть описано следующим образом:
как указано ниже /… применяется следующее:
- Если все из следующих условий истинны, операторная конструкция 0:
- условие 0a
- условие 0b
- Иначе, если истинными являются одно или более из следующих условий, операторная конструкция 1:
- условие 1a
- условие 1b
-…
- Иначе, операторная конструкция n
В тексте операторная конструкция логических операций, которая математически бы описывалась в следующей форме:
если(условие 0)
операторная конструкция 0
если(условие 1)
операторная конструкция 1
может быть описано следующим образом:
Когда условие 0, операторная конструкция 0
Когда условие 1, операторная конструкция 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.
Варианты осуществления, например кодера 20 и декодера 30, а также описанные в данном документе функции, например применительно к кодеру 20 и декодеру 30 могут быть реализованы аппаратным обеспечением, программным обеспечением, встроенным программным обеспечением или любым их сочетанием. Если реализованы в программном обеспечении, функции могут храниться на машиночитаемом носителе или передаваться по среде связи в виде одной или более инструкций или кода выполняться аппаратным блоком обработки. Машиночитаемый носитель может включать в себя машиночитаемый носитель данных, который соответствует материальному носителю, например носителю данных, или среде передачи, включая в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) материальным машиночитаемым носителям данных, которые являются долговременными, или (2) средам передачи, таким как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.
В качестве примера, но не ограничений, такие машиночитаемые носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть машиночитаемым носителем. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасный порт, радио и микроволновая печь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволновая связь, включены в определение носителя. Однако следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на долговременные материальные носители данных. Диск и диск, используемые здесь, включают компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски обычно воспроизводят данные магнитным способом, а диски воспроизводят данные оптически с помощью лазеров. Объединения вышеперечисленного также должны быть включены в объем машиночитаемых носителей.
Инструкции могут выполняться одним или более процессорами, такими как один или более процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые логические матрицы (FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин «процессор», используемый здесь, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации описанных здесь методик. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.
Методики этого раскрытия могут быть реализованы в большом количестве устройств или устройств, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных для выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены набором взаимодействующих аппаратных блоков, включая один или более процессоров, как описано выше, в сочетании с подходящим программным обеспечением и/или встроенным программным обеспечением.
Claims (107)
1. Способ устранения блочности для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения при кодировании изображения или декодировании изображения, содержащий этапы, на которых:
выполняют процесс принятия решения в отношении края блока цветности, и
выполняют процесс фильтрации в отношении края блока цветности, по меньшей мере, на основе порогового параметра (tC), определенного в процессе принятия решения;
при этом процесс принятия решения содержит этапы:
определения первого параметра (QpCp) квантования цветности для первого блока цветности, при этом первый параметр (QpCp) квантования цветности определяется на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки параметров квантования (QP) цветности для первого блока цветности;
определения второго параметра (QpCq) квантования цветности для второго блока цветности, при этом второй параметр (QpCq) квантования цветности определяется на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности;
определения третьего параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности; и
определения порогового параметра (tC) на основе третьего параметра (QpC) квантования цветности.
2. Способ устранения блочности по п.1, в котором по меньшей мере один из первого блока цветности и второго блока цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR).
3. Способ устранения блочности по п.1, в котором
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения;
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является первым компонентом цветности второго блока изображения;
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является вторым компонентом цветности второго блока изображения;
первый блок цветности является первым компонентом цветности первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения;
первый блок цветности является вторым компонентом цветности первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения;
первый блок цветности является первым компонентом цветности первого блока изображения, а второй блок цветности является первым компонентом цветности второго блока изображения; или
первый блок цветности является вторым компонентом цветности первого блока изображения, а второй блок цветности является вторым компонентом цветности второго блока изображения.
4. Способ устранения блочности по любому одному из пп.1-3, в котором таблица привязки параметров квантования (QP) цветности для первого блока цветности или второго блока цветности содержит по меньшей мере одно из:
первой таблицы привязки QP цветности для кодированного блока объединенных Cb-Cr,
второй таблицы привязки QP цветности для первого компонента цветности, или
третьей таблицы привязки QP цветности для второго компонента цветности.
5. Способ устранения блочности по п.4, в котором первая таблица привязки QP цветности, вторая таблица привязки QP цветности и третья таблица привязки QP цветности указываются или индексируются первым индексным значением, вторым индексным значением и третьим индексным значением, соответственно.
6. Способ устранения блочности по п.5, в котором
первое индексное значение равно 3, второе индексное значение равно 1 и третье индексное значение равно 2; или
первое индексное значение равно 2, второе индексное значение равно 0 и третье индексное значение равно 1.
7. Способ устранения блочности по любому одному из пп.4-6, в котором
если первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости в первой таблице привязки QP цветности;
если первый блок цветности является первым компонентом цветности первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости во второй таблице привязки QP цветности; или
если первый блок цветности является вторым компонентом цветности первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости в третьей таблице привязки QP цветности.
8. Способ устранения блочности по любому одному из пп.4-6, в котором
если второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости в первой таблице привязки QP цветности;
если второй блок цветности является первым компонентом цветности второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости во второй таблице привязки QP цветности; или
если второй блок цветности является вторым компонентом цветности второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости в третьей таблице привязки QP цветности.
9. Способ устранения блочности по любому одному из пп.1-6, в котором определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки параметров (QP) квантования цветности для первого блока цветности содержит этапы, на которых:
получают усеченное значение (qPiChroma) QP на основе первого параметра (QpYP) квантования яркости первого блока яркости;
определяют значение (qPiCb, qPiCr, qPiCbCr) QP цветности для первого блока цветности на основе усеченного значения (qPiChroma) QP посредством использования таблицы привязки QP цветности для первого блока цветности; и
определяют первый параметр (QpCp) квантования цветности для первого блока цветности на основе усеченного значения для значения (qPiCb, qPiCr, qPiCbCr) QP цветности.
10. Способ устранения блочности по любому одному из пп.1-6, в котором определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности содержит этапы, на которых:
получают усеченное значение (qPiChroma) QP на основе второго параметра (QpYQ) квантования яркости второго блока яркости;
определяют значение (qPiCb, qPiCr, qPiCbCr) QP цветности для второго блока цветности на основе усеченного значения (qPiChroma) QP посредством использования таблицы привязки QP цветности для второго блока цветности; и
определяют второй параметр (QpCq) квантования цветности для второго блока цветности на основе усеченного значения для значения (qPiCb, qPiCr, qPiCbCr) QP цветности.
11. Способ устранения блочности по любому одному из пп.1-6, в котором определение третьего параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности содержит этап, на котором определяют третий параметр (QpC) квантования цветности согласно следующему уравнению
QpC=(QpQ+QpP+1) >> 1,
где QpP основывается на первом параметре (QpCp) квантования цветности для первого блока цветности, а QpQ основывается на втором параметре (QpCq) квантования цветности для второго блока цветности.
12. Способ устранения блочности по п.11, в котором
QpP получают посредством вычитания значения (QpBdOffset) смещения из первого параметра (QpCp) квантования цветности для первого блока цветности; и
QpQ получают посредством вычитания значения (QpBdOffset) смещения из второго параметра (QpCq) квантования цветности для второго блока цветности.
13. Способ устранения блочности по любому из предыдущих пунктов, в котором кодированный блок объединенных Cb-Cr кодируется с использованием режима JCCR, и режим JCCR является вторым режимом из набора доступных режимов JCCR.
14. Способ устранения блочности по любому из предыдущих пунктов, в котором
первый блок изображения и второй блок изображения являются блоками преобразования; или
первый блок изображения и второй блок изображения являются блоками кодирования.
15. Устройство фильтра устранения блочности для использования в кодере изображения и/или декодере изображения для устранения блочности края блока цветности между первым блоком цветности первого блока изображения и вторым блоком цветности второго блока изображения, при этом устройство фильтра устранения блочности выполнено с возможностью:
выполнять процесс принятия решения в отношении края блока цветности, и
выполнять процесс фильтрации в отношении края блока цветности, по меньшей мере, на основе порогового параметра, определенного в процессе принятия решения;
при этом процесс принятия решения содержит:
определение первого параметра (QpCp) квантования цветности для первого блока цветности, при этом первый параметр (QpCp) квантования цветности определяется на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки параметров квантования (QP) цветности для первого блока цветности;
определение второго параметра (QpCq) квантования цветности для второго блока цветности, при этом второй параметр (QpCq) квантования цветности определяется на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности;
определение третьего параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности; и
определение порогового параметра (tC) на основе третьего параметра (QpC) квантования цветности.
16. Устройство по п.15, при этом по меньшей мере один из первого блока цветности и второго блока цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR).
17. Устройство по п.15, при этом
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения;
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является первым компонентом цветности второго блока изображения;
первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, а второй блок цветности является вторым компонентом цветности второго блока изображения;
первый блок цветности является первым компонентом цветности первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения;
первый блок цветности является вторым компонентом цветности первого блока изображения, а второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения;
первый блок цветности является первым компонентом цветности первого блока изображения, а второй блок цветности является первым компонентом цветности второго блока изображения; или
первый блок цветности является вторым компонентом цветности первого блока изображения, а второй блок цветности является вторым компонентом цветности второго блока изображения.
18. Устройство по любому одному из пп.15-17, при этом таблица привязки параметров квантования (QP) цветности для первого блока цветности или второго блока цветности содержит по меньшей мере одно из:
первой таблицы привязки QP цветности для кодированного блока объединенных Cb-Cr,
второй таблицы привязки QP цветности для первого компонента цветности, или
третьей таблицы привязки QP цветности для второго компонента цветности.
19. Устройство по п.18, при этом первая таблица привязки QP цветности, вторая таблица привязки QP цветности и третья таблица привязки QP цветности указываются или индексируются первым индексным значением, вторым индексным значением и третьим индексным значением, соответственно.
20. Устройство по п.19, при этом
первое индексное значение равно 3, второе индексное значение равно 1 и третье индексное значение равно 2; или
первое индексное значение равно 2, второе индексное значение равно 0 и третье индексное значение равно 1.
21. Устройство по любому одному из пп.18-20, при этом
если первый блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости в первой таблице привязки QP цветности;
если первый блок цветности является первым компонентом цветности первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости во второй таблице привязки QP цветности; или
если первый блок цветности является вторым компонентом цветности первого блока изображения, первый параметр (QpCp) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению первого параметра (QpYP) квантования яркости в третьей таблице привязки QP цветности.
22. Устройство по любому одному из пп.18-20, при этом
если второй блок цветности является кодированным блоком объединенных остатков Cb-Cr (JCCR) второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости в первой таблице привязки QP цветности;
если второй блок цветности является первым компонентом цветности второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости во второй таблице привязки QP цветности; или
если второй блок цветности является вторым компонентом цветности второго блока изображения, второй параметр (QpCq) квантования цветности выводится на основе значения QP цветности, которое соответствует усеченному значению второго параметра (QpYQ) квантования яркости в третьей таблице привязки QP цветности.
23. Устройство по любому одному из пп.15-20, при этом определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе первого параметра (QpYP) квантования яркости первого блока яркости первого блока изображения и таблицы привязки параметров (QP) квантования цветности для первого блока цветности содержит:
получение усеченного значения (qPiChroma) QP на основе первого параметра (QpYP) квантования яркости первого блока яркости;
определение значения (qPiCb, qPiCr, qPiCbCr) QP цветности для первого блока цветности на основе усеченного значения (qPiChroma) QP посредством использования таблицы привязки QP цветности для первого блока цветности; и
определение первого параметра (QpCp) квантования цветности для первого блока цветности на основе усеченного значения для значения (qPiCb, qPiCr, qPiCbCr) QP цветности.
24. Устройство по любому одному из пп.15-20, при этом определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе второго параметра (QpYQ) квантования яркости второго блока яркости второго блока изображения и таблицы привязки QP цветности для второго блока цветности содержит:
получение усеченного значения (qPiChroma) QP на основе второго параметра (QpYQ) квантования яркости второго блока яркости;
определение значения (qPiCb, qPiCr, qPiCbCr) QP цветности для второго блока цветности на основе усеченного значения (qPiChroma) QP посредством использования таблицы привязки QP цветности для второго блока цветности; и
определение второго параметра (QpCq) квантования цветности для второго блока цветности на основе усеченного значения для значения (qPiCb, qPiCr, qPiCbCr) QP цветности.
25. Устройство по любому одному из пп.15-20, при этом определение третьего параметра (QpC) квантования цветности на основе первого параметра (QpCp) квантования цветности для первого блока цветности и второго параметра (QpCq) квантования цветности для второго блока цветности содержит определение третьего параметра (QpC) квантования цветности согласно следующему уравнению,
QpC=(QpQ+QpP+1) >> 1,
где QpP основывается на первом параметре (QpCp) квантования цветности для первого блока цветности, а QpQ основывается на втором параметре (QpCq) квантования цветности для второго блока цветности.
26. Устройство по п.25, при этом
QpP получают посредством вычитания значения (QpBdOffset) смещения из первого параметра (QpCp) квантования цветности для первого блока цветности; и
QpQ получают посредством вычитания значения (QpBdOffset) смещения из второго параметра (QpCq) квантования цветности для второго блока цветности.
27. Устройство по любому из пп.15-26, при этом кодированный блок объединенных Cb-Cr кодируется с использованием режима JCCR, а режим JCCR является вторым режимом из набора доступных режимов JCCR.
28. Устройство по любому из пп.15-27, при этом
первый блок изображения и второй блок изображения являются блоками преобразования; или
первый блок изображения и второй блок изображения являются блоками кодирования.
29. Устройство кодирования/декодирования, содержащее устройство фильтра устранения блочности по любому одному из пп.15-28.
30. Устройство кодирования/декодирования, содержащее:
один или более процессоров; и
долговременный машиночитаемый носитель данных, соединенный с процессорами и хранящий программы для исполнения процессорами, при этом программы при их исполнении процессорами конфигурируют устройство для выполнения способа по любому одному из пп.1-14.
31. Долговременный машиночитаемый носитель, на котором сохранены компьютерные инструкции, которые при их исполнении одним или более процессорами предписывают одному или более процессорам выполнять способ по любому одному из пп.1-14.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EPPCT/EP2019/072643 | 2019-08-23 | ||
RUPCT/RU2019/000639 | 2019-09-16 | ||
EPPCT/EP2019/077057 | 2019-10-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2022107112A RU2022107112A (ru) | 2023-09-25 |
RU2816918C2 true RU2816918C2 (ru) | 2024-04-08 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104584560A (zh) * | 2012-07-02 | 2015-04-29 | 微软公司 | 在去块时使用色度量化参数偏移 |
CN106954067A (zh) * | 2011-06-30 | 2017-07-14 | 三菱电机株式会社 | 图像编码装置及方法、图像解码装置及方法 |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106954067A (zh) * | 2011-06-30 | 2017-07-14 | 三菱电机株式会社 | 图像编码装置及方法、图像解码装置及方法 |
CN104584560A (zh) * | 2012-07-02 | 2015-04-29 | 微软公司 | 在去块时使用色度量化参数偏移 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2023216876B2 (en) | An encoder, a decoder and corresponding methods for performing chroma deblocking for blocks which use joint chroma coding | |
JP7521057B2 (ja) | エンコーダ、デコーダ、及びデブロッキングフィルタの境界強度導出の対応する方法 | |
JP2023078188A (ja) | エンコーダ、デコーダ、インター予測のための対応する方法 | |
JP7541096B2 (ja) | ビデオコーディングのためのクロスコンポーネント適応ループフィルタリング | |
KR102622148B1 (ko) | 병합 모드를 위한 인코더, 디코더 및 대응 방법 | |
JP7562797B2 (ja) | イントラ平滑化のための方法および装置 | |
KR20240000636A (ko) | 인터 예측을 위한 인코더, 디코더 및 대응하는 방법 | |
JP2022541700A (ja) | イントラ予測モードに関連するエンコーダ、デコーダ、および対応する方法 | |
JP2023153802A (ja) | イントラ・サブパーティション・コーディング・ツールによって引き起こされるサブパーティション境界のためのデブロッキングフィルタ | |
CN113330743A (zh) | 编码器、解码器及去块效应滤波器自适应的对应方法 | |
JP2023512694A (ja) | 高レベルシンタックスのシグナリングについてのエンコーダ、デコーダ、および対応する方法 | |
KR20240064039A (ko) | 인코더, 디코더 및 대응하는 디블록킹 필터 적응의 방법 | |
CN114556923B (zh) | 编码器、解码器和使用插值滤波的对应方法 | |
CN115349257A (zh) | 基于dct的内插滤波器的使用 | |
CN113228632B (zh) | 用于局部亮度补偿的编码器、解码器、以及对应方法 | |
RU2816918C2 (ru) | Кодер, декодер и соответствующие способы выполнения устранения блочности цветности для блоков, использующих кодирование объединенной цветности | |
RU2817030C2 (ru) | Кодер, декодер и соответствующие способы использования для списка объединения ibc | |
RU2809841C2 (ru) | Способ и устройство для внутрикадрового предсказания с использованием линейной модели | |
RU2818228C2 (ru) | Уровни ограничения для нелинейного адаптивного контурного фильтра |