СПОСОБЫ ОПРЕДЕЛЕНИЯ ЗНАЧЕНИЯ ПРЕДСКАЗАНИЯ, КОДЕР, ДЕКОДЕР И КОМПЬЮТЕРНЫЙ НОСИТЕЛЬ ДАННЫХ
METHODS FOR DETERMINING THE PREDICTION VALUE, ENCODER, DECODER AND COMPUTER STORAGE MEDIUM

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[1]
Настоящее изобретение относится к области технологии внутреннего предсказания на основе матрицы (MIP) во внутреннем предсказании при кодировании видео и, более конкретно, к способам определения значения предсказания, кодеру, декодеру и компьютерному носителю данных.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[2]
В настоящее время при кодировании и декодировании видео существует три значения, задействованных в определении значения предсказания на основе MIP, которые необходимо получить во время вычисления значения предсказания. Эти три значения представляют собой матрицу MIP, параметр взвешивания и параметр битового сдвига вправо. В традиционном способе определения значения предсказания, чтобы гарантировать полное представление диапазона значений, значение параметра битового сдвига вправо не может быть слишком большим. В результате диапазон значений входного значения предсказания слишком велик при определении значения предсказания, что влияет на точность предсказания значения предсказания и, таким образом, влияет на эффективность кодирования и декодирования. Следовательно, традиционный способ предсказания при кодировании и декодировании видео имеет низкую точность предсказания.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[3]
В вариантах реализации предоставлены способы определения значения предсказания, кодер, декодер и компьютерный носитель данных, которые могут улучшить точность предсказания при кодировании и декодировании видео, тем самым улучшая эффективность кодирования и декодирования.
[4]
Технические решения вариантов реализации могут быть достигнуты посредством следующих операций или конфигураций.
[5]
В первом аспекте предусмотрен способ определения значения предсказания. Способ применим для кодера. Способ включает следующее. Получают восстановленные значения соседних отсчетов текущего блока. Восстановленные значения соседних отсчетов фильтруют, чтобы получить набор опорных значений текущего блока. Когда размер текущего блока меньше предварительно заданного порогового значения, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке. Разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания. Другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания. Значения предсказания отсчетов в конкретных положениях фильтруют для получения значений предсказания всех отсчетов в текущем блоке.
[6]
Во втором аспекте предусмотрен способ определения значения предсказания. Способ применим для декодера. Способ включает следующее. Анализируют битовый поток для получения размера текущего блока и режима кодирования текущего блока. Когда режим кодирования текущего блока представляет собой режим MIP, восстановленные значения соседних отсчетов текущего блока получают и восстановленные значения соседних отсчетов фильтруют для получения набора опорных значений текущего блока. Когда размер текущего блока меньше предварительно заданного порогового значения, второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке. Разницу между вторым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания. Другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания. Интерполяционную фильтрацию выполняют в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[7]
В третьем аспекте предусмотрен кодер. Кодер содержит первый модуль получения, первый модуль обработки, первый модуль вычисления, первый модуль определения, второй модуль вычисления, третий модуль вычисления и второй модуль обработки. Первый модуль получения выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока. Первый модуль обработки выполнен с возможностью фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока. Первый модуль вычисления выполнен с возможностью вычисления первого постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Первый модуль определения выполнен с возможностью определения разницы между первым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Второй модуль вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Третий модуль вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Второй модуль обработки выполнен с возможностью фильтрации значений предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке.
[8]
В четвертом аспекте предусмотрен декодер. Декодер содержит второй модуль получения, третий модуль обработки, четвертый модуль вычисления, второй модуль определения, пятый модуль вычисления, шестой модуль вычисления и четвертый модуль обработки. Второй модуль получения выполнен с возможностью анализа битового потока для получения размера текущего блока и режима кодирования текущего блока. Третий модуль обработки выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока и фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока, когда режим кодирования текущего блока представляет собой режим MIP. Четвертый модуль вычисления выполнен с возможностью вычисления второго постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Второй модуль определения выполнен с возможностью определения разницы между вторым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Пятый модуль вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Шестой модуль вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Четвертый модуль обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях текущего блока, отличных от отсчетов в конкретных положениях.
[9]
В пятом аспекте предусмотрен кодер. Кодер содержит процессор и носитель данных, выполненный с возможностью хранения команд, исполняемых процессором. Носитель данных способен работать с процессором посредством шины связи. Команды, при исполнении процессором, способны работать с процессором для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[10]
В шестом аспекте предусмотрен декодер. Декодер содержит процессор и носитель данных, выполненный с возможностью хранения команд, исполняемых процессором. Носитель данных способен работать с процессором посредством шины связи. Команды, при исполнении процессором, способны работать с процессором для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[11]
В седьмом аспекте предусмотрен машиночитаемый носитель данных. Машиночитаемый носитель данных выполнен с возможностью хранения исполняемых команд, которые, при исполнении одним или более процессорами, способны работать с одним или более процессорами для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[12]
В вариантах реализации предоставлены способ определения значения предсказания, кодер, декодер и компьютерный носитель данных. Кодер получает восстановленные значения соседних отсчетов текущего блока. Кодер фильтрует восстановленные значения соседних отсчетов для получения набора опорных значений текущего блока. Кодер вычисляет первое постоянное значение в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Кодер определяет разницу между первым постоянным значением и первым опорным значением в наборе опорных значений как первое входное значение предсказания в наборе входных значений предсказания. Кодер определяет, в соответствии с набором опорных значений, другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания. Кодер вычисляет, в соответствии с набором входных значений предсказания, значения предсказания отсчетов в конкретных положениях в текущем блоке. Кодер фильтрует значения предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке. Другими словами, вычисляют первую константу, разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания набора входных значений предсказания, и набор входных значений предсказания используют для вычисления значений предсказания текущего блока. Таким образом, можно эффективно уменьшить диапазон динамических значений набора входных значений предсказания во время предсказания в режиме MIP. Следовательно, по сравнению с предшествующим уровнем техники, при том же количестве битов, используемых для представления набора входных значений предсказания и матрицы MIP, данные в динамическом диапазоне могут быть представлены более точно благодаря применению технических решений вариантов реализации, что способствует более высокой точности во время вычисления значения предсказания в режиме MIP, тем самым улучшая эффективность кодирования.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
[13]
На фиг. 1 показана структурная схема системы кодирования видео.
[14]
На фиг. 2 показана структурная схема системы декодирования видео.
[15]
На фиг. 3 показано схематическое изображение, иллюстрирующее процесс кодирования отсчетов в режиме MIP.
[16]
На фиг. 4 показана схематическая блок-схема кодирования в режиме MIP.
[17]
На фиг. 5 показана схематическая блок-схема способа определения значения предсказания согласно вариантам реализации.
[18]
На фиг. 6 показана схематическая блок-схема способа определения значения предсказания согласно другим вариантам реализации.
[19]
На фиг. 7 показана структурная схема кодера согласно вариантам реализации.
[20]
На фиг. 8 показана структурная схема декодера согласно вариантам реализации.
[21]
На фиг. 9 показана структурная схема кодера согласно другим вариантам реализации.
[22]
На фиг. 10 показана структурная схема декодера согласно другим вариантам реализации.
ПОДРОБНОЕ ОПИСАНИЕ
[23]
Далее будут подробно и всесторонне описаны технические решения вариантов реализации со ссылкой на прилагаемые графические материалы. Можно понять, что варианты реализации, описанные в данном документе, предназначены лишь для объяснения, а не ограничения настоящего изобретения. В дополнение, для простоты описания на прилагаемых графических материалах проиллюстрированы только части, относящиеся к настоящему изобретению.
[24]
В области кодирования видео в новейшем универсальном кодировании видео (VVC) было принято аффинное линейное взвешенное внутреннее предсказание, которое было предложено HHI в Совместной команде по исследованию видео (JVET)-N0217 и переименовано в технологию MIP. В соответствии с разными размерами блоков внутреннего кодирования яркости («блок яркости» для краткости) в технологии MIP вводят разное количество режимов MIP при внутреннем предсказании яркости.
[25]
В технологии MIP блоки яркости подразделяются на три класса в соответствии с размером блока яркости. Предполагая, что размер блока яркости равен W*H, блоки яркости могут быть подразделены на следующие три класса в соответствии с размером блока яркости: Блоки яркости, имеющие размер 4×4, принадлежат блоку яркости первого класса, блоки яркости, имеющие размер 8×4, 4×8 или 8×8, принадлежат блоку яркости второго класса, и блоки яркости, имеющие другие размеры, принадлежат блоку яркости третьего класса. Для этих трех классов блоков яркости технология MIP ввела M типов режимов MIP на основе 67 традиционных режимов внутреннего предсказания.
[26]
На фиг. 1 показана структурная схема системы кодирования видео. Как проиллюстрировано на фиг. 1, система 100 кодирования видео содержит модуль 101 преобразования и квантования, модуль 102 внутренней оценки, модуль 103 внутреннего предсказания, модуль 104 компенсации движения, модуль 105 оценки движения, модуль 106 обратного преобразования и обратного квантования, модуль 107 анализа управления фильтром, модуль 108 фильтрации для удаления блочности (DBK) и фильтрации для адаптивного смещения отсчета (SAO), модуль 109 кодирования информации заголовка и кодирования контекстно-адаптивного двоичного арифметического кодирования (CABAC), модуль 110 кеша для декодированного изображения и т. п.
[27]
На фиг. 2 показана структурная схема системы декодирования видео. Как проиллюстрировано на фиг. 2, система 200 декодирования видео содержит модуль 201 декодирования информации заголовка и декодирования CABAC, модуль 202 обратного преобразования и обратного квантования, модуль 203 внутреннего предсказания, модуль 204 компенсации движения, модуль 205 фильтрации DBK и фильтрации SAO, модуль 206 кеша для декодированного изображения и т. п. После обработки видеоизображения модулем 101 преобразования и квантования, модулем 102 внутренней оценки, модулем 103 внутреннего предсказания, модулем 104 компенсации движения, модулем 105 оценки движения, модулем 108 фильтрации DBK и фильтрации SAO и модулем 109 кодирования информации заголовка и кодирования CABAC системы 100 кодирования видео битовый поток видеоизображения выводится. Битовый поток затем вводят в систему 200 декодирования видео и обрабатывают посредством модуля 201 декодирования информации заголовка и декодирования CABAC, модуля 202 обратного преобразования и обратного квантования, модуля 203 внутреннего предсказания и модуля 204 компенсации движения системы декодирования видео 200, чтобы восстановить исходное видеоизображение.
[28]
При кодировании и декодировании в режиме MIP способ определения значения предсказания в основном применяют к модулю 103 внутреннего предсказания системы кодирования видео и модулю 203 внутреннего предсказания системы декодирования видео и применяют к стороне кодирования и стороне декодирования.
[29]
Для блока яркости первого класса M=35; для блока яркости второго класса M=19; и для блока яркости третьего класса M=11.
[30]
Технология MIP применима только для внутреннего предсказания яркости. Подобно традиционному режиму, для предсказания в MIP вводом является верхняя строка и левый столбец текущего блока (эквивалентный «блоку изображения, подлежащему кодированию», который будет описан ниже), а выводом являются значения предсказания текущего блока. Процесс предсказание включает следующие три этапа: усреднение, матричное векторное умножение и интерполяцию. Другими словами, посредством выполнения трех вышеупомянутых операций над входными восстановленными значениями яркости соседних отсчетов в верхней строке и левом столбце текущего блока могут быть получены значения предсказания яркости текущего блока.
[31]
На фиг. 3 показано схематическое изображение, иллюстрирующее процесс кодирования отсчетов в режиме MIP. Как проиллюстрировано на фиг. 3, процесс включает следующие этапы.
[32]
Этап 1: выполняют усреднение по верхним соседним опорным точкам текущего блока яркости для получения вектора redT, который включает N значений; и выполняют усреднение по соседним опорным отсчетам текущего блока яркости для получения вектора redL, который включает N значений. Когда блок яркости принадлежит блоку яркости первого класса, N=2; и когда блок яркости принадлежит блоку яркости второго класса или блоку яркости третьего класса, N=4. Вектор redT и вектор redL составляют новый вектор pTemp, который используют для последующих операций.
[33]
f
Этап 2: получают матрицу mWeight, параметр взвешивания O и параметр битового сдвига вправо sW. Некоторые значения предсказания в текущем блоке, которые обозначены поперечными линиями на фиг. 3, могут быть получены в соответствии со следующими уравнениями:
(1)
(2)
[34]
Когда MipSizeId=0 или 1 – вычислять в соответствии со следующими уравнениями:
(3)
(4)
[35]
Когда MipSizeId=2 – вычислять в соответствии со следующим уравнением:
(5)
[36]
f
f
f
f
predMip[x,y] представляет значение предсказания отсчета в положении (x, y). pTemp[i] представляет i-е опорное значение в наборе опорных значений текущего блока в предсказание в режиме MIP. p[x] представляет i-е входное значение предсказания в предсказание в режиме MIP. inSize определяют в соответствии с серийным номером MIP, то есть MipSizeId, где inSize=4, когда MipSizeId=0, inSize=8, когда MipSizeId=1, и inSize=7, когда MipSizeId=2. Значение MipSizeId определяют в соответствии с размером текущего блока, где MipSizeId=0, когда размер текущего блока составляет 4x4, MipSizeId=1, когда размер текущего блока составляет 4x8, 8x4 или 8x8, и MipSizeId=2, когда размер текущего блока больше чем 8x8. BitDepth представляет битовую глубину компонента яркости (то есть количество двоичного бита, используемого для представления значения отсчета компонента яркости). mWeight представляет матрицу MIP. predC, incH и incW используют для определения параметра элемента матрицы, соответствующего положению (x, y) отсчета. «>>» является оператором битового сдвига вправо. oW представляет сдвиг смещения в операции битового сдвига вправо. sW представляет биты сдвига вправо. O представляет параметр взвешивания. sW и O могут быть определены по меньшей мере в соответствии с размером текущего блока или значением MipSizeId. Например, sW и O могут быть определены в соответствии с таблицей отображения, связанной со значением MipSizeId, где таблица отображения записывает по меньшей мере значения sW и значения O, соответствующие разным значениям MipSizeId.
[37]
Этап 3: получают оставшиеся значения предсказания в текущем блоке посредством линейной интерполяции, то есть значения предсказания в текущем блоке, обозначенные множеством точек на фиг. 3.
[38]
f
f
f
Три значения, задействованные в технологии MIP, представляющие собой соответственно mWeight, O и sW, необходимо получить во время определения значения предсказания. Значение mWeight связано как с режимом предсказания, так и с пространственным положением отсчета, тогда как значение O и значение sW связаны только с режимом предсказания. p[i] получают посредством вычисления в соответствии с уравнениями (3), (4) и (5). Каждое из значения mWeight и значения O сохраняют как 7-значное двоичное число без знака. sW представляет смещение, соответствующее режиму предсказания, которое имеет значение 5, 6 или 7 в соответствии с режимом предсказания (показан на таблице 1 ниже) и может быть получено, обратившись к таблице 1. Значение отсчета может быть получено посредством вычисления матричного векторного продукта и, таким образом, общая потребность в памяти составляет 4,5395 килобайта.
Таблица 1
[39]
f
В предсказании в режиме MIP для текущего блока сначала определяют индекс режима предсказания. В соответствии с индексом режима предсказания фиксированное значение sW для текущего блока получают, обратившись к таблице, а затем получают mWeight-fO. Путем сдвига вправо на mWeight-O на sW битов получают исходную матрицу числа с плавающей запятой для вычисления значения предсказания. На фиг. 4 показана схематическая блок-схема кодирования в режиме MIP.
[40]
f
Как проиллюстрировано на фиг. 4, сначала получают индексный номер режима MIP. В соответствии с индексным номером режима MIP, машинообученные mWeight и O получают из таблицы отображения. В соответствии с индексным номером режима MIP, sW получают из таблицы отображения.  выполняют для предсказания, и получают значение предсказания.
[41]
f
Другими словами, в существующей технологии MIP в VVC, исходные числа с плавающей запятой mWeightf[x][y] всех значений mWeight являются представлением с фиксированной запятой смещения, начиная с его минимального значения (часто отрицательного, представленного O):
(6)
[42]
mWeight[x][y] сохраняют как 7-значное двоичное число без знака, что приводит к потере в точности представления. Здесь больший sW приводит к более высокой точности. Однако, чтобы гарантировать полное представление диапазона значений, значение sW не может быть слишком большим. Поскольку одно и то же значение sW бесконтрольно используют во всей матрице, параметр с небольшим диапазоном значений должен дополнительно снижать точность представления, чтобы адаптироваться к общему диапазону значений всех параметров во всей матрице. Диапазон изменения параметра в исходной матрице также связан со способом получения p[i]. Способ вычисления p[i] в предшествующем уровне техники вызывает расширение диапазона изменения параметра, что снижает точность данных в весовой матрице, увеличивает разность предсказания в режиме MIP и, таким образом, снижает эффективность кодирования.
[43]
Чтобы улучшить точность предсказания режима MIP и, таким образом, улучшить эффективность кодирования, в вариантах реализации предоставлен способ определения значения предсказания. На фиг. 5 показана схематическая блок-схема способа определения значения предсказания согласно вариантам реализации. Как проиллюстрировано на фиг. 5, способ применим для кодера. Способ включает следующее.
[44]
В блоке S501 получают восстановленные значения соседних отсчетов текущего блока.
[45]
Во время кодирования, чтобы определить значения предсказания текущего блока, кодеру сначала необходимо получить восстановленные значения соседних отсчетов текущего блока. Здесь соседние отсчеты текущего блока включают отсчеты в верхней строке и левом столбце текущего блока.
[46]
В блоке S502 восстановленные значения соседних отсчетов фильтруют, чтобы получить набор опорных значений текущего блока.
[47]
После получения восстановленных значений соседних отсчетов, например, полученные восстановленные значения отсчетов в верхней строке текущего блока составляют redT (включая N значений) и полученные восстановленные значения отсчетов в левом столбце текущего блока составляют redL (включая N значений), причем redT и redL составляют новый вектор pTemp в качестве набора опорных значений текущего блока.
[48]
Чтобы получить набор опорных значений текущего блока посредством фильтрации, в некоторых вариантах реализации операции в блоке S502 могут включать следующее. Восстановленные значения соседних отсчетов разделяют на N групп. Для каждой из N групп вычисляют среднее значение восстановленных значений в группе. Среднее значение назначают в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[49]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока. Другими словами, восстановленные значения соседних отсчетов фильтруют в блоке S502 следующим образом. redT и redL делят на N групп, среднее значение восстановленных значений в каждой группе вычисляют для получения N средних значений, и N средних значений назначают в качестве опорных значений в наборе опорных значений.
[50]
Например, когда размер текущего блока составляет 4x4, inSize=4; когда размер текущего блока составляет 4x8, 8x4 или 8x8, inSize=8; и когда размер текущего блока больше чем 8x8, inSize=7.
[51]
В блоке S503, когда размер текущего блока меньше предварительно заданного порогового значения, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[52]
На практике размер текущего блока представлен MipSizeId. Когда MipSizeId меньше чем 2, то есть MipSizeId равен 0 или 1, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[53]
Чтобы вычислить первое постоянное значение, в некоторых вариантах реализации операции в блоке S503 включают следующее. Первое постоянное значение устанавливают в качестве значения, полученного посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[54]
Первое постоянное значение представляет собой значение, полученное посредством операции битового сдвига влево на числовое значение 1, и биты сдвига влево равны битовой глубине минус один.
[55]
В блоке S504 разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания.
[56]
Набор входных значений предсказания используют для вычисления значения предсказания текущего блока в соответствии с MIP. После получения первого постоянного значения в операциях в блоке S504 разница между первым постоянным значением и первым опорным значением в наборе опорных значений может быть определена в качестве первого входного значения предсказания. Первое входное значение p[0] предсказания может быть получено в соответствии со следующим уравнением:
(7)
[57]
В блоке S505 другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений.
[58]
Другие входные значения p[i] предсказания включают входные значения предсказания, отличные от первого входного значения предсказания, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Другие входные значения p[i] предсказания могут дополнительно включать входные значения предсказания, когда размер текущего блока больше, чем предварительно заданное пороговое значение, или равен ему. Другие входные значения p[i] предсказания могут быть получены в соответствии со следующим уравнением:
(8)
[59]
В блоке S506 вычисляют значения предсказания отсчетов в конкретных положениях в текущем блоке в соответствии с набором входных значений предсказания.
[60]
После определения всех входных значений предсказания может быть получен набор входных значений предсказания. Предсказание может быть выполнено в соответствии с набором входных значений предсказания, чтобы получить значения предсказания отсчетов в конкретных положениях в текущем блоке, например значения предсказания отсчетов в положениях, обозначенных поперечными линиями на фиг. 3.
[61]
Чтобы определить значения предсказания отсчетов в конкретных положениях в текущем блоке, в некоторых вариантах реализации операции в блоке S506 включают следующее. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания, матрицей MIP текущего блока, параметром битового сдвига вправо текущего блока и параметром взвешивания текущего блока.
[62]
f
Другими словами, одна или более таблиц отображения предварительно сохранены в кодере. В соответствии с одной или более таблицами отображения могут быть определены матрица MIP текущего блока (mWeight), параметр битового сдвига вправо текущего блока (sW) и параметр взвешивания текущего блока (O).
[63]
f
f
f
sW и O могут быть определены по меньшей мере в соответствии с размером текущего блока или значением MipSizeId. Например, значение sW и значение O могут быть определены в соответствии с таблицей отображения, связанной со значением MipSizeId, где таблица отображения записывает по меньшей мере значения sW и значения O, соответствующие разным значениям MipSizeId.
[64]
Значения в приведенной выше таблице отображения являются константами, то есть значения в таблице отображения не обновляются во время вычисления значений предсказания MIP. Значения констант в таблице отображения могут быть получены посредством автономного обучения в соответствии с уравнением (7) выше. Альтернативно значения констант в таблице отображения могут быть получены из таблицы отображения, соответствующей другому способу вычисления p[0] в соответствии с уравнением (7) выше. Согласно вариантам реализации в данном документе таблицы отображения, полученные из таблицы отображения MIP проекта стандарта, рассматриваемого техническим комитетом (CD), VVC, являются следующими:
[65]
Если MipSizeId=0 и modeId=0, mWeight[x][y]=
{
{31, 59, 77, 28}, {36, 92, 85, 25}, {37, 69, 100, 24}, {35, 36, 106, 29}, {44, 49, 104, 48}, {44, 21, 94, 59}, {39, 0, 80, 72}, {33, 2, 66, 84}, {36, 13, 35, 99}, {29, 11, 34, 103}, {23, 21, 34, 106}, {17, 24, 40, 105}, {18, 28, 43, 101}, {12, 32, 49, 101}, {7, 31, 53, 102}, {7, 32, 54, 100}
},
[66]
Если MipSizeId=0 и modeId=1, mWeight[x][y]=
{{22, 14, 70, 0}, {24, 17, 53, 5}, {28, 70, 32, 12}, {40, 82, 11, 19}, {20, 17, 63, 52}, {22, 17, 46, 63}, {25, 21, 29, 71}, {30, 25, 16, 74}, {20, 19, 16, 85}, {21, 19, 17, 85}, {20, 18, 20, 83}, {20, 18, 23, 82}, {20, 19, 22, 80}, {20, 18, 22, 80}, {20, 20, 22, 80}, {21, 21, 22, 80}},
[67]
Если MipSizeId=0 и modeId=2, mWeight[x][y]=
{{6, 7, 62, 10}, {7, 0, 33, 9}, {7, 12, 2, 6}, {7, 63, 3, 6}, {7, 7, 73, 6}, {7, 8, 71, 9}, {7, 1, 50, 9}, {7, 9, 14, 7}, {6, 7, 55, 22}, {7, 7, 72, 5}, {7, 9, 74, 7}, {7, 3, 62, 9}, {8, 6, 2, 77}, {7, 6, 33, 45}, {7, 7, 62, 14}, {7, 8, 70, 8}},
[68]
Если MipSizeId=0 и modeId=3, mWeight[x][y]=
{{32, 32, 54, 34}, {32, 38, 34, 34}, {32, 94, 38, 30}, {34, 110, 40, 28}, {32, 30, 80, 32}, {32, 52, 56, 30}, {34, 106, 48, 30}, {44, 104, 38, 40}, {32, 30, 56, 72}, {48, 64, 38, 80}, {68, 90, 20, 86}, {76, 78, 8, 90}, {50, 32, 0, 122}, {76, 68, 4, 106}, {86, 74, 8, 96}, {82, 74, 8, 94}},
[69]
Если MipSizeId=0 и modeId=4, mWeight[x][y]=
{{27, 19, 44, 22}, {27, 35, 23, 27}, {26, 88, 29, 28}, {28, 91, 27, 27}, {32, 21, 87, 25}, {35, 22, 46, 20}, {32, 69, 26, 20}, {29, 87, 29, 23}, {32, 23, 40, 81}, {44, 16, 46, 66}, {53, 17, 17, 50}, {46, 37, 3, 40}, {31, 25, 21, 92}, {36, 24, 24, 91}, {43, 16, 23, 88}, {52, 11, 0, 81}},
[70]
Если MipSizeId=0 и modeId=5, mWeight[x][y]=
{{24, 24, 82, 26}, {24, 22, 76, 26}, {24, 32, 66, 24}, {24, 58, 56, 24}, {24, 26, 88, 22}, {24, 28, 88, 26}, {26, 26, 88, 26}, {24, 26, 86, 28}, {24, 26, 72, 40}, {24, 26, 84, 24}, {22, 28, 86, 22}, {26, 34, 82, 24}, {26, 24, 0, 110}, {26, 24, 14, 98}, {42, 26, 44, 62}, {80, 38, 76, 8}},
[71]
Если MipSizeId=0 и modeId=6, mWeight[x][y]=
{{20, 22, 48, 19}, {22, 20, 43, 18}, {21, 35, 35, 19}, {30, 62, 25, 17}, {21, 22, 47, 29}, {22, 21, 48, 27}, {23, 31, 45, 24}, {55, 44, 24, 8}, {21, 21, 25, 48}, {18, 23, 25, 51}, {39, 19, 23, 38}, {76, 27, 22, 0}, {22, 21, 20, 53}, {23, 19, 18, 54}, {60, 5, 12, 35}, {77, 25, 19, 3}},
[72]
Если MipSizeId=0 и modeId=7, mWeight[x][y]=
{{13, 10, 73, 12}, {13, 3, 54, 15}, {13, 0, 29, 14}, {13, 22, 13, 13}, {13, 13, 80, 10}, {14, 14, 86, 7}, {15, 11, 84, 8}, {14, 3, 68, 11}, {13, 12, 30, 59}, {14, 10, 45, 43}, {15, 11, 63, 26}, {17, 11, 75, 15}, {16, 10, 6, 83}, {18, 9, 6, 83}, {19, 8, 9, 78}, {24, 5, 21, 63}},
[73]
Если MipSizeId=0 и modeId=8, mWeight[x][y]=
{{24, 22, 74, 30}, {24, 20, 22, 44}, {26, 68, 6, 32}, {26, 90, 20, 28}, {24, 26, 46, 66}, {24, 20, 36, 74}, {24, 44, 10, 58}, {38, 82, 6, 30}, {24, 24, 34, 76}, {24, 24, 40, 74}, {24, 26, 32, 78}, {86, 42, 10, 32}, {26, 22, 38, 74}, {22, 26, 38, 74}, {40, 16, 36, 72}, {118, 0, 34, 32}},
[74]
Если MipSizeId=0 и modeId=9, mWeight[x][y]=
{{14, 39, 85, 0}, {15, 49, 42, 39}, {17, 30, 22, 66}, {17, 18, 19, 74}, {18, 19, 24, 73}, {17, 11, 13, 83}, {17, 12, 18, 78}, {17, 15, 19, 75}, {16, 15, 14, 78}, {16, 16, 19, 75}, {17, 17, 18, 75}, {18, 17, 18, 75}, {16, 16, 19, 75}, {17, 16, 18, 76}, {17, 16, 18, 76}, {18, 16, 19, 75}},
[75]
Если MipSizeId=0 и modeId=10, mWeight[x][y]=
{{26, 24, 57, 22}, {30, 14, 30, 24}, {28, 61, 25, 25}, {26, 100, 29, 27}, {29, 27, 92, 30}, {31, 19, 72, 25}, {40, 15, 37, 21}, {46, 70, 24, 18}, {29, 26, 30, 89}, {30, 26, 34, 87}, {41, 14, 27, 81}, {67, 12, 0, 65}, {29, 26, 24, 92}, {29, 27, 24, 92}, {28, 29, 27, 93}, {36, 22, 25, 89}},
[76]
Если MipSizeId=0 и modeId=11, mWeight[x][y]=
{{21, 19, 60, 7}, {26, 12, 35, 9}, {26, 14, 27, 11}, {22, 50, 24, 13}, {24, 18, 75, 38}, {29, 16, 60, 39}, {38, 6, 30, 41}, {41, 0, 3, 45}, {22, 19, 21, 84}, {23, 19, 21, 85}, {25, 20, 22, 84}, {28, 18, 16, 83}, {20, 20, 20, 83}, {20, 21, 21, 82}, {19, 21, 21, 83}, {19, 22, 22, 82}},
[77]
Если MipSizeId=0 и modeId=12, mWeight[x][y]=
{{16, 14, 75, 3}, {16, 43, 57, 16}, {18, 63, 20, 43}, {14, 46, 0, 65}, {15, 20, 54, 52}, {15, 22, 23, 76}, {13, 17, 15, 83}, {10, 17, 17, 82}, {14, 17, 11, 84}, {12, 18, 14, 83}, {11, 20, 16, 81}, {9, 21, 16, 81}, {12, 18, 18, 80}, {10, 19, 17, 81}, {9, 20, 16, 82}, {8, 20, 16, 82}},
[78]
Если MipSizeId=0 и modeId=13, mWeight[x][y]=
{{7, 6, 82, 0}, {7, 4, 83, 0}, {7, 2, 83, 0}, {7, 3, 80, 0}, {7, 8, 59, 16}, {7, 8, 58, 17}, {7, 8, 58, 17}, {7, 7, 57, 18}, {7, 7, 7, 70}, {7, 7, 7, 71}, {7, 7, 6, 71}, {7, 8, 7, 70}, {6, 7, 8, 71}, {6, 7, 8, 70}, {6, 7, 8, 70}, {6, 7, 9, 69}},
[79]
Если MipSizeId=0 и modeId=14, mWeight[x][y]=
{{21, 16, 39, 18}, {19, 35, 27, 17}, {19, 56, 17, 28}, {30, 46, 8, 40}, {17, 26, 47, 25}, {21, 40, 24, 40}, {41, 31, 9, 46}, {57, 13, 10, 41}, {22, 25, 15, 55}, {49, 14, 12, 46}, {65, 3, 18, 36}, {63, 4, 19, 35}, {49, 8, 13, 46}, {65, 0, 19, 33}, {63, 1, 19, 35}, {61, 3, 18, 36}},
[80]
Если MipSizeId=0 и modeId=15, mWeight[x][y]=
{{23, 43, 54, 26}, {23, 56, 50, 24}, {22, 57, 49, 25}, {23, 61, 47, 24}, {24, 51, 57, 20}, {21, 55, 51, 27}, {23, 56, 52, 24}, {24, 59, 51, 23}, {23, 43, 60, 24}, {27, 55, 58, 12}, {23, 58, 52, 23}, {24, 59, 52, 23}, {64, 26, 13, 80}, {89, 48, 51, 0}, {43, 57, 59, 7}, {24, 57, 54, 22}},
[81]
Если MipSizeId=0 и modeId=16, mWeight[x][y]=
{{20, 20, 51, 22}, {21, 22, 51, 22}, {21, 29, 50, 22}, {21, 32, 48, 22}, {21, 23, 53, 22}, {21, 24, 53, 22}, {21, 23, 53, 22}, {21, 24, 53, 22}, {18, 24, 47, 28}, {18, 24, 48, 27}, {19, 25, 48, 26}, {20, 25, 48, 26}, {30, 16, 0, 71}, {35, 14, 1, 67}, {38, 14, 2, 64}, {38, 13, 4, 63}},
[82]
Если MipSizeId=0 и modeId=17, mWeight[x][y]=
{{25, 21, 34, 25}, {27, 34, 3, 39}, {30, 55, 24, 23}, {26, 41, 40, 18}, {28, 22, 13, 48}, {44, 38, 6, 29}, {35, 44, 43, 10}, {25, 30, 45, 21}, {35, 29, 12, 44}, {56, 34, 31, 2}, {33, 30, 47, 14}, {24, 28, 44, 25}, {39, 37, 33, 19}, {48, 29, 40, 0}, {31, 25, 44, 19}, {25, 28, 44, 24}},
[83]
Если MipSizeId=1, modeId=0, mWeight[x][y]=
{{18, 22, 18, 20, 72, 43, 9, 19}, {18, 8, 22, 26, 56, 58, 5, 20}, {19, 21, 10, 35, 35, 72, 3, 20}, {21, 21, 21, 29, 18, 78, 7, 18}, {19, 16, 16, 19, 3, 70, 46, 8}, {21, 18, 15, 20, 4, 58, 61, 4}, {25, 16, 18, 18, 8, 42, 73, 3}, {28, 14, 20, 18, 13, 30, 76, 6}, {20, 18, 17, 17, 19, 4, 69, 40}, {24, 18, 17, 16, 19, 3, 55, 51}, {30, 14, 18, 15, 17, 5, 39, 63, {31, 14, 18, 16, 16, 8, 28, 70}, {22, 15, 18, 16, 16, 20, 2, 92}, {26, 14, 18, 15, 15, 19, 0, 91}, {29, 15, 18, 16, 14, 19, 3, 88}, {29, 16, 17, 17, 15, 17, 7, 84}},
[84]
Если MipSizeId=1 и modeId=1, mWeight[x][y]=
{{20, 35, 18, 20, 58, 35, 18, 20}, {20, 75, 26, 19, 32, 31, 20, 20}, {21, 6, 93, 22, 20, 25, 21, 20}, {24, 25, 0, 99, 18, 21, 21, 18}, {20, 28, 20, 20, 8, 78, 30, 19}, {20, 67, 22, 20, 10, 59, 27, 19}, {22, 7, 93, 18, 15, 30, 25, 20}, {26, 25, 1, 97, 20, 18, 22, 18}, {20, 28, 19, 20, 15, 14, 81, 25}, {20, 59, 20, 20, 12, 22, 65, 23}, {23, 7, 93, 16, 14, 24, 34, 22}, {30, 24, 3, 95, 19, 20, 20, 18}, {20, 29, 20, 20, 14, 23, 8, 90}, {20, 51, 19, 21, 14, 19, 15, 77}, {24, 7, 88, 16, 14, 20, 21, 43}, {33, 22, 6, 91, 19, 18, 20, 21}},
[85]
Если MipSizeId=1 и modeId=2, mWeight[x][y]=
{{10, 19, 10, 12, 81, 14, 10, 11}, {10, 26, 15, 10, 79, 6, 12, 11}, {11, 16, 31, 12, 69, 2, 14, 10}, {11, 13, 8, 44, 54, 3, 14, 10}, {11, 11, 12, 11, 1, 83, 13, 9}, {11, 12, 12, 12, 11, 83, 4, 12}, {11, 15, 11, 13, 24, 77, 0, 12}, {11, 14, 13, 16, 38, 63, 2, 12}, {11, 12, 11, 11, 14, 2, 82, 12}, {11, 13, 12, 12, 10, 14, 79, 5}, {11, 12, 12, 13, 6, 29, 70, 3}, {11, 12, 11, 16, 3, 45, 55, 4}, {11, 12, 11, 12, 10, 12, 1, 84}, {11, 13, 11, 12, 12, 8, 13, 76}, {11, 12, 12, 13, 14, 3, 29, 64}, {11, 13, 10, 17, 15, 0, 45, 49}},
[86]
Если MipSizeId=1 и modeId=3, mWeight[x][y]=
{{21, 50, 24, 20, 19, 38, 22, 24}, {22, 53, 41, 23, 14, 22, 27, 27}, {22, 22, 66, 37, 19, 17, 25, 28}, {27, 19, 12, 92, 19, 18, 21, 28}, {21, 51, 25, 20, 19, 23, 48, 27}, {21, 41, 48, 24, 17, 11, 36, 37}, {24, 17, 58, 43, 14, 17, 23, 39}, {39, 22, 4, 91, 15, 20, 16, 33}, {20, 44, 27, 21, 16, 20, 35, 54}, {22, 31, 53, 24, 13, 19, 21, 55}, {30, 14, 47, 50, 10, 20, 16, 48}, {57, 28, 0, 82, 19, 14, 18, 30}, {22, 34, 30, 21, 15, 22, 21, 70, {24, 22, 52, 26, 12, 24, 16, 61}, {38, 17, 33, 56, 14, 18, 16, 49}, {66, 32, 0, 75, 26, 4, 22, 30}},
[87]
Если MipSizeId=1 и modeId=4, mWeight[x][y]=
{{18, 32, 15, 16, 60, 34, 10, 19}, {18, 68, 28, 13, 31, 37, 11, , 17}, {19, 8, 73, 23, 15, 30, 22, 14}, {19, 18, 0, 85, 11, 17, 33, 15}, {18, 18, 19, 17, 9, 56, 56, 9}, {19, 19, 20, 16, 13, 30, 73, 12}, {19, 20, 20, 18, 13, 13, 71, 28}, {18, 18, 16, 26, 12, 8, 54, 47}, {17, 16, 17, 17, 17, 10, 54, 51}, {16, 17, 16, 18, 16, 15, 28, 73}, {16, 18, 15, 18, 16, 20, 14, 83}, {15, 19, 17, 18, 15, 21, 14, 82}, {16, 17, 16, 18, 17, 18, 7, 90}, {15, 18, 16, 19, 16, 17, 11, 87}, {14, 18, 16, 20, 17, 15, 15, 84}, {13, 19, 16, 22, 17, 15, 18, 81}},
[88]
Если MipSizeId=1 и modeId=5, mWeight[x][y]=
{{11, 6, 13, 11, 75, 6, 12, 11}, {12, 3, 8, 13, 48, 2, 13, 10}, {12, 45, 1, 13, 19, 9, 12, 10}, {12, 42, 37, 8, 10, 12, 11, 10}, {11, 11, 10, 12, 18, 74, 6, 11}, {11, 12, 10, 12, 53, 47, 2, 12}, {12, 6, 10, 12, 71, 16, 9, 11}, {12, 15, 6, 13, 53, 5, 13, 10}, {12, 12, 10, 11, 9, 17, 77, 5}, {12, 11, 9, 12, 3, 51, 50, 2}, {12, 11, 9, 12, 11, 72, 18, 8}, {12, 11, 9, 12, 36, 57, 7, 10}, {12, 10, 10, 11, 10, 10, 16, 71}, {13, 11, 10, 11, 14, 0, 56, 39}, {13, 11, 9, 12, 12, 8, 76, 13}, {13, 12, 9, 12, 8, 35, 57, 7}},
[89]
Если MipSizeId=1 и modeId=6, mWeight[x][y]=
{{23, 21, 23, 23, 101, 30, 19, 25}, {24, 13, 23, 24, 101, 29, 19, 25}, {24, 24, 14, 23, 101, 29, 18, 24}, {24, 23, 25, 17, 98, 29, 18, 24}, {23, 24, 23, 23, 0, 97, 36, 17}, {24, 25, 24, 22, 1, 97, 35, 17}, {24, 22, 25, 23, 1, 96, 36, 17}, {24, 22, 23, 24, 3, 94, 36, 17}, {24, 23, 23, 22, 31, 0, 93, 34}, {24, 23, 24, 23, 31, 2, 93, 33}, {24, 22, 24, 23, 31, 1, 92, 34}, {24, 22, 23, 23, 30, 3, 90, 35}, {23, 24, 23, 23, 19, 31, 2, 102}, {23, 23, 23, 24, 19, 30, 3, 101}, {23, 23, 24, 24, 19, 30, 3, 101}, {23, 23, 23, 24, 19, 31, 4, 100}}
[90]
Если MipSizeId=1 и modeId=7, mWeight[x][y]=
{{10, 5, 10, 10, 56, 4, 11, 9}, {11, 22, 6, 10, 13, 9, 10, 10}, {11, 67, 22, 6, 10, 10, 10, 10}, {11, 6, 68, 18, 11, 9, 11, 9}, {10, 10, 10, 10, 40, 53, 3, 11}, {11, 6, 10, 9, 61, 9, 10, 9}, {11, 17, 6, 10, 23, 7, 9, 10}, {11, 56, 15, 8, 10, 11, 9, 10}, {10, 9, 11, 9, 4, 42, 54, 3}, {11, 10, 11, 9, 22, 67, 8, 8}, {10, 7, 11, 9, 57, 23, 7, 10}, {11, 11, 10, 10, 36, 8, 10, 9}, {10, 10, 11, 9, 13, 0, 41, 50}, {11, 9, 11, 9, 8, 24, 64, 8}, {10, 10, 11, 9, 15, 63, 18, 10}, {11, 10, 11, 10, 44, 33, 10, 11}},
[91]
Если MipSizeId=1 и modeId=8, mWeight[x][y]=
{{21, 44, 37, 20, 24, 68, 10, 23}, {21, 1, 55, 39, 14, 39, 41, 18}, {21, 25, 0, 68, 18, 18, 42, 39}, {22, 24, 19, 36, 19, 14, 25, 72}, {21, 11, 28, 30, 18, 23, 80, 19}, {22, 25, 8, 38, 21, 13, 45, 62}, {22, 22, 18, 25, 19, 18, 16, 90}, {23, 21, 21, 24, 19, 21, 12, 91}, {21, 22, 15, 28, 21, 20, 23, 82}, {22, 21, 19, 24, 20, 22, 9, 95}, {23, 21, 21, 22, 20, 21, 13, 92}, {23, 22, 21, 22, 19, 21, 15, 90}, {22, 21, 20, 22, 21, 22, 15, 90}, {22, 21, 21, 22, 20, 21, 16, 89}, {23, 21, 20, 23, 19, 22, 15, 89}, {24, 21, 20, 23, 19, 23, 15, 87}},
[92]
Если MipSizeId=1 и modeId=9, mWeight[x][y]=
{{8, 15, 18, 15, 51, 68, 39, 23}, {7, 4, 10, 20, 22, 76, 51, 27}, {7, 16, 1, 17, 13, 78, 55, 29}, {7, 13, 24, 0, 12, 76, 55, 27}, {7, 8, 10, 14, 10, 66, 72, 25}, {6, 12, 8, 14, 12, 59, 75, 27}, {5, 13, 9, 12, 13, 58, 75, 28}, {4, 14, 8, 13, 14, 60, 71, 29}, {7, 10, 11, 12, 12, 42, 79, 41}, {4, 14, 8, 14, 13, 45, 79, 39}, {3, 14, 8, 14, 12, 44, 81, 38}, {2, 15, 10, 14, 13, 45, 78, 36}, {7, 11, 12, 13, 13, 24, 73, 62}, {4, 15, 8, 13, 15, 28, 89, 43}, {1, 14, 10, 14, 16, 29, 85, 45}, {1, 16, 9, 15, 17, 33, 78, 46}},
[93]
Если MipSizeId=2 и modeId=0, mWeight[x][y]=
{{46, 7, 14, 92, 23, 20, 10}, {32, 22, 17, 52, 50, 25, 12}, {1, 36, 21, 27, 61, 30, 14}, {0, 30, 27, 17, 61, 32, 17}, {13, 12, 37, 13, 59, 35, 18}, {14, 13, 38, 11, 56, 38, 18}, {10, 27, 29, 9, 55, 39, 17}, {10, 27, 32, 7, 53, 38, 17}, {8, 17, 14, 15, 92, 27, 13}, {2, 16, 18, 8, 84, 38, 15}, {4, 12, 22, 7, 76, 44, 17}, {8, 8, 25, 7, 72, 46, 18}, {8, 8, 26, 8, 69, 46, 19}, {10, 11, 23, 9, 68, 47, 17}, {10, 11, 23, 8, 67, 47, 18}, {10, 12, 26, 9, 64, 43, 20}, {7, 10, 16, 11, 86, 37, 17}, {7, 9, 18, 9, 73, 47, 20}, {8, 8, 21, 9, 67, 50, 22}, {7, 9, 22, 9, 66, 50, 22}, {7, 9, 23, 8, 67, 48, 22}, {8, 9, 24, 8, 67, 48, 21}, {8, 9, 26, 8, 66, 49, 20}, {9, 8, 29, 8, 64, 48, 20}, {8, 8, 16, 8, 69, 56, 19}, {6, 9, 17, 8, 64, 55, 25}, {7, 8, 19, 8, 62, 53, 27}, {7, 8, 21, 8, 61, 52, 28}, {7, 9, 22, 7, 62, 52, 25}, {7, 9, 23, 6, 62, 53, 24}, {8, 7, 26, 6, 62, 52, 23}, {8, 8, 28, 6, 61, 51, 22}, {7, 9, 14, 7, 49, 74, 23}, {7, 7, 17, 7, 51, 65, 30}, {7, 8, 18, 6, 53, 57, 33}, {7, 8, 20, 5, 56, 57, 31}, {7, 8, 22, 6, 56, 57, 29}, {8, 8, 23, 5, 57, 57, 27}, {8, 7, 26, 5, 57, 56, 26}, {8, 6, 27, 5, 57, 55, 25}, {7, 8, 14, 6, 36, 65, 47}, {7, 7, 18, 5, 44, 59, 44}, {7, 7, 19, 5, 47, 59, 40}, {7, 7, 20, 5, 50, 59, 35}, {8, 6, 22, 5, 51, 58, 33}, {8, 5, 25, 5, 51, 59, 30}, {7, 6, 26, 5, 51, 59, 29}, {9, 6, 27, 5, 50, 59, 28}, {7, 8, 14, 6, 27, 44, 76}, {6, 8, 16, 5, 38, 57, 53}, {6, 7, 19, 4, 44, 63, 40}, {7, 6, 21, 4, 47, 62, 37}, {8, 6, 22, 4, 47, 62, 35}, {8, 6, 24, 5, 46, 64, 32}, {8, 6, 26, 5, 46, 63, 31}, {8, 6, 28, 6, 45, 62, 30}, {8, 7, 15, 6, 22, 43, 81}, {6, 8, 16, 5, 32, 64, 51}, {8, 8, 19, 5, 37, 66, 41}, {9, 5, 21, 4, 41, 67, 36}, {8, 7, 22, 5, 42, 65, 35}, {8, 6, 25, 6, 42, 64, 34}, {9, 5, 27, 7, 43, 63, 32}, {9, 5, 29, 8, 40, 60, 34}},
[94]
Если MipSizeId=2 и modeId=1, mWeight[x][y]=
{{50, 47, 46, 61, 50, 45, 46}, {59, 49, 47, 57, 51, 45, 46}, {64, 52, 48, 55, 51, 46, 46}, {58, 61, 50, 53, 51, 46, 46}, {52, 66, 53, 52, 51, 46, 46}, {48, 62, 62, 50, 51, 46, 46}, {47, 49, 76, 49, 51, 46, 46}, {45, 33, 92, 49, 52, 46, 46}, {50, 48, 46, 57, 63, 45, 46}, {55, 52, 48, 55, 63, 45, 46}, {57, 56, 50, 53, 63, 45, 46}, {55, 60, 53, 51, 63, 46, 46}, {51, 60, 59, 51, 63, 46, 46}, {48, 55, 69, 49, 63, 46, 46}, {46, 42, 84, 48, 62, 46, 46}, {43, 28, 99, 48, 61, 47, 46}, {49, 49, 47, 48, 73, 47, 46}, {52, 52, 49, 47, 73, 48, 46}, {52, 55, 53, 47, 72, 48, 46}, {51, 56, 58, 46, 72, 48, 46}, {48, 54, 65, 46, 71, 48, 46}, {46, 47, 76, 45, 71, 49, 46}, {44, 34, 91, 44, 70, 49, 46}, {41, 23, 04, 45, 68, 50, 46}, {48, 48, 48, 44, 68, 59, 45}, {50, 51, 51, 43, 69, 58, 45}, {49, 52, 56, 43, 68, 58, 45}, {48, 52, 62, 42, 68, 58, 45}, {45, 48, 71, 42, 68, 58, 45}, {43, 38, 84, 41, 68, 59, 45}, {41, 27, 98, 41, 67, 59, 45}, {38, 19, 109, 42, 66, 59, 45}, {47, 47, 49, 44, 52, 74, 45}, {48, 48, 53, 43, 54, 74, 45}, {47, 48, 60, 43, 55, 73, 45}, {45, 46, 68, 43, 55, 73, 45}, {43, 40, 78, 42, 56, 72, 45}, {41, 30, 91, 42, 57, 72, 45}, {38, 20, 105, 41, 57, 71, 45}, {36, 13, 114, 41, 57, 70, 46}, {46, 47, 50, 45, 43, 77, 51}, {46, 46, 56, 44, 44, 78, 51}, {45, 43, 64, 43, 45, 77, 51}, {43, 39, 73, 43, 45, 77, 51}, {40, 31, 85, 42, 46, 77, 51}, {38, 22, 98, 42, 46, 77, 51}, {35, 12, 111, 42, 47, 76, 51}, {33, 7, 19, 41, 48, 75, 52}, {46, 46, 51, 45, 44, 57, 71}, {45, 43, 59, 44, 44, 58, 70}, {43, 37, 68, 43, 45, 58, 70}, {40, 31, 80, 43, 45, 58, 70}, {38, 22, 92, 43, 46, 58, 70}, {36, 13, 105, 43, 46, 58, 70}, {33, 5, 117, 42, 47, 58, 70}, {31, 2, 123, 42, 48, 57, 71}, {45, 41, 55, 45, 51, 24, 96}, {44, 36, 64, 44, 52, 23, 97}, {42, 29, 75, 43, 53, 23, 97}, {39, 22, 86, 43, 52, 24, 97}, {37, 14, 98, 43, 53, 24, 97}, {34, 7, 109, 42, 53, 25, 97}, {32, 1, 118, 41, 53, 25, 97}, {30, 0, 123, 41, 53, 26, 96}},
[95]
Если MipSizeId=2 и modeId=2, mWeight[x][y]=
{{20, 16, 16, 76, 9, 8, 16}, {37, 15, 16, 71, 11, 17, 16}, {65, 13, 17, 67, 12, 17, 16}, {63, 30, 15, 63, 14, 17, 16}, {30, 62, 13, 57, 16, 17, 16}, {14, 62, 28, 52, 18, 16, 16}, {21, 22, 64, 46, 21, 15, 16}, {26, 0, 81, 40, 24, 15, 17}, {23, 16, 16, 69, 48, 8, 18}, {28, 18, 16, 66, 50, 8, 17}, {36, 17, 17, 61, 54, 7, 18}, {40, 20, 17, 56, 57, 7, 18}, {34, 29, 18, 50, 61, 6, 18}, {27, 34, 22, 44, 64, 5, 18}, {25, 22, 37, 37, 67, 5, 18}, {26, 9, 51, 31, 68, 6, 18}, {18, 17, 17, 17, 87, 9, 17}, {19, 17, 17, 15, 88, 9, 17}, {20, 18, 17, 14, 88, 10, 17}, {22, 17, 18, 12, 87, 12, 17}, {23, 18, 19, 11, 85, 15, 16}, {23, 20, 19, 11, 83, 18, 16}, {22, 19, 22, 10, 79, 22, 16}, {22, 16, 28, 11, 74, 26, 15}, {16, 17, 16, 7, 58, 50, 10}, {17, 17, 16, 8, 53, 55, 10}, {18, 17, 17, 10, 47, 60, 9}, {18, 16, 17, 11, 43, 64, 9}, {19, 16, 17, 12, 38, 68, 9}, {20, 17, 18, 13, 35, 72, 9}, {20, 17, 19, 14, 31, 74, 9}, {20, 16, 21, 13, 29, 74, 11}, {17, 16, 16, 16, 15, 86, 11}, {18, 15, 17, 16, 13, 86, 13}, {18, 16, 16, 16, 13, 84, 15}, {18, 15, 17, 16, 12, 82, 18}, {19, 16, 17, 16, 12, 79, 21}, {18, 16, 17, 16, 12, 76, 24}, {18, 16, 17, 15, 12, 73, 28}, {19, 16, 19, 15, 14, 68, 31}, {17, 17, 16, 17, 10, 59, 43}, {17, 16, 16, 17, 10, 54, 47}, {18, 16, 16, 17, 11, 48, 52}, {18, 16, 16, 16, 12, 44, 56}, {17, 17, 16, 16, 13, 40, 59}, {17, 17, 16, 16, 13, 37, 62}, {17, 17, 17, 15, 14, 34, 65}, {18, 16, 18, 16, 14, 32, 66}, {17, 16, 16, 15, 16, 17, 79}, {17, 16, 16, 16, 16, 15, 81}, {18, 16, 16, 16, 16, 14, 82}, {18, 16, 16, 15, 16, 13, 83}, {17, 18, 16, 15, 16, 13, 83}, {17, 17, 17, 15, 16, 13, 84}, {17, 17, 17, 15, 16, 13, 84}, {17, 16, 18, 15, 16, 13, 83}, {16, 16, 16, 16, 17, 3, 92}, {17, 16, 16, 15, 17, 4, 91}, {18, 17, 17, 14, 18, 4, 90}, {18, 17, 16, 14, 18, 4, 91}, {17, 18, 16, 15, 18, 4, 91}, {17, 18, 17, 15, 18, 4, 90}, {17, 17, 18, 14, 18, 4, 90}, {18, 16, 19, 15, 18, 5, 89}},
[96]
Если MipSizeId=2 и modeId=3, mWeight[x][y]=
{{13, 9, 10, 43, 11, 12, 9}, {43, 2, 11, 22, 15, 12, 10}, {73, 2, 11, 16, 16, 12, 9}, {52, 38, 5, 13, 16, 12, 10}, {11, 71, 6, 12, 14, 13, 10}, {3, 50, 35, 10, 14, 13, 9}, {11, 12, 68, 11, 13, 13, 10}, {13, 3, 74, 12, 11, 15, 10}, {20, 9, 10, 51, 29, 11, 10}, {41, 5, 10, 37, 26, 13, 10}, {58, 9, 10, 23, 27, 14, 9}, {41, 36, 6, 15, 24, 16, 10}, {14, 57, 11, 11, 21, 18, 9}, {7, 39, 37, 9, 18, 19, 9}, {12, 9, 63, 10, 15, 20, 9}, {15, 2, 68, 11, 12, 21, 10}, {16, 11, 11, 19, 60, 11, 11}, {27, 11, 11, 20, 50, 16, 10}, {35, 15, 11, 17, 42, 20, 10}, {29, 29, 11, 12, 35, 23, 10}, {17, 37, 18, 8, 29, 26, 9}, {13, 26, 35, 6, 24, 27, 9}, {15, 8, 53, 7, 19, 27, 10}, {16, 4, 57, 9, 14, 28, 11}, {12, 11, 11, 5, 51, 36, 8}, {15, 13, 12, 8, 45, 36, 9}, {19, 16, 14, 9, 38, 38, 9}, {19, 21, 16, 8, 32, 39, 10}, {18, 22, 21, 7, 27, 39, 10}, {18, 16, 31, 7, 22, 39, 11}, {18, 9, 41, 6, 18, 39, 11}, {19, 7, 44, 7, 15, 37, 13}, {11, 12, 11, 9, 18, 64, 10}, {11, 12, 13, 10, 18, 61, 11}, {13, 13, 15, 10, 17, 58, 12}, {15, 14, 17, 10, 16, 56, 13}, {17, 14, 20, 9, 14, 55, 13}, {18, 11, 26, 9, 13, 52, 14}, {19, 9, 31, 8, 11, 50, 15}, {19, 9, 33, 8, 10, 46, 17}, {10, 11, 12, 11, 4, 59, 28}, {11, 10, 13, 11, 4, 60, 26}, {12, 10, 15, 11, 5, 59, 25}, {14, 10, 16, 11, 5, 58, 24}, {15, 10, 18, 11, 4, 57, 24}, {17, 9, 21, 11, 4, 56, 24}, {19, 9, 23, 10, 4, 53, 24}, {19, 9, 26, 10, 5, 49, 25}, {10, 10, 12, 11, 5, 27, 60}, {11, 8, 14, 11, 3, 34, 54}, {13, 8, 15, 12, 2, 38, 50}, {13, 8, 15, 13, 1, 41, 47}, {15, 8, 17, 13, 0, 42, 45}, {16, 8, 18, 13, 0, 44, 43}, {18, 8, 19, 12, 0, 44, 41}, {19, 9, 21, 12, 1, 43, 39}, {11, 8, 12, 11, 6, 9, 77}, {13, 7, 13, 12, 4, 16, 72}, {15, 6, 14, 13, 2, 21, 67}, {15, 6, 14, 13, 1, 25, 63}, {15, 7, 15, 14, 0, 27, 61}, {16, 8, 15, 14, 0, 29, 58}, {17, 8, 17, 14, 0, 29, 56}, {18, 8, 18, 14, 1, 30, 53}},
[97]
Если MipSizeId=2 и modeId=4, mWeight[x][y]=
{{15, 13, 13, 55, 12, 13, 13}, {21, 13, 13, 34, 14, 13, 13}, {39, 12, 13, 22, 14, 13, 13}, {55, 18, 12, 18, 14, 14, 13}, {48, 37, 11, 16, 14, 14, 13}, {23, 62, 13, 14, 14, 13, 13}, {11, 53, 35, 14, 14, 13, 12}, {15, 13, 72, 14, 14, 13, 12}, {16, 13, 13, 63, 27, 12, 13}, {17, 13, 13, 58, 19, 13, 13}, {22, 13, 13, 43, 18, 13, 13}, {33, 14, 12, 31, 17, 14, 13}, {45, 18, 12, 24, 16, 14, 12}, {44, 32, 12, 19, 15, 14, 13}, {29, 49, 15, 17, 14, 14, 12}, {18, 44, 33, 16, 15, 13, 12}, {15, 13, 13, 32, 60, 10, 13}, {16, 13, 13, 45, 44, 12, 13}, {17, 14, 13, 49, 32, 13, 12}, {21, 14, 13, 44, 25, 14, 12}, {30, 14, 13, 37, 21, 14, 12}, {39, 16, 13, 30, 18, 14, 12}, {39, 27, 13, 24, 17, 14, 12}, {31, 38, 16, 21, 17, 13, 12}, {13, 13, 13, 13, 64, 27, 11}, {14, 13, 13, 23, 61, 19, 12}, {15, 14, 13, 34, 51, 16, 12}, {17, 14, 13, 40, 42, 15, 12}, {20, 14, 13, 40, 34, 14, 12}, {27, 14, 13, 37, 29, 14, 12}, {33, 16, 13, 32, 25, 13, 12}, {33, 24, 14, 27, 23, 13, 12}, {13, 13, 13, 13, 33, 61, 9}, {13, 13, 13, 15, 47, 44, 10}, {14, 13, 13, 20, 54, 31, 11}, {15, 13, 13, 27, 53, 23, 11}, {16, 14, 13, 32, 49, 18, 12}, {19, 14, 13, 34, 43, 15, 12}, {24, 14, 13, 34, 37, 14, 12}, {28, 17, 13, 31, 32, 14, 12}, {13, 14, 13, 15, 10, 71, 20}, {13, 13, 13, 15, 22, 66, 13}, {14, 13, 13, 15, 37, 53, 11}, {14, 13, 13, 18, 47, 40, 11}, {14, 13, 13, 23, 52, 29, 11}, {15, 14, 13, 27, 51, 23, 11}, {18, 14, 13, 30, 47, 19, 11}, {22, 15, 13, 30, 42, 17, 12}, {13, 13, 13, 14, 12, 34, 57}, {13, 13, 13, 15, 14, 50, 38}, {13, 13, 13, 15, 21, 58, 23}, {14, 13, 13, 16, 32, 54, 16}, {13, 13, 13, 18, 41, 45, 13}, {13, 14, 13, 21, 47, 36, 12}, {14, 14, 13, 24, 49, 28, 12}, {17, 14, 13, 26, 46, 24, 12}, {13, 13, 13, 13, 19, 0, 85}, {13, 13, 13, 13, 20, 12, 72}, {13, 13, 13, 15, 20, 30, 53}, {13, 13, 13, 16, 23, 44, 35}, {13, 14, 12, 17, 29, 47, 24}, {13, 14, 13, 18, 36, 44, 18}, {13, 14, 13, 20, 41, 38, 16}, {15, 14, 14, 22, 42, 33, 15}},
[98]
Если MipSizeId=2 и modeId=5, mWeight[x][y]=
{{24, 9, 10, 52, 13, 10, 12}, {53, 9, 10, 25, 26, 6, 13}, {48, 30, 9, 11, 30, 7, 13}, {15, 59, 12, 6, 25, 13, 11}, {5, 48, 34, 7, 18, 19, 10}, {10, 15, 62, 8, 12, 20, 13}, {13, 2, 70, 8, 9, 19, 19}, {13, 3, 62, 9, 6, 16, 30}, {25, 14, 10, 40, 51, 0, 14}, {20, 28, 11, 16, 55, 5, 13}, {8, 38, 18, 6, 41, 20, 11}, {5, 28, 34, 6, 23, 31, 12}, {9, 12, 48, 8, 12, 33, 18}, {12, 2, 53, 9, 6, 30, 28}, {14, 1, 50, 9, 4, 23, 40}, {14, 5, 42, 8, 4, 15, 51}, {8, 20, 12, 5, 72, 12, 12}, {2, 24, 19, 5, 46, 35, 9}, {5, 16, 29, 9, 21, 48, 13}, {9, 6, 36, 10, 9, 45, 25}, {12, 3, 37, 11, 5, 36, 38}, {13, 4, 34, 11, 4, 25, 51}, {13, 6, 29, 10, 4, 16, 61}, {13, 9, 26, 10, 6, 11, 66}, {6, 14, 15, 6, 31, 60, 6}, {7, 10, 22, 11, 12, 64, 15}, {10, 6, 26, 13, 6, 50, 32}, {11, 4, 27, 12, 5, 33, 49}, {12, 5, 25, 11, 6, 20, 62}, {12, 7, 22, 11, 7, 13, 69}, {12, 9, 19, 11, 7, 8, 74}, {12, 10, 19, 10, 8, 7, 74}, {10, 9, 16, 12, 6, 67, 20}, {11, 6, 20, 13, 5, 46, 41}, {11, 5, 21, 12, 7, 26, 59}, {11, 7, 19, 12, 9, 14, 70}, {11, 8, 18, 11, 10, 8, 75}, {11, 9, 16, 11, 10, 5, 78}, {12, 10, 15, 11, 10, 4, 80}, {11, 10, 15, 10, 10, 4, 78}, {11, 9, 15, 12, 8, 34, 54}, {11, 7, 17, 11, 10, 16, 69}, {11, 7, 17, 11, 11, 7, 76}, {11, 8, 16, 11, 11, 4, 80}, {10, 10, 14, 11, 11, 3, 81}, {11, 10, 13, 11, 12, 2, 82}, {11, 10, 13, 11, 12, 2, 82}, {11, 11, 13, 10, 12, 3, 80}, {11, 9, 14, 11, 11, 8, 77}, {11, 8, 14, 11, 12, 3, 81}, {11, 9, 14, 11, 12, 1, 83}, {10, 10, 13, 11, 12, 2, 83}, {10, 11, 12, 11, 12, 2, 82}, {10, 11, 12, 11, 12, 3, 82}, {11, 11, 11, 11, 12, 3, 81}, {11, 11, 11, 11, 13, 5, 79}, {11, 10, 13, 11, 13, 2, 82}, {11, 9, 13, 11, 13, 1, 83}, {11, 10, 12, 11, 13, 2, 82}, {10, 11, 12, 11, 12, 3, 81}, {10, 11, 12, 11, 12, 4, 80}, {10, 11, 11, 11, 12, 5, 80}, {11, 11, 11, 11, 13, 5, 79}, {11, 11, 11, 11, 12, 6, 77}}.
[99]
f
После получения указанных выше параметров (т. е. mWeight, sW и O) из таблиц отображения указанные выше параметры и набор входных значений предсказания вводят в уравнения (1) и (2) для получения значений предсказания отсчетов в конкретных положениях в текущем блоке.
[100]
Чтобы получить матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, в некоторых вариантах реализации матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения следующим образом. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[101]
Другими словами, в соответствии с размером текущего блока из таблицы отображения получают матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, соответствующие размеру текущего блока. Например, когда размер текущего блока составляет 4x4, MipSizeId=0; когда размер текущего блока составляет 4x8, 8x4 или 8x8, MipSizeId=1; и когда размер текущего блока больше чем 8x8, MipSizeId=2. В соответствии со значением MipSizeId, матрица MIP текущего блока и параметр битового сдвига вправо текущего блока, соответствующие размеру текущего блока, могут быть найдены из таблицы отображения.
[102]
В блоке S507 фильтруют значения предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке.
[103]
После определения значений предсказания отсчетов в конкретных положениях в блоке S506 значения предсказания отсчетов в конкретных положениях могут быть отфильтрованы, чтобы получить значения предсказания всех отсчетов в текущем блоке.
[104]
Чтобы получить значения предсказания всех отсчетов в текущем блоке, в некоторых вариантах реализации операции в блоке S507 могут включать следующее. Интерполяционную фильтрацию выполняют в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[105]
Здесь, при выполнении интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях, могут быть получены значения предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях, и, таким образом, могут быть получены значения предсказания всех отсчетов в текущем блоке.
[106]
Другими словами, по сравнению с уравнениями (1)~(5) в традиционном способе предсказания, в способе предсказания, выполняемом кодером на основе технологии MIP, предусмотренной в данном документе, вычисление p[0] в уравнении (7) является обратным относительно уравнения (3). Таким образом, все значения p[x] в уравнении (3) и все p[x] значения в уравнении (7) могут быть в однородной форме, то есть pTemp[0] вычитается как в уравнении (3), так и в уравнении (7). Усредненная компенсация в уравнении (1) напрямую использует pTemp[0], так что коэффициент pTemp[0] в уравнении вычисления predMip[x][y] (то есть уравнении (1)) унифицируется следующим образом:
(9)
[107]
Коэффициент в традиционном способе предсказания выглядит следующим образом:
когда y=0:
(10)
в других случаях:
(11)
[108]
Учитывая природу фильтра в MIP, значение коэффициента, вероятно, будет в диапазоне -1~1. Следовательно, при унификации коэффициента до  значение  имеет склонность к тому, чтобы быть положительным значением, а общий диапазон изменения имеет склонность к тому, чтобы быть меньше.
[109]
f
f
f
f
На основании этого значения первого столбца параметров матрицы MIP mWeight, полученные посредством обучения, становятся значениями, полученными путем изменения порядка значений первого столбца параметров исходной матрицы MIP mWeight на обратный. Таким образом, диапазон значений параметров во всей матрице MIP mWeight будет уменьшен по сравнению с диапазоном значений исходной матрицы MIP mWeight, что способствует более высокой точности представления, тем самым улучшая точность представления.
[110]
f
В исходной матрице MIP mWeight, что касается изменений в диапазоне значений первого столбца данных, который был изменен на обратный, в качестве примера, первый столбец каждой из 28 матриц исходного числа с плавающей запятой, показанных на таблице 1, из которых MipSizeId составляет 0 или 1, меняет порядок на обратный, и полученный таким образом диапазон значений останется неизменным или уменьшится. Как показано в Таблице 2 ниже, диапазоны значений 11 из 28 матриц уменьшаются, и диапазоны значений оставшихся 17 матриц остаются неизменными. Среди 11 матриц с уменьшенным диапазоном значений есть 4 матрицы, которые могут улучшить точность представления известных в настоящее время показателей веса, полученных посредством обучения.
Таблица 2
[111]
Как можно увидеть, на таблице 2 показан ID матрицы из матриц с уменьшенным диапазоном значений после изменения порядка на обратный и из матриц с уменьшенным диапазоном значений и увеличенным значением sW после изменения порядка на обратный, где MipSizeId=0 или 1.
[112]
f
f’
f’’
f
f
Таблицы 3~5 ниже являются конкретными примерами. Каждая таблица разделена на две части (левую часть и правую часть). В каждой из таблицы 3 и таблицы 5 левая часть представляет mWeight, а правая часть представляет mWeight. В таблице 4 левая часть представляет mWeight, а правая часть представляет mWeight. В каждой из таблицы 3 и таблицы 5 первый столбец показывает значения mWeight[x][0], и первый столбец правой части показывает значения обратного mWeight[x][0].
[113]
f
f
В таблицах 3 и 4 показаны изменения в одном и том же режиме MIP после принятия технических решений вариантов реализации. Диапазон значений mWeight[x][0] становится меньше после изменения порядка на обратный, и значение sW изменяется с 5 на 6. Каждое значение mWeight[x][y], полученное в соответствии с уравнением (6), не превышает 127, что попадает в действительный диапазон значений, представленный 7 битами. В таблице 5 показан пример, в котором диапазон значений mWeight[x][0] остается неизменным после изменения порядка на обратный.
Таблица 3
[114]
В таблице 3 показан пример, в котором порядок первого столбца исходной матрицы числа с плавающей запятой, из которой MipSizeId=0 и modeId=3, изменен на обратный (левая часть показывает исходные значения, а правая часть показывает обратные значения).
Таблица 4
[115]
В таблице 4 показана матрица, в которой MipSizeId=0 и modeId=3. Принимая технические решения, представленные в данном документе, биты сдвига вправо равны sW=6 без выхода за пределы диапазона значений, представленного 7 битами.
Таблица 5
[116]
В таблице 5 показано изменение порядка первого столбца исходной матрицы числа с плавающей запятой, из которой MipSizeId=0 и modeId=16, на обратный (в левой части показаны исходные значения, а в правой части показаны обратные значения).
[117]
Как видно из примеров таблиц 3~5 выше, способ определения значения предсказания, представленный в данном документе, может уменьшить диапазон значений матрицы числа с плавающей запятой, полученной посредством обучения MIP, что позволяет повысить точность обработки с фиксированной запятой, тем самым улучшая точность предсказания и улучшая эффективность кодирования.
[118]
В вариантах реализации предоставлен способ определения значения предсказания. Способ применим для кодера. Согласно вариантам реализации в данном документе вычисляют первую константу, разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания набора входных значений предсказания, и набор входных значений предсказания используют для вычисления значений предсказания текущего блока. Таким образом, можно эффективно уменьшить диапазон динамических значений набора входных значений предсказания в предсказании в режиме MIP. Следовательно, по сравнению с предшествующим уровнем техники, при том же количестве битов, используемых для представления набора входных значений предсказания и матрицы MIP, данные в динамическом диапазоне могут быть представлены более точно благодаря применению технических решений вариантов реализации, что способствует более высокой точности во время вычисления значения предсказания в режиме MIP, тем самым улучшая эффективность кодирования.
[119]
Чтобы улучшить точность предсказания режима MIP и, таким образом, улучшить эффективность кодирования, в вариантах реализации предоставлен способ определения значения предсказания. На фиг. 6 показана схематическая блок-схема способа определения значения предсказания согласно другим вариантам реализации. Как проиллюстрировано на фиг. 6, способ применим для декодера. Способ включает следующее.
[120]
В блоке S601 анализируют битовый поток для получения размера текущего блока и режима кодирования текущего блока.
[121]
При приеме битового потока декодер сначала анализирует битовый поток для получения размера текущего блока и режима кодирования текущего блока. Режим кодирования может представлять собой один из традиционных режимов внутреннего предсказания или может представлять собой один из режимов MIP. Здесь режим кодирования в основном относится к одному из режимов MIP.
[122]
В блоке S602, когда режим кодирования текущего блока представляет собой режим MIP, восстановленные значения соседних отсчетов текущего блока получают и восстановленные значения соседних отсчетов фильтруют для получения набора опорных значений текущего блока.
[123]
Например, размер текущего блока может составлять 4x4, 4x8, 8x4 или 8x8. Когда размер текущего блока составляет 4x4, режим кодирования является одним из режимов кодирования, у которого M=35. Когда размер текущего блока составляет 4x8, 8x4 или 8x8, режим кодирования является одним из режимов кодирования, у которого M=19. Когда текущий блок имеет другие размеры, режим кодирования является одним из режимов кодирования, у которого M=11.
[124]
Другими словами, когда режим кодирования текущего блока является режимом MIP, декодер сначала получает восстановленные значения соседних отсчетов текущего блока, где восстановленные значения соседних отсчетов текущего блока включают восстановленные значения отсчетов в верхней части текущего блока и восстановленные значения отсчетов в левой стороне текущего блока.
[125]
После получения восстановленных значений соседних отсчетов, например, полученные восстановленные значения отсчетов в верхней части текущего блока составляют redT (включая N значений) и полученные восстановленные значения отсчетов в левой стороне текущего блока составляют redL (включая значения N), причем redT и redL составляют новый вектор pTemp в качестве набора опорных значений текущего блока.
[126]
Чтобы выполнить фильтрацию для получения набора опорных значений текущего блока, в некоторых вариантах реализации восстановленные значения соседних отсчетов фильтруют для получения набора опорных значений текущего блока в блоке S602 следующим образом. Восстановленные значения соседних отсчетов разделяют на N групп. Для каждой из N групп вычисляют среднее значение восстановленных значений в группе. Среднее значение назначают в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[127]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока.
[128]
Другими словами, восстановленные значения соседних отсчетов фильтруют в блоке S602 следующим образом. redT и redL делят на N групп, среднее значение восстановленных значений в каждой группе вычисляют для получения N средних значений, и N средних значений назначают в качестве опорных значений в наборе опорных значений.
[129]
Например, когда размер текущего блока составляет 4x4, inSize=4; когда размер текущего блока составляет 4x8, 8x4 или 8x8, inSize=8; и когда размер текущего блока больше чем 8x8, inSize=7.
[130]
В блоке S603, когда размер текущего блока меньше предварительно заданного порогового значения, второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[131]
На практике, когда размер текущего блока представлен MipSizeId, при условии, что MipSizeId меньше 2, то есть MipSizeId равен 0 или 1, второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[132]
Чтобы вычислить второе постоянное значение, в некоторых вариантах реализации второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке в блоке S603 следующим образом. Второе постоянное значение устанавливают в качестве значения, полученного посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[133]
Второе постоянное значение представляет собой значение, полученное посредством операции битового сдвига влево на числовое значение 1, и биты сдвига влево равны битовой глубине минус один.
[134]
В блоке S604 разницу между вторым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания.
[135]
Набор входных значений предсказания используют для вычисления значения предсказания текущего блока в соответствии с MIP.
[136]
После получения второй константы в операциях в блоке S604 разница между первым постоянным значением и вторым постоянным значением и первым опорным значением в наборе опорных значений может быть определена в качестве первого входного значения предсказания. Первое входное значение предсказания может быть получено путем вычисления уравнения (7) выше.
[137]
В блоке S605 другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений.
[138]
Другие входные значения p[i] предсказания включают входные значения предсказания, отличные от первого входного значения предсказания, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Другие входные значения p[i] предсказания могут дополнительно включать входные значения предсказания, когда размер текущего блока больше, чем предварительно заданное пороговое значение, или равен ему. Другие входные значения p[i] предсказания могут быть получены путем вычисления уравнения (8) выше.
[139]
В блоке S606 вычисляют значения предсказания отсчетов в конкретных положениях в текущем блоке в соответствии с набором входных значений предсказания.
[140]
После определения всех входных значений предсказания может быть получен набор входных значений предсказания. Предсказание может быть выполнено в соответствии с набором входных значений предсказания, чтобы получить значения предсказания отсчетов в конкретных положениях в текущем блоке, например значения предсказания отсчетов в положениях, обозначенных поперечными линиями на фиг. 3.
[141]
Чтобы определить значения предсказания отсчетов в конкретных положениях в текущем блоке, в некоторых вариантах реализации операции в блоке S606 включают следующее. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания, матрицей MIP текущего блока, параметром битового сдвига вправо текущего блока и параметром взвешивания текущего блока.
[142]
f
Другими словами, одна или более таблиц отображения предварительно сохранены в декодере. В соответствии с одной или более таблицами отображения могут быть определены матрица MIP текущего блока (mWeight), параметр битового сдвига вправо текущего блока (sW) и параметр взвешивания текущего блока (O).
[143]
f
После получения указанных выше параметров (т. е. mWeight, sW и O) из таблиц отображения указанные выше параметры и набор входных значений предсказания вводят в уравнения (1) и (2) для получения значений предсказания отсчетов в конкретных положениях в текущем блоке.
[144]
Чтобы получить матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, в некоторых вариантах реализации матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения следующим образом. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[145]
Другими словами, в соответствии с размером текущего блока из таблицы отображения получают матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, соответствующие размеру текущего блока. Например, когда размер текущего блока составляет 4x4, MipSizeId=0; когда размер текущего блока составляет 4x8, 8x4 или 8x8, MipSizeId=1; и когда размер текущего блока больше чем 8x8, MipSizeId=2. В соответствии со значением MipSizeId, матрица MIP текущего блока и параметр битового сдвига вправо текущего блока, соответствующие размеру текущего блока, могут быть найдены из таблицы отображения.
[146]
В блоке S607 значения предсказания отсчетов в конкретных положениях фильтруют для получения значений предсказания всех отсчетов в текущем блоке.
[147]
После определения значений предсказания отсчетов в конкретных положениях в блоке S606 значения предсказания отсчетов в конкретных положениях могут быть отфильтрованы, чтобы получить значения предсказания всех отсчетов в текущем блоке.
[148]
Чтобы получить значения предсказания всех отсчетов в текущем блоке, в некоторых вариантах реализации операции в блоке S607 могут включать следующее. Интерполяционную фильтрацию выполняют в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[149]
Здесь, при выполнении интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях, могут быть получены значения предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях, и, таким образом, могут быть получены значения предсказания всех отсчетов в текущем блоке.
[150]
В вариантах реализации предоставлен способ определения значения предсказания. Способ применим для декодера. Согласно вариантам реализации в данном документе вычисляют вторую константу, разницу между вторым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания набора входных значений предсказания, и набор входных значений предсказания используют для вычисления значений предсказания текущего блока. Таким образом, можно эффективно уменьшить диапазон динамических значений набора входных значений предсказания в предсказании в режиме MIP. Следовательно, по сравнению с предшествующим уровнем техники, при том же количестве битов, используемых для представления набора входных значений предсказания и матрицы MIP, данные в динамическом диапазоне могут быть представлены более точно благодаря применению технических решений вариантов реализации, что способствует более высокой точности во время вычисления значения предсказания в режиме MIP, тем самым улучшая эффективность кодирования.
[151]
Вариант реализации 2
[152]
В вариантах реализации, основанных на той же концепции, предоставлен кодер. На фиг. 7 показана структурная схема кодера согласно вариантам реализации. Как проиллюстрировано на фиг. 7, содержит первый модуль 71 получения, первый модуль 72 обработки, первый модуль 73 вычисления, первый модуль 74 определения, второй модуль 75 вычисления, третий модуль 76 вычисления и второй модуль 77 обработки. Первый модуль 71 получения выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока. Первый модуль 72 обработки выполнен с возможностью фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока. Первый модуль 73 вычисления выполнен с возможностью вычисления первого постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Первый модуль 74 определения выполнен с возможностью определения разницы между первым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Второй модуль 75 вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Третий модуль 76 вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Второй модуль 77 обработки выполнен с возможностью фильтрации значений предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке.
[153]
В некоторых вариантах реализации первый модуль 72 обработки выполнен с возможностью работы следующим образом. Первый модуль 72 обработки выполнен с возможностью деления восстановленных значений соседних отсчетов на N групп. Первый модуль 72 обработки выполнен с возможностью вычисления среднего значения восстановленных значений в группе для каждой из N групп. Первый модуль 72 обработки выполнен с возможностью назначения среднего значения в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[154]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока.
[155]
В некоторых вариантах реализации, с точки зрения вычисления первого постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, первый модуль 73 вычисления выполнен с возможностью установки первого постоянного значения в качестве значения, получаемого посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[156]
В некоторых вариантах реализации третий модуль 76 вычисления выполнен с возможностью работы следующим образом. Третий модуль 76 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения. Третий модуль 76 вычисления выполнен с возможностью вычисления матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока, значения предсказания отсчетов в конкретных положениях текущего блока в соответствии с набором входных значений предсказания.
[157]
В некоторых вариантах реализации, с точки зрения определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения, третий модуль 76 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[158]
В некоторых вариантах реализации второй модуль 77 обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[159]
В вариантах реализации предоставлен декодер. На фиг. 8 показана структурная схема декодера согласно вариантам реализации. Как проиллюстрировано на фиг. 8, декодер содержит второй модуль 81 получения, третий модуль 82 обработки, четвертый модуль 83 вычисления, второй модуль 84 определения, пятый модуль 85 вычисления, шестой модуль 86 вычисления и четвертый модуль 87 обработки. Второй модуль 81 получения выполнен с возможностью анализа битового потока для получения размера текущего блока и режима кодирования текущего блока. Третий модуль 82 обработки выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока и фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока, когда режим кодирования текущего блока представляет собой режим MIP. Четвертый модуль 83 вычисления выполнен с возможностью вычисления второго постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Второй модуль 84 определения выполнен с возможностью определения разницы между вторым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Пятый модуль 85 вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Шестой модуль 86 вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Четвертый модуль 87 обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях текущего блока, отличных от отсчетов в конкретных положениях.
[160]
В некоторых вариантах реализации, с точки зрения фильтрации восстановленных значений соседних отсчетов, для получения набора опорных значений текущего блока третий модуль 82 обработки выполнен с возможностью работы следующим образом. Третий модуль 82 обработки выполнен с возможностью деления восстановленных значений соседних отсчетов на N групп. Третий модуль 82 обработки выполнен с возможностью вычисления среднего значения восстановленных значений в группе для каждой из N групп. Третий модуль 82 обработки выполнен с возможностью назначения среднего значения в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[161]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока.
[162]
В некоторых вариантах реализации, с точки зрения вычисления второго постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, четвертый модуль 83 вычисления выполнен с возможностью установки второго постоянного значения в качестве значения, получаемого посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[163]
В некоторых вариантах реализации шестой модуль 85 вычисления выполнен с возможностью работы следующим образом. Шестой модуль 85 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения. Пятый модуль 85 вычисления выполнен с возможностью вычисления матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока, значений предсказания отсчетов в конкретных положениях в текущем блоке в соответствии с набором входных значений предсказания.
[164]
В некоторых вариантах реализации, с точки зрения определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения, шестой модуль 85 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[165]
В некоторых вариантах реализации четвертый модуль 87 обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[166]
На фиг. 9 показана структурная схема кодера согласно другим вариантам реализации. Как проиллюстрировано на фиг. 9, кодер 900 содержит процессор 91 и носитель 92 данных, выполненный с возможностью хранения команд, исполняемых процессором 91. Носитель 92 данных способен работать с процессором 91 посредством шины 93 связи. Команды, при исполнении процессором 91, способны работать с процессором 91 для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[167]
На практике различные компоненты кодера соединены друг с другом посредством шины 93 связи. Следует понимать, что шина 93 связи выполнена с возможностью соединения и осуществления связи между этими компонентами. В дополнение к шине данных, шина 93 связи дополнительно содержит шину питания, шину управления и шину сигнала статуса. Однако для ясности описания различные шины обозначены как шина 93 связи на фиг. 9.
[168]
На фиг. 10 показана структурная схема декодера согласно другим вариантам реализации. Как проиллюстрировано на фиг. 10, декодер 1000 содержит процессор 101 и носитель 102 данных, выполненный с возможностью хранения команд, исполняемых процессором 101. Носитель 102 данных способен работать с процессором 101 посредством шины 103 связи. Команды, при исполнении процессором 101, способны работать с процессором 101 для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[169]
На практике различные компоненты декодера соединены друг с другом посредством шины 103 связи. Следует понимать, что шина 103 связи выполнена с возможностью соединения и осуществления связи между этими компонентами. В дополнение к шине данных, шина 103 связи дополнительно содержит шину питания, шину управления и шину сигнала статуса. Однако для ясности описания различные шины обозначены как шина 103 связи на фиг. 10.
[170]
В вариантах реализации предоставлен компьютерный носитель данных. Компьютерный носитель данных выполнен с возможностью хранения исполняемых команд, которые, при исполнении одним или более процессорами, способны работать с одним или более процессорами для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[171]
Следует понимать, что запоминающее устройство согласно вариантам реализации может представлять собой энергозависимое запоминающее устройство или энергонезависимое запоминающее устройство или может содержать как энергозависимое запоминающее устройство, так и энергонезависимое запоминающее устройство. Энергонезависимое запоминающее устройство может представлять собой постоянное запоминающее устройство (ROM), программируемое ROM, PROM, стираемое программируемое постоянное запоминающее устройство (стираемое PROM, EPROM), электрически стираемое программируемое постоянное запоминающее устройство (электрическое EPROM, EEPROM) или флеш-память. Энергозависимое запоминающее устройство может представлять собой оперативное запоминающее устройство (RAM), которое выполняет функцию кеш-памяти. В качестве объяснения, а не ограничения, доступны многие формы RAM, такие как статическое RAM (SRAM), динамическое RAM (DRAM), синхронное DRAM (SDRAM), SDRAM с двукратной скоростью передачи данных (DDR SDRAM), усовершенствованное SDRAM (ESDRAM), динамическое оперативное запоминающее устройство с синхронным каналом (synch-link DRAM, SLDRAM) и RAM с шиной прямого резидентного доступа (DRRAM). Запоминающее устройство описанных в данном документе систем и способов предназначено для включения, но не ограничения этими и любыми другими подходящими типами запоминающих устройств.
[172]
Процессор, применяемый в данном документе, может представлять собой кристалл с интегральными микросхемами с функциональными возможностями обработки сигналов. Во время реализации каждый этап вышеупомянутого способа может быть завершен посредством интегральной логической схемы в виде аппаратного обеспечения или команды в виде программного обеспечения в процессоре. Процессор может представлять собой процессор общего назначения, процессор цифровой обработки сигналов (DSP), интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA) или другие программируемые логические устройства, дискретные логические элементы или транзисторные логические устройства, или дискретные аппаратные компоненты, которые могут реализовывать или исполнять способы, этапы и логические блоки, раскрытые в вариантах реализации. Процессор общего назначения может представлять собой микропроцессор, или процессор может представлять собой любой традиционный процессор или тому подобное. Этапы способа, раскрытого в вариантах реализации могут быть реализованы в качестве процессора для декодирования аппаратного обеспечения, или могут быть выполнены программными и аппаратными модулями в процессоре для декодирования. Программный модуль может быть расположен в носителе данных, таком как RAM, флеш-память, ROM, PROM или электрически стираемое перепрограммируемое запоминающее устройство, регистры и т. п. Носитель данных расположен в запоминающем устройстве. Процессор считывает информацию в запоминающем устройстве и выполняет этапы способа, описанного выше, с аппаратным обеспечением процессора.
[173]
Следует понимать, что варианты реализации, описанные в данном документе, могут быть реализованы в одном или более из аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения, межплатформенного программного обеспечения и микрокода. Для аппаратной реализации элемент обработки может быть реализован в одном или более ASIC, DSP, устройствах DSP (DSPD), программируемых логических устройствах (PLD), FPGA, процессорах общего назначения, контроллерах, микроконтроллерах, микропроцессорах, других электронных элементах для выполнения функций, описанных в данном документе, или их комбинации.
[174]
Для программной реализации описанные в данном документе технологии могут быть реализованы модулями (например, процедурами, функциями и т. д.) для выполнения описанных в данном документе функций. Программный код может храниться в запоминающем устройстве и выполняться процессором. Запоминающее устройство может быть реализовано в процессоре или вне процессора.
[175]
Термины «включать», «содержать» и их варианты предназначены для охвата неисключительного включения, так что процесс, способ, объект или устройство, включающие серию этапов или блоков, включает не только перечисленные этапы или блоки, но также другие этапы или блоки, которые не перечислены; альтернативно также могут быть включены этапы или блоки, свойственные для процесса, способа, продукта или устройства. При условии отсутствия других ограничений элемент, определенный утверждением «содержащий», не исключает существование других аналогичных элементов в процессе, способе, объекте или устройстве, содержащем элемент.
[176]
Порядковые номера вышеупомянутых вариантов реализации принимаются только для описания, а не для представления превосходства и несовершенства вариантов реализации.
[177]
На основании вышеизложенных описаний вариантов реализации специалисты в данной области техники могут ясно понять, что способ в вышеупомянутых вариантах реализации может быть реализован программным обеспечением в дополнение к необходимой универсальной аппаратной платформе или только аппаратным обеспечением. Однако первое может быть примерным вариантом реализации. На основании такого понимания техническое решение сущности или часть, вносящая вклад в предшествующий уровень техники, могут быть воплощены в программных продуктах. Компьютерные программные продукты могут храниться в носителе данных (таком как ROM/RAM, магнитный диск или оптический диск) и могут включать несколько команд, которые при выполнении могут обеспечить исполнение терминальным устройством, например мобильным телефоном, компьютером, сервером, сетевым устройством и т. д., способов, описанных в различных вариантах реализации.
[178]
Хотя настоящее изобретение было описано в связи с определенными вариантами осуществления, следует понимать, что настоящее изобретение не должно ограничиваться описанными вариантами осуществления, а, напротив, должно быть предназначено для охвата различных модификаций и эквивалентных решений, включенных в объем прилагаемой формулы изобретения, объем которой подлежит самому широкому толкованию, чтобы охватить все такие модификации и эквивалентные структуры, которые разрешены законодательством.
ПРОМЫШЛЕННАЯ ПРИМЕНИМОСТЬ
[179]
В вариантах реализации предоставлены способ определения значения предсказания, кодер, декодер и компьютерный носитель данных. Способ применим для кодера. Способ включает следующее. Получают восстановленные значения соседних отсчетов текущего блока. Восстановленные значения соседних отсчетов фильтруют, чтобы получить набор опорных значений текущего блока. Когда размер текущего блока меньше предварительно заданного порогового значения, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке. Разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания. Другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания. Значения предсказания отсчетов в конкретных положениях фильтруют для получения значений предсказания всех отсчетов в текущем блоке. Таким образом, возможно улучшить точность предсказания в кодировании и декодировании видео, тем самым улучшая эффективность в кодировании и декодировании.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[1]
Настоящее изобретение относится к области технологии внутреннего предсказания на основе матрицы (MIP) во внутреннем предсказании при кодировании видео и, более конкретно, к способам определения значения предсказания, кодеру, декодеру и компьютерному носителю данных.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[2]
В настоящее время при кодировании и декодировании видео существует три значения, задействованных в определении значения предсказания на основе MIP, которые необходимо получить во время вычисления значения предсказания. Эти три значения представляют собой матрицу MIP, параметр взвешивания и параметр битового сдвига вправо. В традиционном способе определения значения предсказания, чтобы гарантировать полное представление диапазона значений, значение параметра битового сдвига вправо не может быть слишком большим. В результате диапазон значений входного значения предсказания слишком велик при определении значения предсказания, что влияет на точность предсказания значения предсказания и, таким образом, влияет на эффективность кодирования и декодирования. Следовательно, традиционный способ предсказания при кодировании и декодировании видео имеет низкую точность предсказания.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[3]
В вариантах реализации предоставлены способы определения значения предсказания, кодер, декодер и компьютерный носитель данных, которые могут улучшить точность предсказания при кодировании и декодировании видео, тем самым улучшая эффективность кодирования и декодирования.
[4]
Технические решения вариантов реализации могут быть достигнуты посредством следующих операций или конфигураций.
[5]
В первом аспекте предусмотрен способ определения значения предсказания. Способ применим для кодера. Способ включает следующее. Получают восстановленные значения соседних отсчетов текущего блока. Восстановленные значения соседних отсчетов фильтруют, чтобы получить набор опорных значений текущего блока. Когда размер текущего блока меньше предварительно заданного порогового значения, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке. Разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания. Другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания. Значения предсказания отсчетов в конкретных положениях фильтруют для получения значений предсказания всех отсчетов в текущем блоке.
[6]
Во втором аспекте предусмотрен способ определения значения предсказания. Способ применим для декодера. Способ включает следующее. Анализируют битовый поток для получения размера текущего блока и режима кодирования текущего блока. Когда режим кодирования текущего блока представляет собой режим MIP, восстановленные значения соседних отсчетов текущего блока получают и восстановленные значения соседних отсчетов фильтруют для получения набора опорных значений текущего блока. Когда размер текущего блока меньше предварительно заданного порогового значения, второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке. Разницу между вторым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания. Другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания. Интерполяционную фильтрацию выполняют в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[7]
В третьем аспекте предусмотрен кодер. Кодер содержит первый модуль получения, первый модуль обработки, первый модуль вычисления, первый модуль определения, второй модуль вычисления, третий модуль вычисления и второй модуль обработки. Первый модуль получения выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока. Первый модуль обработки выполнен с возможностью фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока. Первый модуль вычисления выполнен с возможностью вычисления первого постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Первый модуль определения выполнен с возможностью определения разницы между первым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Второй модуль вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Третий модуль вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Второй модуль обработки выполнен с возможностью фильтрации значений предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке.
[8]
В четвертом аспекте предусмотрен декодер. Декодер содержит второй модуль получения, третий модуль обработки, четвертый модуль вычисления, второй модуль определения, пятый модуль вычисления, шестой модуль вычисления и четвертый модуль обработки. Второй модуль получения выполнен с возможностью анализа битового потока для получения размера текущего блока и режима кодирования текущего блока. Третий модуль обработки выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока и фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока, когда режим кодирования текущего блока представляет собой режим MIP. Четвертый модуль вычисления выполнен с возможностью вычисления второго постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Второй модуль определения выполнен с возможностью определения разницы между вторым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Пятый модуль вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Шестой модуль вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Четвертый модуль обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях текущего блока, отличных от отсчетов в конкретных положениях.
[9]
В пятом аспекте предусмотрен кодер. Кодер содержит процессор и носитель данных, выполненный с возможностью хранения команд, исполняемых процессором. Носитель данных способен работать с процессором посредством шины связи. Команды, при исполнении процессором, способны работать с процессором для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[10]
В шестом аспекте предусмотрен декодер. Декодер содержит процессор и носитель данных, выполненный с возможностью хранения команд, исполняемых процессором. Носитель данных способен работать с процессором посредством шины связи. Команды, при исполнении процессором, способны работать с процессором для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[11]
В седьмом аспекте предусмотрен машиночитаемый носитель данных. Машиночитаемый носитель данных выполнен с возможностью хранения исполняемых команд, которые, при исполнении одним или более процессорами, способны работать с одним или более процессорами для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[12]
В вариантах реализации предоставлены способ определения значения предсказания, кодер, декодер и компьютерный носитель данных. Кодер получает восстановленные значения соседних отсчетов текущего блока. Кодер фильтрует восстановленные значения соседних отсчетов для получения набора опорных значений текущего блока. Кодер вычисляет первое постоянное значение в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Кодер определяет разницу между первым постоянным значением и первым опорным значением в наборе опорных значений как первое входное значение предсказания в наборе входных значений предсказания. Кодер определяет, в соответствии с набором опорных значений, другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания. Кодер вычисляет, в соответствии с набором входных значений предсказания, значения предсказания отсчетов в конкретных положениях в текущем блоке. Кодер фильтрует значения предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке. Другими словами, вычисляют первую константу, разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания набора входных значений предсказания, и набор входных значений предсказания используют для вычисления значений предсказания текущего блока. Таким образом, можно эффективно уменьшить диапазон динамических значений набора входных значений предсказания во время предсказания в режиме MIP. Следовательно, по сравнению с предшествующим уровнем техники, при том же количестве битов, используемых для представления набора входных значений предсказания и матрицы MIP, данные в динамическом диапазоне могут быть представлены более точно благодаря применению технических решений вариантов реализации, что способствует более высокой точности во время вычисления значения предсказания в режиме MIP, тем самым улучшая эффективность кодирования.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
[13]
На фиг. 1 показана структурная схема системы кодирования видео.
[14]
На фиг. 2 показана структурная схема системы декодирования видео.
[15]
На фиг. 3 показано схематическое изображение, иллюстрирующее процесс кодирования отсчетов в режиме MIP.
[16]
На фиг. 4 показана схематическая блок-схема кодирования в режиме MIP.
[17]
На фиг. 5 показана схематическая блок-схема способа определения значения предсказания согласно вариантам реализации.
[18]
На фиг. 6 показана схематическая блок-схема способа определения значения предсказания согласно другим вариантам реализации.
[19]
На фиг. 7 показана структурная схема кодера согласно вариантам реализации.
[20]
На фиг. 8 показана структурная схема декодера согласно вариантам реализации.
[21]
На фиг. 9 показана структурная схема кодера согласно другим вариантам реализации.
[22]
На фиг. 10 показана структурная схема декодера согласно другим вариантам реализации.
ПОДРОБНОЕ ОПИСАНИЕ
[23]
Далее будут подробно и всесторонне описаны технические решения вариантов реализации со ссылкой на прилагаемые графические материалы. Можно понять, что варианты реализации, описанные в данном документе, предназначены лишь для объяснения, а не ограничения настоящего изобретения. В дополнение, для простоты описания на прилагаемых графических материалах проиллюстрированы только части, относящиеся к настоящему изобретению.
[24]
В области кодирования видео в новейшем универсальном кодировании видео (VVC) было принято аффинное линейное взвешенное внутреннее предсказание, которое было предложено HHI в Совместной команде по исследованию видео (JVET)-N0217 и переименовано в технологию MIP. В соответствии с разными размерами блоков внутреннего кодирования яркости («блок яркости» для краткости) в технологии MIP вводят разное количество режимов MIP при внутреннем предсказании яркости.
[25]
В технологии MIP блоки яркости подразделяются на три класса в соответствии с размером блока яркости. Предполагая, что размер блока яркости равен W*H, блоки яркости могут быть подразделены на следующие три класса в соответствии с размером блока яркости: Блоки яркости, имеющие размер 4×4, принадлежат блоку яркости первого класса, блоки яркости, имеющие размер 8×4, 4×8 или 8×8, принадлежат блоку яркости второго класса, и блоки яркости, имеющие другие размеры, принадлежат блоку яркости третьего класса. Для этих трех классов блоков яркости технология MIP ввела M типов режимов MIP на основе 67 традиционных режимов внутреннего предсказания.
[26]
На фиг. 1 показана структурная схема системы кодирования видео. Как проиллюстрировано на фиг. 1, система 100 кодирования видео содержит модуль 101 преобразования и квантования, модуль 102 внутренней оценки, модуль 103 внутреннего предсказания, модуль 104 компенсации движения, модуль 105 оценки движения, модуль 106 обратного преобразования и обратного квантования, модуль 107 анализа управления фильтром, модуль 108 фильтрации для удаления блочности (DBK) и фильтрации для адаптивного смещения отсчета (SAO), модуль 109 кодирования информации заголовка и кодирования контекстно-адаптивного двоичного арифметического кодирования (CABAC), модуль 110 кеша для декодированного изображения и т. п.
[27]
На фиг. 2 показана структурная схема системы декодирования видео. Как проиллюстрировано на фиг. 2, система 200 декодирования видео содержит модуль 201 декодирования информации заголовка и декодирования CABAC, модуль 202 обратного преобразования и обратного квантования, модуль 203 внутреннего предсказания, модуль 204 компенсации движения, модуль 205 фильтрации DBK и фильтрации SAO, модуль 206 кеша для декодированного изображения и т. п. После обработки видеоизображения модулем 101 преобразования и квантования, модулем 102 внутренней оценки, модулем 103 внутреннего предсказания, модулем 104 компенсации движения, модулем 105 оценки движения, модулем 108 фильтрации DBK и фильтрации SAO и модулем 109 кодирования информации заголовка и кодирования CABAC системы 100 кодирования видео битовый поток видеоизображения выводится. Битовый поток затем вводят в систему 200 декодирования видео и обрабатывают посредством модуля 201 декодирования информации заголовка и декодирования CABAC, модуля 202 обратного преобразования и обратного квантования, модуля 203 внутреннего предсказания и модуля 204 компенсации движения системы декодирования видео 200, чтобы восстановить исходное видеоизображение.
[28]
При кодировании и декодировании в режиме MIP способ определения значения предсказания в основном применяют к модулю 103 внутреннего предсказания системы кодирования видео и модулю 203 внутреннего предсказания системы декодирования видео и применяют к стороне кодирования и стороне декодирования.
[29]
Для блока яркости первого класса M=35; для блока яркости второго класса M=19; и для блока яркости третьего класса M=11.
[30]
Технология MIP применима только для внутреннего предсказания яркости. Подобно традиционному режиму, для предсказания в MIP вводом является верхняя строка и левый столбец текущего блока (эквивалентный «блоку изображения, подлежащему кодированию», который будет описан ниже), а выводом являются значения предсказания текущего блока. Процесс предсказание включает следующие три этапа: усреднение, матричное векторное умножение и интерполяцию. Другими словами, посредством выполнения трех вышеупомянутых операций над входными восстановленными значениями яркости соседних отсчетов в верхней строке и левом столбце текущего блока могут быть получены значения предсказания яркости текущего блока.
[31]
На фиг. 3 показано схематическое изображение, иллюстрирующее процесс кодирования отсчетов в режиме MIP. Как проиллюстрировано на фиг. 3, процесс включает следующие этапы.
[32]
Этап 1: выполняют усреднение по верхним соседним опорным точкам текущего блока яркости для получения вектора redT, который включает N значений; и выполняют усреднение по соседним опорным отсчетам текущего блока яркости для получения вектора redL, который включает N значений. Когда блок яркости принадлежит блоку яркости первого класса, N=2; и когда блок яркости принадлежит блоку яркости второго класса или блоку яркости третьего класса, N=4. Вектор redT и вектор redL составляют новый вектор pTemp, который используют для последующих операций.
[33]
f
Этап 2: получают матрицу mWeight, параметр взвешивания O и параметр битового сдвига вправо sW. Некоторые значения предсказания в текущем блоке, которые обозначены поперечными линиями на фиг. 3, могут быть получены в соответствии со следующими уравнениями:
(1)
(2)
[34]
Когда MipSizeId=0 или 1 – вычислять в соответствии со следующими уравнениями:
(3)
(4)
[35]
Когда MipSizeId=2 – вычислять в соответствии со следующим уравнением:
(5)
[36]
f
f
f
f
predMip[x,y] представляет значение предсказания отсчета в положении (x, y). pTemp[i] представляет i-е опорное значение в наборе опорных значений текущего блока в предсказание в режиме MIP. p[x] представляет i-е входное значение предсказания в предсказание в режиме MIP. inSize определяют в соответствии с серийным номером MIP, то есть MipSizeId, где inSize=4, когда MipSizeId=0, inSize=8, когда MipSizeId=1, и inSize=7, когда MipSizeId=2. Значение MipSizeId определяют в соответствии с размером текущего блока, где MipSizeId=0, когда размер текущего блока составляет 4x4, MipSizeId=1, когда размер текущего блока составляет 4x8, 8x4 или 8x8, и MipSizeId=2, когда размер текущего блока больше чем 8x8. BitDepth представляет битовую глубину компонента яркости (то есть количество двоичного бита, используемого для представления значения отсчета компонента яркости). mWeight представляет матрицу MIP. predC, incH и incW используют для определения параметра элемента матрицы, соответствующего положению (x, y) отсчета. «>>» является оператором битового сдвига вправо. oW представляет сдвиг смещения в операции битового сдвига вправо. sW представляет биты сдвига вправо. O представляет параметр взвешивания. sW и O могут быть определены по меньшей мере в соответствии с размером текущего блока или значением MipSizeId. Например, sW и O могут быть определены в соответствии с таблицей отображения, связанной со значением MipSizeId, где таблица отображения записывает по меньшей мере значения sW и значения O, соответствующие разным значениям MipSizeId.
[37]
Этап 3: получают оставшиеся значения предсказания в текущем блоке посредством линейной интерполяции, то есть значения предсказания в текущем блоке, обозначенные множеством точек на фиг. 3.
[38]
f
f
f
Три значения, задействованные в технологии MIP, представляющие собой соответственно mWeight, O и sW, необходимо получить во время определения значения предсказания. Значение mWeight связано как с режимом предсказания, так и с пространственным положением отсчета, тогда как значение O и значение sW связаны только с режимом предсказания. p[i] получают посредством вычисления в соответствии с уравнениями (3), (4) и (5). Каждое из значения mWeight и значения O сохраняют как 7-значное двоичное число без знака. sW представляет смещение, соответствующее режиму предсказания, которое имеет значение 5, 6 или 7 в соответствии с режимом предсказания (показан на таблице 1 ниже) и может быть получено, обратившись к таблице 1. Значение отсчета может быть получено посредством вычисления матричного векторного продукта и, таким образом, общая потребность в памяти составляет 4,5395 килобайта.
Таблица 1
[39]
f
В предсказании в режиме MIP для текущего блока сначала определяют индекс режима предсказания. В соответствии с индексом режима предсказания фиксированное значение sW для текущего блока получают, обратившись к таблице, а затем получают mWeight-fO. Путем сдвига вправо на mWeight-O на sW битов получают исходную матрицу числа с плавающей запятой для вычисления значения предсказания. На фиг. 4 показана схематическая блок-схема кодирования в режиме MIP.
[40]
f
Как проиллюстрировано на фиг. 4, сначала получают индексный номер режима MIP. В соответствии с индексным номером режима MIP, машинообученные mWeight и O получают из таблицы отображения. В соответствии с индексным номером режима MIP, sW получают из таблицы отображения.  выполняют для предсказания, и получают значение предсказания.
[41]
f
Другими словами, в существующей технологии MIP в VVC, исходные числа с плавающей запятой mWeightf[x][y] всех значений mWeight являются представлением с фиксированной запятой смещения, начиная с его минимального значения (часто отрицательного, представленного O):
(6)
[42]
mWeight[x][y] сохраняют как 7-значное двоичное число без знака, что приводит к потере в точности представления. Здесь больший sW приводит к более высокой точности. Однако, чтобы гарантировать полное представление диапазона значений, значение sW не может быть слишком большим. Поскольку одно и то же значение sW бесконтрольно используют во всей матрице, параметр с небольшим диапазоном значений должен дополнительно снижать точность представления, чтобы адаптироваться к общему диапазону значений всех параметров во всей матрице. Диапазон изменения параметра в исходной матрице также связан со способом получения p[i]. Способ вычисления p[i] в предшествующем уровне техники вызывает расширение диапазона изменения параметра, что снижает точность данных в весовой матрице, увеличивает разность предсказания в режиме MIP и, таким образом, снижает эффективность кодирования.
[43]
Чтобы улучшить точность предсказания режима MIP и, таким образом, улучшить эффективность кодирования, в вариантах реализации предоставлен способ определения значения предсказания. На фиг. 5 показана схематическая блок-схема способа определения значения предсказания согласно вариантам реализации. Как проиллюстрировано на фиг. 5, способ применим для кодера. Способ включает следующее.
[44]
В блоке S501 получают восстановленные значения соседних отсчетов текущего блока.
[45]
Во время кодирования, чтобы определить значения предсказания текущего блока, кодеру сначала необходимо получить восстановленные значения соседних отсчетов текущего блока. Здесь соседние отсчеты текущего блока включают отсчеты в верхней строке и левом столбце текущего блока.
[46]
В блоке S502 восстановленные значения соседних отсчетов фильтруют, чтобы получить набор опорных значений текущего блока.
[47]
После получения восстановленных значений соседних отсчетов, например, полученные восстановленные значения отсчетов в верхней строке текущего блока составляют redT (включая N значений) и полученные восстановленные значения отсчетов в левом столбце текущего блока составляют redL (включая N значений), причем redT и redL составляют новый вектор pTemp в качестве набора опорных значений текущего блока.
[48]
Чтобы получить набор опорных значений текущего блока посредством фильтрации, в некоторых вариантах реализации операции в блоке S502 могут включать следующее. Восстановленные значения соседних отсчетов разделяют на N групп. Для каждой из N групп вычисляют среднее значение восстановленных значений в группе. Среднее значение назначают в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[49]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока. Другими словами, восстановленные значения соседних отсчетов фильтруют в блоке S502 следующим образом. redT и redL делят на N групп, среднее значение восстановленных значений в каждой группе вычисляют для получения N средних значений, и N средних значений назначают в качестве опорных значений в наборе опорных значений.
[50]
Например, когда размер текущего блока составляет 4x4, inSize=4; когда размер текущего блока составляет 4x8, 8x4 или 8x8, inSize=8; и когда размер текущего блока больше чем 8x8, inSize=7.
[51]
В блоке S503, когда размер текущего блока меньше предварительно заданного порогового значения, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[52]
На практике размер текущего блока представлен MipSizeId. Когда MipSizeId меньше чем 2, то есть MipSizeId равен 0 или 1, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[53]
Чтобы вычислить первое постоянное значение, в некоторых вариантах реализации операции в блоке S503 включают следующее. Первое постоянное значение устанавливают в качестве значения, полученного посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[54]
Первое постоянное значение представляет собой значение, полученное посредством операции битового сдвига влево на числовое значение 1, и биты сдвига влево равны битовой глубине минус один.
[55]
В блоке S504 разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания.
[56]
Набор входных значений предсказания используют для вычисления значения предсказания текущего блока в соответствии с MIP. После получения первого постоянного значения в операциях в блоке S504 разница между первым постоянным значением и первым опорным значением в наборе опорных значений может быть определена в качестве первого входного значения предсказания. Первое входное значение p[0] предсказания может быть получено в соответствии со следующим уравнением:
(7)
[57]
В блоке S505 другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений.
[58]
Другие входные значения p[i] предсказания включают входные значения предсказания, отличные от первого входного значения предсказания, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Другие входные значения p[i] предсказания могут дополнительно включать входные значения предсказания, когда размер текущего блока больше, чем предварительно заданное пороговое значение, или равен ему. Другие входные значения p[i] предсказания могут быть получены в соответствии со следующим уравнением:
(8)
[59]
В блоке S506 вычисляют значения предсказания отсчетов в конкретных положениях в текущем блоке в соответствии с набором входных значений предсказания.
[60]
После определения всех входных значений предсказания может быть получен набор входных значений предсказания. Предсказание может быть выполнено в соответствии с набором входных значений предсказания, чтобы получить значения предсказания отсчетов в конкретных положениях в текущем блоке, например значения предсказания отсчетов в положениях, обозначенных поперечными линиями на фиг. 3.
[61]
Чтобы определить значения предсказания отсчетов в конкретных положениях в текущем блоке, в некоторых вариантах реализации операции в блоке S506 включают следующее. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания, матрицей MIP текущего блока, параметром битового сдвига вправо текущего блока и параметром взвешивания текущего блока.
[62]
f
Другими словами, одна или более таблиц отображения предварительно сохранены в кодере. В соответствии с одной или более таблицами отображения могут быть определены матрица MIP текущего блока (mWeight), параметр битового сдвига вправо текущего блока (sW) и параметр взвешивания текущего блока (O).
[63]
f
f
f
sW и O могут быть определены по меньшей мере в соответствии с размером текущего блока или значением MipSizeId. Например, значение sW и значение O могут быть определены в соответствии с таблицей отображения, связанной со значением MipSizeId, где таблица отображения записывает по меньшей мере значения sW и значения O, соответствующие разным значениям MipSizeId.
[64]
Значения в приведенной выше таблице отображения являются константами, то есть значения в таблице отображения не обновляются во время вычисления значений предсказания MIP. Значения констант в таблице отображения могут быть получены посредством автономного обучения в соответствии с уравнением (7) выше. Альтернативно значения констант в таблице отображения могут быть получены из таблицы отображения, соответствующей другому способу вычисления p[0] в соответствии с уравнением (7) выше. Согласно вариантам реализации в данном документе таблицы отображения, полученные из таблицы отображения MIP проекта стандарта, рассматриваемого техническим комитетом (CD), VVC, являются следующими:
[65]
Если MipSizeId=0 и modeId=0, mWeight[x][y]=
{
{31, 59, 77, 28}, {36, 92, 85, 25}, {37, 69, 100, 24}, {35, 36, 106, 29}, {44, 49, 104, 48}, {44, 21, 94, 59}, {39, 0, 80, 72}, {33, 2, 66, 84}, {36, 13, 35, 99}, {29, 11, 34, 103}, {23, 21, 34, 106}, {17, 24, 40, 105}, {18, 28, 43, 101}, {12, 32, 49, 101}, {7, 31, 53, 102}, {7, 32, 54, 100}
},
[66]
Если MipSizeId=0 и modeId=1, mWeight[x][y]=
{{22, 14, 70, 0}, {24, 17, 53, 5}, {28, 70, 32, 12}, {40, 82, 11, 19}, {20, 17, 63, 52}, {22, 17, 46, 63}, {25, 21, 29, 71}, {30, 25, 16, 74}, {20, 19, 16, 85}, {21, 19, 17, 85}, {20, 18, 20, 83}, {20, 18, 23, 82}, {20, 19, 22, 80}, {20, 18, 22, 80}, {20, 20, 22, 80}, {21, 21, 22, 80}},
[67]
Если MipSizeId=0 и modeId=2, mWeight[x][y]=
{{6, 7, 62, 10}, {7, 0, 33, 9}, {7, 12, 2, 6}, {7, 63, 3, 6}, {7, 7, 73, 6}, {7, 8, 71, 9}, {7, 1, 50, 9}, {7, 9, 14, 7}, {6, 7, 55, 22}, {7, 7, 72, 5}, {7, 9, 74, 7}, {7, 3, 62, 9}, {8, 6, 2, 77}, {7, 6, 33, 45}, {7, 7, 62, 14}, {7, 8, 70, 8}},
[68]
Если MipSizeId=0 и modeId=3, mWeight[x][y]=
{{32, 32, 54, 34}, {32, 38, 34, 34}, {32, 94, 38, 30}, {34, 110, 40, 28}, {32, 30, 80, 32}, {32, 52, 56, 30}, {34, 106, 48, 30}, {44, 104, 38, 40}, {32, 30, 56, 72}, {48, 64, 38, 80}, {68, 90, 20, 86}, {76, 78, 8, 90}, {50, 32, 0, 122}, {76, 68, 4, 106}, {86, 74, 8, 96}, {82, 74, 8, 94}},
[69]
Если MipSizeId=0 и modeId=4, mWeight[x][y]=
{{27, 19, 44, 22}, {27, 35, 23, 27}, {26, 88, 29, 28}, {28, 91, 27, 27}, {32, 21, 87, 25}, {35, 22, 46, 20}, {32, 69, 26, 20}, {29, 87, 29, 23}, {32, 23, 40, 81}, {44, 16, 46, 66}, {53, 17, 17, 50}, {46, 37, 3, 40}, {31, 25, 21, 92}, {36, 24, 24, 91}, {43, 16, 23, 88}, {52, 11, 0, 81}},
[70]
Если MipSizeId=0 и modeId=5, mWeight[x][y]=
{{24, 24, 82, 26}, {24, 22, 76, 26}, {24, 32, 66, 24}, {24, 58, 56, 24}, {24, 26, 88, 22}, {24, 28, 88, 26}, {26, 26, 88, 26}, {24, 26, 86, 28}, {24, 26, 72, 40}, {24, 26, 84, 24}, {22, 28, 86, 22}, {26, 34, 82, 24}, {26, 24, 0, 110}, {26, 24, 14, 98}, {42, 26, 44, 62}, {80, 38, 76, 8}},
[71]
Если MipSizeId=0 и modeId=6, mWeight[x][y]=
{{20, 22, 48, 19}, {22, 20, 43, 18}, {21, 35, 35, 19}, {30, 62, 25, 17}, {21, 22, 47, 29}, {22, 21, 48, 27}, {23, 31, 45, 24}, {55, 44, 24, 8}, {21, 21, 25, 48}, {18, 23, 25, 51}, {39, 19, 23, 38}, {76, 27, 22, 0}, {22, 21, 20, 53}, {23, 19, 18, 54}, {60, 5, 12, 35}, {77, 25, 19, 3}},
[72]
Если MipSizeId=0 и modeId=7, mWeight[x][y]=
{{13, 10, 73, 12}, {13, 3, 54, 15}, {13, 0, 29, 14}, {13, 22, 13, 13}, {13, 13, 80, 10}, {14, 14, 86, 7}, {15, 11, 84, 8}, {14, 3, 68, 11}, {13, 12, 30, 59}, {14, 10, 45, 43}, {15, 11, 63, 26}, {17, 11, 75, 15}, {16, 10, 6, 83}, {18, 9, 6, 83}, {19, 8, 9, 78}, {24, 5, 21, 63}},
[73]
Если MipSizeId=0 и modeId=8, mWeight[x][y]=
{{24, 22, 74, 30}, {24, 20, 22, 44}, {26, 68, 6, 32}, {26, 90, 20, 28}, {24, 26, 46, 66}, {24, 20, 36, 74}, {24, 44, 10, 58}, {38, 82, 6, 30}, {24, 24, 34, 76}, {24, 24, 40, 74}, {24, 26, 32, 78}, {86, 42, 10, 32}, {26, 22, 38, 74}, {22, 26, 38, 74}, {40, 16, 36, 72}, {118, 0, 34, 32}},
[74]
Если MipSizeId=0 и modeId=9, mWeight[x][y]=
{{14, 39, 85, 0}, {15, 49, 42, 39}, {17, 30, 22, 66}, {17, 18, 19, 74}, {18, 19, 24, 73}, {17, 11, 13, 83}, {17, 12, 18, 78}, {17, 15, 19, 75}, {16, 15, 14, 78}, {16, 16, 19, 75}, {17, 17, 18, 75}, {18, 17, 18, 75}, {16, 16, 19, 75}, {17, 16, 18, 76}, {17, 16, 18, 76}, {18, 16, 19, 75}},
[75]
Если MipSizeId=0 и modeId=10, mWeight[x][y]=
{{26, 24, 57, 22}, {30, 14, 30, 24}, {28, 61, 25, 25}, {26, 100, 29, 27}, {29, 27, 92, 30}, {31, 19, 72, 25}, {40, 15, 37, 21}, {46, 70, 24, 18}, {29, 26, 30, 89}, {30, 26, 34, 87}, {41, 14, 27, 81}, {67, 12, 0, 65}, {29, 26, 24, 92}, {29, 27, 24, 92}, {28, 29, 27, 93}, {36, 22, 25, 89}},
[76]
Если MipSizeId=0 и modeId=11, mWeight[x][y]=
{{21, 19, 60, 7}, {26, 12, 35, 9}, {26, 14, 27, 11}, {22, 50, 24, 13}, {24, 18, 75, 38}, {29, 16, 60, 39}, {38, 6, 30, 41}, {41, 0, 3, 45}, {22, 19, 21, 84}, {23, 19, 21, 85}, {25, 20, 22, 84}, {28, 18, 16, 83}, {20, 20, 20, 83}, {20, 21, 21, 82}, {19, 21, 21, 83}, {19, 22, 22, 82}},
[77]
Если MipSizeId=0 и modeId=12, mWeight[x][y]=
{{16, 14, 75, 3}, {16, 43, 57, 16}, {18, 63, 20, 43}, {14, 46, 0, 65}, {15, 20, 54, 52}, {15, 22, 23, 76}, {13, 17, 15, 83}, {10, 17, 17, 82}, {14, 17, 11, 84}, {12, 18, 14, 83}, {11, 20, 16, 81}, {9, 21, 16, 81}, {12, 18, 18, 80}, {10, 19, 17, 81}, {9, 20, 16, 82}, {8, 20, 16, 82}},
[78]
Если MipSizeId=0 и modeId=13, mWeight[x][y]=
{{7, 6, 82, 0}, {7, 4, 83, 0}, {7, 2, 83, 0}, {7, 3, 80, 0}, {7, 8, 59, 16}, {7, 8, 58, 17}, {7, 8, 58, 17}, {7, 7, 57, 18}, {7, 7, 7, 70}, {7, 7, 7, 71}, {7, 7, 6, 71}, {7, 8, 7, 70}, {6, 7, 8, 71}, {6, 7, 8, 70}, {6, 7, 8, 70}, {6, 7, 9, 69}},
[79]
Если MipSizeId=0 и modeId=14, mWeight[x][y]=
{{21, 16, 39, 18}, {19, 35, 27, 17}, {19, 56, 17, 28}, {30, 46, 8, 40}, {17, 26, 47, 25}, {21, 40, 24, 40}, {41, 31, 9, 46}, {57, 13, 10, 41}, {22, 25, 15, 55}, {49, 14, 12, 46}, {65, 3, 18, 36}, {63, 4, 19, 35}, {49, 8, 13, 46}, {65, 0, 19, 33}, {63, 1, 19, 35}, {61, 3, 18, 36}},
[80]
Если MipSizeId=0 и modeId=15, mWeight[x][y]=
{{23, 43, 54, 26}, {23, 56, 50, 24}, {22, 57, 49, 25}, {23, 61, 47, 24}, {24, 51, 57, 20}, {21, 55, 51, 27}, {23, 56, 52, 24}, {24, 59, 51, 23}, {23, 43, 60, 24}, {27, 55, 58, 12}, {23, 58, 52, 23}, {24, 59, 52, 23}, {64, 26, 13, 80}, {89, 48, 51, 0}, {43, 57, 59, 7}, {24, 57, 54, 22}},
[81]
Если MipSizeId=0 и modeId=16, mWeight[x][y]=
{{20, 20, 51, 22}, {21, 22, 51, 22}, {21, 29, 50, 22}, {21, 32, 48, 22}, {21, 23, 53, 22}, {21, 24, 53, 22}, {21, 23, 53, 22}, {21, 24, 53, 22}, {18, 24, 47, 28}, {18, 24, 48, 27}, {19, 25, 48, 26}, {20, 25, 48, 26}, {30, 16, 0, 71}, {35, 14, 1, 67}, {38, 14, 2, 64}, {38, 13, 4, 63}},
[82]
Если MipSizeId=0 и modeId=17, mWeight[x][y]=
{{25, 21, 34, 25}, {27, 34, 3, 39}, {30, 55, 24, 23}, {26, 41, 40, 18}, {28, 22, 13, 48}, {44, 38, 6, 29}, {35, 44, 43, 10}, {25, 30, 45, 21}, {35, 29, 12, 44}, {56, 34, 31, 2}, {33, 30, 47, 14}, {24, 28, 44, 25}, {39, 37, 33, 19}, {48, 29, 40, 0}, {31, 25, 44, 19}, {25, 28, 44, 24}},
[83]
Если MipSizeId=1, modeId=0, mWeight[x][y]=
{{18, 22, 18, 20, 72, 43, 9, 19}, {18, 8, 22, 26, 56, 58, 5, 20}, {19, 21, 10, 35, 35, 72, 3, 20}, {21, 21, 21, 29, 18, 78, 7, 18}, {19, 16, 16, 19, 3, 70, 46, 8}, {21, 18, 15, 20, 4, 58, 61, 4}, {25, 16, 18, 18, 8, 42, 73, 3}, {28, 14, 20, 18, 13, 30, 76, 6}, {20, 18, 17, 17, 19, 4, 69, 40}, {24, 18, 17, 16, 19, 3, 55, 51}, {30, 14, 18, 15, 17, 5, 39, 63, {31, 14, 18, 16, 16, 8, 28, 70}, {22, 15, 18, 16, 16, 20, 2, 92}, {26, 14, 18, 15, 15, 19, 0, 91}, {29, 15, 18, 16, 14, 19, 3, 88}, {29, 16, 17, 17, 15, 17, 7, 84}},
[84]
Если MipSizeId=1 и modeId=1, mWeight[x][y]=
{{20, 35, 18, 20, 58, 35, 18, 20}, {20, 75, 26, 19, 32, 31, 20, 20}, {21, 6, 93, 22, 20, 25, 21, 20}, {24, 25, 0, 99, 18, 21, 21, 18}, {20, 28, 20, 20, 8, 78, 30, 19}, {20, 67, 22, 20, 10, 59, 27, 19}, {22, 7, 93, 18, 15, 30, 25, 20}, {26, 25, 1, 97, 20, 18, 22, 18}, {20, 28, 19, 20, 15, 14, 81, 25}, {20, 59, 20, 20, 12, 22, 65, 23}, {23, 7, 93, 16, 14, 24, 34, 22}, {30, 24, 3, 95, 19, 20, 20, 18}, {20, 29, 20, 20, 14, 23, 8, 90}, {20, 51, 19, 21, 14, 19, 15, 77}, {24, 7, 88, 16, 14, 20, 21, 43}, {33, 22, 6, 91, 19, 18, 20, 21}},
[85]
Если MipSizeId=1 и modeId=2, mWeight[x][y]=
{{10, 19, 10, 12, 81, 14, 10, 11}, {10, 26, 15, 10, 79, 6, 12, 11}, {11, 16, 31, 12, 69, 2, 14, 10}, {11, 13, 8, 44, 54, 3, 14, 10}, {11, 11, 12, 11, 1, 83, 13, 9}, {11, 12, 12, 12, 11, 83, 4, 12}, {11, 15, 11, 13, 24, 77, 0, 12}, {11, 14, 13, 16, 38, 63, 2, 12}, {11, 12, 11, 11, 14, 2, 82, 12}, {11, 13, 12, 12, 10, 14, 79, 5}, {11, 12, 12, 13, 6, 29, 70, 3}, {11, 12, 11, 16, 3, 45, 55, 4}, {11, 12, 11, 12, 10, 12, 1, 84}, {11, 13, 11, 12, 12, 8, 13, 76}, {11, 12, 12, 13, 14, 3, 29, 64}, {11, 13, 10, 17, 15, 0, 45, 49}},
[86]
Если MipSizeId=1 и modeId=3, mWeight[x][y]=
{{21, 50, 24, 20, 19, 38, 22, 24}, {22, 53, 41, 23, 14, 22, 27, 27}, {22, 22, 66, 37, 19, 17, 25, 28}, {27, 19, 12, 92, 19, 18, 21, 28}, {21, 51, 25, 20, 19, 23, 48, 27}, {21, 41, 48, 24, 17, 11, 36, 37}, {24, 17, 58, 43, 14, 17, 23, 39}, {39, 22, 4, 91, 15, 20, 16, 33}, {20, 44, 27, 21, 16, 20, 35, 54}, {22, 31, 53, 24, 13, 19, 21, 55}, {30, 14, 47, 50, 10, 20, 16, 48}, {57, 28, 0, 82, 19, 14, 18, 30}, {22, 34, 30, 21, 15, 22, 21, 70, {24, 22, 52, 26, 12, 24, 16, 61}, {38, 17, 33, 56, 14, 18, 16, 49}, {66, 32, 0, 75, 26, 4, 22, 30}},
[87]
Если MipSizeId=1 и modeId=4, mWeight[x][y]=
{{18, 32, 15, 16, 60, 34, 10, 19}, {18, 68, 28, 13, 31, 37, 11, , 17}, {19, 8, 73, 23, 15, 30, 22, 14}, {19, 18, 0, 85, 11, 17, 33, 15}, {18, 18, 19, 17, 9, 56, 56, 9}, {19, 19, 20, 16, 13, 30, 73, 12}, {19, 20, 20, 18, 13, 13, 71, 28}, {18, 18, 16, 26, 12, 8, 54, 47}, {17, 16, 17, 17, 17, 10, 54, 51}, {16, 17, 16, 18, 16, 15, 28, 73}, {16, 18, 15, 18, 16, 20, 14, 83}, {15, 19, 17, 18, 15, 21, 14, 82}, {16, 17, 16, 18, 17, 18, 7, 90}, {15, 18, 16, 19, 16, 17, 11, 87}, {14, 18, 16, 20, 17, 15, 15, 84}, {13, 19, 16, 22, 17, 15, 18, 81}},
[88]
Если MipSizeId=1 и modeId=5, mWeight[x][y]=
{{11, 6, 13, 11, 75, 6, 12, 11}, {12, 3, 8, 13, 48, 2, 13, 10}, {12, 45, 1, 13, 19, 9, 12, 10}, {12, 42, 37, 8, 10, 12, 11, 10}, {11, 11, 10, 12, 18, 74, 6, 11}, {11, 12, 10, 12, 53, 47, 2, 12}, {12, 6, 10, 12, 71, 16, 9, 11}, {12, 15, 6, 13, 53, 5, 13, 10}, {12, 12, 10, 11, 9, 17, 77, 5}, {12, 11, 9, 12, 3, 51, 50, 2}, {12, 11, 9, 12, 11, 72, 18, 8}, {12, 11, 9, 12, 36, 57, 7, 10}, {12, 10, 10, 11, 10, 10, 16, 71}, {13, 11, 10, 11, 14, 0, 56, 39}, {13, 11, 9, 12, 12, 8, 76, 13}, {13, 12, 9, 12, 8, 35, 57, 7}},
[89]
Если MipSizeId=1 и modeId=6, mWeight[x][y]=
{{23, 21, 23, 23, 101, 30, 19, 25}, {24, 13, 23, 24, 101, 29, 19, 25}, {24, 24, 14, 23, 101, 29, 18, 24}, {24, 23, 25, 17, 98, 29, 18, 24}, {23, 24, 23, 23, 0, 97, 36, 17}, {24, 25, 24, 22, 1, 97, 35, 17}, {24, 22, 25, 23, 1, 96, 36, 17}, {24, 22, 23, 24, 3, 94, 36, 17}, {24, 23, 23, 22, 31, 0, 93, 34}, {24, 23, 24, 23, 31, 2, 93, 33}, {24, 22, 24, 23, 31, 1, 92, 34}, {24, 22, 23, 23, 30, 3, 90, 35}, {23, 24, 23, 23, 19, 31, 2, 102}, {23, 23, 23, 24, 19, 30, 3, 101}, {23, 23, 24, 24, 19, 30, 3, 101}, {23, 23, 23, 24, 19, 31, 4, 100}}
[90]
Если MipSizeId=1 и modeId=7, mWeight[x][y]=
{{10, 5, 10, 10, 56, 4, 11, 9}, {11, 22, 6, 10, 13, 9, 10, 10}, {11, 67, 22, 6, 10, 10, 10, 10}, {11, 6, 68, 18, 11, 9, 11, 9}, {10, 10, 10, 10, 40, 53, 3, 11}, {11, 6, 10, 9, 61, 9, 10, 9}, {11, 17, 6, 10, 23, 7, 9, 10}, {11, 56, 15, 8, 10, 11, 9, 10}, {10, 9, 11, 9, 4, 42, 54, 3}, {11, 10, 11, 9, 22, 67, 8, 8}, {10, 7, 11, 9, 57, 23, 7, 10}, {11, 11, 10, 10, 36, 8, 10, 9}, {10, 10, 11, 9, 13, 0, 41, 50}, {11, 9, 11, 9, 8, 24, 64, 8}, {10, 10, 11, 9, 15, 63, 18, 10}, {11, 10, 11, 10, 44, 33, 10, 11}},
[91]
Если MipSizeId=1 и modeId=8, mWeight[x][y]=
{{21, 44, 37, 20, 24, 68, 10, 23}, {21, 1, 55, 39, 14, 39, 41, 18}, {21, 25, 0, 68, 18, 18, 42, 39}, {22, 24, 19, 36, 19, 14, 25, 72}, {21, 11, 28, 30, 18, 23, 80, 19}, {22, 25, 8, 38, 21, 13, 45, 62}, {22, 22, 18, 25, 19, 18, 16, 90}, {23, 21, 21, 24, 19, 21, 12, 91}, {21, 22, 15, 28, 21, 20, 23, 82}, {22, 21, 19, 24, 20, 22, 9, 95}, {23, 21, 21, 22, 20, 21, 13, 92}, {23, 22, 21, 22, 19, 21, 15, 90}, {22, 21, 20, 22, 21, 22, 15, 90}, {22, 21, 21, 22, 20, 21, 16, 89}, {23, 21, 20, 23, 19, 22, 15, 89}, {24, 21, 20, 23, 19, 23, 15, 87}},
[92]
Если MipSizeId=1 и modeId=9, mWeight[x][y]=
{{8, 15, 18, 15, 51, 68, 39, 23}, {7, 4, 10, 20, 22, 76, 51, 27}, {7, 16, 1, 17, 13, 78, 55, 29}, {7, 13, 24, 0, 12, 76, 55, 27}, {7, 8, 10, 14, 10, 66, 72, 25}, {6, 12, 8, 14, 12, 59, 75, 27}, {5, 13, 9, 12, 13, 58, 75, 28}, {4, 14, 8, 13, 14, 60, 71, 29}, {7, 10, 11, 12, 12, 42, 79, 41}, {4, 14, 8, 14, 13, 45, 79, 39}, {3, 14, 8, 14, 12, 44, 81, 38}, {2, 15, 10, 14, 13, 45, 78, 36}, {7, 11, 12, 13, 13, 24, 73, 62}, {4, 15, 8, 13, 15, 28, 89, 43}, {1, 14, 10, 14, 16, 29, 85, 45}, {1, 16, 9, 15, 17, 33, 78, 46}},
[93]
Если MipSizeId=2 и modeId=0, mWeight[x][y]=
{{46, 7, 14, 92, 23, 20, 10}, {32, 22, 17, 52, 50, 25, 12}, {1, 36, 21, 27, 61, 30, 14}, {0, 30, 27, 17, 61, 32, 17}, {13, 12, 37, 13, 59, 35, 18}, {14, 13, 38, 11, 56, 38, 18}, {10, 27, 29, 9, 55, 39, 17}, {10, 27, 32, 7, 53, 38, 17}, {8, 17, 14, 15, 92, 27, 13}, {2, 16, 18, 8, 84, 38, 15}, {4, 12, 22, 7, 76, 44, 17}, {8, 8, 25, 7, 72, 46, 18}, {8, 8, 26, 8, 69, 46, 19}, {10, 11, 23, 9, 68, 47, 17}, {10, 11, 23, 8, 67, 47, 18}, {10, 12, 26, 9, 64, 43, 20}, {7, 10, 16, 11, 86, 37, 17}, {7, 9, 18, 9, 73, 47, 20}, {8, 8, 21, 9, 67, 50, 22}, {7, 9, 22, 9, 66, 50, 22}, {7, 9, 23, 8, 67, 48, 22}, {8, 9, 24, 8, 67, 48, 21}, {8, 9, 26, 8, 66, 49, 20}, {9, 8, 29, 8, 64, 48, 20}, {8, 8, 16, 8, 69, 56, 19}, {6, 9, 17, 8, 64, 55, 25}, {7, 8, 19, 8, 62, 53, 27}, {7, 8, 21, 8, 61, 52, 28}, {7, 9, 22, 7, 62, 52, 25}, {7, 9, 23, 6, 62, 53, 24}, {8, 7, 26, 6, 62, 52, 23}, {8, 8, 28, 6, 61, 51, 22}, {7, 9, 14, 7, 49, 74, 23}, {7, 7, 17, 7, 51, 65, 30}, {7, 8, 18, 6, 53, 57, 33}, {7, 8, 20, 5, 56, 57, 31}, {7, 8, 22, 6, 56, 57, 29}, {8, 8, 23, 5, 57, 57, 27}, {8, 7, 26, 5, 57, 56, 26}, {8, 6, 27, 5, 57, 55, 25}, {7, 8, 14, 6, 36, 65, 47}, {7, 7, 18, 5, 44, 59, 44}, {7, 7, 19, 5, 47, 59, 40}, {7, 7, 20, 5, 50, 59, 35}, {8, 6, 22, 5, 51, 58, 33}, {8, 5, 25, 5, 51, 59, 30}, {7, 6, 26, 5, 51, 59, 29}, {9, 6, 27, 5, 50, 59, 28}, {7, 8, 14, 6, 27, 44, 76}, {6, 8, 16, 5, 38, 57, 53}, {6, 7, 19, 4, 44, 63, 40}, {7, 6, 21, 4, 47, 62, 37}, {8, 6, 22, 4, 47, 62, 35}, {8, 6, 24, 5, 46, 64, 32}, {8, 6, 26, 5, 46, 63, 31}, {8, 6, 28, 6, 45, 62, 30}, {8, 7, 15, 6, 22, 43, 81}, {6, 8, 16, 5, 32, 64, 51}, {8, 8, 19, 5, 37, 66, 41}, {9, 5, 21, 4, 41, 67, 36}, {8, 7, 22, 5, 42, 65, 35}, {8, 6, 25, 6, 42, 64, 34}, {9, 5, 27, 7, 43, 63, 32}, {9, 5, 29, 8, 40, 60, 34}},
[94]
Если MipSizeId=2 и modeId=1, mWeight[x][y]=
{{50, 47, 46, 61, 50, 45, 46}, {59, 49, 47, 57, 51, 45, 46}, {64, 52, 48, 55, 51, 46, 46}, {58, 61, 50, 53, 51, 46, 46}, {52, 66, 53, 52, 51, 46, 46}, {48, 62, 62, 50, 51, 46, 46}, {47, 49, 76, 49, 51, 46, 46}, {45, 33, 92, 49, 52, 46, 46}, {50, 48, 46, 57, 63, 45, 46}, {55, 52, 48, 55, 63, 45, 46}, {57, 56, 50, 53, 63, 45, 46}, {55, 60, 53, 51, 63, 46, 46}, {51, 60, 59, 51, 63, 46, 46}, {48, 55, 69, 49, 63, 46, 46}, {46, 42, 84, 48, 62, 46, 46}, {43, 28, 99, 48, 61, 47, 46}, {49, 49, 47, 48, 73, 47, 46}, {52, 52, 49, 47, 73, 48, 46}, {52, 55, 53, 47, 72, 48, 46}, {51, 56, 58, 46, 72, 48, 46}, {48, 54, 65, 46, 71, 48, 46}, {46, 47, 76, 45, 71, 49, 46}, {44, 34, 91, 44, 70, 49, 46}, {41, 23, 04, 45, 68, 50, 46}, {48, 48, 48, 44, 68, 59, 45}, {50, 51, 51, 43, 69, 58, 45}, {49, 52, 56, 43, 68, 58, 45}, {48, 52, 62, 42, 68, 58, 45}, {45, 48, 71, 42, 68, 58, 45}, {43, 38, 84, 41, 68, 59, 45}, {41, 27, 98, 41, 67, 59, 45}, {38, 19, 109, 42, 66, 59, 45}, {47, 47, 49, 44, 52, 74, 45}, {48, 48, 53, 43, 54, 74, 45}, {47, 48, 60, 43, 55, 73, 45}, {45, 46, 68, 43, 55, 73, 45}, {43, 40, 78, 42, 56, 72, 45}, {41, 30, 91, 42, 57, 72, 45}, {38, 20, 105, 41, 57, 71, 45}, {36, 13, 114, 41, 57, 70, 46}, {46, 47, 50, 45, 43, 77, 51}, {46, 46, 56, 44, 44, 78, 51}, {45, 43, 64, 43, 45, 77, 51}, {43, 39, 73, 43, 45, 77, 51}, {40, 31, 85, 42, 46, 77, 51}, {38, 22, 98, 42, 46, 77, 51}, {35, 12, 111, 42, 47, 76, 51}, {33, 7, 19, 41, 48, 75, 52}, {46, 46, 51, 45, 44, 57, 71}, {45, 43, 59, 44, 44, 58, 70}, {43, 37, 68, 43, 45, 58, 70}, {40, 31, 80, 43, 45, 58, 70}, {38, 22, 92, 43, 46, 58, 70}, {36, 13, 105, 43, 46, 58, 70}, {33, 5, 117, 42, 47, 58, 70}, {31, 2, 123, 42, 48, 57, 71}, {45, 41, 55, 45, 51, 24, 96}, {44, 36, 64, 44, 52, 23, 97}, {42, 29, 75, 43, 53, 23, 97}, {39, 22, 86, 43, 52, 24, 97}, {37, 14, 98, 43, 53, 24, 97}, {34, 7, 109, 42, 53, 25, 97}, {32, 1, 118, 41, 53, 25, 97}, {30, 0, 123, 41, 53, 26, 96}},
[95]
Если MipSizeId=2 и modeId=2, mWeight[x][y]=
{{20, 16, 16, 76, 9, 8, 16}, {37, 15, 16, 71, 11, 17, 16}, {65, 13, 17, 67, 12, 17, 16}, {63, 30, 15, 63, 14, 17, 16}, {30, 62, 13, 57, 16, 17, 16}, {14, 62, 28, 52, 18, 16, 16}, {21, 22, 64, 46, 21, 15, 16}, {26, 0, 81, 40, 24, 15, 17}, {23, 16, 16, 69, 48, 8, 18}, {28, 18, 16, 66, 50, 8, 17}, {36, 17, 17, 61, 54, 7, 18}, {40, 20, 17, 56, 57, 7, 18}, {34, 29, 18, 50, 61, 6, 18}, {27, 34, 22, 44, 64, 5, 18}, {25, 22, 37, 37, 67, 5, 18}, {26, 9, 51, 31, 68, 6, 18}, {18, 17, 17, 17, 87, 9, 17}, {19, 17, 17, 15, 88, 9, 17}, {20, 18, 17, 14, 88, 10, 17}, {22, 17, 18, 12, 87, 12, 17}, {23, 18, 19, 11, 85, 15, 16}, {23, 20, 19, 11, 83, 18, 16}, {22, 19, 22, 10, 79, 22, 16}, {22, 16, 28, 11, 74, 26, 15}, {16, 17, 16, 7, 58, 50, 10}, {17, 17, 16, 8, 53, 55, 10}, {18, 17, 17, 10, 47, 60, 9}, {18, 16, 17, 11, 43, 64, 9}, {19, 16, 17, 12, 38, 68, 9}, {20, 17, 18, 13, 35, 72, 9}, {20, 17, 19, 14, 31, 74, 9}, {20, 16, 21, 13, 29, 74, 11}, {17, 16, 16, 16, 15, 86, 11}, {18, 15, 17, 16, 13, 86, 13}, {18, 16, 16, 16, 13, 84, 15}, {18, 15, 17, 16, 12, 82, 18}, {19, 16, 17, 16, 12, 79, 21}, {18, 16, 17, 16, 12, 76, 24}, {18, 16, 17, 15, 12, 73, 28}, {19, 16, 19, 15, 14, 68, 31}, {17, 17, 16, 17, 10, 59, 43}, {17, 16, 16, 17, 10, 54, 47}, {18, 16, 16, 17, 11, 48, 52}, {18, 16, 16, 16, 12, 44, 56}, {17, 17, 16, 16, 13, 40, 59}, {17, 17, 16, 16, 13, 37, 62}, {17, 17, 17, 15, 14, 34, 65}, {18, 16, 18, 16, 14, 32, 66}, {17, 16, 16, 15, 16, 17, 79}, {17, 16, 16, 16, 16, 15, 81}, {18, 16, 16, 16, 16, 14, 82}, {18, 16, 16, 15, 16, 13, 83}, {17, 18, 16, 15, 16, 13, 83}, {17, 17, 17, 15, 16, 13, 84}, {17, 17, 17, 15, 16, 13, 84}, {17, 16, 18, 15, 16, 13, 83}, {16, 16, 16, 16, 17, 3, 92}, {17, 16, 16, 15, 17, 4, 91}, {18, 17, 17, 14, 18, 4, 90}, {18, 17, 16, 14, 18, 4, 91}, {17, 18, 16, 15, 18, 4, 91}, {17, 18, 17, 15, 18, 4, 90}, {17, 17, 18, 14, 18, 4, 90}, {18, 16, 19, 15, 18, 5, 89}},
[96]
Если MipSizeId=2 и modeId=3, mWeight[x][y]=
{{13, 9, 10, 43, 11, 12, 9}, {43, 2, 11, 22, 15, 12, 10}, {73, 2, 11, 16, 16, 12, 9}, {52, 38, 5, 13, 16, 12, 10}, {11, 71, 6, 12, 14, 13, 10}, {3, 50, 35, 10, 14, 13, 9}, {11, 12, 68, 11, 13, 13, 10}, {13, 3, 74, 12, 11, 15, 10}, {20, 9, 10, 51, 29, 11, 10}, {41, 5, 10, 37, 26, 13, 10}, {58, 9, 10, 23, 27, 14, 9}, {41, 36, 6, 15, 24, 16, 10}, {14, 57, 11, 11, 21, 18, 9}, {7, 39, 37, 9, 18, 19, 9}, {12, 9, 63, 10, 15, 20, 9}, {15, 2, 68, 11, 12, 21, 10}, {16, 11, 11, 19, 60, 11, 11}, {27, 11, 11, 20, 50, 16, 10}, {35, 15, 11, 17, 42, 20, 10}, {29, 29, 11, 12, 35, 23, 10}, {17, 37, 18, 8, 29, 26, 9}, {13, 26, 35, 6, 24, 27, 9}, {15, 8, 53, 7, 19, 27, 10}, {16, 4, 57, 9, 14, 28, 11}, {12, 11, 11, 5, 51, 36, 8}, {15, 13, 12, 8, 45, 36, 9}, {19, 16, 14, 9, 38, 38, 9}, {19, 21, 16, 8, 32, 39, 10}, {18, 22, 21, 7, 27, 39, 10}, {18, 16, 31, 7, 22, 39, 11}, {18, 9, 41, 6, 18, 39, 11}, {19, 7, 44, 7, 15, 37, 13}, {11, 12, 11, 9, 18, 64, 10}, {11, 12, 13, 10, 18, 61, 11}, {13, 13, 15, 10, 17, 58, 12}, {15, 14, 17, 10, 16, 56, 13}, {17, 14, 20, 9, 14, 55, 13}, {18, 11, 26, 9, 13, 52, 14}, {19, 9, 31, 8, 11, 50, 15}, {19, 9, 33, 8, 10, 46, 17}, {10, 11, 12, 11, 4, 59, 28}, {11, 10, 13, 11, 4, 60, 26}, {12, 10, 15, 11, 5, 59, 25}, {14, 10, 16, 11, 5, 58, 24}, {15, 10, 18, 11, 4, 57, 24}, {17, 9, 21, 11, 4, 56, 24}, {19, 9, 23, 10, 4, 53, 24}, {19, 9, 26, 10, 5, 49, 25}, {10, 10, 12, 11, 5, 27, 60}, {11, 8, 14, 11, 3, 34, 54}, {13, 8, 15, 12, 2, 38, 50}, {13, 8, 15, 13, 1, 41, 47}, {15, 8, 17, 13, 0, 42, 45}, {16, 8, 18, 13, 0, 44, 43}, {18, 8, 19, 12, 0, 44, 41}, {19, 9, 21, 12, 1, 43, 39}, {11, 8, 12, 11, 6, 9, 77}, {13, 7, 13, 12, 4, 16, 72}, {15, 6, 14, 13, 2, 21, 67}, {15, 6, 14, 13, 1, 25, 63}, {15, 7, 15, 14, 0, 27, 61}, {16, 8, 15, 14, 0, 29, 58}, {17, 8, 17, 14, 0, 29, 56}, {18, 8, 18, 14, 1, 30, 53}},
[97]
Если MipSizeId=2 и modeId=4, mWeight[x][y]=
{{15, 13, 13, 55, 12, 13, 13}, {21, 13, 13, 34, 14, 13, 13}, {39, 12, 13, 22, 14, 13, 13}, {55, 18, 12, 18, 14, 14, 13}, {48, 37, 11, 16, 14, 14, 13}, {23, 62, 13, 14, 14, 13, 13}, {11, 53, 35, 14, 14, 13, 12}, {15, 13, 72, 14, 14, 13, 12}, {16, 13, 13, 63, 27, 12, 13}, {17, 13, 13, 58, 19, 13, 13}, {22, 13, 13, 43, 18, 13, 13}, {33, 14, 12, 31, 17, 14, 13}, {45, 18, 12, 24, 16, 14, 12}, {44, 32, 12, 19, 15, 14, 13}, {29, 49, 15, 17, 14, 14, 12}, {18, 44, 33, 16, 15, 13, 12}, {15, 13, 13, 32, 60, 10, 13}, {16, 13, 13, 45, 44, 12, 13}, {17, 14, 13, 49, 32, 13, 12}, {21, 14, 13, 44, 25, 14, 12}, {30, 14, 13, 37, 21, 14, 12}, {39, 16, 13, 30, 18, 14, 12}, {39, 27, 13, 24, 17, 14, 12}, {31, 38, 16, 21, 17, 13, 12}, {13, 13, 13, 13, 64, 27, 11}, {14, 13, 13, 23, 61, 19, 12}, {15, 14, 13, 34, 51, 16, 12}, {17, 14, 13, 40, 42, 15, 12}, {20, 14, 13, 40, 34, 14, 12}, {27, 14, 13, 37, 29, 14, 12}, {33, 16, 13, 32, 25, 13, 12}, {33, 24, 14, 27, 23, 13, 12}, {13, 13, 13, 13, 33, 61, 9}, {13, 13, 13, 15, 47, 44, 10}, {14, 13, 13, 20, 54, 31, 11}, {15, 13, 13, 27, 53, 23, 11}, {16, 14, 13, 32, 49, 18, 12}, {19, 14, 13, 34, 43, 15, 12}, {24, 14, 13, 34, 37, 14, 12}, {28, 17, 13, 31, 32, 14, 12}, {13, 14, 13, 15, 10, 71, 20}, {13, 13, 13, 15, 22, 66, 13}, {14, 13, 13, 15, 37, 53, 11}, {14, 13, 13, 18, 47, 40, 11}, {14, 13, 13, 23, 52, 29, 11}, {15, 14, 13, 27, 51, 23, 11}, {18, 14, 13, 30, 47, 19, 11}, {22, 15, 13, 30, 42, 17, 12}, {13, 13, 13, 14, 12, 34, 57}, {13, 13, 13, 15, 14, 50, 38}, {13, 13, 13, 15, 21, 58, 23}, {14, 13, 13, 16, 32, 54, 16}, {13, 13, 13, 18, 41, 45, 13}, {13, 14, 13, 21, 47, 36, 12}, {14, 14, 13, 24, 49, 28, 12}, {17, 14, 13, 26, 46, 24, 12}, {13, 13, 13, 13, 19, 0, 85}, {13, 13, 13, 13, 20, 12, 72}, {13, 13, 13, 15, 20, 30, 53}, {13, 13, 13, 16, 23, 44, 35}, {13, 14, 12, 17, 29, 47, 24}, {13, 14, 13, 18, 36, 44, 18}, {13, 14, 13, 20, 41, 38, 16}, {15, 14, 14, 22, 42, 33, 15}},
[98]
Если MipSizeId=2 и modeId=5, mWeight[x][y]=
{{24, 9, 10, 52, 13, 10, 12}, {53, 9, 10, 25, 26, 6, 13}, {48, 30, 9, 11, 30, 7, 13}, {15, 59, 12, 6, 25, 13, 11}, {5, 48, 34, 7, 18, 19, 10}, {10, 15, 62, 8, 12, 20, 13}, {13, 2, 70, 8, 9, 19, 19}, {13, 3, 62, 9, 6, 16, 30}, {25, 14, 10, 40, 51, 0, 14}, {20, 28, 11, 16, 55, 5, 13}, {8, 38, 18, 6, 41, 20, 11}, {5, 28, 34, 6, 23, 31, 12}, {9, 12, 48, 8, 12, 33, 18}, {12, 2, 53, 9, 6, 30, 28}, {14, 1, 50, 9, 4, 23, 40}, {14, 5, 42, 8, 4, 15, 51}, {8, 20, 12, 5, 72, 12, 12}, {2, 24, 19, 5, 46, 35, 9}, {5, 16, 29, 9, 21, 48, 13}, {9, 6, 36, 10, 9, 45, 25}, {12, 3, 37, 11, 5, 36, 38}, {13, 4, 34, 11, 4, 25, 51}, {13, 6, 29, 10, 4, 16, 61}, {13, 9, 26, 10, 6, 11, 66}, {6, 14, 15, 6, 31, 60, 6}, {7, 10, 22, 11, 12, 64, 15}, {10, 6, 26, 13, 6, 50, 32}, {11, 4, 27, 12, 5, 33, 49}, {12, 5, 25, 11, 6, 20, 62}, {12, 7, 22, 11, 7, 13, 69}, {12, 9, 19, 11, 7, 8, 74}, {12, 10, 19, 10, 8, 7, 74}, {10, 9, 16, 12, 6, 67, 20}, {11, 6, 20, 13, 5, 46, 41}, {11, 5, 21, 12, 7, 26, 59}, {11, 7, 19, 12, 9, 14, 70}, {11, 8, 18, 11, 10, 8, 75}, {11, 9, 16, 11, 10, 5, 78}, {12, 10, 15, 11, 10, 4, 80}, {11, 10, 15, 10, 10, 4, 78}, {11, 9, 15, 12, 8, 34, 54}, {11, 7, 17, 11, 10, 16, 69}, {11, 7, 17, 11, 11, 7, 76}, {11, 8, 16, 11, 11, 4, 80}, {10, 10, 14, 11, 11, 3, 81}, {11, 10, 13, 11, 12, 2, 82}, {11, 10, 13, 11, 12, 2, 82}, {11, 11, 13, 10, 12, 3, 80}, {11, 9, 14, 11, 11, 8, 77}, {11, 8, 14, 11, 12, 3, 81}, {11, 9, 14, 11, 12, 1, 83}, {10, 10, 13, 11, 12, 2, 83}, {10, 11, 12, 11, 12, 2, 82}, {10, 11, 12, 11, 12, 3, 82}, {11, 11, 11, 11, 12, 3, 81}, {11, 11, 11, 11, 13, 5, 79}, {11, 10, 13, 11, 13, 2, 82}, {11, 9, 13, 11, 13, 1, 83}, {11, 10, 12, 11, 13, 2, 82}, {10, 11, 12, 11, 12, 3, 81}, {10, 11, 12, 11, 12, 4, 80}, {10, 11, 11, 11, 12, 5, 80}, {11, 11, 11, 11, 13, 5, 79}, {11, 11, 11, 11, 12, 6, 77}}.
[99]
f
После получения указанных выше параметров (т. е. mWeight, sW и O) из таблиц отображения указанные выше параметры и набор входных значений предсказания вводят в уравнения (1) и (2) для получения значений предсказания отсчетов в конкретных положениях в текущем блоке.
[100]
Чтобы получить матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, в некоторых вариантах реализации матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения следующим образом. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[101]
Другими словами, в соответствии с размером текущего блока из таблицы отображения получают матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, соответствующие размеру текущего блока. Например, когда размер текущего блока составляет 4x4, MipSizeId=0; когда размер текущего блока составляет 4x8, 8x4 или 8x8, MipSizeId=1; и когда размер текущего блока больше чем 8x8, MipSizeId=2. В соответствии со значением MipSizeId, матрица MIP текущего блока и параметр битового сдвига вправо текущего блока, соответствующие размеру текущего блока, могут быть найдены из таблицы отображения.
[102]
В блоке S507 фильтруют значения предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке.
[103]
После определения значений предсказания отсчетов в конкретных положениях в блоке S506 значения предсказания отсчетов в конкретных положениях могут быть отфильтрованы, чтобы получить значения предсказания всех отсчетов в текущем блоке.
[104]
Чтобы получить значения предсказания всех отсчетов в текущем блоке, в некоторых вариантах реализации операции в блоке S507 могут включать следующее. Интерполяционную фильтрацию выполняют в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[105]
Здесь, при выполнении интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях, могут быть получены значения предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях, и, таким образом, могут быть получены значения предсказания всех отсчетов в текущем блоке.
[106]
Другими словами, по сравнению с уравнениями (1)~(5) в традиционном способе предсказания, в способе предсказания, выполняемом кодером на основе технологии MIP, предусмотренной в данном документе, вычисление p[0] в уравнении (7) является обратным относительно уравнения (3). Таким образом, все значения p[x] в уравнении (3) и все p[x] значения в уравнении (7) могут быть в однородной форме, то есть pTemp[0] вычитается как в уравнении (3), так и в уравнении (7). Усредненная компенсация в уравнении (1) напрямую использует pTemp[0], так что коэффициент pTemp[0] в уравнении вычисления predMip[x][y] (то есть уравнении (1)) унифицируется следующим образом:
(9)
[107]
Коэффициент в традиционном способе предсказания выглядит следующим образом:
когда y=0:
(10)
в других случаях:
(11)
[108]
Учитывая природу фильтра в MIP, значение коэффициента, вероятно, будет в диапазоне -1~1. Следовательно, при унификации коэффициента до  значение  имеет склонность к тому, чтобы быть положительным значением, а общий диапазон изменения имеет склонность к тому, чтобы быть меньше.
[109]
f
f
f
f
На основании этого значения первого столбца параметров матрицы MIP mWeight, полученные посредством обучения, становятся значениями, полученными путем изменения порядка значений первого столбца параметров исходной матрицы MIP mWeight на обратный. Таким образом, диапазон значений параметров во всей матрице MIP mWeight будет уменьшен по сравнению с диапазоном значений исходной матрицы MIP mWeight, что способствует более высокой точности представления, тем самым улучшая точность представления.
[110]
f
В исходной матрице MIP mWeight, что касается изменений в диапазоне значений первого столбца данных, который был изменен на обратный, в качестве примера, первый столбец каждой из 28 матриц исходного числа с плавающей запятой, показанных на таблице 1, из которых MipSizeId составляет 0 или 1, меняет порядок на обратный, и полученный таким образом диапазон значений останется неизменным или уменьшится. Как показано в Таблице 2 ниже, диапазоны значений 11 из 28 матриц уменьшаются, и диапазоны значений оставшихся 17 матриц остаются неизменными. Среди 11 матриц с уменьшенным диапазоном значений есть 4 матрицы, которые могут улучшить точность представления известных в настоящее время показателей веса, полученных посредством обучения.
Таблица 2
[111]
Как можно увидеть, на таблице 2 показан ID матрицы из матриц с уменьшенным диапазоном значений после изменения порядка на обратный и из матриц с уменьшенным диапазоном значений и увеличенным значением sW после изменения порядка на обратный, где MipSizeId=0 или 1.
[112]
f
f’
f’’
f
f
Таблицы 3~5 ниже являются конкретными примерами. Каждая таблица разделена на две части (левую часть и правую часть). В каждой из таблицы 3 и таблицы 5 левая часть представляет mWeight, а правая часть представляет mWeight. В таблице 4 левая часть представляет mWeight, а правая часть представляет mWeight. В каждой из таблицы 3 и таблицы 5 первый столбец показывает значения mWeight[x][0], и первый столбец правой части показывает значения обратного mWeight[x][0].
[113]
f
f
В таблицах 3 и 4 показаны изменения в одном и том же режиме MIP после принятия технических решений вариантов реализации. Диапазон значений mWeight[x][0] становится меньше после изменения порядка на обратный, и значение sW изменяется с 5 на 6. Каждое значение mWeight[x][y], полученное в соответствии с уравнением (6), не превышает 127, что попадает в действительный диапазон значений, представленный 7 битами. В таблице 5 показан пример, в котором диапазон значений mWeight[x][0] остается неизменным после изменения порядка на обратный.
Таблица 3
[114]
В таблице 3 показан пример, в котором порядок первого столбца исходной матрицы числа с плавающей запятой, из которой MipSizeId=0 и modeId=3, изменен на обратный (левая часть показывает исходные значения, а правая часть показывает обратные значения).
Таблица 4
[115]
В таблице 4 показана матрица, в которой MipSizeId=0 и modeId=3. Принимая технические решения, представленные в данном документе, биты сдвига вправо равны sW=6 без выхода за пределы диапазона значений, представленного 7 битами.
Таблица 5
[116]
В таблице 5 показано изменение порядка первого столбца исходной матрицы числа с плавающей запятой, из которой MipSizeId=0 и modeId=16, на обратный (в левой части показаны исходные значения, а в правой части показаны обратные значения).
[117]
Как видно из примеров таблиц 3~5 выше, способ определения значения предсказания, представленный в данном документе, может уменьшить диапазон значений матрицы числа с плавающей запятой, полученной посредством обучения MIP, что позволяет повысить точность обработки с фиксированной запятой, тем самым улучшая точность предсказания и улучшая эффективность кодирования.
[118]
В вариантах реализации предоставлен способ определения значения предсказания. Способ применим для кодера. Согласно вариантам реализации в данном документе вычисляют первую константу, разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания набора входных значений предсказания, и набор входных значений предсказания используют для вычисления значений предсказания текущего блока. Таким образом, можно эффективно уменьшить диапазон динамических значений набора входных значений предсказания в предсказании в режиме MIP. Следовательно, по сравнению с предшествующим уровнем техники, при том же количестве битов, используемых для представления набора входных значений предсказания и матрицы MIP, данные в динамическом диапазоне могут быть представлены более точно благодаря применению технических решений вариантов реализации, что способствует более высокой точности во время вычисления значения предсказания в режиме MIP, тем самым улучшая эффективность кодирования.
[119]
Чтобы улучшить точность предсказания режима MIP и, таким образом, улучшить эффективность кодирования, в вариантах реализации предоставлен способ определения значения предсказания. На фиг. 6 показана схематическая блок-схема способа определения значения предсказания согласно другим вариантам реализации. Как проиллюстрировано на фиг. 6, способ применим для декодера. Способ включает следующее.
[120]
В блоке S601 анализируют битовый поток для получения размера текущего блока и режима кодирования текущего блока.
[121]
При приеме битового потока декодер сначала анализирует битовый поток для получения размера текущего блока и режима кодирования текущего блока. Режим кодирования может представлять собой один из традиционных режимов внутреннего предсказания или может представлять собой один из режимов MIP. Здесь режим кодирования в основном относится к одному из режимов MIP.
[122]
В блоке S602, когда режим кодирования текущего блока представляет собой режим MIP, восстановленные значения соседних отсчетов текущего блока получают и восстановленные значения соседних отсчетов фильтруют для получения набора опорных значений текущего блока.
[123]
Например, размер текущего блока может составлять 4x4, 4x8, 8x4 или 8x8. Когда размер текущего блока составляет 4x4, режим кодирования является одним из режимов кодирования, у которого M=35. Когда размер текущего блока составляет 4x8, 8x4 или 8x8, режим кодирования является одним из режимов кодирования, у которого M=19. Когда текущий блок имеет другие размеры, режим кодирования является одним из режимов кодирования, у которого M=11.
[124]
Другими словами, когда режим кодирования текущего блока является режимом MIP, декодер сначала получает восстановленные значения соседних отсчетов текущего блока, где восстановленные значения соседних отсчетов текущего блока включают восстановленные значения отсчетов в верхней части текущего блока и восстановленные значения отсчетов в левой стороне текущего блока.
[125]
После получения восстановленных значений соседних отсчетов, например, полученные восстановленные значения отсчетов в верхней части текущего блока составляют redT (включая N значений) и полученные восстановленные значения отсчетов в левой стороне текущего блока составляют redL (включая значения N), причем redT и redL составляют новый вектор pTemp в качестве набора опорных значений текущего блока.
[126]
Чтобы выполнить фильтрацию для получения набора опорных значений текущего блока, в некоторых вариантах реализации восстановленные значения соседних отсчетов фильтруют для получения набора опорных значений текущего блока в блоке S602 следующим образом. Восстановленные значения соседних отсчетов разделяют на N групп. Для каждой из N групп вычисляют среднее значение восстановленных значений в группе. Среднее значение назначают в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[127]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока.
[128]
Другими словами, восстановленные значения соседних отсчетов фильтруют в блоке S602 следующим образом. redT и redL делят на N групп, среднее значение восстановленных значений в каждой группе вычисляют для получения N средних значений, и N средних значений назначают в качестве опорных значений в наборе опорных значений.
[129]
Например, когда размер текущего блока составляет 4x4, inSize=4; когда размер текущего блока составляет 4x8, 8x4 или 8x8, inSize=8; и когда размер текущего блока больше чем 8x8, inSize=7.
[130]
В блоке S603, когда размер текущего блока меньше предварительно заданного порогового значения, второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[131]
На практике, когда размер текущего блока представлен MipSizeId, при условии, что MipSizeId меньше 2, то есть MipSizeId равен 0 или 1, второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке.
[132]
Чтобы вычислить второе постоянное значение, в некоторых вариантах реализации второе постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке в блоке S603 следующим образом. Второе постоянное значение устанавливают в качестве значения, полученного посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[133]
Второе постоянное значение представляет собой значение, полученное посредством операции битового сдвига влево на числовое значение 1, и биты сдвига влево равны битовой глубине минус один.
[134]
В блоке S604 разницу между вторым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания.
[135]
Набор входных значений предсказания используют для вычисления значения предсказания текущего блока в соответствии с MIP.
[136]
После получения второй константы в операциях в блоке S604 разница между первым постоянным значением и вторым постоянным значением и первым опорным значением в наборе опорных значений может быть определена в качестве первого входного значения предсказания. Первое входное значение предсказания может быть получено путем вычисления уравнения (7) выше.
[137]
В блоке S605 другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений.
[138]
Другие входные значения p[i] предсказания включают входные значения предсказания, отличные от первого входного значения предсказания, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Другие входные значения p[i] предсказания могут дополнительно включать входные значения предсказания, когда размер текущего блока больше, чем предварительно заданное пороговое значение, или равен ему. Другие входные значения p[i] предсказания могут быть получены путем вычисления уравнения (8) выше.
[139]
В блоке S606 вычисляют значения предсказания отсчетов в конкретных положениях в текущем блоке в соответствии с набором входных значений предсказания.
[140]
После определения всех входных значений предсказания может быть получен набор входных значений предсказания. Предсказание может быть выполнено в соответствии с набором входных значений предсказания, чтобы получить значения предсказания отсчетов в конкретных положениях в текущем блоке, например значения предсказания отсчетов в положениях, обозначенных поперечными линиями на фиг. 3.
[141]
Чтобы определить значения предсказания отсчетов в конкретных положениях в текущем блоке, в некоторых вариантах реализации операции в блоке S606 включают следующее. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания, матрицей MIP текущего блока, параметром битового сдвига вправо текущего блока и параметром взвешивания текущего блока.
[142]
f
Другими словами, одна или более таблиц отображения предварительно сохранены в декодере. В соответствии с одной или более таблицами отображения могут быть определены матрица MIP текущего блока (mWeight), параметр битового сдвига вправо текущего блока (sW) и параметр взвешивания текущего блока (O).
[143]
f
После получения указанных выше параметров (т. е. mWeight, sW и O) из таблиц отображения указанные выше параметры и набор входных значений предсказания вводят в уравнения (1) и (2) для получения значений предсказания отсчетов в конкретных положениях в текущем блоке.
[144]
Чтобы получить матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, в некоторых вариантах реализации матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения следующим образом. Матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока определяют из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[145]
Другими словами, в соответствии с размером текущего блока из таблицы отображения получают матрицу MIP текущего блока, параметр битового сдвига вправо текущего блока и параметр взвешивания текущего блока, соответствующие размеру текущего блока. Например, когда размер текущего блока составляет 4x4, MipSizeId=0; когда размер текущего блока составляет 4x8, 8x4 или 8x8, MipSizeId=1; и когда размер текущего блока больше чем 8x8, MipSizeId=2. В соответствии со значением MipSizeId, матрица MIP текущего блока и параметр битового сдвига вправо текущего блока, соответствующие размеру текущего блока, могут быть найдены из таблицы отображения.
[146]
В блоке S607 значения предсказания отсчетов в конкретных положениях фильтруют для получения значений предсказания всех отсчетов в текущем блоке.
[147]
После определения значений предсказания отсчетов в конкретных положениях в блоке S606 значения предсказания отсчетов в конкретных положениях могут быть отфильтрованы, чтобы получить значения предсказания всех отсчетов в текущем блоке.
[148]
Чтобы получить значения предсказания всех отсчетов в текущем блоке, в некоторых вариантах реализации операции в блоке S607 могут включать следующее. Интерполяционную фильтрацию выполняют в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[149]
Здесь, при выполнении интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях, могут быть получены значения предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях, и, таким образом, могут быть получены значения предсказания всех отсчетов в текущем блоке.
[150]
В вариантах реализации предоставлен способ определения значения предсказания. Способ применим для декодера. Согласно вариантам реализации в данном документе вычисляют вторую константу, разницу между вторым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания набора входных значений предсказания, и набор входных значений предсказания используют для вычисления значений предсказания текущего блока. Таким образом, можно эффективно уменьшить диапазон динамических значений набора входных значений предсказания в предсказании в режиме MIP. Следовательно, по сравнению с предшествующим уровнем техники, при том же количестве битов, используемых для представления набора входных значений предсказания и матрицы MIP, данные в динамическом диапазоне могут быть представлены более точно благодаря применению технических решений вариантов реализации, что способствует более высокой точности во время вычисления значения предсказания в режиме MIP, тем самым улучшая эффективность кодирования.
[151]
Вариант реализации 2
[152]
В вариантах реализации, основанных на той же концепции, предоставлен кодер. На фиг. 7 показана структурная схема кодера согласно вариантам реализации. Как проиллюстрировано на фиг. 7, содержит первый модуль 71 получения, первый модуль 72 обработки, первый модуль 73 вычисления, первый модуль 74 определения, второй модуль 75 вычисления, третий модуль 76 вычисления и второй модуль 77 обработки. Первый модуль 71 получения выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока. Первый модуль 72 обработки выполнен с возможностью фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока. Первый модуль 73 вычисления выполнен с возможностью вычисления первого постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Первый модуль 74 определения выполнен с возможностью определения разницы между первым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Второй модуль 75 вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Третий модуль 76 вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Второй модуль 77 обработки выполнен с возможностью фильтрации значений предсказания отсчетов в конкретных положениях для получения значений предсказания всех отсчетов в текущем блоке.
[153]
В некоторых вариантах реализации первый модуль 72 обработки выполнен с возможностью работы следующим образом. Первый модуль 72 обработки выполнен с возможностью деления восстановленных значений соседних отсчетов на N групп. Первый модуль 72 обработки выполнен с возможностью вычисления среднего значения восстановленных значений в группе для каждой из N групп. Первый модуль 72 обработки выполнен с возможностью назначения среднего значения в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[154]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока.
[155]
В некоторых вариантах реализации, с точки зрения вычисления первого постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, первый модуль 73 вычисления выполнен с возможностью установки первого постоянного значения в качестве значения, получаемого посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[156]
В некоторых вариантах реализации третий модуль 76 вычисления выполнен с возможностью работы следующим образом. Третий модуль 76 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения. Третий модуль 76 вычисления выполнен с возможностью вычисления матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока, значения предсказания отсчетов в конкретных положениях текущего блока в соответствии с набором входных значений предсказания.
[157]
В некоторых вариантах реализации, с точки зрения определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения, третий модуль 76 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[158]
В некоторых вариантах реализации второй модуль 77 обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[159]
В вариантах реализации предоставлен декодер. На фиг. 8 показана структурная схема декодера согласно вариантам реализации. Как проиллюстрировано на фиг. 8, декодер содержит второй модуль 81 получения, третий модуль 82 обработки, четвертый модуль 83 вычисления, второй модуль 84 определения, пятый модуль 85 вычисления, шестой модуль 86 вычисления и четвертый модуль 87 обработки. Второй модуль 81 получения выполнен с возможностью анализа битового потока для получения размера текущего блока и режима кодирования текущего блока. Третий модуль 82 обработки выполнен с возможностью получения восстановленных значений соседних отсчетов текущего блока и фильтрации восстановленных значений соседних отсчетов для получения набора опорных значений текущего блока, когда режим кодирования текущего блока представляет собой режим MIP. Четвертый модуль 83 вычисления выполнен с возможностью вычисления второго постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, когда размер текущего блока меньше, чем предварительно заданное пороговое значение. Второй модуль 84 определения выполнен с возможностью определения разницы между вторым постоянным значением и первым опорным значением в наборе опорных значений как первого входного значения предсказания в наборе входных значений предсказания. Пятый модуль 85 вычисления выполнен с возможностью определения, в соответствии с набором опорных значений, других входных значений предсказания в наборе входных значений предсказания, отличных от первого входного значения предсказания. Шестой модуль 86 вычисления выполнен с возможностью вычисления, в соответствии с набором входных значений предсказания, значений предсказания отсчетов в конкретных положениях в текущем блоке. Четвертый модуль 87 обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях текущего блока, отличных от отсчетов в конкретных положениях.
[160]
В некоторых вариантах реализации, с точки зрения фильтрации восстановленных значений соседних отсчетов, для получения набора опорных значений текущего блока третий модуль 82 обработки выполнен с возможностью работы следующим образом. Третий модуль 82 обработки выполнен с возможностью деления восстановленных значений соседних отсчетов на N групп. Третий модуль 82 обработки выполнен с возможностью вычисления среднего значения восстановленных значений в группе для каждой из N групп. Третий модуль 82 обработки выполнен с возможностью назначения среднего значения в качестве опорного значения в наборе опорных значений, где N представляет собой положительное целое число.
[161]
В некоторых вариантах реализации N представляет собой положительное целое число, которое устанавливают заранее и которое соответствует размеру текущего блока.
[162]
В некоторых вариантах реализации, с точки зрения вычисления второго постоянного значения в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке, четвертый модуль 83 вычисления выполнен с возможностью установки второго постоянного значения в качестве значения, получаемого посредством операции двоичного битового сдвига влево на числовое значение 1, где количество битов сдвига в операции двоичного битового сдвига влево равно значению битовой глубины минус один.
[163]
В некоторых вариантах реализации шестой модуль 85 вычисления выполнен с возможностью работы следующим образом. Шестой модуль 85 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения. Пятый модуль 85 вычисления выполнен с возможностью вычисления матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока, значений предсказания отсчетов в конкретных положениях в текущем блоке в соответствии с набором входных значений предсказания.
[164]
В некоторых вариантах реализации, с точки зрения определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения, шестой модуль 85 вычисления выполнен с возможностью определения матрицы MIP текущего блока, параметра битового сдвига вправо текущего блока и параметра взвешивания текущего блока из одной или более предварительно сохраненных таблиц отображения в соответствии с размером текущего блока.
[165]
В некоторых вариантах реализации четвертый модуль 87 обработки выполнен с возможностью выполнения интерполяционной фильтрации в отношении значений предсказания отсчетов в конкретных положениях для получения значений предсказания отсчетов в других положениях в текущем блоке, отличных от отсчетов в конкретных положениях.
[166]
На фиг. 9 показана структурная схема кодера согласно другим вариантам реализации. Как проиллюстрировано на фиг. 9, кодер 900 содержит процессор 91 и носитель 92 данных, выполненный с возможностью хранения команд, исполняемых процессором 91. Носитель 92 данных способен работать с процессором 91 посредством шины 93 связи. Команды, при исполнении процессором 91, способны работать с процессором 91 для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[167]
На практике различные компоненты кодера соединены друг с другом посредством шины 93 связи. Следует понимать, что шина 93 связи выполнена с возможностью соединения и осуществления связи между этими компонентами. В дополнение к шине данных, шина 93 связи дополнительно содержит шину питания, шину управления и шину сигнала статуса. Однако для ясности описания различные шины обозначены как шина 93 связи на фиг. 9.
[168]
На фиг. 10 показана структурная схема декодера согласно другим вариантам реализации. Как проиллюстрировано на фиг. 10, декодер 1000 содержит процессор 101 и носитель 102 данных, выполненный с возможностью хранения команд, исполняемых процессором 101. Носитель 102 данных способен работать с процессором 101 посредством шины 103 связи. Команды, при исполнении процессором 101, способны работать с процессором 101 для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[169]
На практике различные компоненты декодера соединены друг с другом посредством шины 103 связи. Следует понимать, что шина 103 связи выполнена с возможностью соединения и осуществления связи между этими компонентами. В дополнение к шине данных, шина 103 связи дополнительно содержит шину питания, шину управления и шину сигнала статуса. Однако для ясности описания различные шины обозначены как шина 103 связи на фиг. 10.
[170]
В вариантах реализации предоставлен компьютерный носитель данных. Компьютерный носитель данных выполнен с возможностью хранения исполняемых команд, которые, при исполнении одним или более процессорами, способны работать с одним или более процессорами для выполнения способа, описанного в одном или более из вышеуказанных вариантов реализации.
[171]
Следует понимать, что запоминающее устройство согласно вариантам реализации может представлять собой энергозависимое запоминающее устройство или энергонезависимое запоминающее устройство или может содержать как энергозависимое запоминающее устройство, так и энергонезависимое запоминающее устройство. Энергонезависимое запоминающее устройство может представлять собой постоянное запоминающее устройство (ROM), программируемое ROM, PROM, стираемое программируемое постоянное запоминающее устройство (стираемое PROM, EPROM), электрически стираемое программируемое постоянное запоминающее устройство (электрическое EPROM, EEPROM) или флеш-память. Энергозависимое запоминающее устройство может представлять собой оперативное запоминающее устройство (RAM), которое выполняет функцию кеш-памяти. В качестве объяснения, а не ограничения, доступны многие формы RAM, такие как статическое RAM (SRAM), динамическое RAM (DRAM), синхронное DRAM (SDRAM), SDRAM с двукратной скоростью передачи данных (DDR SDRAM), усовершенствованное SDRAM (ESDRAM), динамическое оперативное запоминающее устройство с синхронным каналом (synch-link DRAM, SLDRAM) и RAM с шиной прямого резидентного доступа (DRRAM). Запоминающее устройство описанных в данном документе систем и способов предназначено для включения, но не ограничения этими и любыми другими подходящими типами запоминающих устройств.
[172]
Процессор, применяемый в данном документе, может представлять собой кристалл с интегральными микросхемами с функциональными возможностями обработки сигналов. Во время реализации каждый этап вышеупомянутого способа может быть завершен посредством интегральной логической схемы в виде аппаратного обеспечения или команды в виде программного обеспечения в процессоре. Процессор может представлять собой процессор общего назначения, процессор цифровой обработки сигналов (DSP), интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA) или другие программируемые логические устройства, дискретные логические элементы или транзисторные логические устройства, или дискретные аппаратные компоненты, которые могут реализовывать или исполнять способы, этапы и логические блоки, раскрытые в вариантах реализации. Процессор общего назначения может представлять собой микропроцессор, или процессор может представлять собой любой традиционный процессор или тому подобное. Этапы способа, раскрытого в вариантах реализации могут быть реализованы в качестве процессора для декодирования аппаратного обеспечения, или могут быть выполнены программными и аппаратными модулями в процессоре для декодирования. Программный модуль может быть расположен в носителе данных, таком как RAM, флеш-память, ROM, PROM или электрически стираемое перепрограммируемое запоминающее устройство, регистры и т. п. Носитель данных расположен в запоминающем устройстве. Процессор считывает информацию в запоминающем устройстве и выполняет этапы способа, описанного выше, с аппаратным обеспечением процессора.
[173]
Следует понимать, что варианты реализации, описанные в данном документе, могут быть реализованы в одном или более из аппаратного обеспечения, программного обеспечения, программно-аппаратного обеспечения, межплатформенного программного обеспечения и микрокода. Для аппаратной реализации элемент обработки может быть реализован в одном или более ASIC, DSP, устройствах DSP (DSPD), программируемых логических устройствах (PLD), FPGA, процессорах общего назначения, контроллерах, микроконтроллерах, микропроцессорах, других электронных элементах для выполнения функций, описанных в данном документе, или их комбинации.
[174]
Для программной реализации описанные в данном документе технологии могут быть реализованы модулями (например, процедурами, функциями и т. д.) для выполнения описанных в данном документе функций. Программный код может храниться в запоминающем устройстве и выполняться процессором. Запоминающее устройство может быть реализовано в процессоре или вне процессора.
[175]
Термины «включать», «содержать» и их варианты предназначены для охвата неисключительного включения, так что процесс, способ, объект или устройство, включающие серию этапов или блоков, включает не только перечисленные этапы или блоки, но также другие этапы или блоки, которые не перечислены; альтернативно также могут быть включены этапы или блоки, свойственные для процесса, способа, продукта или устройства. При условии отсутствия других ограничений элемент, определенный утверждением «содержащий», не исключает существование других аналогичных элементов в процессе, способе, объекте или устройстве, содержащем элемент.
[176]
Порядковые номера вышеупомянутых вариантов реализации принимаются только для описания, а не для представления превосходства и несовершенства вариантов реализации.
[177]
На основании вышеизложенных описаний вариантов реализации специалисты в данной области техники могут ясно понять, что способ в вышеупомянутых вариантах реализации может быть реализован программным обеспечением в дополнение к необходимой универсальной аппаратной платформе или только аппаратным обеспечением. Однако первое может быть примерным вариантом реализации. На основании такого понимания техническое решение сущности или часть, вносящая вклад в предшествующий уровень техники, могут быть воплощены в программных продуктах. Компьютерные программные продукты могут храниться в носителе данных (таком как ROM/RAM, магнитный диск или оптический диск) и могут включать несколько команд, которые при выполнении могут обеспечить исполнение терминальным устройством, например мобильным телефоном, компьютером, сервером, сетевым устройством и т. д., способов, описанных в различных вариантах реализации.
[178]
Хотя настоящее изобретение было описано в связи с определенными вариантами осуществления, следует понимать, что настоящее изобретение не должно ограничиваться описанными вариантами осуществления, а, напротив, должно быть предназначено для охвата различных модификаций и эквивалентных решений, включенных в объем прилагаемой формулы изобретения, объем которой подлежит самому широкому толкованию, чтобы охватить все такие модификации и эквивалентные структуры, которые разрешены законодательством.
ПРОМЫШЛЕННАЯ ПРИМЕНИМОСТЬ
[179]
В вариантах реализации предоставлены способ определения значения предсказания, кодер, декодер и компьютерный носитель данных. Способ применим для кодера. Способ включает следующее. Получают восстановленные значения соседних отсчетов текущего блока. Восстановленные значения соседних отсчетов фильтруют, чтобы получить набор опорных значений текущего блока. Когда размер текущего блока меньше предварительно заданного порогового значения, первое постоянное значение вычисляют в соответствии со значением битовой глубины компонента яркости отсчета в текущем блоке. Разницу между первым постоянным значением и первым опорным значением в наборе опорных значений определяют как первое входное значение предсказания в наборе входных значений предсказания. Другие входные значения предсказания в наборе входных значений предсказания, отличные от первого входного значения предсказания, определяют в соответствии с набором опорных значений. Значения предсказания отсчетов в конкретных положениях в текущем блоке вычисляют в соответствии с набором входных значений предсказания. Значения предсказания отсчетов в конкретных положениях фильтруют для получения значений предсказания всех отсчетов в текущем блоке. Таким образом, возможно улучшить точность предсказания в кодировании и декодировании видео, тем самым улучшая эффективность в кодировании и декодировании.