СПОСОБ И АППАРАТУРА ПРЕДСКАЗАНИЯ ВИДЕОИЗОБРАЖЕНИЙ
METHOD AND EQUIPMENT FOR VIDEO IMAGE PREDICTION

[0001] Настоящая заявка испрашивает приоритет на основании патентной заявки Китая №. 201811268188.2, поданной в Национальное управление интеллектуальной собственности Китая 29 октября 2018 г. и озаглавленная «INTER PREDICTION METHOD AND APPARATUS», которая полностью включена в настоящий документ посредством ссылки. Настоящая заявка испрашивает приоритет на основании патентной заявки Китая №. 201811642717.0, поданной в Патентное ведомство Китая 29 декабря 2018 г. и озаглавленной «VIDEO PICTURE PREDICTION METHOD AND APPARATUS», которая полностью включена в настоящий документ посредством ссылки.
Область техники
[0002] Эта заявка относится к области технологий кодирования изображений и, в частности, к способу и устройству предсказания видеоизображений.
Уровень техники
[0003] С развитием информационных технологий видеоуслуги, такие как телевидение высокой четкости, веб-конференции, IPTV и 3D-телевидение, быстро развиваются. Благодаря таким преимуществам как интуитивность и высокая эффективность, видеосигналы становятся основным методом получения информации в повседневной жизни людей. Видеосигналы содержат большой объем данных и, следовательно, занимают большую часть полосы пропускания передачи и места для хранения. Для эффективной передачи и хранения видеосигналов необходимо выполнять кодирование со сжатием для видеосигналов. Технология сжатия видео постепенно стала незаменимой ключевой технологией в области применения видео.
[0004] Основным принципом сжатия кодирования видео является максимальное уменьшение избыточности за счет использования корреляций между пространственной областью, временной областью и кодовым словом. В настоящее время распространенным методом является реализация сжатия кодирования видео с использованием структуры гибридного кодирования видео на основе блоков изображений и путем выполнения таких этапов, как предсказание (включая внутреннее предсказание и внешнее предсказание), преобразование, квантование и энтропийное кодирование.
[0005] В различных решениях кодирования/декодирования видео оценка движения/компенсация движения при внешнем предсказании является ключевой технологией, которая влияет на производительность кодирования/декодирования. В существующем внешнем предсказании предсказание вектора движения со слиянием на основе субблоков добавляется на основе предсказания компенсации движения (motion compensation, MC) на основе блоков, в котором используется модель прямолинейного движения. В существующей технологии нет приемлемого метода определения максимальной длины списка кандидатных векторов движения, соответствующего режиму слияния субблоков.
Сущность изобретения
[0006] Эта заявка предоставляет способ и аппаратуру предсказания видеоизображений, чтобы обеспечить метод определения максимальной длины списка кандидатных векторов движения в режиме слияния субблоков.
[0007] Согласно первому аспекту вариант осуществления этой заявки предоставляет способ предсказания видеоизображений, в том числе:
синтаксический анализ первого указателя (например, sps_affine_enable_flag) из битового потока; когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксический анализ второго указателя (например, five_minus_max_num_subblock_merge_cand или six_minus_max_num_subblock_merge_cand) из битового потока, причем второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, режим предсказания слияния субблоков используется для блока, который должен быть обработан; и определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя.
[0008] Вышеупомянутый способ обеспечивает метод определения максимальной длины списка кандидатных векторов движения в режиме слияния субблоков. Это просто и легко реализовать.
[0009] В возможном исполнении перед определением максимальной длины первого списка кандидатных векторов движения на основе второго указателя способ дополнительно содержит: синтаксический анализ третьего указателя (например, sps_sbtmvp_enabled_flag) из битового потока, где третий указатель используется для указания состояния присутствия режима расширенного временного предсказания вектора движения в режиме предсказания слияния субблоков.
[0010] В возможном исполнении режим предсказания слияния субблоков содержит по меньшей мере один из режима планарного предсказания вектора движения, режима расширенного временного предсказания вектора движения или аффинного режима; и когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение первого числа на основе третьего указателя и определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя и первого числа.
[0011] Например, когда sps_sbtmvp_enabled_flag=0, это указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. Например, первое число равно количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима расширенного временного предсказания вектора движения. Когда sps_sbtmvp_enabled_flag=0, первое число равно количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима расширенного временного предсказания вектора движения.
[0012] В возможном исполнении перед определением максимальной длины первого списка кандидатных векторов движения на основе второго указателя способ дополнительно содержит: синтаксический анализ четвертого указателя (например, sps_planar_enabled_flag) из битового потока, где четвертый указатель используется для указания состояния присутствия режима планарного предсказания вектора движения в режиме предсказания слияния субблоков.
[0013] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение второго числа на основе четвертого указателя и определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя и второго числа.
[0014] Например, когда sps_planar_enabled_flag=0, это указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. Например, второе число равно числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима планарного предсказания вектора движения.
[0015] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания векторов движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя и первого числа.
[0016] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания векторов движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя содержит: определение максимальной длины первого списка кандидатных векторов движения на основе второго указателя, первого числа и второго числа.
[0017] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:
MaxNumSubblockMergeCand=K − K_minus_max_num_subblock_merge_cand,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, а K - предварительно установленное неотрицательное целое число.
[0018] В возможном исполнении, когда максимальная длина первого списка кандидатных векторов движения определяется на основе второго указателя и первого числа, максимальная длина первого списка кандидатных векторов движения получается в соответствии со следующей формулой:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, а K представляет собой предварительно установленное неотрицательное целое число.
[0019] В возможном исполнении, когда максимальная длина первого списка кандидатных векторов движения определяется на основе второго указателя и второго числа, максимальная длина первого списка кандидатных векторов движения получается в соответствии со следующей формулой:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L2,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L2 представляет второе число, а K представляет собой предварительно установленное неотрицательное целое число.
[0020] В возможном исполнении, когда максимальная длина первого списка кандидатных векторов движения определяется на основе второго указателя, первого числа и второго числа, максимальная длина первого списка кандидатных векторов движения получается согласно следующей формуле: MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1-L2, где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет собой второй указатель, L1 представляет собой первое число, а L2 представляет собой второе число, а K представляет собой предварительно установленное неотрицательное целое число.
[0021] В возможном исполнении синтаксический анализ второго указателя из битового потока содержит:
синтаксический анализ второго указателя из набора параметров последовательности в битовом потоке или синтаксический анализ второго указателя из заголовка слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в этом слайсе.
[0022] В возможном исполнении способ дополнительно содержит: когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, подлежащего обработке, содержит только режим прямолинейного предсказания вектора движения, а третий указатель (например, sps_sbtmvp_enabled_flag) указывает что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение третьего числа на основе третьего указателя и определение максимальной длины первого списка кандидатных векторов движения на основе третьего числа. Например, когда sps_sbtmvp_enabled_flag=1, это указывает, что режим расширенного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. Третье число равно числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима расширенного временного предсказания векторов движения. Например, максимальная длина первого списка кандидатных векторов движения равна третьему числу.
[0023] В возможном исполнении, когда четвертый указатель (например, sps_planar_enabled_flag) указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение максимальной длины первого списка кандидатных векторов движения на основе первого числа содержит: определение четвертого числа на основе четвертого указателя и определение максимальной длины первого списка кандидатных векторов движения на основе третьего числа и четвертого числа. Например, максимальная длина первого списка кандидатных векторов движения равна сумме третьего числа и четвертого числа.
[0024] Например, когда sps_planar_enabled_flag=1, это указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. Четвертое число равно числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием списка векторов планарного движения.
[0025] В возможном исполнении способ дополнительно содержит: когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определение четвертого числа на основе четвертого указателя и определение максимальной длины первого списка кандидатных векторов движения на основе четвертого числа. Например, максимальная длина первого списка кандидатных векторов движения равна четвертому числу.
[0026] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.
[0027] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режим предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.
[0028] В возможном исполнении третий указатель равен первому значению, а первое число равно 1.
[0029] В возможном исполнении четвертый указатель равен третьему значению, а второе число равно 1.
[0030] В возможном исполнении третий указатель равен второму значению, а третье число равно 1.
[0031] В возможном исполнении четвертый указатель равен четвертому значению, а четвертое число равно 1.
[0032] Согласно второму аспекту вариант осуществления этой заявки предоставляет аппаратуру предсказания видеоизображения, включающий в себя:
блок синтаксического анализа, сконфигурированный для: синтаксического анализа первого указателя из битового потока; и когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксического анализа второго указателя из битового потока, где второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, режим предсказания слияния субблоков используется для блока, который должен быть обработан; и
блок определения, сконфигурированный для определения максимальной длины первого списка кандидатных векторов движения на основе второго указателя.
[0033] В возможном исполнении блок синтаксического анализа дополнительно сконфигурирован для синтаксического анализа третьего указателя из битового потока до того, как максимальная длина первого списка кандидатных векторов движения определена на основе второго указателя, где третий указатель используется для указания состояния присутствия режима расширенного временного предсказания вектора движения в режиме предсказания слияния субблоков.
[0034] В возможном исполнении режим предсказания слияния субблоков содержит по меньшей мере один из режима планарного предсказания вектора движения, режима расширенного временного предсказания вектора движения или аффинного режима; и когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:
определить первое число на основе третьего указателя, и
определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.
[0035] В возможном исполнении, прежде чем максимальная длина первого списка кандидатных векторов движения определена на основе второго указателя, блок синтаксического анализа дополнительно сконфигурирован для:
синтаксического анализа четвертого указателя из битового потока, где четвертый указатель используется для указания состояния присутствия режима планарного предсказания вектора движения в режиме предсказания слияния субблоков.
[0036] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:
определить второе число на основе четвертого указателя, и
определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и второго числа.
[0037] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:
определять максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.
[0038] В возможном исполнении, когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, блок определения конкретно сконфигурирован, чтобы:
определять максимальную длину первого списка кандидатных векторов движения на основе второго указателя, первого числа и второго числа.
[0039] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, а K - предварительно установленное неотрицательное целое число.
[0040] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:
MaxNumSubblockMergeCand=K-K_minus_max_num_subblock_merge_cand-L1,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, а K представляет собой предварительно установленное неотрицательное целое число.
[0041] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L2,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L2 представляет второе число, а K представляет собой предварительно установленное неотрицательное целое число.
[0042] В возможном исполнении максимальная длина первого списка кандидатных векторов движения получается по следующей формуле:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1 - L2,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, L2 представляет второе число, а K - предварительно установленное неотрицательное целое число.
[0043] В возможном исполнении при синтаксическом анализе второго указателя из битового потока блок синтаксического анализа конкретно сконфигурирован, чтобы:
синтаксически анализировать второй указатель из набора параметров последовательности в битовом потоке или синтаксически анализировать второй указатель из заголовка слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в упомянутом слайсе.
[0044] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, блок определения дополнительно сконфигурирован для: определения третьего числа на основе третьего указателя и определения максимальной длины первого списка кандидатных векторов движения на основе третьего числа.
[0045] В возможном исполнении, когда четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, при определении максимальной длины первого списка кандидатных векторов движения на основе первого числа, блок определения конкретно сконфигурирован, чтобы:
определить четвертое число на основе четвертого указателя, и
определить максимальную длину первого списка кандидатных векторов движения на основе первого числа и четвертого числа.
[0046] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, блок определения дополнительно сконфигурирован для: определения четвертого числа на основе четвертого указателя и определения максимальной длины первого списка кандидатных векторов движения на основе четвертого числа.
[0047] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.
[0048] В возможном исполнении, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, максимальная длина первого списка кандидатных векторов движения равна нулю.
[0049] В возможном исполнении максимальная длина первого списка кандидатных векторов движения равна третьему числу.
[0050] В возможном исполнении максимальная длина первого списка кандидатных векторов движения равна сумме третьего числа и четвертого числа.
[0051] В возможном исполнении максимальная длина первого списка кандидатных векторов равна четвертому числу.
[0052] В возможном варианте третий указатель равен первому значению, а первое число равно 1.
[0053] В возможном исполнении четвертый указатель равен третьему значению, а второе число равно 1.
[0054] В возможном исполнении третий указатель равен второму значению, а третье число равно 1.
[0055] В возможном исполнении четвертый указатель равен четвертому значению, а четвертое число равно 1.
[0056] Согласно третьему аспекту вариант осуществления этой заявки предоставляет аппаратуру. Аппаратура может быть декодером и содержать процессор и память. Память сконфигурирована для хранения инструкции. Когда аппаратура работает, процессор выполняет инструкцию, хранящуюся в памяти, чтобы дать возможность аппаратуре выполнять способ согласно любому из первого аспекта или исполнениям первого аспекта. Следует отметить, что память может быть интегрирована в процессор или может быть независимой от процессора.
[0057] Согласно четвертому аспекту вариант осуществления этой заявки предоставляет способ предсказания видеоизображения, используемый на стороне кодера и включающий в себя:
кодирование первого указателя в битовом потоке; и
когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, кодирование второго указателя в битовом потоке, причем второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, режим предсказания слияния субблоков используется для блока, который должен быть обработан.
[0058] Согласно пятому аспекту вариант осуществления этой заявки предоставляет аппаратуру предсказания видеоизображения. Аппаратура может быть кодером и содержать процессор и память. Память сконфигурирована для хранения инструкции. Когда аппаратура работает, процессор выполняет инструкцию, хранящуюся в памяти, чтобы дать возможность аппаратуре выполнять способ согласно четвертому аспекту. Следует отметить, что память может быть интегрирована в процессор или может быть независимой от процессора.
[0059] Согласно шестому аспекту этой заявки предоставляется машиночитаемый носитель данных. Машиночитаемый носитель данных хранит инструкцию. Когда инструкция выполняется на компьютере, компьютер имеет возможность выполнять способ согласно каждому из вышеизложенных аспектов.
[0060] Согласно седьмому аспекту этой заявки предоставляется компьютерный программный продукт, включающий в себя инструкцию. Когда компьютерный программный продукт выполняется на компьютере, компьютер имеет возможность выполнять способ согласно каждому из вышеупомянутых аспектов.
[0061] Следует понимать, что технические решения, описанные в аспектах от второго аспекта до седьмого аспекта этой заявки, согласуются с техническими решениями, описанными в первом аспекте этой заявки, и положительные эффекты, достигаемые во всех аспектах и соответствующих исполнениях реализации, аналогичны. Поэтому подробности снова не описываются.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0062] ФИГ. 1A является блок-схемой примера системы 10 кодирования и декодирования видео для реализации вариантов осуществления этой заявки;
[0063] ФИГ. 1B - это блок-схема примера системы 40 кодирования видео для реализации вариантов осуществления этой заявки;
[0064] ФИГ. 2 - блок-схема примерной структуры кодера 20 для реализации вариантов осуществления этой заявки;
[0065] ФИГ. 3 - блок-схема примерной структуры декодера 30 для реализации вариантов осуществления этой заявки;
[0066] ФИГ. 4 - блок-схема примера устройства 400 кодирования видео для реализации вариантов осуществления этой заявки;
[0067] ФИГ. 5 - блок-схема примера другой аппаратуры кодирования или аппаратуры декодирования для реализации вариантов осуществления этой заявки;
[0068] ФИГ. 6A - схематическая диаграмма кандидатного местоположения для информации о движении для реализации вариантов осуществления этой заявки;
[0069] ФИГ. 6B - схематическая диаграмма предсказания унаследованного вектора движения контрольной точки для реализации вариантов осуществления этой заявки;
[0070] ФИГ. 6С - схематическая диаграмма предсказания построенного вектора движения контрольной точки для реализации вариантов осуществления этой заявки;
[0071] ФИГ. 6D - схематическая диаграмма процедуры объединения информации о движении контрольной точки для получения информации о движении построенной контрольной точки для реализации вариантов осуществления этой заявки;
[0072] ФИГ. 6E - схематическая диаграмма метода предсказания ATMVP для реализации вариантов осуществления этой заявки;
[0073] ФИГ. 7 - схематическая диаграмма метода планарного предсказания вектора движения для реализации вариантов осуществления этой заявки;
[0074] ФИГ. 8A - блок-схема способа внешнего предсказания для реализации вариантов осуществления этой заявки;
[0075] ФИГ. 8B - схематическая диаграмма построения списка кандидатных векторов движения для реализации вариантов осуществления этой заявки;
[0076] ФИГ. 8C - схематическая диаграмма блока компенсации движения для реализации вариантов осуществления этой заявки;
[0077] ФИГ. 9 - схематическая блок-схема способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;
[0078] ФИГ. 10 - схематическая блок-схема другого способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;
[0079] ФИГ. 11 - схематическая блок-схема еще одного способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;
[0080] ФИГ. 12A и фиг. 12B - схематическая блок-схема еще одного способа предсказания видеоизображения для реализации вариантов осуществления этой заявки;
[0081] ФИГ. 13 - схематическая диаграмма аппаратуры 1300 для реализации вариантов осуществления этой заявки;
[0082] ФИГ. 14 - схематическая диаграмма аппаратуры 1400 для реализации вариантов осуществления этой заявки; и
[0083] ФИГ. 15 - схематическая диаграмма аппаратуры 1500 для реализации вариантов осуществления этой заявки.
Описание вариантов осуществления
[0084] Далее описываются варианты осуществления этой заявки со ссылкой на прилагаемые чертежи в вариантах осуществления этой заявки. В нижеследующем описании сделана ссылка на сопроводительные чертежи, которые составляют часть этого раскрытия и показывают в качестве иллюстрации конкретные аспекты вариантов осуществления этой заявки или конкретные аспекты, в которых могут использоваться варианты осуществления этой заявки. Следует понимать, что варианты осуществления этой заявки могут использоваться в других аспектах и могут содержать структурные или логические изменения, не изображенные на сопроводительных чертежах. Следовательно, следующие подробные описания не следует воспринимать в ограничивающем смысле, и объем этой заявки определяется прилагаемой формулой изобретения. Например, следует понимать, что раскрытие в связи с описанным способом также может быть верным для соответствующего устройства или системы, сконфигурированной для выполнения способа, и наоборот. Например, если описан один или несколько конкретных этапов способа, соответствующее устройство может содержать один или несколько блоков, таких как функциональные блоки, для выполнения описанных одного или нескольких этапов способа (например, один блок, выполняющий один или несколько этапов; или множество блоков, каждый из которых выполняет один или несколько из множества этапов), даже если такой один или несколько блоков явно не описаны или не проиллюстрированы на сопроводительных чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или нескольких блоков, таких как функциональные блоки, соответствующий способ может содержать один этап, используемый для выполнения функциональных возможностей одного или нескольких блоков (например, один этап, используемый для выполнения функциональных возможностей одного или нескольких блоков или множества этапов, каждый из которых используется для выполнения функциональных возможностей одного или нескольких из множества блоков), даже если такой один или несколько этапов явно не описаны или не проиллюстрированы на сопроводительных чертежах. Кроме того, следует понимать, что особенности различных примерных вариантов осуществления и/или аспектов, описанных в этом описании, могут быть объединены друг с другом, если конкретно не указано иное.
[0085] Технические решения в вариантах осуществления этой заявки применимы не только к существующему стандарту кодирования видео (например, к стандарту H.264 или HEVC), но также применимы к будущему стандарту кодирования видео (например, стандарту H. 266). Термины, используемые в ОПИСАНИИ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ этой заявки, используются только для объяснения конкретных вариантов осуществления этой заявки, но не предназначены для ограничения этой заявки. Нижеследующее сначала кратко описывает связанные концепции в вариантах осуществления этой заявки.
[0086] Кодирование видео обычно относится к обработке последовательности изображений, которые образуют видео или видеопоследовательность. Термин «изображение (picture)», «кадр (frame)» или «изображение (image)» может использоваться как синонимы в области кодирования видео. Кодирование видео в этой спецификации представляет собой кодирование видео или декодирование видео. Кодирование видео выполняется на стороне источника и обычно содержит обработку (например, путем сжатия) исходного видеоизображения для уменьшения объема данных, необходимых для представления видеоизображения, для более эффективного хранения и/или передачи. Декодирование видео выполняется на стороне назначения и обычно содержит обратную обработку по сравнению с кодером для восстановления видеоизображения. «Кодирование» видеоизображения в вариантах осуществления следует понимать как «кодирование» или «декодирование» видеопоследовательности. Комбинация части кодирования и части декодирования также называется кодеком (кодирование и декодирование).
[0087] Видеопоследовательность содержит серию изображений (picture), изображение дополнительно разбивается на слайсы (slice), а слайс дополнительно разбивается на блоки (block). Обработка кодирования видео выполняется по блокам. В некоторых новых стандартах кодирования видео понятие блока дополнительно расширено. Например, макроблок (macroblock, MB) введен в стандарт H.264. Макроблок может быть дополнительно разбит на множество блоков (сегментов) предсказания, которые могут использоваться для кодирования с предсказанием. В стандарте высокоэффективного кодирования видео (high efficiency video coding, HEVC) используются базовые концепции, такие как единица кодирования (coding unit, CU), единица предсказания (prediction unit, PU) и единица преобразования (transform unit, TU). Множество блочных единиц получается посредством функционального разбиения и описываются с использованием новой древовидной структуры. Например, CU может быть разбита на меньшие CU на основе квадродерева, а меньшая CU может быть дополнительно разбита, чтобы сгенерировать структуру квадродерева. CU - это базовая единица, используемая для разбиения и кодирования кодированного изображения. PU и TU также имеют похожие древовидные структуры. PU может соответствовать блоку предсказания и является базовой единицей, используемой для кодирования с предсказанием. CU дополнительно разбивается на множество PU на основе шаблона разбиения. TU может соответствовать блоку преобразования и является базовой единицей, используемой для преобразования остатка предсказания. Однако, по существу, все CU, PU и TU концептуально являются блоками (или блоками изображения).
[0088] Например, в HEVC CTU разбивается на множество CU с использованием структуры квадродерева, представленной как дерево кодирования. Решение о том, кодировать ли область изображения с помощью внешнего (временного) или внутрикадрового (пространственного) предсказания, принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU на основе шаблона разбиения PU. Внутри одной PU применяется один и тот же процесс предсказания, и соответствующая информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе шаблона разбиения PU, CU может быть разделена на единицы преобразования (transform unit, TU) на основе другой структуры квадродерева, аналогичной дереву кодирования, используемому для CU. В недавних разработках технологий сжатия видео для разбиения блока кодирования используется кадр разбиения квадратичного дерева и двоичного дерева (Quad-tree and binary tree, QTBT). В блочной структуре QTBT CU может быть квадратной или прямоугольной.
[0089] В этой спецификации для простоты описания и понимания блок изображения, который должен быть кодирован в текущем кодированном изображении, может называться текущим блоком. Например, при кодировании текущий блок - это блок, кодируемый в настоящее время; а при декодировании текущий блок - это блок, который в настоящее время декодируется. Декодированный блок изображения, в качестве опорного изображения, используемого для предсказания текущего блока, называется опорным блоком. Другими словами, опорный блок - это блок, который обеспечивает опорный сигнал для текущего блока. Опорный сигнал представляет собой значение пикселя в блоке изображения. Блок, который обеспечивает сигнал предсказания для текущего блока в опорном изображении, может называться как блок предсказания. Сигнал предсказания представляет значение пикселя, значение выборки или сигнал выборки в блоке предсказания. Например, после прохождения множества опорных блоков находится оптимальный опорный блок, и оптимальный опорный блок обеспечивает предсказание для текущего блока, и этот блок упоминается как блок предсказания.
[0090] В случае кодирования видео без потерь исходные видеоизображения могут быть восстановлены. То есть восстановленные видеоизображения имеют то же качество, что и исходные видеоизображения (при условии, что во время хранения или передачи не возникают потери при передаче или другие потери данных). В случае кодирования видео с потерями выполняется дополнительное сжатие, например, посредством квантования, чтобы уменьшить объем данных, требуемых для представления видеоизображений, и видеоизображения не могут быть полностью восстановлены на стороне декодера. То есть качество восстановленных видеоизображений ниже или хуже качества исходных видеоизображений.
[0091] Некоторые стандарты кодирования видео H.261 предназначены для «гибридных видеокодеков с потерями» (то есть пространственное и временное предсказание в области выборки комбинируется с кодированием с двумерным преобразованием для применения квантования в области преобразования). Каждое изображение видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодирование обычно выполняется на уровне блоков. Другими словами, на стороне кодера видео обычно обрабатывается, то есть кодируется на уровне блока (блока видео). Например, блок предсказания генерируется посредством пространственного (внутрикадрового) предсказания и временного (внешнего) предсказания, блок предсказания вычитается из текущего блока (блока, который в настоящее время обрабатывается или должен быть обработан), чтобы получить остаточный блок, а остаточный блок преобразуется и квантуется в области преобразования, чтобы уменьшить объем данных, которые должны быть переданы (сжаты). На стороне декодера обработка, обратная по сравнению с кодером, выполняется над кодированным или сжатым блоком, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что кодер и декодер генерируют одинаковые предсказания (например, внутреннее предсказание и внешнее предсказание) и/или реконструкцию для обработки, то есть для кодирования следующего блока.
[0092] Ниже описывается архитектура системы, используемая в вариантах осуществления этой заявки. Фиг. 1A является схематической блок-схемой примера системы 10 кодирования и декодирования видео, используемой в вариантах осуществления этой заявки. Как показано на фиг. 1A, система 10 кодирования и декодирования видео может содержать устройство-источник 12 и устройство-адресат 14. Устройство-источник 12 генерирует кодированные видеоданные, и поэтому устройство-источник 12 может называться аппаратурой кодирования видео. Устройство-адресат 14 может декодировать кодированные видеоданные, сгенерированные устройством-источником 12, и поэтому устройство-адресат 14 может называться аппаратурой декодирования видео. В различных решениях реализации устройство-источник 12, устройство-адресат 14 или как устройство-источник 12, так и устройство-адресат 14 могут содержать один или несколько процессоров и память, связанную с одним или несколькими процессорами. Память может содержать, но не ограничивается этим, RAM, ROM, EEPROM, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкции или структуры данных, доступной для компьютера, как описано в этой спецификации. Устройство-источник 12 и устройство-адресат 14 могут содержать различные устройства, в том числе настольный компьютер, мобильное вычислительное устройство, портативный компьютер (например, портативный компьютер), планшетный компьютер, телеприставку, телефонную трубку, такую как так называемый «интеллектуальный» телефон, телевизор, камеру, устройство отображения, цифровой медиаплеер, игровую приставку, установленный на транспортном средстве компьютер, устройство беспроводной связи и т.п.
[0093] Хотя фиг. 1A изображает устройство-источник 12 и устройство-адресат 14 как отдельные устройства, вариант осуществления устройства может альтернативно содержать как устройство-источник 12, так и устройство-адресат 14 или функциональные возможности как устройства-источника 12, так и устройства-адресата 14, то есть устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности. В таком варианте осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.
[0094] Коммуникационное соединение между устройством-источником 12 и устройством-адресатом 14 может быть реализовано по линии 13 связи, а устройство-адресат 14 может принимать закодированные видеоданные от устройства-источника 12 по линии 13 связи. Линия 13 связи может содержать одно или несколько носителей или устройств, которые могут передавать закодированные видеоданные от устройства-источника 12 к устройству-адресату 14. В одном примере линия 13 связи может содержать одну или несколько сред передачи данных, которые позволяют устройству-источнику 12 напрямую передавать закодированные видеоданные на устройство-адресат 14 в реальном времени. В этом примере устройство-источник 12 может модулировать кодированные видеоданные в соответствии со стандартом связи (например, протоколом беспроводной связи) и может передавать модулированные видеоданные на устройство-адресат 14. Одна или несколько сред связи могут содержать среду беспроводной связи и/или среду проводной связи, например, радиочастотный (RF) спектр или один или несколько физических кабелей передачи. Одна или несколько коммуникационных сред могут быть частью сети на основе пакетов, а сеть на основе пакетов представляет собой, например, локальную сеть, глобальную сеть или глобальную сеть (например, Интернет). Одна или несколько коммуникационных сред могут содержать маршрутизатор, коммутатор, базовую станцию или другое устройство, которое обеспечивает связь от устройства-источника 12 к устройству-адресату 14.
[0095] Устройство-источник 12 содержит кодер 20. Необязательно, устройство-источник 12 может дополнительно содержать источник 16 изображения, препроцессор 18 изображения и интерфейс 22 связи. В конкретной реализации кодер 20, источник 16 изображения, препроцессор 18 изображения и интерфейс 22 связи могут быть аппаратными компонентами в устройстве-источнике 12 или могут быть программами программного обеспечения в устройстве-источнике 12. Описания предоставляются отдельно следующим образом:
[0096] Источник 16 изображения может содержать или может быть устройством захвата изображения любого типа, сконфигурированным, например, для захвата изображения реального мира; и/или устройством любого типа для генерирования изображения или комментария (для кодирования содержимого экрана некоторый текст на экране также рассматривается как часть картинки или изображения, подлежащего кодированию), например процессор компьютерной графики сконфигурирован для генерирования компьютерного анимационного изображения; или устройство любого типа, сконфигурированное для получения и/или предоставления изображения реального мира или компьютерного анимационного изображения (например, содержимого экрана или изображения виртуальной реальности (virtual reality, VR)); и/или любое их сочетание (например, изображение дополненной реальности (augmented reality, AR)). Источник 16 изображения может быть камерой, сконфигурированной для захвата изображения, или памятью, сконфигурированной для хранения изображения. Источник 16 изображения может дополнительно содержать интерфейс любого типа (внутренний или внешний), через который ранее захваченное или сгенерированное изображение сохраняется и/или изображение получается или принимается. Когда источником 16 изображения является камера, источником 16 изображения может быть, например, локальная камера или встроенная камера, встроенная в устройство-источник. Когда источник 16 изображения является памятью, источник 16 изображения может быть локальной памятью или, например, встроенной памятью, встроенной в устройство-источник. Когда источник 16 изображения содержит интерфейс, этот интерфейс может быть, например, внешним интерфейсом для приема изображения от внешнего источника видео. Внешний источник видео представляет собой, например, внешнее устройство захвата изображения, такое как камера, внешняя память или внешнее устройство генерирования изображения. Внешнее устройство генерирования изображения представляет собой, например, внешний компьютерный графический процессор, компьютер или сервер. Интерфейс может быть интерфейсом любого типа, например, проводным или беспроводным интерфейсом или оптическим интерфейсом, в соответствии с любым частным или стандартизованным протоколом интерфейса.
[0097] Изображение можно рассматривать как двумерный массив или матрицу элементов пикселей (элемент изображения). Элемент пикселя в массиве также может называться выборкой. Количество выборок в горизонтальном и вертикальном направлениях (или осях) массива или изображения определяет размер и/или разрешение изображения. Для представления цвета обычно используются три цветовых компонента, в частности, изображение может быть представлено в виде трех массивов выборок или содержать их. Например, в формате RBG или цветовом пространстве изображение содержит соответствующие массивы выборок красного, зеленого и синего цветов. Однако при кодировании видео каждый пиксель обычно представлен в формате яркости/цветности или цветовом пространстве. Например, изображение в формате YUV содержит компонент яркости, обозначенный Y (иногда вместо этого обозначаемый L), и два компонента цветности, обозначенные U и V. Компонент яркости (luma) Y представляет яркость или интенсивность уровня серого (например, оба одинаковы в изображении с оттенками серого), и два компонента цветности (chroma) U и V представляют собой компоненты цветности или информации о цвете. Соответственно, изображение в формате YUV содержит массив выборок яркости значений выборок яркости (Y) и два массива выборок цветности значений цветности (U и V). Изображения в формате RGB можно преобразовать или конвертировать в формат YUV и наоборот. Этот процесс также называется конверсией цвета или преобразованием. Если изображение является монохромным, оно может содержать только массив выборок яркости. В этом варианте осуществления этой заявки изображение, переданное источником 16 изображения в процессор изображения, также может называться необработанными данными 17 изображения.
[0098] Препроцессор 18 изображения сконфигурирован для приема необработанных данных 17 изображения и выполнения предварительной обработки необработанных данных 17 изображения для получения предварительно обработанного изображения 19 или предварительно обработанных данных 19 изображения. Например, предварительная обработка, выполняемая препроцессором 18 изображения, может содержать обрезку, конверсию цветового формата (например, из формата RGB в формат YUV), цветокоррекцию или уменьшение шума.
[0099] Кодер 20 (или называемый видеокодером 20) сконфигурирован для приема предварительно обработанных данных 19 изображения и обработки предварительно обработанных данных 19 изображения с использованием соответствующего режима предсказания (например, режима предсказания в каждом варианте осуществления данной спецификации), чтобы предоставить данные 21 закодированного изображения (структурные детали кодера 20 дополнительно описаны ниже на основе фиг. 2, фиг. 4 или фиг. 5). В некоторых вариантах осуществления кодер 20 может быть сконфигурирован для выполнения каждого варианта осуществления, описанного ниже, для реализации применения на стороне кодера способа предсказания блока цветности, описанного в этой заявке.
[00100] Интерфейс 22 связи может быть сконфигурирован для приема данных 21 закодированного изображения и передачи данных 21 закодированного изображения на устройство-адресат 14 или любое другое устройство (например, память) по линии 13 связи для хранения или прямого восстановления (реконструкции). Другое устройство может быть любым устройством, используемым для декодирования или хранения. Интерфейс 22 связи может быть, например, сконфигурирован для упаковки данных 21 закодированного изображения в соответствующий формат, например пакет данных, для передачи по линии 13 связи.
[00101] Устройство-адресат 14 содержит декодер 30. Необязательно, устройство-адресат 14 может дополнительно содержать интерфейс 28 связи, постпроцессор 32 изображения и устройство 34 отображения. Описания предоставляются отдельно следующим образом:
[00102] Интерфейс 28 связи может быть сконфигурирован для приема данных 21 закодированного изображения от устройства-источника 12 или любого другого источника. Любой другой источник - это, например, запоминающее устройство. Запоминающее устройство представляет собой, например, устройство хранения данных закодированного изображения. Интерфейс 28 связи может быть сконфигурирован для передачи или приема данных 21 закодированного изображения по линии 13 связи между устройством-источником 12 и устройством-адресатом 14 или по сети любого типа. Линия 13 связи представляет собой, например, прямое проводное или беспроводное соединение. Любой тип сети представляет собой, например, проводную или беспроводную сеть или любую их комбинацию, или любой тип частной или общедоступной сети, или любую их комбинацию. Интерфейс 28 связи может быть, например, сконфигурирован для расформирования пакета данных, передаваемого через интерфейс 22 связи, для получения данных 21 закодированного изображения.
[00103] И интерфейс 28 связи, и интерфейс 22 связи могут быть сконфигурированы как интерфейсы однонаправленной связи или интерфейсы двунаправленной связи, и могут быть сконфигурированы, например, для отправки и приема сообщений для установки соединения, а также подтверждения и обмена любой другой информацией, относящейся к линии связи и/или передаче данных, такой как передача данных закодированного изображения.
[00104] Декодер 30 (или называемый декодером 30) сконфигурирован для приема данных 21 закодированного изображения и предоставления данных 31 декодированного изображения или декодированного изображения 31 (структурные детали декодера 30 дополнительно описаны ниже на основе фиг. 3, фиг. 4 или 5). В некоторых вариантах осуществления декодер 30 может быть сконфигурирован для выполнения каждого варианта осуществления, описанного ниже, для реализации на стороне декодера способа предсказания блока цветности, описанного в этой заявке, на стороне декодера.
[00105] Постпроцессор 32 изображения сконфигурирован для постобработки данных 31 декодированного изображения (также называемых данными реконструированного (восстановленного) изображения) для получения данных 33 постобработанного изображения. Постобработка, выполняемая постпроцессором 32 изображения, может содержать конверсию формата цвета (например, из формы YUV в формат RGB), цветокоррекцию, обрезку, повторную выборку или любую другую обработку. Постпроцессор 32 изображения может быть дополнительно сконфигурирован для передачи данных 33 постобработанного изображения на устройство 34 отображения.
[00106] Устройство 34 отображения сконфигурировано для приема данных 33 изображения с постобработкой, чтобы отображать изображение, например, пользователю или зрителю. Устройство 34 отображения может быть или может содержать любой тип дисплея для представления восстановленного изображения, например встроенный или внешний дисплей или монитор. Например, дисплей может содержать жидкокристаллический дисплей (liquid crystal display, LCD), дисплей с органическим светоизлучающим диодом (organic light emitting diode, OLED), плазменный дисплей, проектор, микросветодиодный дисплей, жидкокристаллический дисплей на кремнии (liquid crystal on silicon, LCoS), цифровой световой процессор (digital light processor, DLP) или любой другой дисплей.
[00107] Хотя фиг. 1A изображает устройство-источник 12 и устройство-адресат 14 как отдельные устройства, вариант осуществления устройства может альтернативно содержать как устройство-источник 12, так и устройство-адресат 14 или функциональные возможности как устройства-источника 12, так и устройства-адресата 14, то есть устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности. В таком варианте осуществления устройство-источник 12 или соответствующие функциональные возможности и устройство-адресат 14 или соответствующие функциональные возможности могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения, отдельного аппаратного и/или программного обеспечения или любой их комбинации.
[00108] Как будет очевидно для специалиста в данной области на основании описаний, существования и (точного) разделения функциональных возможностей различных блоков или функциональных возможностей устройства-источника 12 и/или устройства-адресата 14, показанных на фиг. 1A может отличаться в зависимости от фактического устройства и применения. Устройство-источник 12 и устройство-адресат 14 могут содержать любое из широкого диапазона устройств, включая любой тип портативного или стационарного устройства, например ноутбук или портативный компьютер, мобильный телефон, смартфон, планшет или планшетный компьютер, видеокамера, настольный компьютер, телевизионная приставка, телевизор, камера, устройство, установленное на транспортном средстве, устройство отображения, цифровой медиаплеер, игровая консоль, устройство потоковой передачи видео (например, сервер службы контента или сервер доставки контента), устройство приемника вещания или устройство передатчика вещания и может использовать или не использовать любой тип операционной системы.
[00109] Кодер 20 и декодер 30 каждый может быть реализован как одна из различных подходящих схем, например, один или несколько микропроцессоров, процессоров цифровых сигналов (digital signal processor, DSP), интегральные схемы для конкретных приложений (application-specific integrated circuit, ASIC), программируемые пользователем вентильные матрицы (field-programmable gate array, FPGA), дискретная логика, оборудование или любая их комбинация. Если технологии реализованы частично с использованием программного обеспечения, устройство может хранить программную инструкцию на подходящем энергонезависимом машиночитаемом носителе данных и может выполнять инструкцию с использованием аппаратного обеспечения, такого как один или несколько процессоров, для реализации технологий этого раскрытия. Любой из вышеуказанного контента (включая оборудование, программное обеспечение, комбинацию аппаратного и программного обеспечения и т.п.) может рассматриваться как один или несколько процессоров.
[00110] В некоторых случаях система 10 кодирования и декодирования видео, показанная на фиг. 1A является просто примером, и технологии этой заявки применимы к настройкам кодирования видео (например, кодирования видео или декодирования видео), которые не обязательно содержат какой-либо обмен данными между устройством кодирования и устройством декодирования. В другом примере данные могут быть извлечены из локальной памяти, переданы в потоковом режиме по сети и т.п. Устройство кодирования видео может кодировать данные и сохранять данные в памяти, и/или устройство декодирования видео может извлекать данные из памяти и декодировать данные. В некоторых примерах кодирование и декодирование выполняются устройствами, которые не обмениваются данными друг с другом, а просто кодируют данные в память и/или извлекают данные из памяти и декодируют данные.
[00111] ФИГ. 1B - схема, иллюстрирующая пример системы 40 кодирования видео, включающей в себя кодер 20 на фиг. 2 и/или декодер 30 на фиг. 3 согласно примерному варианту осуществления. Система 40 кодирования видео может реализовывать комбинацию различных технологий в вариантах осуществления этой заявки. В проиллюстрированной реализации система 40 кодирования видео может содержать устройство 41 формирования изображения, кодер 20, декодер 30 (и/или кодер/декодер видео, реализованный логической схемой 47 блока 46 обработки), антенну 42, один или несколько процессоров 43, одно или несколько запоминающих устройств 44 и/или устройство 45 отображения.
[00112] Как показано на фиг. 1B, устройство 41 формирования изображения, антенна 42, блок 46 обработки, логическая схема 47, кодер 20, декодер 30, процессор 43, память 44 и/или устройство 45 отображения могут обмениваться данными друг с другом. Как описано, хотя система 40 кодирования видео проиллюстрирована как с кодером 20, так и с декодером 30, в различных примерах система 40 кодирования видео может содержать только кодер 20 или только декодер 30.
[00113] В некоторых примерах антенна 42 может быть сконфигурирована для передачи или приема закодированного битового потока видеоданных. Кроме того, в некоторых примерах устройство 45 отображения может быть сконфигурировано для представления видеоданных. В некоторых примерах логическая схема 47 может быть реализована блоком 46 обработки. Блок 46 обработки может содержать логику интегральной схемы для конкретных приложений (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. Система 40 кодирования видео также может содержать дополнительный процессор 43. Аналогичным образом, дополнительный процессор 43 может содержать логику интегральной схемы для конкретных приложений (application-specific integrated circuit, ASIC), графический процессор, универсальный процессор и т.п. В некоторых примерах логическая схема 47 может быть реализована аппаратными средствами, например, специализированным оборудованием для кодирования видео, а процессор 43 может быть реализован с использованием программного обеспечения общего назначения, операционной системы и т.п. Кроме того, память 44 может быть любым типом памяти, например, энергозависимой памятью (например, статической памятью с произвольным доступом (Static Random Access Memory, SRAM) или динамической памятью с произвольным доступом (Dynamic Random Access Memory, DRAM)), или энергонезависимой памятью (например, флэш-памятью). В неограничивающем примере память 44 может быть реализована с помощью кэш-памяти. В некоторых примерах логическая схема 47 может обращаться к памяти 44 (например, для реализации буфера изображения). В других примерах логическая схема 47 и/или блок 46 обработки могут содержать память (например, кэш) для реализации буфера изображения или тому подобного.
[00114] В некоторых примерах кодер 20, реализованный логической схемой, может содержать буфер изображения (например, реализованный блоком 46 обработки или памятью 44) и блок обработки графики (например, реализованный блоком 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может содержать кодер 20, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на фиг. 2 и/или любую другую систему или подсистему кодера, описанную в этой спецификации. Логическая схема может быть сконфигурирована для выполнения различных операций, описанных в этой спецификации.
[00115] В некоторых примерах декодер 30 может быть реализован логической схемой 47 аналогичным образом для реализации различных модулей, которые описаны со ссылкой на декодер 30 на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в этой спецификации. В некоторых примерах декодер 30, реализованный логической схемой, может содержать буфер изображения (например, реализованный блоком 2820 обработки или памятью 44) и блок обработки графики (например, реализованный блоком 46 обработки). Графический процессор может быть коммуникативно связан с буфером изображения. Блок обработки графики может содержать декодер 30, реализованный логической схемой 47, для реализации различных модулей, которые описаны со ссылкой на фиг. 3 и/или любую другую систему или подсистему декодера, описанную в этой спецификации.
[00116] В некоторых примерах антенна 42 может быть сконфигурирована для приема кодированного битового потока видеоданных. Как описано, кодированный битовый поток может содержать данные, указатель, значение индекса, данные выбора режима и т.п., относящиеся к кодированию видеокадров, описанному в этой спецификации, например, данные, относящиеся к разделению кодирования (например, коэффициент преобразования или квантованный коэффициент преобразования, необязательный указатель (как описано) и/или данные, которые определяют разделение кодирования). Система 40 кодирования видео может дополнительно содержать декодер 30, подключенный к антенне 42 и сконфигурированный для декодирования кодированного битового потока. Устройство 45 отображения сконфигурировано для представления видеокадра.
[00117] Следует понимать, что в этом варианте осуществления этой заявки для примера, описанного со ссылкой на кодер 20, декодер 30 может быть сконфигурирован для выполнения обратного процесса. Что касается сигнализации элемента синтаксиса, декодер 30 может быть сконфигурирован для приема и синтаксического анализа такого элемента синтаксиса и, соответственно, декодирования связанных видеоданных. В некоторых примерах кодер 20 может энтропийно кодировать элемент синтаксиса в кодированном битовом потоке видео. В таких примерах декодер 30 может синтаксически анализировать элемент синтаксиса и, соответственно, декодировать связанные видеоданные.
[00118] Следует отметить, что способ, описанный в вариантах осуществления этой заявки, в основном используется в процессе внешнего предсказания. Этот процесс выполняется как кодером 20, так и декодером 30. Кодер 20 и декодер 30 в вариантах осуществления этой заявки могут быть, например, кодером и декодером, соответствующими протоколу стандарта видео, например H.263, H.264, HEVC, MPEG-2, MPEG-4, VP8, или VP9, или протокол стандарта видео следующего поколения (например, H.266).
[00119] ФИГ. 2 является схематической/концептуальной блок-схемой примера кодера 20 для реализации вариантов осуществления этой заявки. В примере на фиг. 2, кодер 20 содержит блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, блок 220 контурного фильтра, буфер декодированного изображения (decoded picture buffer, DPB) 230, блок 260 обработки предсказания и блок 270 энтропийного кодирования. Блок 260 обработки предсказания может содержать блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 выбора режима. Блок 244 внешнего предсказания может содержать модуль оценки движения и блок компенсации движения (не показаны). Кодер 20, показанный на фиг. 2 также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.
[00120] Например, блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 обработки предсказания и блок 270 энтропийного кодирования образуют прямой путь сигнала кодера 20, в то время как, например, модуль обратного квантования 210, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (decoded picture buffer, DPB) и блок 260 обработки предсказания образуют обратный путь сигнала кодера. Обратный путь сигнала кодера соответствует пути сигнала декодера (ссылаясь на декодер 30 на фиг.3).
[00121] Кодер 20 принимает, например, через вход 202 изображение 201 или блок 203 изображения для изображения 201, например изображение в последовательности изображений, образующих видео или видеопоследовательность. Блок 203 изображения может также называться текущим блоком изображения или блоком изображения, который должен быть закодирован. Изображение 201 может упоминаться как текущее изображение или изображение, которое должно быть закодировано (в частности, при кодировании видео, чтобы отличать текущее изображение от других изображений, например, ранее кодированных и/или декодированных изображений той же видеопоследовательности, то есть видеопоследовательности, которая также включает текущее изображение).
[00122] Вариант осуществления кодера 20 может содержать блок разделения (который не показан на фиг. 2), сконфигурированный для разделения изображения 201 на множество блоков, таких как блоки 203 изображения. Изображение 201 обычно разделяется на множество неперекрывающихся блоков. Блок разделения может быть сконфигурирован для использования одного и того же размера блока для всех изображений в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между изображениями, или поднаборами, или группами изображений, и разделения каждого изображения на соответствующие блоки.
[00123] В одном примере блок 260 обработки предсказания в кодере 20 может быть сконфигурирован для выполнения любой комбинации технологий разделения, описанных выше.
[00124] Подобно изображению 201, блок 203 изображения также рассматривается или может рассматриваться как двумерный массив или матрица выборок со значениями выборок, хотя размер блока 203 изображения меньше, чем размер изображения 201. Другими словами, блок 203 изображения может содержать, например, один массив выборок (например, массив яркости в случае монохромного изображения 201), три массива выборок (например, один массив яркости и два массива цветности в случае цветного изображения) или любое другое количество и/или тип массивов в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или осях) блока 203 изображения определяет размер блока 203 изображения.
[00125] Кодер 20, показанный на фиг. 2 сконфигурирован для поблочного кодирования изображения 201. Например, кодирование и предсказание выполняются для каждого блока 203 изображения.
[00126] Блок 204 вычисления остатка сконфигурирован для вычисления остаточного блока 205 на основе блока 203 изображения и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены ниже), например, путем вычитания значений выборок блока 265 предсказания из значений выборки блока 203 изображения выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.
[00127] Блок 206 обработки преобразования сконфигурирован для применения преобразования, например, дискретного косинусного преобразования (discrete cosine transform, DCT) или дискретного синусоидального преобразования (discrete sine transform, DST), к значениям выборки остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициент 207 преобразования также может называться остаточным коэффициентом преобразования и представляет остаточный блок 205 в области преобразования.
[00128] Блок 206 обработки преобразования может быть сконфигурирован для применения целочисленных аппроксимаций DCT/DST, таких как преобразования, указанные в HEVC/H.265. По сравнению с ортогональным преобразованием DCT, такие целочисленные аппроксимации обычно масштабируются на основе коэффициента. Чтобы сохранить норму остаточного блока, который обрабатывается с использованием прямого и обратного преобразований, дополнительный масштабный коэффициент применяется как часть процесса преобразования. Масштабный коэффициент обычно выбирается на основе некоторых ограничений, например, масштабный коэффициент является степенью двойки для операции сдвига, битовой глубиной коэффициента преобразования и компромиссом между точностью и затратами на реализацию. Например, конкретный масштабный коэффициент указан для обратного преобразования, например, блоком 212 обработки обратного преобразования на стороне декодера 30 (и соответствующее обратное преобразование, например, блоком 212 обработки обратного преобразования на стороне кодера 20), и, соответственно, соответствующий масштабный коэффициент может быть указан для прямого преобразования блоком 206 обработки преобразования на стороне кодера 20.
[00129] Блок 208 квантования сконфигурирован для квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209 преобразования, например, путем применения скалярного квантования или векторного квантования. Квантованный коэффициент 209 преобразования также может упоминаться как квантованный остаточный коэффициент 209. Процесс квантования может уменьшить битовую глубину, относящуюся к некоторым или всем коэффициентам 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть модифицирована путем регулировки параметра квантования (quantization parameter, QP). Например, для скалярного квантования могут использоваться разные масштабы для достижения более точного или более грубого квантования. Меньший размер шага квантования соответствует более точному квантованию, а больший размер шага квантования соответствует более грубому квантованию. Соответствующий размер шага квантования может быть указан параметром квантования (quantization parameter, QP). Например, параметр квантования может быть индексом для заранее определенного набора подходящих размеров шага квантования. Например, меньший параметр квантования может соответствовать более точному квантованию (меньшему размеру шага квантования), а больший параметр квантования может соответствовать более грубому квантованию (большему размеру шага квантования) или наоборот. Квантование может содержать деление на размер шага квантования и соответствующее квантование или обратное квантование, например, выполняемое блоком 210 обратного квантования, или может содержать умножение на размер шага квантования. В вариантах осуществления согласно некоторым стандартам, таким как HEVC, параметр квантования может использоваться для определения размера шага квантования. Обычно размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации с фиксированной точкой уравнения, включающего в себя деление. Дополнительные масштабные коэффициенты могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, где норма остаточного блока может быть модифицирована из-за масштаба, используемого в аппоксимации фиксированной точки уравнения для размера шага квантования и параметра квантования. В примерной реализации масштаб обратного преобразования может быть объединен с масштабом деквантования. В качестве альтернативы настроенная таблица квантования может использоваться и передаваться сигнализацией от кодера к декодеру, например, в битовом потоке. Квантование - это операция с потерями, при которой потери возрастают с увеличением размера шага квантования.
[00130] Блок 210 обратного квантования сконфигурирован для применения обратного квантования блока 208 квантования к квантованному коэффициенту для получения деквантованного коэффициента 211, например, применения на основе или с использованием того же размера шага квантования, что и блок 208 квантования, инверсии схемы квантования, применяемой блоком 208 квантования. Деквантованный коэффициент 211 также может упоминаться как деквантованный остаточный коэффициент 211 и соответствовать коэффициенту 207 преобразования, хотя деквантованный коэффициент 211 обычно отличается от коэффициента преобразования из-за потерь, вызванных квантованием.
[00131] Блок 212 обработки обратного преобразования сконфигурирован для применения обратного преобразования для преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (discrete cosine transform, DCT) или обратного дискретного синусоидального преобразования (discrete sine transform, DST), чтобы получить блок 213 обратного преобразования в области выборки. Блок 213 обратного преобразования также может называться блоком 213 деквантования обратного преобразования или остаточным блоком 213 обратного преобразования.
[00132] Блок 214 восстановления (например, сумматор 214) сконфигурирован для добавления блока 213 обратного преобразования (а именно, восстановленного остаточного блока 213) к блоку 265 предсказания, например, путем добавления значений выборок восстановленного остаточного блока 213 и значений выборок блока 265 предсказания, чтобы получить восстановленный блок 215 в области выборки.
[00133] Необязательно, блок 216 буфера («буфер» 216 для краткости), например, линейный буфер 216, сконфигурирован для буферизации или хранения восстановленного блока 215 и соответствующего значения выборки, например, для внутреннего предсказания. В других вариантах осуществления кодер может быть сконфигурирован для использования нефильтрованного восстановленного блока и/или соответствующего значения выборки, которые хранятся в блоке 216 буфера, для выполнения любого типа оценки и/или предсказания, например, внутреннего предсказания.
[00134] Например, в варианте осуществления кодер 20 может быть сконфигурирован так, чтобы блок 216 буфера сконфигурирован для хранения восстановленного блока 215, не только используемого для блока 254 внутреннего предсказания, но также используемого для блока 220 контурного фильтра (который не показан на фиг.2), и/или так, что, например, блок 216 буфера и блок 230 буфера декодированного изображения образуют один буфер. В других вариантах осуществления фильтрованный блок 221 и/или блок или выборка (которые не показаны на фиг.2) из буфера 230 декодированных изображений используется в качестве базиса или основы для блока 254 внутреннего предсказания.
[00135] Блок 220 контурного фильтра («контурный фильтр» 220 для краткости) сконфигурирован для фильтрации восстановленного блока 215 для получения фильтрованного блока 221, сглаживания переходов пикселей или улучшения качества видео. Блок 220 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр с адаптивным смещением к выборке (sample-adaptive offset, SAO) или другие фильтры, например двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или совместный фильтр. Хотя блок 220 контурного фильтра показан на фиг. 2, в другой реализации блок 220 контурного фильтра может быть реализован как пост-контурный фильтр. Отфильтрованный блок 221 также может называться фильтрованным восстановленным блоком 221. Буфер 230 декодированных изображений может хранить восстановленный кодированный блок после того, как блок 220 контурного фильтра выполнит операцию фильтрации на восстановленном кодированном блоке.
[00136] В варианте осуществления кодер 20 (соответственно, блок 220 контурного фильтра) может быть сконфигурирован для вывода параметра контурного фильтра (например, выборочной информации адаптивного смещения), например, непосредственно или после энтропийного кодирования, выполняемого блоком 270 энтропийного кодирования или любым другим блоком энтропийного кодирования, так что декодер 30 может принимать и применять один и тот же параметр контурного фильтра для декодирования.
[00137] Буфер 230 декодированных изображений (decoded picture buffer, DPB) может быть памятью опорных изображений, в которой хранятся данные опорных изображений для использования при кодировании видеоданных кодером 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (dynamic random access memory, DRAM) (включая синхронную DRAM (synchronous DRAM, SDRAM), магниторезистивную RAM (magnetoresistive RAM, MRAM), резистивную RAM (resistive RAM, RRAM)) или другие типы запоминающих устройств. DPB 230 и буфер 216 могут быть предоставлены одним и тем же запоминающим устройством или отдельными запоминающими устройствами. В примере буфер 230 декодированного изображения (decoded picture buffer, DPB) сконфигурирован для хранения отфильтрованного блока 221. Буфер 230 декодированных изображений может быть дополнительно сконфигурирован для хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221, одного и того же текущего изображения или разных изображений, например, ранее восстановленных изображений, и может предоставлять полностью ранее восстановленные, то есть декодированные изображения (и соответствующие опорные блоки и выборки) и/или частично восстановленное текущее изображение (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. В одном примере, если восстановленный блок 215 восстанавливается без внутриконтурной фильтрации, буфер 230 декодированного изображения (decoded picture buffer, DPB) конфигурируется для хранения восстановленного блока 215.
[00138] Блок 260 обработки предсказания, также называемый блоком 260 обработки предсказания блока, сконфигурирован для приема или получения блока 203 изображения (текущего блока 203 изображения текущего изображения 201) и данных восстановленного изображения, например, опорных выборок того же (текущего) изображения из буфера 216 и/или данных 231 опорных изображений одного или более ранее декодированных изображений из буфера 230 декодированного изображения, и обработки таких данных для предсказания, а именно, чтобы обеспечить блок 265 предсказания, который может представлять собой блок 245 внешнего предсказания или блок 255 внутреннего предсказания.
[00139] Блок 262 выбора режима может быть сконфигурирован для выбора режима предсказания (например, режима внутреннего или внешнего предсказания) и/или соответствующего блока 245 или 255 предсказания, который будет использоваться в качестве блока 265 предсказания, для вычисления остаточного блока 205 и для восстановления восстановленного блока 215.
[00140] В варианте осуществления блок 262 выбора режима может быть сконфигурирован для выбора режима предсказания (например, из режимов предсказания, поддерживаемых блоком 260 обработки предсказания), где режим предсказания обеспечивает наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или обеспечивает минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или учитывает или уравновешивает и то, и другое. Блок 262 выбора режима может быть сконфигурирован для определения режима предсказания на основе оптимизации искажения скорости (rate distortion optimization, RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение скорости, или выбора режима предсказания, для которого связанное искажение скорости, по меньшей мере, удовлетворяет критерию выбора режима предсказания.
[00141] Нижеследующее подробно описывает обработку предсказания (например, выполняемую блоком 260 обработки предсказания) и выбор режима (например, выполняемый блоком 262 выбора режима), которые выполняются примером для кодера 20.
[00142] Как описано выше, кодер 20 сконфигурирован для определения или выбора наилучшего или оптимального режима предсказания из набора (заранее определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режим внутреннего предсказания и/или режим внешнего предсказания.
[00143] Набор режимов внутреннего предсказания может содержать 35 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, такие как определенные в H.265, или могут содержать 67 различных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, такие как те, которые определены в H.266, находящемся в стадии разработки.
[00144] В возможной реализации набор режимов внешнего предсказания зависит от доступных опорных изображений (а именно, например, по меньшей мере, частично декодированных изображений, хранящихся в DBP 230, как описано выше), и других параметров внешнего предсказания, например, зависит от того, все опорное изображение или только часть опорного изображения, например, область окна поиска вокруг области текущего блока, используется для поиска наиболее подходящего опорного блока и/или, например, зависит от того, применяется ли интерполяция пикселей такая как интерполяция полупикселя и/или четверти пикселя. Набор режимов внешнего предсказания может содержать, например, режим расширенного предсказания вектора движения (Advanced Motion Vector Prediction, AMVP) и режим слияния (merge). В конкретной реализации набор режимов внешнего предсказания может содержать режим AMVP на основе уточненной контрольной точки и режим слияния на основе уточненной контрольной точки в вариантах осуществления этой заявки. В примере блок 254 внутреннего предсказания может быть сконфигурирован для выполнения любой комбинации технологий внешнего предсказания, описанных ниже.
[00145] В дополнение к вышеупомянутым режимам предсказания в вариантах осуществления этой заявки также могут применяться режим пропуска и/или прямой режим.
[00146] Блок 260 обработки предсказания может быть дополнительно сконфигурирован для разделения блока 203 изображения на более мелкие части блока или субблоки, например, путем итеративного использования разбиения квадродерева (quad-tree, QT), разбиения двоичного дерева (binary-tree, BT), разбиения троичного дерева (triple-tree, TT) или любую их комбинацию, и выполнения, например, предсказания для каждого из разделов блоков или субблоков. Выбор режима содержит выбор древовидной структуры разделенного блока 203 изображения и выбор режима предсказания, используемого для каждого из разделов блока или субблоков.
[00147] Блок 244 внешнего предсказания может содержать блок оценки движения (motion estimation, ME) (который не показан на фиг.2) и блок компенсации движения (motion compensation, MC) (который не показан на фиг.2). Блок оценки движения сконфигурирован для приема или получения блока 203 изображения (текущий блок 203 изображения текущего изображения 201) и декодированного изображения 231 или по меньшей мере одного или нескольких ранее восстановленных блоков, например, одного или нескольких восстановленных блоков других/отличных ранее декодированных изображений 231 для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированное изображение 31. Другими словами, текущее изображение и ранее декодированное изображение 31 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность.
[00148] Например, кодер 20 может быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же изображения или различных изображений из множества других изображений, а также обеспечить опорное изображение и/или смещение (пространственное смещение) между местоположением (X, Y координаты) опорного блока и местоположением текущего блока в качестве параметра внешнего предсказания для блока оценки движения (который не показан на фиг. 2). Это смещение также называется вектором движения (motion vector, MV).
[00149] Блок компенсации движения сконфигурирован для получения параметра внешнего предсказания и выполнения внешнего предсказания на основе или посредством использования параметра внешнего предсказания для получения блока 245 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения (который не показан на фиг.2), может содержать выборку или генерацию блока предсказания на основе вектора движения/блока, определенного посредством оценки движения (возможно, выполнение интерполяции с точностью до субпикселей). Интерполяционная фильтрация может генерировать дополнительные выборки пикселей из известных выборок пикселей. Это потенциально увеличивает количество кандидатных блоков предсказания, которые могут использоваться для кодирования блока изображения. После приема вектора движения для PU текущего блока изображения блок 246 компенсации движения может найти блок предсказания, на который указывает вектор движения, в одном из списков опорных изображений. Блок 246 компенсации движения также может генерировать элемент синтаксиса, связанный с блоком и слайсом видео, так что декодер 30 использует элемент синтаксиса для декодирования блока изображения в слайсе видео.
[00150] В частности, блок 244 внешнего предсказания может передавать элемент синтаксиса в блок 270 энтропийного кодирования. Элемент синтаксиса содержит параметр внешнего предсказания (например, информацию указания выбора режима внешнего предсказания, используемого для предсказания текущего блока после прохождения множества режимов внешнего предсказания). В возможном сценарии применения, если существует только один режим внешнего предсказания, параметр внешнего предсказания может не переноситься в элементе синтаксиса. В этом случае сторона 30 декодера может непосредственно выполнять декодирование с использованием режима предсказания по умолчанию. Можно понять, что блок 244 внешнего предсказания может быть сконфигурирован для выполнения любой комбинации технологий внешнего предсказания.
[00151] Блок 254 внутреннего предсказания сконфигурирован для получения, например, приема блока 203 изображения (текущего блока изображения) и одного или нескольких ранее восстановленных блоков, например, восстановленных соседних блоков, одного и того же изображения для внутренней оценки. Например, кодер 20 может быть сконфигурирован для выбора режима внутреннего предсказания из множества (заранее определенных) режимов внутреннего предсказания.
[00152] В варианте осуществления кодер 20 может быть сконфигурирован для выбора режима внутреннего предсказания согласно критерию оптимизации, например, на основе минимального остатка (например, режим внутреннего предсказания, обеспечивающий блок 255 предсказания, который наиболее похож на блок 203 текущего изображения) или минимального искажения скорости.
[00153] Блок 254 внутреннего предсказания дополнительно сконфигурирован для определения блока 255 внутреннего предсказания на основе, например, параметра внутреннего предсказания в выбранном режиме внутреннего предсказания. В любом случае, после выбора режима внутреннего предсказания для блока, блок 254 внутреннего предсказания дополнительно конфигурируется для предоставления параметра внутреннего предсказания, то есть информации, указывающей выбранный режим внутреннего предсказания для блока, в блок 270 энтропийного кодирования. В примере блок 254 внутреннего предсказания может быть сконфигурирован для выполнения любой комбинации технологий внутреннего предсказания.
[00154] В частности, блок 254 внутреннего предсказания может передавать элемент синтаксиса в блок 270 энтропийного кодирования. Элемент синтаксиса содержит параметр внутреннего предсказания (например, информацию указания выбора режима внутреннего предсказания, используемого для предсказания текущего блока после прохождения множества режимов внутреннего предсказания). В возможном сценарии применения, если существует только один режим внутреннего предсказания, параметр внутреннего предсказания может не переноситься в элементе синтаксиса. В этом случае сторона 30 декодера может непосредственно выполнять декодирование с использованием режима предсказания по умолчанию.
[00155] Блок 270 энтропийного кодирования сконфигурирован для применения (или неприменения) алгоритма или схемы энтропийного кодирования (например, схемы кодирования с переменной длиной (variable length coding, VLC), схемы контекстно-адаптивного VLC (context adaptive VLC, CAVLC), схемы арифметического кодирования, схемы контекстно-адаптивного двоичного арифметического кодирования (context adaptive binary arithmetic coding, CABAC), схемы контекстно-адаптивного двоичного арифметического кодирования на основе синтаксиса (syntax-based context-adaptive binary arithmetic coding, SBAC), схемы энтропийного кодирования с разделением вероятностного интервала (probability interval partitioning entropy, PIPE) или другой методологии или технологии энтропийного кодирования) к одному или всем из квантованного остаточного коэффициента 209, параметра внешнего предсказания, параметра внутреннего предсказания и/или параметра контурного фильтра, чтобы получить данные 21 закодированного изображения, которые могут выводиться через вывод 272, например, в форме закодированного битового потока 21. Закодированный битовый поток может быть передан в декодер 30 видео или сохранен для последующей передачи или извлечения декодером 30 видео. Блок 270 энтропийного кодирования может быть дополнительно сконфигурирован для энтропийного кодирования другого элемента синтаксиса для текущего фрагмента видео, который кодируется.
[00156] Другие структурные вариации кодера 20 видео могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования для некоторых блоков или кадров. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.
[00157] В частности, в этом варианте осуществления этой заявки кодер 20 может быть сконфигурирован для реализации способа внешнего предсказания, описанного в следующих вариантах осуществления.
[00158] Следует понимать, что другие структурные вариации кодера 20 видео могут использоваться для кодирования видеопотока. Например, для некоторых блоков изображения или кадров изображения кодер 20 видео может непосредственно квантовать остаточный сигнал. В этом случае обработка блоком 206 обработки преобразования не требуется, и, соответственно, обработка блоком 212 обработки обратного преобразования также не требуется. В качестве альтернативы для некоторых блоков изображения или кадров изображения кодер 20 видео не генерирует остаточные данные. Соответственно, в этом случае обработка блоком 206 обработки преобразования, блоком 208 квантования, блоком 210 обратного квантования и блоком 212 обработки обратного преобразования не требуется. В качестве альтернативы, кодер 20 видео может непосредственно хранить восстановленный блок изображения в качестве опорного блока. В этом случае обработка фильтром 220 не требуется. В качестве альтернативы, блок 208 квантования и блок 210 обратного квантования в кодере 20 видео могут быть объединены. Контурный фильтр 220 не является обязательным. Кроме того, в случае кодирования со сжатием без потерь блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования также являются необязательными. Следует понимать, что в различных сценариях применений блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут использоваться выборочно.
[00159] ФИГ. 3 является схематической/концептуальной блок-схемой примера декодера 30 для реализации вариантов осуществления этой заявки. Декодер 30 видео сконфигурирован для приема, например, данных закодированного изображения (например, закодированного битового потока) 21, полученных посредством кодирования кодером 20, для получения декодированного изображения 231. В процессе декодирования декодер 30 видео принимает от кодера 20 видео видеоданные, например, кодированный битовый поток видео, который представляет блок изображения в кодированном слайсе видео и связанный с ним элемент синтаксиса.
[00160] В примере на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), буфер 316, контурный фильтр 320, буфер 330 декодированного изображения и блок 360 обработки предсказания. Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания, блок 354 внутреннего предсказания и блок 362 выбора режима. В некоторых примерах декодер 30 видео может выполнять этап декодирования, который обычно является обратным этапу кодирования, описанному со ссылкой на кодер 20 видео на фиг. 2.
[00161] Блок 304 энтропийного декодирования сконфигурирован для энтропийного декодирования данных 21 закодированного изображения для получения, например, квантованного коэффициента 309 и/или декодированного параметра кодирования (который не показан на фиг. 3), например, любого одного или всех из параметра внешнего предсказания, параметра внутреннего предсказания, параметра контурного фильтра и/или другого элемента синтаксиса (которые декодируются). Блок 304 энтропийного декодирования дополнительно сконфигурирован для пересылки параметра внешнего предсказания, параметра внутреннего предсказания и/или другого элемента синтаксиса в блок 360 обработки предсказания. Декодер 30 видео может принимать элемент синтаксиса на уровне слайса видео и/или уровне блока изображения.
[00162] Блок 310 обратного квантования может быть идентичен по функциям блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функциям блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функциям блоку 214 восстановления, буфер 316 может быть идентичен по функциям буферу 216, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, и буфер 330 декодированного изображения может быть идентичен по функции буферу 230 декодированного изображения.
[00163] Блок 360 обработки предсказания может содержать блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть аналогичен по функциям блоку 244 внешнего предсказания, а блок 354 внутреннего предсказания может быть аналогичен по функциям блоку 254 внутреннего предсказания. Блок 360 обработки предсказания обычно конфигурируется для выполнения предсказания блока и/или получения блока 365 предсказания из закодированных данных 21, а также приема или получения (явно или неявно) параметра, связанного с предсказанием, и/или информации о выбранном режиме предсказания, например, из блока 304 энтропийного декодирования.
[00164] Когда слайс видео кодируется в слайс с внутренним кодированием (I), блок 354 внутреннего предсказания в блоке 360 обработки предсказания конфигурируется для генерации блока 365 предсказания для блока изображения в текущем слайсе видео на основе сигнализированного режима внутреннего предсказания и данные ранее декодированного блока текущего кадра или изображения. Когда видеокадр кодируется во внешне кодированный (а именно, B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) в блоке 360 обработки предсказания конфигурируется для генерации блока 365 предсказания видео блока в текущем слайсе видео на основе вектора движения и другого элемента синтаксиса, который принят из блока 304 энтропийного декодирования. Во внешнем предсказании, блок предсказания может быть сгенерирован из опорного изображения в списке опорных изображений. Декодер 30 видео может создавать списки опорных кадров, список 0 и список 1, используя технологию создания по умолчанию и на основе опорных изображений, хранящихся в DPB 330.
[00165] Блок 360 обработки предсказания сконфигурирован для определения информации предсказания блока видео в текущем слайсе видео путем синтаксического анализа вектора движения и другого элемента синтаксиса и генерации, используя информацию предсказания, блока предсказания текущего блока видео, который декодируется. В примере этой заявки блок 360 обработки предсказания определяет, используя некоторые принятые элементы синтаксиса, режим предсказания (например, внутреннего предсказания или внешнего предсказания) для кодирования блока видео в слайсе видео, тип слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информацию о конструкции одного или нескольких списков опорных изображений для слайса, вектор движения каждого внешне кодированного блока видео в слайсе, статус внешнего предсказания каждого внешне кодированного блока видео в слайсе и другой информации для декодирования блока видео в текущем видео слайсе. В другом примере этого раскрытия элемент синтаксиса, принятый декодером 30 видео из битового потока, содержит элемент синтаксиса в одном или нескольких наборах адаптивных параметров (adaptive parameter set, APS), набор параметров последовательности (sequence parameter set, SPS), набор параметров изображения (picture parameter set, PPS) или заголовок фрагмента.
[00166] Блок 310 обратного квантования может быть сконфигурирован для выполнения обратного квантования (а именно, деквантования) квантованного коэффициента преобразования, предоставленного в битовом потоке и декодированного блоком 304 энтропийного декодирования. Процесс обратного квантования может содержать использование параметра квантования, вычисленного кодером 20 видео для каждого блока видео в слайсе видео, для определения степени квантования, которая должна быть применена, а также степени обратного квантования, которая должна применяться.
[00167] Блок 312 обработки обратного преобразования сконфигурирован для применения обратного преобразования (например, обратного DCT, обратного целочисленного преобразования или концептуально аналогичного процесса обратного преобразования) к коэффициенту преобразования, чтобы сгенерировать остаточный блок в области пикселей.
[00168] Блок 314 восстановления (реконструкции) (например, сумматор 314) сконфигурирован для добавления блока 313 обратного преобразования (а именно, восстановленного остаточного блока 313) к блоку 365 предсказания, например, путем добавления значений выборок восстановленного остаточного блока 313 и значений выборки блока 365 предсказания, чтобы получить восстановленный блок 315 в области выборки.
[00169] Блок 320 контурного фильтра (либо в контуре кодирования, либо после контура кодирования) сконфигурирован для фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, сглаживания переходов пикселей или улучшения качества видео. В одном примере блок 320 контурного фильтра может быть сконфигурирован для выполнения любой комбинации технологий фильтрации, описанных ниже. Блок 320 контурного фильтра предназначен для представления одного или нескольких контурных фильтров, таких как фильтр удаления блочности, фильтр со смещением, адаптивным к выборке (смещение, адаптивное к выборке, SAO) или другие фильтры, например двусторонний фильтр, адаптивный контурный фильтр (adaptive loop filter, ALF), фильтр повышения резкости или сглаживания или колоборативный фильтр. Хотя блок 320 контурного фильтра показан на фиг. 3, в другой реализации блок 320 контурного фильтра может быть реализован как пост-контурный фильтр.
[00170] Затем декодированный блок 321 видео, в данном кадре или изображении сохраняется в буфере 330 декодированного изображения, который хранит опорное изображение, используемое для последующей компенсации движения.
[00171] Декодер 30 сконфигурирован для вывода, например, декодированного изображения 31 через вывод 332 для представления или просмотра пользователю.
[00172] Другие варианты декодера 30 видео могут использоваться для декодирования сжатого битового потока. Например, декодер 30 может генерировать выходной видеопоток без блока 320 контурного фильтра. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации декодер 30 видео может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.
[00173] В частности, в этом варианте осуществления этой заявки декодер 30 может быть сконфигурирован для реализации способа внешнего предсказания, описанного в следующих вариантах осуществления.
[00174] Следует понимать, что другие структурные вариации декодера 30 видео могут использоваться для декодирования кодированного битового потока видеоданных. Например, декодер 30 видео может генерировать выходной видеопоток без обработки фильтром 320. В качестве альтернативы, для некоторых блоков изображения или кадров изображения модуль 304 энтропийного декодирования в декодере 30 видео не получает квантованный коэффициент посредством декодирования. Соответственно, в этом случае обработка блоком 310 обратного квантования и блоком 312 обработки обратного преобразования не требуется. Контурный фильтр 320 не является обязательным. Кроме того, в случае сжатия без потерь блок 310 обратного квантования и блок 312 обработки обратного преобразования также являются необязательными. Следует понимать, что в различных сценариях применений блок внешнего предсказания и блок внутреннего предсказания могут использоваться выборочно.
[00175] Следует понимать, что в кодере 20 и декодере 30 в этой заявке результат обработки этапа может быть дополнительно обработан и затем выведен на следующий этап. Например, после такого этапа, как интерполяционная фильтрация, вывод вектора движения или циклическая фильтрация, над результатом обработки соответствующего этапа выполняется дополнительная операция, такая как отсечение или сдвиг.
[00176] Например, вектор движения, который является контрольной точкой текущего блока изображения и который выводится на основе вектора движения соседнего аффинно-кодированного блока, может быть дополнительно обработан. В данной заявке это однозначно не ограничено. Например, значение вектора движения ограничено конкретным диапазоном разрядности. Предполагая, что допустимая разрядность вектора движения равна bitDepth, значение вектора движения находится в диапазоне от -2^(bitDepth-1) до 2^(bitDepth-1)-1, где символ «^» представляет возведение в степень. Если bitDepth равен 16, значение находится в диапазоне от -32768 до 32767. Если bitDepth равно 18, значение находится в диапазоне от -131072 до 131071. Значение вектора движения может быть ограничено одним из следующих двух методов:
[00177] Метод 1: Удаляется старший значащий бит переполнения вектора движения:
[00178] Например, значение vx равно -32769, а 32767 выводится в соответствии с приведенными выше формулами. Значение хранится на компьютере в представлении с дополнением до двух, представление с дополнением до двух -32769 составляет 1,0111,1111,1111,1111 (17 бит), а обработка, выполняемая компьютером для переполнения, отбрасывает самый старший бит. Следовательно, значение vx равно 0111,1111,1111,1111, то есть 32767. Это значение согласуется с результатом, полученным в результате обработки по формулам.
[00179] Метод 2: Отсечение выполняется по вектору движения, и используются следующие формулы:
bitDepth – 1
bitDepth – 1
vx = Clip3(–2, 2 – 1, vx)
bitDepth – 1
bitDepth – 1
vy = Clip3(–2, 2 – 1, vy)
[00180] В приведенных выше формулах Clip3 определяется как усечение значения z до диапазона [x, y].
Clip3(x, y, z) =
[00181] ФИГ. 4 является схематической структурной схемой устройства 400 кодирования видео (например, устройства 400 кодирования видео или устройства 400 декодирования видео) согласно варианту осуществления этой заявки. Устройство 400 кодирования видео подходит для реализации вариантов осуществления, описанных в этой спецификации. В варианте осуществления устройство 400 кодирования видео может быть декодером видео (например, декодером 30 на фиг. 1A) или кодером видео (например, кодером 20 на фиг. 1A). В другом варианте осуществления устройство 400 кодирования видео может быть одним или несколькими компонентами декодера 30 на фиг. 1A или кодера 20 на фиг. 1А.
[00182] Устройство 400 кодирования видео содержит: входные порты 410 и приемник (Rx) 420, которые сконфигурированы для приема данных; процессор, логический блок или центральный процессор (CPU) 430, который сконфигурирован для обработки данных; передатчик (Tx) 440 и выходные порты 450, которые сконфигурированы для передачи данных; и память 460, сконфигурированная для хранения данных. Устройство 400 кодирования видео может дополнительно содержать опто-электрические компоненты и электрические-оптические (EO) компоненты, которые подключены к входным портам 410, приемнику 420, передатчику 440 и выходным портам 450 для выхода или входа оптического или электрического сигнала.
[00183] Процессор 430 реализован аппаратно и программно. Процессор 430 может быть реализован как одна или несколько микросхем CPU, ядер (например, многоядерный процессор), FPGA, ASIC и DSP. Процессор 430 обменивается данными с входными портами 410, приемником 420, передатчиком 440, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодирования (например, модуль 470 кодирования или модуль 470 декодирования). Модуль 470 кодирования/декодирования реализует варианты осуществления, раскрытые в этом описании, для реализации способа предсказания блока цветности, предусмотренного в вариантах осуществления этой заявки. Например, модуль 470 кодирования/декодирования реализует, обрабатывает или предоставляет различные операции кодирования. Следовательно, модуль 470 кодирования/декодирования обеспечивает существенное улучшение функции устройства 400 кодирования видео и влияет на перевод (преобразование) устройства 400 кодирования видео в другое состояние. В качестве альтернативы модуль 470 кодирования/декодирования реализован как инструкция, которая хранится в памяти 460 и выполняется процессором 430.
[00184] Память 460 содержит один или несколько дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкции и данных, считываемых во время выполнения программы. Память 460 может быть энергозависимой и/или энергонезависимой и может быть постоянным запоминающим устройством (ROM), памятью с произвольным доступом (RAM), троичной памятью с адресацией по содержанию (ternary content-addressable memory, TCAM) и/или статическая оперативная память (SRAM).
[00185] ФИГ. 5 - упрощенная блок-схема устройства 500, которое может использоваться как одно или оба из устройства-источника 12 и устройства-адресата 14 на фиг. 1A согласно примерному варианту осуществления. Устройство 500 может реализовывать технологии этой заявки. Другими словами, фиг. 5 является схематической блок-схемой реализации устройства кодирования или устройства декодирования (называемого для краткости устройством 500 кодирования) согласно варианту осуществления этой заявки. Устройство 500 кодирования может содержать процессор 510, память 530 и систему 550 шин. Процессор и память связаны через шинную систему. Память сконфигурирована для хранения инструкции. Процессор сконфигурирован для выполнения инструкции, хранящейся в памяти. В памяти устройства кодирования хранится программный код. Процессор может вызывать программный код, хранящийся в памяти, для выполнения различных способов кодирования или декодирования видео, описанных в этой заявке. Чтобы избежать повторения, подробности здесь не описываются.
[00186] В этом варианте осуществления этой заявки процессор 510 может быть центральным процессором (Central Processing Unit, "CPU" для краткости). В качестве альтернативы, процессор 510 может быть другим процессором общего назначения, процессором цифровых сигналов (DSP), специализированной интегральной схемой (ASIC), программируемой вентильной матрицей (FPGA) или другим программируемым логическим устройством, дискретным вентильным или транзисторным логическим устройством, дискретным аппаратным компонентом и т.п. Универсальный процессор может быть микропроцессором, любым традиционным процессором или т.п.
[00187] Память 530 может содержать устройство постоянной памяти (ROM) или устройство оперативной памяти (RAM). В качестве альтернативы 530 может использоваться любой другой подходящий тип запоминающего устройства. Память 530 может содержать код и данные 531, к которым имеет доступ процессор 510 через шину 550. Память 530 может дополнительно содержать операционную систему 533 и прикладную программу 535. Прикладная программа 535 содержит по меньшей мере одну программу, которая позволяет процессору 510 выполнять способ кодирования или декодирования видео, описанный в этой заявке. Например, прикладные программы 535 могут содержать приложения с 1 по N. Приложения дополнительно содержат приложение для кодирования или декодирования видео (называемое для краткости приложением для кодирования видео), которое выполняет способ кодирования или декодирования видео, описанный в этой заявке.
[00188] Система 550 шин может не только содержать шину данных, но также содержать шину питания, шину управления, шину сигнала состояния и т.п. Однако для ясного описания различные типы шин на чертеже обозначены как система 550 шин.
[00189] Необязательно, устройство 500 кодирования может дополнительно содержать одно или несколько устройств вывода, например, дисплей 570. В одном примере дисплей 570 может быть сенсорным дисплеем, который сочетает в себе дисплей и сенсорный блок касания, который может воспринимать ввод касания. Дисплей 570 может быть подключен к процессору 510 через шину 550.
[00190] Следующее сначала описывает концепции в этой заявке.
[00191] 1. Режим внешнего предсказания:
[00192] В HEVC используются два режима внешнего предсказания: режим расширенного предсказания вектора движения (advanced motion vector prediction, AMVP) и режим слияния (merge).
[00193] В режиме AMVP сначала проходят пространственные или временные соседние кодированные блоки (обозначенные как смежные блоки) текущего блока; список кандидатных векторов движения (который также может называться списком кандидатной информации о движении) создается на основе информации о движении соседних блоков; и затем оптимальный вектор движения определяется из списка кандидатных векторов движения на основе издержек искажения скорости. Кандидатная информация о движении, соответствующая минимальным издержкам искажения, используется в качестве предсказателя вектора движения (motion vector predictor, MVP)) текущего блока. Оба местоположения соседних блоков и порядок их прохождения предопределены. Издержки искажения скорости вычисляется в соответствии с формулой (1), где J представляет собой издержки искажения скорости (RD cost), SAD - это сумма абсолютных разностей (sum of absolute differences, SAD) между исходными значениями выборки и значениями выборки предсказания полученный посредством оценки движения с использованием предсказателя кандидатного вектора движения, R представляет битовую скорость, а λ представляет множитель Лагранжа. Сторона кодера передает значение индекса выбранного предсказателя вектора движения в списке кандидатных векторов движения и значение индекса опорного кадра на сторону декодера. Дополнительно, поиск движения выполняется в окрестности с центром в MVP, чтобы получить фактический вектор движения текущего блока. Сторона кодера передает разность (разность векторов движения) между MVP и фактическим вектором движения на сторону декодера.
(1)
[00194] В режиме слияния список кандидатных векторов движения сначала создается на основе информации о движении пространственных или временных соседних кодированных блоков текущего блока. Затем информация об оптимальном движении определяется из списка кандидатных векторов движения как информация о движении текущего блока на основе издержек искажения скорости. Значение индекса (обозначаемое в дальнейшем как индекс слияния) местоположения оптимальной информации о движении в списке кандидатных векторов движения передается на сторону декодера. Информация о пространственном и временном кандидатном движении текущего блока показана на фиг. 6А. Информация о кандидатном движении в пространстве поступает из пяти пространственных соседних блоков (A0, A1, B0, B1 и B2). Если соседний блок недоступен (соседний блок не существует, или соседний блок не закодирован, или режим предсказания, используемый для соседнего блока, не является режимом внешнего предсказания), информация о движении соседнего блока не добавляется к список кандидатных векторов движения. Временная информация о кандидатном движении текущего блока получается путем масштабирования MV блока в соответствующем местоположении в опорном кадре на основе подсчета порядка изображения (picture order count, POC) опорного кадра и текущего кадра. Сначала определяется, является ли блок в местоположении T в опорном кадре доступным. Если блок недоступен, выбирается блок в местоположении C.
[00195] Аналогично режиму AMVP, в режиме слияния оба местоположения соседних блоков и порядок их прохождения также предопределены. Кроме того, местоположения соседних блоков и порядок их прохождения могут отличаться в разных режимах.
[00196] Можно узнать, что один список кандидатных векторов движения необходимо поддерживать как в режиме AMVP, так и в режиме слияния. Перед тем, как каждый раз добавлять новую информацию о движении в список кандидатов, сначала проверяется, существует ли такая же информация о движении в списке. Если такая же информация о движении существует в списке, информация о движении не добавляется в список. Этот процесс проверки называется сокращением списка кандидатных векторов движения. Сокращение списка предназначено для того, чтобы избежать наличия в списке одинаковой информации о движении, чтобы избежать избыточного вычисления издержек искажения скорости.
[00197] При внешнем предсказании в HEVC одинаковая информация о движении используется для всех выборок блока кодирования, а затем выполняется компенсация движения на основе информации о движении для получения предсказателей выборок блока кодирования. Однако в блоке кодирования не все выборки имеют одинаковые характеристики движения. Использование одной и той же информации о движении может привести к неточному предсказанию компенсации движения и большей остаточной информации.
[00198] В существующих стандартах кодирования видео используется оценка движения согласования блоков на основе модели прямолинейного движения, и предполагается, что движение всех выборок в блоке является согласованным. Однако в реальном мире существует множество движений. Многие объекты находятся в непрямолинейном движении, например, вращающийся объект, американские горки, вращающиеся в разных направлениях, фейерверк и некоторые трюки в фильмах, особенно движущийся объект в сценарии пользовательского контента. Для этих движущихся объектов, если для кодирования используется технология компенсации движения блоков на основе модели прямолинейного движения в существующих стандартах кодирования, эффективность кодирования может сильно пострадать. В связи с этим для повышения эффективности кодирования вводится модель непрямолинейного движения, например аффинная модель движения.
[00199] На основании этого, с точки зрения различных моделей движения, режим AMVP может быть классифицирован на режим AMVP на основе прямолинейной модели и режим AMVP на основе непрямолинейной модели, а режим слияния может быть классифицирован на режим слияния на основе прямолинейной модели и режим слияния на основе непрямолинейной модели.
[00200] 2. Модель непрямолинейного движения:
[00201] Предсказание на основе модели непрямолинейного движения означает, что одна и та же модель движения используется как на стороне кодера, так и на стороне декодера для получения информации о движении каждого субблока текущего блока, а компенсация движения выполняется на основе информации о движении субблока для получения блока предсказания. Таким образом повышается эффективность предсказания. Обычные модели непрямолинейного движения включают в себя аффинную модель движения с 4 параметрами и аффинную модель движения с 6 параметрами.
[00202] Субблок в вариантах осуществления этой заявки может быть выборкой или блоком выборки N1×N2, полученным с использованием конкретного способа разделения, где и N1, и N2 являются положительными целыми числами, а N1 может быть равно N2 или может не быть равным N2.
[00203] аффинная модель движения с 4 параметрами выражается по формуле (2):
(2)
[00204] аффинная модель движения с 4 параметрами может быть представлена векторами движения двух выборок и их координатами относительно левой верхней выборки текущего блока. Выборка, используемая для представления параметра модели движения, называется контрольной точкой. Если верхняя левая выборка (0, 0) и верхняя правая выборка (W, 0) используются в качестве контрольных точек, сначала определяют соответствующие векторы движения(vx0, vy0) и (vx1, vy1)верхней левойвершины и правой верхней вершины текущего блока. Затем информация о движении каждого субблока текущего блока получается в соответствии с Формулой (3), где (x, y) представляет координаты субблока относительно верхней левой выборки текущего блока, а W представляет ширину текущего блока.
(3)
[00205] аффинная модель движения с 6 параметрами выражается по формуле (4):
(4)
[00206] Аффинная модель движения с 6 параметрами может быть представлена векторами движения трех выборок и их координатами относительно верхней левой выборки текущего блока. Если верхняя левая выборка (0, 0), верхняя правая выборка (W, 0) и нижняя левая выборка (0, H) текущего блока используются в качестве контрольных точек, сначала определяются соответствующие векторыдвижения (vx0, vy0), (vx1, vy1) и (vx2, vy2) верхней левойконтрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока. Затем информация о движении каждого субблока текущего блока получается в соответствии с Формулой (5), где (x, y) представляет координаты субблока относительно верхней левой выборки текущего блока, а W и H представляют ширину и высоту текущего блока соответственно.
(5)
[00207] Блок кодирования, который предсказывается с использованием аффинной модели движения, называется аффинно-кодированным блоком.
[00208] Как правило, информация о движении контрольной точки аффинно-кодированного блока может быть получена с использованием аффинной модели движения на основе режима расширенного предсказания вектора движения на основе (Advanced Motion Vector Prediction, AMVP) или режима слияния (Merge) на основе  аффинной модели движения.
[00209] Информация о движении контрольной точки текущего блока кодирования может быть получена с использованием способа предсказания унаследованного вектора движения контрольной точки или способа предсказания построенного вектора движения контрольной точки.
[00210] 3. Способ предсказания унаследованного вектора движения контрольной точки:
[00211] Способ предсказания унаследованного вектора движения контрольной точки заключается в использовании модели движения соседнего кодированного аффинно-кодированного блока для определения кандидатных векторов движения контрольной точки текущего блока.
[00212] Текущий блок, показанный на фиг. 6B используется в качестве примера. Блоки в соседних местоположениях вокруг текущего блока проходятся в конкретном порядке, например, A1->B1->B0->A0->B2, чтобы найти аффинно-кодированный блок, включающий в себя блок в соседнем местоположении текущего блока, и для получения информации о движении контрольной точки аффинно-кодированного блока. Кроме того, вектор движения контрольной точки (используемый в режиме слияния) или предсказатель вектора движения контрольной точки (используемый в режиме AMVP) текущего блока выводится с использованием модели движения, построенной на основе информации о движении контрольной точки аффинно-кодированного блока. Порядок A1->B1->B0->A0->B2 используется просто в качестве примера. В этой заявке также может использоваться другой порядок комбинации. Кроме того, блоки в соседних местоположениях не ограничиваются A1, B1, B0, A0 и B2.
[00213] Блок в соседнем местоположении может быть выборкой или блоком выборки предварительно установленного размера, полученным с использованием конкретного способа разделения. Например, блок выборки может быть блоком выборки 4×4, блоком выборки 4×2 или блоком выборки другого размера. Это не ограничено здесь.
[00214] Далее описывается процесс определения с использованием A1, и аналогичные процессы могут использоваться для других случаев.
[00215] Как показано на фиг. 4, если блок кодирования, в котором находится A1, является аффинно-кодированным блоком с 4 параметрами, получаются вектор движения (vx4, vy4) верхней левой вершины (x4, y4) и вектор движения (vx5, vy5) верхней правой вершины аффинно-кодированного блока. Вектор движения (vx0, vy0) верхней левой вершины (x0, y0) текущего аффинно-кодированного блока вычисляется в соответствии с формулой (6), а вектор движения (vx1, vy1) верхней правой вершины (x1, y1) текущего аффинно-кодированного блока вычисляетсясогласно Формуле (7).
(6)
(7)
[00216] Комбинация вектора движения (vx0, vy0) верхней левой вершины (x0, y0) и вектора движения (vx1, vy1) правой верхней вершины (x1, y1) текущего блока, которые получены на основе аффинно-кодированного блока, в котором находится A1, это кандидатные векторы движения контрольной точки текущего блока.
[00217] Если блок кодирования, в котором находится A1, является аффинно-кодированным блоком с 6 параметрами, получаются вектор движения (vx4, vy4) верхней левой вершины (x4, y4), вектор движения (vx5, vy5) верхней правой вершины (x5, y5) и вектор движения (vx6, vy6) нижней левой вершины (x6, y6) аффинно-кодированного блока. Вектор движения (vx0, vy0) верхней левой вершины (x0, y0) текущего блока вычисляется согласно Формуле (8), вектор движения (vx1, vy1) верхней правой вершины (x1, y1) текущего блока вычисляется согласноФормуле (9), а вектор движения(vx2, vy2) нижней левой вершины (x2, y2) текущего блока вычисляется согласно Формуле (10).
(8)
(9)
(10)
[00218] Комбинация вектора движения (vx0, vy0) верхней левой вершины (x0, y0), вектора движения (vx1, vy1) правой верхней вершины (x1, y1) и вектора движения (vx2, vy2) левой нижней вершины (x2, y2) текущего блока, которые получены на основе аффинно-кодированного блока, в котором находится A1, является кандидатным вектором движения контрольной точки текущего блока.
[00219] Следует отметить, что в этой заявке также могут использоваться другие модели движения, кандидатные местоположения, а также порядки поиска и прохождения. Подробности не описаны в вариантах осуществления этой заявки.
[00220] Следует отметить, что в этой заявке также могут использоваться способы для представления моделей движения соседних и текущих блоков кодирования на основе других контрольных точек. Подробности здесь не описаны.
[00221] 4. Способ 1 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки):
[00222] Способ предсказания построенного вектора движения контрольной точки состоит в объединении векторов движения соседних кодированных блоков вокруг контрольной точки текущего блока в качестве вектора движения контрольной точки текущего аффинно-кодированного блока без учета того, являются ли соседние кодированные блоки аффинно-кодированными блоками.
[00223] Векторы движения верхней левой вершины и верхней правой вершины текущего блока определяются на основе информации о движении соседних кодированных блоков вокруг текущего блока кодирования. Фиг. 6C используется в качестве примера для описания способа предсказания построенного вектора движения контрольной точки. Следует отметить, что фиг. 6C просто используется в качестве примера.
[00224] Как показано на фиг. 6C, векторы движения соседних кодированных блоков A2, B2 и B3 в верхнем левом углу используются в качестве кандидатных векторов движения для вектора движения верхней левой вершины текущего блока; и векторы движения соседних кодированных блоков B1 и B0 в правом верхнем углу используются в качестве кандидатных векторов движения для вектора движения правой верхней вершины текущего блока. Кандидатные векторы движения верхней левой вершины и верхней правой вершины объединяются, чтобы образовать множество с 2 кортежами пространств. Векторы движения двух кодированных блоков, содержащихся в  пространстве с 2 кортежами, могут использоваться в качестве кандидатных векторов движения контрольной точки текущего блока, как показано в следующей Формуле (11A):
(11A)
где  представляет вектор движения A2,  представляет вектор движения B1,  представляет вектор движения B0,  представляет вектор движения B2, а  представляет вектор движения B3.
[00225] Как показано на фиг. 6C, векторы движения соседних кодированных блоков A2, B2 и B3 в верхнем левом углу используются в качестве кандидатных векторов движения для вектора движения верхней левой вершины текущего блока; векторы движения соседних кодированных блоков B1 и B0 в правом верхнем углу используются в качестве кандидатных векторов движения для вектора движения правой верхней вершины текущего блока; и векторы движения соседних кодированных блоков A0 и A1 в нижнем левом углу используются в качестве кандидатных векторов движения для вектора движения левой нижней вершины текущего блока. Кандидатные векторы движения верхней левой вершины, верхней правой вершины и нижней левой вершины объединяются в  пространство с 3 кортежами. Векторы движения трех кодированных блоков, содержащихся в пространстве с 3 кортежами, могут использоваться в качестве кандидатных векторов движения контрольной точки текущего блока, как показано в следующих формулах (11B) и (11C):
(11B)
(11C)
где  представляет вектор движения A2,  представляет вектор движения B1,  представляет вектор движения B0,  представляет вектор движения B2,  представляет вектор движения B3,  представляет вектор движения A0, и  представляет вектор движения A1.
[00226] Следует отметить, что в этой заявке также могут использоваться другие способы объединения векторов движения контрольных точек. Подробности здесь не описаны.
[00227] Следует отметить, что в этой заявке также могут использоваться способы для представления моделей движения соседних и текущих блоков кодирования на основе других контрольных точек. Подробности здесь не описаны.
[00228] 5. Способ 2 предсказания построенного вектора движения контрольной точки (построенных векторов движения контрольной точки), как показано на фиг. 6D:
[00229] Этап 601: Получить информацию о движении контрольных точек текущего блока.
[00230] Например, на фиг. 6C CPk (k=1, 2, 3, 4) представляет k-ю контрольнуюточку. A0, A1, A2, B0, B1, B2 и B3 являются пространственными соседними местоположениями текущего блока и используются для предсказания CP1, CP2 или CP3. T является временным соседним местоположением текущего блока и используется для предсказания CP4.
[00231] Предполагается, что координаты CP1, CP2, CP3 и CP4 равны (0, 0), (W, 0), (H, 0) и (W, H) соответственно, где W и H представляют ширину и высоту текущего блока.
[00232] Для каждой контрольной точки информация о движении контрольной точки получается в следующем порядке:
[00233] (1) Для CP1 порядок проверки: B2->A2->B3. Если B2 доступен, информация о движении B2 используется для CP1. В противном случае проверяются A2 и B3. Если информация о движении всех трех местоположений недоступна, информация о движении CP1 не может быть получена.
[00234] (2) Для CP2 порядок проверки B0->B1. Если B0 доступен, информация о движении B0 используется для CP2. В противном случае проверяется B1. Если информация о движении обоих местоположений недоступна, информация о движении CP2 не может быть получена.
[00235] (3) Для CP3 порядок проверки: A0->A1.
[00236] (4) Для CP4 используется информация о движении T.
[00237] Здесь, что X доступен, означает, что блок в X (X представляет собой A0, A1, A2, B0, B1, B2, B3 или T) уже закодирован, и для блока используется режим внешнего предсказания. В противном случае X недоступен.
[00238] Следует отметить, что в этой заявке также могут использоваться другие способы для получения информации о движении контрольной точки. Подробности здесь не описаны.
[00239] Этап 602: Объединить информацию о движении контрольных точек, чтобы получить информацию о движении построенных контрольных точек.
[00240] Информация о движении двух контрольных точек объединяется в  пространство с 2 кортежами для построения аффинной модели движения с 4 параметрами. Комбинации двух контрольных точек могут быть {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3} и {CP3, CP4}. Например, аффинная модель движения с 4 параметрами, построенная с использованием  пространства с 2 кортежами, включающего в себя контрольные точки CP1 и CP2, может быть обозначена как аффинная (CP1, CP2).
[00241] Информация о движении трех контрольных точек объединяется в  пространство с 3 кортежами, чтобы построить аффинную модель движения с 6 параметрами. Комбинации трех контрольных точек могут быть {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4} и {CP1, CP3, CP4}. Например, аффинная модель движения с 6 параметрами, построенная с использованием  пространства с 3 кортежами, включающего в себя контрольные точки CP1, CP2 и CP3, может быть обозначена как аффинная (CP1, CP2, CP3).
[00242] Информация о движении четырех контрольных точек объединяется в  пространство с 4 кортежами, чтобы построить билинейную модель движения с 8 параметрами. Билинейная модель с 8 параметрами, построенная с использованием пространства с 4 кортежами, включающего в себя контрольные точки CP1, CP2, CP3 и CP4, может быть обозначена как билинейная (CP1, CP2, CP3, CP4).
[00243] В вариантах осуществления этой заявки для простоты описания комбинация информации о движении двух контрольных точек (или двух кодированных блоков) просто упоминается как пространство с 2 кортежами, комбинация информации о движении трех контрольных точек (или трех закодированных блоков) просто называется  пространством с 3 кортежами, а комбинация информации о движении четырех контрольных точек (или четырех кодированных блоков) просто называется  пространством с 4 кортежами.
[00244] По этим модели проходят в заданном порядке. Если информация о движении контрольной точки, соответствующей комбинированной модели, недоступна, считается, что модель недоступна. В противном случае, индекс опорного кадра модели определяется, и вектор движения контрольной точки масштабируется. Если информация о движении всех контрольных точек после масштабирования согласована, модель недействительна. Если вся информация о движении контрольных точек, управляющих моделью, доступна, и модель действительна, информация о движении контрольных точек, используемых для построения модели, добавляется в список кандидатов информации о движении.
[00245] Способ масштабирования вектора движения контрольной точки показан в Формуле (12):
(12)
где  представляет собой POC номер текущего кадра,  представляет собой POC номер опорного кадра текущего блока,  представляет собой POC номер опорного кадра контрольной точки,  представляет собой вектор движения, полученный после масштабирования, MV представляет вектор движения контрольной точки.
[00246] Следует отметить, что разные комбинации контрольных точек могут быть конвертированы в контрольные точки в одном и том же местоположении.
[00247] Например, аффинная модель движения с 4 параметрами, полученная на основе комбинации {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3} или {CP3, CP4}, представлена как {CP1, CP2} или {CP1, CP2, CP3} после конвертирования. Способ конвертирования содержит: подстановку векторов движения и информации о координатах контрольных точек в Формулу (2) для получения параметров модели; и затем подстановку информации о координатах {CP1, CP2} в Формулу (3), чтобы получить векторы движения {CP1, CP2}.
[00248] Более конкретно, конвертирование может выполняться в соответствии с формулами (13) - (21), где W представляет ширину текущего блока, а H представляет высоту текущего блока. В формулах (13)-(21) () представляет вектор движения CP1, () представляет вектор движения CP2, () представляет вектор движения CP3, а () представляет собой вектор движения CP4.
[00249] {CP1, CP2} можно конвертировать в {CP1, CP2, CP3} согласно Формуле (13). Другими словами, вектор движения CP3 в {CP1, CP2, CP3} может быть определен согласно Формуле (13):
(13)
[00250] {CP1, CP3} можно конвертировать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии с формулой (14):
(14)
[00251] {CP2, CP3} можно конвертировать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии с формулой (15):
(15)
[00252] {CP1, CP4} можно конвертировать в {CP1, CP2} или {CP1, CP2, CP3} в соответствии с формулой (16) или (17):
(16)
(17)
[00253] {CP2, CP4} можно конвертировать в {CP1, CP2} в соответствии с формулой (18), а {CP2, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулами (18) и (19):
(18)
(19)
[00254] {CP3, CP4} можно конвертировать в {CP1, CP2} в соответствии с формулой (20), а {CP3, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулами (20) и (21):
(20)
(21)
[00255] Например, аффинная модель движения с 6 параметрами, полученная на основе комбинации {CP1, CP2, CP4}, {CP2, CP3, CP4} или {CP1, CP3, CP4}, конвертируется и представляется с использованием {CP1, CP2, CP3}. Способ конвертирования содержит: подстановку векторов движения и информации о координатах контрольных точек в Формулу (4) для получения параметров модели; и затем подстановку информации о координатах {CP1, CP2, CP3} в формулу (5), чтобы получить векторы движения {CP1, CP2, CP3}.
[00256] Более конкретно, конвертирование может выполняться в соответствии с формулами (22) - (24), где W представляет ширину текущего блока, а H представляет высоту текущего блока. В формулах (13) - (21) () представляет вектор движения CP1, () представляет вектор движения CP2, () представляет вектор движения CP3, а () представляет собой вектор движения CP4.
[00257] {CP1, CP2, CP4} могут быть конвертированы в {CP1, CP2, CP3} в соответствии с формулой (22):
(22)
[00258] {CP2, CP3, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулой (23):
(23)
[00259] {CP1, CP3, CP4} можно конвертировать в {CP1, CP2, CP3} в соответствии с формулой (24):
(24)
[00260] 6. Расширенное временное предсказание вектора движения (расширенное временное предсказание вектора движения, ATMVP):
[00261] При внешнем предсказании в HEVC компенсация движения выполняется для всех выборок текущего блока на основе одной и той же информации о движении, чтобы получить предсказатели выборок блока, который должен быть обработан. Однако не все выборки блока, подлежащего обработке, имеют одинаковые характеристики движения. Использование одной и той же информации о движении для предсказания всех выборок блока, который должен быть обработан, может снизить точность компенсации движения и увеличить остаточную информацию.
[00262] Для решения вышеупомянутых проблем в существующем решении предусмотрена технология расширенного временного предсказания вектора движения (advanced temporal motion vector prediction, ATMVP).
[00263] Процесс выполнения предсказания с использованием технологии ATMVP в основном содержит следующие этапы, как показано на фиг. 6E:
[00264] (1) Определить вектор смещения блока, который должен быть обработан.
[00265] (2) Определить в соответствующем целевом изображении на основе местоположения субблока, который должен быть обработан, блока, который должен быть обработан, и вектора смещения, субблок, соответствующий субблоку, который должен быть обработан, где целевое изображение - это одно из закодированных изображений.
[00266] (3) Определить вектор движения субблока, который должен быть обработан, на основе вектора движения соответствующего субблока.
[00267] Например, вектор движения текущего субблока, подлежащего обработке, может быть определен с использованием способа масштабирования. Например, способ масштабирования реализован по Формуле (25):
(25)
где  представляет собой POC номер кадра, в котором, блок, подлежащий обработке, расположен,  представляет собой POC номер кадра, в котором соответствующий субблоку находится,  представляет собой POC номер опорного кадра соответствующего субблока,  представляет вектор движения, полученный посредством масштабирования, а  представляет вектор движения соответствующего субблока.
[00268] (4) Выполнить предсказание компенсации движения для субблока, который должен быть обработан, на основе вектора движения субблока, который должен быть обработан, чтобы получить значение выборки предсказания для субблока, который должен быть обработан.
[00269] 7. Планарное предсказание вектора движения (PLANAR):
[00270] При планарном предсказании вектора движения получается информация о движении в верхнем соседнем пространственном местоположении, левом соседнем пространственном местоположении, правом местоположении и нижнем местоположении каждого подлежащего обработке субблока для блока, который должен быть обработан, и вычисляется среднее значение информации о движении и конвертируется в информацию о движении текущего субблока, подлежащего обработке.
[00271] Для субблока, подлежащего обработке, координаты которого равны (x, y), вектор движения P(x, y) субблока, подлежащего обработке, вычисляется на основе вектора движения с горизонтальной интерполяцией Ph(x, y) и вектор движения с горизонтальной интерполяцией Pv(x, y)  согласно Формуле (26):
(26)
где H представляет высоту блока, который должен быть обработан, а W представляет ширину блока, который должен быть обработан.
[00272] Вектор движения с горизонтальной интерполяцией Ph (x, y) и вектор движения с горизонтальной интерполяцией Pv (x, y) могут быть вычислены на основе векторов движения субблоков слева, справа, сверху и снизу от текущего субблока, подлежащего обработке, согласно формулам (27) и (28):
(27)
(28)
где  представляет вектор движения субблока слева от субблока, который должен быть обработан, R(w, y) представляет вектор движения субблока справа от субблока, который должен быть обработан,  представляет вектор движения субблока сверху от субблока, подлежащего обработке, а  представляет вектор движения субблока снизу от субблока, подлежащего обработке.
[00273] Вектор L движения левого блока и вектор A движения верхнего блока получаются на основе пространственного соседнего блока текущего блока кодирования. Векторы движения  и  блоков кодирования в предварительно заданных местоположениях (-1, y) и (x, -1) получаются на основе координат (x, y) субблока, подлежащего обработке.
[00274] Как показано на фиг. 7, вектор движения R(w, y) правого блока и вектор движения B(x, H) нижнего блока могут быть извлечены с использованием следующего способа:
[00275] (1) Извлечь информацию BR о временном движении в правом нижнем пространственном соседнем местоположении блока, который должен быть обработан.
[00276] (2) Получить вектор движения R(w, y) правого блока путем выполнения вычисления взвешивания на основе извлеченного вектора движения AR в правом верхнем пространственном соседнем местоположении и извлеченной информации BR о временном движении в правом нижнем соседнем пространственном местоположении, как показано в Формуле (29):
(29)
[00277] (3) Получить вектор движения B(x, H) нижнего блока, выполнив вычисление взвешивания на основе извлеченного вектора движения BL в нижнем левом пространственном соседнем местоположении и извлеченной информации BR о временном движении в нижнем правом пространственном соседнем местоположении, как показано в Формуле (30):
(30)
[00278] Следует отметить, что вектор движения, используемый в вычислении, представляет собой вектор движения, полученный посредством масштабирования после того, как вектор движения масштабируется, чтобы указывать первый опорный кадр в конкретной очереди опорных кадров.
[00279] 8. Режим расширенного предсказания вектора движения на основе  аффинной модели движения (режим Affine AMVP):
[00280] (1) Создать список кандидатных векторов движения.
[00281] Список кандидатных векторов движения, соответствующий режиму AMVP на основе  аффинной модели движения, создается с использованием способа предсказания унаследованного вектора движения контрольной точки и/или способа предсказания построенного вектора движения контрольной точки. В вариантах осуществления этой заявки список кандидатных векторов движения, соответствующий режиму AMVP на основе  аффинной модели движения, может упоминаться как список кандидатных предсказателей векторов движения контрольной точки (control point motion vectors predictor candidate list). Предсказатель вектора движения каждой контрольной точки содержит векторы движения двух контрольных точек (для аффинной модели движения с 4 параметрами) или векторы движения трех контрольных точек (для аффинной модели движения с 6 параметрами).
[00282] Необязательно, список кандидатных предсказателей векторов движения контрольной точки сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.
[00283] (2) Определить оптимальный предсказатель вектора движения контрольной точки.
[00284] На стороне кодера вектор движения каждого субблока текущего блока кодирования получается на основе каждого предиктора вектора движения контрольной точки в списке кандидатов предиктора векторов движения контрольной точки согласно формуле (3) или (5). Полученный вектор движения используется для получения значения выборки на соответствующем местоположении в опорном кадре, на который указывает вектор движения субблока. Полученное значение выборки используется в качестве предсказателя для выполнения компенсации движения с использованием аффинной модели движения. Вычисляется средняя разница между исходным значением и значением предсказания каждой выборки текущего блока кодирования. Предсказатель вектора движения контрольной точки, соответствующий минимальной средней разнице, выбирается в качестве оптимального предсказателя вектора движения контрольной точки и используется в качестве предсказателей вектора движения двух или трех контрольных точек текущего блока кодирования. Номер индекса, представляющий местоположение предсказателя вектора движения контрольной точки в списке кандидатов предсказателя вектора движения контрольной точки, кодируется в битовом потоке и отправляется в декодер.
[00285] На стороне декодера номер индекса анализируется, и предсказатель вектора движения контрольной точки (control point motion vectors predictor, CPMVP) определяется из списка кандидатов предсказателей векторов движения контрольной точки на основе номера индекса.
[00286] (3) Определить вектор движения контрольной точки.
[00287] На стороне кодера предсказатель вектора движения контрольной точки используется в качестве начальной точки поиска для поиска движения в пределах конкретного диапазона поиска, чтобы получить вектор движения контрольной точки (control point motion vectors, CPMV). Разница между вектором движения контрольной точки и предсказателем вектора движения контрольной точки (control point motion vectors differences, CPMVD) передается на сторону декодера.
[00288] На стороне декодера разность векторов движения контрольной точки анализируется и добавляется к предсказателю вектора движения контрольной точки, чтобы получить вектор движения контрольной точки.
[00289] 9. Режим слияния субблоков (sub-block based merging mode):
[00290] Список кандидатов слияния на основе субблоков (sub-block based merging candidate list) создается с использованием по меньшей мере одного из: расширенного временного предсказания вектора движения, способа предсказания унаследованного вектора движения контрольной точки, способа предсказания построенного вектора движения контрольной точки и способа планарного предсказания.
[00291] Необязательно, список кандидатов слияния на основе субблоков сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.
[00292] На стороне кодера, если используется расширенное временное предсказание вектора движения, вектор движения каждого субблока (выборка или блок выборки N1×N2, полученный с использованием конкретного метода разделения) получается с использованием способа, описанного в предшествующих описаниях в «7. Планарное предсказание вектора движения». Если используется способ планарного предсказания, вектор движения каждого субблока получается с использованием способа, описанного в предшествующих описаниях в «8. Режим расширенного предсказания вектора движения на основе  аффинной модели движения».
[00293] Если используется способ предсказания унаследованного вектора движения контрольной точки или способ предсказания построенного вектора движения контрольной точки, вектор движения каждого субблока (выборка или блок выборки N1×N2, полученный с использованием конкретного способа разбиения) текущего блока получается согласно Формуле (3) или (5). После того, как вектор движения каждого субблока получен, дополнительно получается значение выборки в местоположении в опорном кадре, на который указывает вектор движения точек субблока, и значение выборки используются в качестве предсказателя субблока для аффинной компенсации движения. Вычисляется средняя разница между исходным значением и предсказателем каждой выборки текущего блока кодирования. Вектор движения контрольной точки, соответствующий минимальной средней разнице, выбирается в качестве векторов движения двух или трех контрольных точек текущего блока кодирования. Номер индекса, представляющий местоположение вектора движения контрольной точки в списке кандидатов, кодируется в битовом потоке и отправляется в декодер.
[00294] На стороне декодера номер индекса синтаксически анализируется, и вектор движения контрольной точки (control point motion vectors, CPMV) определяется из списка кандидатов слияния векторов движения контрольной точки на основе номера индекса.
[00295] Кроме того, следует отметить, что в этой заявке «по меньшей мере один» означает один или несколько, а «множество» означает два или более двух. Термин "и/или" описывает ассоциативную взаимосвязь для описания ассоциированных объектов и представляет, что могут существовать три взаимосвязи. Например, A и/или B могут представлять следующие случаи: существует только A, существуют как A, так и B, и существует только B, причем A и B могут быть в единственном или множественном числе. Символ «/» обычно представляет отношение «или» между связанными объектами. «По меньшей мере, один элемент (часть) из следующего» или подобное выражение означает любую комбинацию этих элементов, в том числе единичный элемент (часть) или любую комбинацию множественных элементов (частей). Например, по меньшей мере, один элемент (часть) из a, b или c может представлять: a, b, c, ab, ac, bc или abc, где a, b и c могут быть в единственном или множественном числе.
[00296] В этой заявке, когда режим внешнего предсказания используется для декодирования текущего блока, элемент синтаксиса может использоваться для сигнализации режима внешнего предсказания.
[00297] Некоторые используемые в настоящее время синтаксические структуры режима внешнего предсказания, используемые для синтаксического анализа текущего блока, см. в Таблице 1. Следует отметить, что элемент синтаксиса в структуре синтаксиса альтернативно может быть представлен другими указателями. В данной заявке это конкретно не ограничено.
Таблица 1.
coding_unit(x0, y0, cbWidth, cbHeight, treeType) {
<b>Дескриптор</b>
if(slice_type != I) {
<b>cu_skip_flag</b>[x0][y0]
ae(v)
if(cu_skip_flag[x0][y0] == 0)
<b>pred_mode_flag</b>[x0][y0]
ae(v)
}
if(CuPredMode[x0][y0] == MODE_INTRA) {
if(treeType == SINGLE_TREE | | treeType == DUAL_TREE_LUMA) {
<b>intra_luma_mpm_flag</b>[x0][y0]
ae(v)
if(intra_luma_mpm_flag[x0][y0])
<b>intra_luma_mpm_idx</b>[x0][y0]
ae(v)
else
<b>intra_luma_mpm_remainder</b>[x0][y0]
ae(v)
}
if(treeType == SINGLE_TREE | | treeType == DUAL_TREE_CHROMA)
<b>intra_chroma_pred_mode</b>[x0][y0]
ae(v)
} else { /* MODE_INTER (inter mode) */
if(cu_skip_flag[x0][y0]) {
if(MaxNumSubblockMergeCand > 0 && cbWidth >= 8 && cbHeight >= 8)
merge_subblock_flag[x0][y0]
ae(v)
if(merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1)
merge_idx[x0][y0]
ae(v)
if(merge_subblock_flag[x0][y0] == 1 && MaxNumSubblockMergeCand > 1)
merge_subblock_idx[x0][y0]
ae(v)
} else {
<b>merge_flag</b>[x0][y0]
ae(v)
if(merge_flag[x0][y0]) {
if((sps_affine_enabled_flag | | sps_sbtmvp_enabled_flag) && cbWidth >= 8 && cbHeight >= 8)
<b>merge_subblock_flag</b>[x0][y0]
ae(v)
if(merge_subblock_flag[x0][y0] == 0 && MaxNumMergeCand > 1)
<b>merge_idx</b>[x0][y0]
ae(v)
if(merge_subblock_flag[x0][y0] == 1)
<b>merge_subblock_idx</b>[x0][y0]
ae(v)
} else {
if(slice_type == B)
<b>inter_pred_idc</b>[x0][y0]
ae(v)
if(sps_affine_enabled_flag && cbWidth >= 16 && cbHeight >= 16) {
<b>inter_affine_flag</b>[x0][y0]
ae(v)
if(sps_affine_type_flag && inter_affine_flag[x0][y0])
<b>cu_affine_type_flag</b>[x0][y0]
ae(v)
}
if(inter_pred_idc[x0][y0] != PRED_L1) {
if(num_ref_idx_l0_active_minus1 > 0)
ref_idx_l0[x0][y0]
ae(v)
mvd_coding(x0, y0, 0, 0)
if(MotionModelIdc[x0][y0] > 0)
mvd_coding(x0, y0, 0, 1)
if(MotionModelIdc[x0][y0] > 1)
mvd_coding(x0, y0, 0, 2)
mvp_l0_flag[x0][y0]
ae(v)
} else {
MvdL0[x0][y0][0] = 0
MvdL0[x0][y0][1] = 0
}
if(inter_pred_idc[x0][y0] != PRED_L0) {
if(num_ref_idx_l1_active_minus1 > 0)
<b>ref_idx_l1</b>[x0][y0]
ae(v)
if(mvd_l1_zero_flag && inter_pred_idc[x0][y0] == PRED_BI) {
MvdL1[x0][y0][0] = 0
MvdL1[x0][y0][1] = 0
MvdCpL1[x0][y0][0][0] = 0
MvdCpL1[x0][y0][0][1] = 0
MvdCpL1[x0][y0][1][0] = 0
MvdCpL1[x0][y0][1][1] = 0
MvdCpL1[x0][y0][2][0] = 0
MvdCpL1[x0][y0][2][1] = 0
} else {
mvd_coding(x0, y0, 1, 0)
if(MotionModelIdc[x0][y0] > 0)
mvd_coding(x0, y0, 1, 1)
if(MotionModelIdc[x0][y0] > 1)
mvd_coding(x0, y0, 1, 2)
<b>mvp_l1_flag</b>[x0][y0]
ae(v)
} else {
MvdL1[x0][y0][0] = 0
MvdL1[x0][y0][1] = 0
}
if(sps_amvr_enabled_flag && inter_affine_flag == 0 &&(MvdL0[x0][y0][0] != 0 | | MvdL0[x0][y0][1] != 0 | |  MvdL1[x0][y0][0] != 0 | | MvdL1[x0][y0][1] != 0))
<b>amvr_mode</b>[x0][y0]
ae(v)
}
}
}
if(CuPredMode[x0][y0] != MODE_INTRA && cu_skip_flag[x0][y0] == 0)
cu_cbf
ae(v)
if(cu_cbf) {
transform_tree(x0, y0, cbWidth, cbHeight, treeType)
}
[00298] Переменная treeType указывает тип дерева кодирования, используемый для кодирования текущего блока.
[00299] Переменная slice_type используется для указания типа слайса, в котором расположен текущий блок, например, типа P, типа B или типа I.
[00300] Элемент синтаксиса cu_skip_flag [x0] [y0] может использоваться, чтобы указать, имеет ли текущий блок остаток. Например, когда cu_skip_flag [x0] [y0] = 1, это указывает, что текущий блок имеет остаток; или когда cu_skip_flag [x0] [y0] = 0, это указывает, что текущий блок не имеет остатка.
[00301] Следует отметить, что режим пропуска - это особый режим слияния. После использования режима слияния для поиска вектора движения, если кодер определяет с помощью некоторого способа, что текущий блок в основном одинаковый с опорным блоком, остаточные данные не нужно передавать, и только индекс вектора движения и cu_skip_flag необходимо передать. Следовательно, если cu_skip_flag [x0] [y0] = 0, это указывает, что текущий блок не имеет остатка, и остаточные данные не нужно синтаксически анализировать.
[00302] Элемент синтаксиса pred_mode_flag[x0][y0] используется для указания того, является ли режим предсказания для текущего блока режимом внешнего предсказания или внутреннего предсказания.
[00303] Переменная CuPredMode[x0][y0] определяется на основе pre_mode_flag[x0][y0]. MODE_INTRA указывает режим внутреннего предсказания.
[00304] Элемент синтаксиса merge_flag[x0][y0] может использоваться, чтобы указать, используется ли режим слияния (merge) для текущего блока. Например, когда merge_flag[x0][y0] = 1, это указывает, что режим слияния используется для текущего блока; или когда merge_flag[x0][y0] = 0, это указывает, что режим слияния не используется для текущего блока, где x0 и y0 представляют координаты текущего блока в видеоизображении.
[00305] cbWidth определяет ширину текущего блока, а cbHeight определяет высоту текущего блока.
[00306] Элемент синтаксиса sps_affine_enabled_flag может использоваться, чтобы указать, может ли аффинная модель движения использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении. Например, когда sps_affine_enabled_flag=0, это указывает, что аффинная модель движения не может использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении; или когда sps_affine_enabled_flag=1, это указывает, что аффинная модель движения может использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении.
[00307] Элемент синтаксиса merge_subblock_flag[x0][y0] может использоваться для указания, используется ли режим слияния на основе субблока для текущего блока. Тип (slice_type) слайса, в котором расположен текущий блок, является типом P или типом B. Например, когда merge_subblock_flag[x0][y0] = 1, это указывает, что для текущего блока используется режим слияния на основе субблока; или когда merge_subblock_flag[x0][y0] = 0, это указывает, что режим слияния на основе субблока не используется для текущего блока, но может использоваться режим слияния на основе модели прямолинейного движения.
[00308] Элемент синтаксиса merge_idx[x0][y0] может использоваться для указания индекса списка кандидатов слияния.
[00309] Элемент синтаксиса merge_subblock_idx[x0][y0] может использоваться для указания индекса списка кандидатов слияния на основе субблока.
[00310] sps_sbtmvp_enabled_flag может использоваться, чтобы указать, можно ли использовать режим ATMVP для внутреннего предсказания блока изображения, содержащегося в видеоизображении. Например, когда sps_sbtmvp_enabled_flag=1, это указывает, что режим ATMVP может использоваться для внутреннего предсказания блока изображения, содержащегося в видеоизображении; или когда sps_sbtmvp_enabled_flag=0, это указывает, что режим ATMVP не может использоваться для внутреннего предсказания блока изображения, содержащегося в видеоизображении.
[00311] Элемент синтаксиса inter_affine_flag[x0][y0] может использоваться, чтобы указать, используется ли режим AMVP на основе  аффинной модели движения для текущего блока, когда слайс, в котором расположен текущий блок, является слайсом P-типа или слайсом B-типа. Например, когда inter_affine_flag[x0][y0] = 0, это указывает, что режим AMVP на основе  аффинной модели движения используется для текущего блока; или когда inter_affine_flag[x0][y0] = 1, это указывает, что режим AMVP на основе аффинной модели движения не используется для текущего блока, но может использоваться режим AMVP на основе модели прямолинейного движения.
[00312] Элемент синтаксиса cu_affine_type_flag[x0][y0] может использоваться, чтобы указать, используется ли аффинная модель движения с 6 параметрами для выполнения компенсации движения для текущего блока, когда слайс, в котором расположен текущий блок, является слайсом P-типа или слайсом B-типа. Когда cu_affine_type_flag[x0][y0] = 0, это указывает, что аффинная модель движения с 6 параметрами не используется для выполнения компенсации движения для текущего блока, но только аффинная модель движения с 4 параметрами может использоваться для выполнения компенсации движения; или когда cu_affine_type_flag[x0][y0] = 1, это указывает, что аффинная модель движения с 6 параметрами используется для выполнения компенсации движения для текущего блока.
[00313] Как показано в таблице 2, когда MotionModelIdc[x0][y0] = 1, это указывает на то, что используется аффинная модель движения с 4 параметрами; когда MotionModelIdc[x0][y0] = 2, это указывает, что используется аффинная модель движения с 6 параметрами; или когда MotionModelIdc[x0][y0] = 0, это указывает, что используется модель прямолинейного движения.
Таблица 2.
MotionModelIdc [x0] [y0]
Модель движения для компенсации движения (motion model for motion compensation)
0
Прямолинейное движение (translational motion)
1
движение с 4 аффинными параметрами (4-parameter affine motion)
2
движение с 6 аффинными параметрами (6-parameter affine motion)
[00314] Переменная MaxNumMergeCand используется для указания максимальной длины списка кандидатных векторов движения на слияние, переменная MaxNumSubblockMergeCand используется для указания максимальной длины списка кандидатных векторов движения на слияние на основе субблока, inter_pred_idc[x0][y0] используется для указания направления предсказания, PRED_L0 указывает прямое предсказание, num_ref_idx_l0_active_minus1 определяет количество опорных кадров в списке переднего опорного кадра, ref_idx_l0[х0][у0] указывает значение индекса для переднего опорного кадра текущего блока, mvd_coding (х0, у0, 0, 0) указывает первую разность векторов движения, mvp_l0_flag[x0][y0] указывает значение индекса для списка кандидатов прямого MVP, PRED_L1 используется для указания обратного предсказания, num_ref_idx_l1_active_minus1 указывает количество опорных кадров в обратном списке опорных кадров, ref_idx_l1[x0][y0] указывает значение индекса для обратного опорного кадра текущего блока, а mvp_l1_flag[x0][y0] указывает значение индекса для списка кандидатов обратного MVP.
[00315] В таблице 1 ae(v) представляет элемент синтаксиса, закодированный с использованием контекстно-зависимого адаптивного двоичного арифметического кодирования (context-based adaptive binary arithmetic coding, CABAC).
[00316] Далее подробно описывается процесс внешнего предсказания, как показано на фиг. 8А.
[00317] Этап 801: синтаксически анализировать битовый поток на основе структуры синтаксиса, показанной в таблице 1, и определить режим внешнего предсказания для текущего блока.
[00318] Если определено, что режим внешнего предсказания для текущего блока является режимом AMVP на основе аффинной модели движения, выполняется этап 802a.
[00319] Элементы синтаксиса sps_affine_enabled_flag=1, merge_flag=0 и inter_affine_flag=1 указывают, что режим внешнего предсказания для текущего блока является режимом AMVP на основе  аффинной модели движения.
[00320] Если определено, что режим внешнего предсказания для текущего блока является режимом слияния (merge) субблоков, выполняется этап 802b.
[00321] Элемент синтаксиса sps_affine_enabled_flag=1 или элемент синтаксиса sps_sbtmvp_enabled_flag=1, и элементы синтаксиса merge_flag=1 и merge_subblock_flag=1 указывают, что режим внешнего предсказания для текущего блока является режимом слияния субблоков.
[00322] Этап 802a: создать список кандидатных векторов движения, соответствующий режиму AMVP на основе  аффинной модели движения. Выполнить этап 803a.
[00323] Кандидатный вектор движения в контрольную точку текущего блока выводится с использованием способа предсказания унаследованного вектора движения контрольной точки и/или способа предсказания построенного вектора движения контрольной точки и добавляется в список кандидатных векторов движения.
[00324] Список кандидатных векторов движения может содержать список с 2 кортежами (для текущего блока кодирования используется аффинная модель движения с 4 параметрами) или список с 3 кортежами. Список с 2 кортежами содержит одно или более 2 кортежей , используемых для построения аффинной модели движения с 4 параметрами. Список с 3 кортежами содержит одно или более 3 кортежей, используемых для построения аффинной модели движения с 6 параметрами.
[00325] Необязательно, список из 2-х/3-х кортежей кандидатных векторов движения сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.
[00326] A1: Описывается процесс построения списка кандидатных векторов движения с использованием способа предсказания унаследованного вектора движения контрольной точки.
[00327] ФИГ. 4 используется в качестве примера. В примере на фиг. 4, блоки в соседних местоположениях вокруг текущего блока просматриваются в порядке A1->B1->B0->A0->B2, чтобы найти аффинно-кодированный блок, включающий в себя блок в соседнем местоположении текущего блока, и чтобы получить информацию о движении контрольной точки аффинно-кодированного блока. Дополнительно, информация о движении контрольной точки аффинно-кодированного блока используется для построения модели движения, чтобы получить информацию о кандидатном движении в контрольную точку текущего блока. Для получения подробной информации см. Предыдущее описание в разделе «3. Способ предсказания унаследованного вектора движения контрольной точки». Подробности не описаны здесь снова.
[00328] Например, аффинная модель движения, используемая для текущего блока, представляет собой аффинную модель движения с 4 параметрами (то есть MotionModelIdc=1). Если для соседнего блока аффинного декодирования используется аффинная модели движения с 4 параметрами, получаются векторы движения двух контрольных точек блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) правой верхней контрольной точки (x5, y5). Блок аффинного декодирования - это блок аффинного кодирования, для которого предсказание выполняется с использованием аффинной модели движения во время кодирования.
[00329] Векторы движения двух контрольных точек, а именно верхней левой и верхней правой контрольных точек текущего блока, выводятся соответственно согласно формулам (6) и (7), соответствующим аффинной модели движения с 4 параметрами, с использованием аффинной модели движения с 4 параметрами, включающей в себя две контрольные точки соседнего блока аффинного декодирования.
[00330] Если для соседнего блока аффинного декодирования используется аффинная модель движения с 6 параметрами, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5) и вектор движения (vx6, vy6) нижней левой вершины (x6, y6) на фиг. 4.
[00331] Векторы движения двух контрольных точек, а именно верхней левой и верхней правой контрольных точек текущего блока, выводятся соответственно согласно формулам (8) и (9), соответствующим аффинной модели движения с 6 параметрами, с использованием аффинной модели движения с 6 параметрами, включающей в себя три контрольные точки соседнего блока аффинного декодирования.
[00332] Например, аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 6 параметрами (то есть MotionModelIdc=2). Если аффинная модель движения, используемая для соседнего блока аффинного декодирования, является аффинной моделью движения с 6 параметрами, получаются векторы движения трех контрольных точек соседнего блока аффинного декодирования, например вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4), вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5) и вектор движения (vx6, vy6) нижней левой вершины (x6, y6) на фиг. 4.
[00333] Векторы движения трех контрольных точек, а именно, верхней левой, верхней правой и нижней левой контрольных точек текущего блока, выводятся соответственно в соответствии с формулами (8), (9) и (10), соответствующими аффинной модели движения с 6 параметрами с использованием аффинной модели движения с 6 параметрами, включающей в себя три контрольные точки соседнего блока аффинного декодирования.
[00334] Если аффинная модель движения, используемая для соседнего блока аффинного декодирования, является аффинной моделью движения с 4 параметрами, получаются векторы движения двух контрольных точек соседнего блока аффинного декодирования: вектор движения (vx4, vy4) верхней левой контрольной точки (x4, y4) и вектор движения (vx5, vy5) верхней правой контрольной точки (x5, y5).
[00335] Векторы движения трех контрольных точек, а именно верхней левой, верхней правой и нижней левой контрольных точек текущего блока, выводятся соответственно согласно формулам (6) и (7), соответствующим аффинной модели движения с 4 параметрами, используя аффинную модель движения с 4 параметрами, включающую в себя две контрольные точки соседнего блока аффинного декодирования.
[00336] Следует отметить, что в этой заявке также могут использоваться другие модели движения, возможные местоположения и порядки поиска. Подробности здесь не описаны. Следует отметить, что в этой заявке также могут использоваться способы для представления моделей движения соседних и текущих блоков кодирования на основе других контрольных точек. Подробности здесь не описаны.
[00337] A2: Описан процесс построения списка кандидатных векторов движения с использованием способа предсказания построенного вектора движения контрольной точки.
[00338] Например, аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 4 параметрами (то есть MotionModelIdc=1) и векторы движения верхней левой вершины и верхней правой вершины текущего блока кодирования определяются на основе информации о движении соседнего кодированного блока текущего блока кодирования. В частности, список кандидатных векторов движения может быть построен с использованием способа 1 предсказания построенного вектора движения контрольной точки или способа 2 предсказания построенного вектора движения контрольной точки. Для получения информации о конкретном способе см. предыдущее описание в разделе «4. Способ 1 предсказания построенного вектора движения контрольной точки»; 5. Способ 2 предсказания построенного вектора движения контрольной точки». Подробности не описаны здесь снова.
[00339] Например, аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 6 параметрами (то есть MotionModelIdc=2) и векторы движения верхней левой вершины, верхней правой вершины и нижней левой вершины текущего блока кодирования определяется на основе информации о движении соседнего кодированного блока текущего блока кодирования. В частности, список кандидатных векторов движения может быть построен с использованием способа 1 предсказания построенного вектора движения контрольной точки или способа 2 предсказания построенного вектора движения контрольной точки. Для получения информации о конкретном способе см. предыдущее описание в разделе «4. Способ 1 предсказания построенного вектора движения контрольной точки»; 5. Способ 2 предсказания построенного вектора движения контрольной точки». Подробности не описаны здесь снова.
[00340] Следует отметить, что в этой заявке также могут использоваться другие комбинации информации о движении контрольной точки. Подробности здесь не описаны.
[00341] Этап 803a: Синтаксически анализировать битовый поток и определить оптимальный предсказатель вектора движения контрольной точки. Выполнить этап 804a.
[00342] B1: Если аффинная модель движения, используемая для текущего блока декодирования, представляет собой аффинную модель движения с 4 параметрами (MotionModelIdc=1), номер индекса синтаксически анализируется, и оптимальный предсказатель вектора движения для двух контрольных точек определяется из списка кандидатных векторов движения на основе номера индекса.
[00343] Например, номер индекса - mvp_l0_flag или mvp_l1_flag.
[00344] B2: Если аффинная модель движения, используемая для текущего блока декодирования, является аффинной моделью движения с 6 параметрами (MotionModelIdc=2), номер индекса синтаксически анализируется, и оптимальный предсказатель вектора движения для трех контрольных точек определяется из списка кандидатных векторов движения на основе порядкового номера.
[00345] Этап 804a: синтаксически анализировать битовый поток и определить вектор движения контрольной точки.
[00346] C1: Если аффинная модель движения, используемая для текущего блока декодирования, является аффинной моделью движения с 4 параметрами (MotionModelIdc=1), разности векторов движения двух контрольных точек текущего блока получаются путем декодирования битового потока, а векторы движения двух контрольных точек затем получаются на основе разностей векторов движения и предсказателей вектора движения контрольных точек. Используя прямое предсказание в качестве примера, разности векторов движения двух контрольных точек равны mvd_coding (x0, y0, 0, 0) и mvd_coding (x0, y0, 0, 1) соответственно.
[00347] Например, разности векторов движения верхней левой контрольной точки и верхней правой контрольной точки получаются путем декодирования битового потока и добавляются к соответствующим предсказателям вектора движения, чтобы получить векторы движения верхней левой контрольной точки и верхней правой контрольной точки текущего блока.
[00348] C2: Если аффинная модель движения, используемая для текущего блока декодирования, является аффинной моделью движения с 6 параметрами (MotionModelIdc=2), разности векторов движения трех контрольных точек текущего блока получаются путем декодирования битового потока, а векторы движения трех контрольных точек затем получаются на основе разностей векторов движения и предсказателей вектора движения контрольных точек. Используя в качестве примера прямое предсказание, разности векторов движения трех контрольных точек равны mvd_coding (x0, y0, 0, 0), mvd_coding (x0, y0, 0, 1) и mvd_coding (x0, y0, 0, 2) соответственно.
[00349] Например, разности векторов движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки получаются путем декодирования битового потока и добавляются к соответствующим предсказателям вектора движения, чтобы получить векторы движения верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки текущего блока.
[00350] Этап 805a: Получить вектор движения каждого субблока текущего блока на основе информации о движении контрольной точки и  аффинной модели движения, используемой для текущего блока декодирования.
[00351] Один субблок в текущем блоке аффинного декодирования может быть эквивалентен одному блоку компенсации движения, а ширина и высота субблока меньше ширины и высоты текущего блока. Информация о движении выборки в предварительно установленном местоположении в блоке компенсации движения может использоваться для представления информации движения всех выборок блока компенсации движения. Предполагая, что размер блока компенсации движения составляет M×N, выборка в предварительно установленном местоположении может быть центральной выборкой (M/2, N/2), верхней левой выборкой (0, 0), верхней правой выборкой образец (M - 1, 0) или выборкой в другом местоположении в блоке компенсации движения. Центральная выборка блока компенсации движения используется в качестве примера для описания ниже, как показано на фиг. 8C. На фиг. 8C, V0представляет вектор движения верхней левой контрольной точки, а V1представляет вектор движения верхней правой контрольной точки. Каждый маленький прямоугольник представляет один блок компенсации движения.
[00352] Координаты центральной выборки блока компенсации движения относительно верхней левой выборки текущего блока аффинного декодирования вычисляются согласно формуле (31). В формуле (31) i представляет i-ю единицу компенсации движения в горизонтальном направлении (слева направо), j представляет j-ю единицу компенсации движения в вертикальном направлении (сверху вниз) и (x(i, j), y(i, j)) представляет координаты центральной выборки (i, j)-го блока компенсации движения относительно выборки верхней левой контрольной точки текущего блока аффинного декодирования.
[00353] Если аффинная модель движения, используемая для текущего блока аффинного декодирования, является аффинной моделью движения с 6 параметрами, (x(i, j), y(i, j)) подставляется в формулу (32), соответствующую аффинной моделидвижения с 6 параметрами для получения вектора движения (vx (i, j), vy (i, j)) центральной выборки каждого блока компенсации движения, и вектор движения используется в качестве векторов движения всех выборок блока компенсации движения.
[00354] Если аффинная модель движения, используемая для текущего блока аффинного декодирования, представляет собой аффинную модель движения с 4 параметрами, (x(i, j), y(i, j)) подставляется в формулу (33), соответствующую аффинной модели движения с 4 параметрами для получения вектора движения (vx (i, j), vy (i, j)) центральной выборки каждого блока компенсации движения, и вектор движения используется в качестве векторов движения всех выборок блока компенсации движения.
(31)
(32)
(33)
[00355] Этап 806a: Выполнити компенсацию движения для каждого субблока на основе определенного вектора движения субблока, чтобы получить значение выборки предсказания субблока.
[00356] Этап 802b: Создать список кандидатов информации о движении, соответствующий режиму слияния (merge) субблоков.
[00357] В частности, список кандидатов информации о движении, соответствующий режиму слияния субблоков (sub-block based merging candidate list), может быть построен с использованием одного или нескольких из расширенного временного предсказания вектора движения, способа предсказания унаследованного вектора движения контрольной точки, способа предсказания построенного вектора движения контрольной точки или планарного способа. В этом варианте осуществления этой заявки список кандидатов информации о движении, соответствующий режиму слияния субблоков, может для краткости называться списком кандидатов слияния на основе субблоков.
[00358] Необязательно, список кандидатов информации о движении сокращается и сортируется в соответствии с конкретным правилом и может быть усечен или дополнен до конкретного количества.
[00359] D0: Если sps_sbtmvp_enabled_flag=1, кандидатный вектор движения получается с использованием ATMVP и добавляется в список кандидатов слияния на основе субблоков. Для получения подробной информации см. предыдущее описание в разделе «6. Расширенное временное предсказание вектора движения».
[00360] D1: Если sps_affine_enabled_flag=1, rfylblfnyfz информация о движении контрольной точки текущего блока выводится с использованием способа предсказания унаследованного вектора движения контрольной точки и добавляется в список кандидатов слияния на основе субблока. Для получения подробной информации см. предыдущее описание в разделе «3. Способ предсказания унаследованного вектора движения контрольной точки».
[00361] Например, на фиг. 6C, блоки в соседних местоположениях вокруг текущего блока проходят в порядке A1->B1->B0->A0->B2, чтобы найти аффинно-кодированный блок, включающий в себя блок в соседнем местоположении текущего блока, и получить информацию о движении контрольной точки аффинно-кодированного блока. Дополнительно, модель движения, соответствующая аффинно-кодированному блоку, используется для выведения информации о движении кандидатной контрольной точки текущего блока.
[00362] Если список кандидатов слияния на основе субблоков пуст, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблоков. В противном случае, по информации о движении в списке кандидатов слияния на основе субблоков проходят последовательно, чтобы проверить, существует ли информация о движении, которая является такой же, как кандидатная информация о движении контрольной точки, в списке кандидатов слияния на основе субблоков. Если в списке кандидатов слияния на основе субблоков не присутствует информация о движении, которая является такой же, как кандидатная информация о движении контрольной точки, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблока.
[00363] Определение того, являются ли две части кандидатной информации о движении одинаковыми, должно быть реализовано путем определения того, совпадают ли прямые и обратные опорные кадры двух частей кандидатной информации о движении и горизонтальные и вертикальные компоненты каждого вектора движения вперед и вектора движения назад. Две части кандидатной информации о движении считаются разными только тогда, когда все эти элементы различны.
[00364] Если количество частей информации о движении в списке кандидатов слияния на основе субблоков достигает максимальной длины списка MaxNumSubblockMergeCand (MaxNumSubblockMergeCand - положительное целое число, такое как 1, 2, 3, 4 или 5, где 5 используется в качестве примера в следующем описании, а подробности здесь не описаны), построение списка кандидатов завершено. В противном случае выполняется прохождение блока в следующем соседнем местоположении.
[00365] D2: Если sps_affine_enabled_flag=1, кандидатная информация о движении контрольной точки для текущего блока выводится с использованием способа предсказания построенного вектора движения контрольной точки и добавляется в список кандидатов слияния на основе субблока, как показано на фиг. 8B.
[00366] Этап 801c: Получить информацию о движении контрольных точек текущего блока. Например, для получения подробной информации обратитесь к этапу 601 в предшествующем описании в «5. Способ предсказания построенного вектора движения контрольной точки». Подробности здесь снова не описываются.
[00367] Этап 802c: Объединить информацию о движении контрольных точек, чтобы получить информацию о движении построенных контрольных точек. Подробнее см. этап 602 на фиг. 6D. Подробности здесь снова не описываются.
[00368] Этап 803c: Добавить информацию о движении построенной контрольной точки в список кандидатов слияния на основе субблоков.
[00369] Если длина списка кандидатов слияния на основе субблоков меньше максимальной длины списка MaxNumSubblockMergeCand, по комбинациям информации о движении контрольных точек проходят в заранее установленном порядке, и результирующая допустимая комбинация используется в качестве кандидатной информации движения контрольной точки. В этом случае, если список кандидатов слияния на основе субблоков пуст, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблока. В противном случае информация о движении в списке кандидатных векторов движения просматривается последовательно, чтобы проверить, существует ли информация о движении, одинаковая с информацией о движении кандидатной точки в списке кандидатов слияния на основе субблока. Если в списке кандидатов слияния на основе субблоков не присутствует информация о движении, одинаковая с кандидатной информацией о движении контрольной точки, кандидатная информация о движении контрольной точки добавляется в список кандидатов слияния на основе субблока.
[00370] Например, предустановленный порядок выглядит следующим образом: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3). Всего существует шесть комбинаций.
[00371] Например, если sps_affine_type_flag=1, предустановленный порядок будет следующим: Affine (CP1, CP2, CP3) -> Affine (CP1, CP2, CP4) -> Affine (CP1, CP3, CP4) -> Affine (CP2, CP3, CP4) -> Affine (CP1, CP2) -> Affine (CP1, CP3). Всего существует шесть комбинаций. Порядок добавления шести комбинаций в список кандидатных векторов движения конкретно не ограничен в этом варианте осуществления этой заявки.
[00372] Если sps_affine_type_flag=0, предустановленный порядок следующий: Affine (CP1, CP2) -> Affine (CP1, CP3). Всего есть две комбинации. Порядок добавления двух комбинаций в список кандидатных векторов движения конкретно не ограничивается в этом варианте осуществления этой заявки.
[00373] Если информация о движении контрольной точки, соответствующая некоторой комбинации, недоступна, комбинация считается недоступной. Если комбинация доступна, индекс опорного кадра комбинации определяется (при наличии двух контрольных точек, минимальный индекс опорного кадра выбирают в качестве индекса опорного кадра комбинации; при наличии более чем двух контрольных точек, индекс опорного кадра с максимальной частотой присутствия выбирают в качестве индекса опорного кадра комбинации, и если множество индексов опорного кадра имеет одинаковую частоту присутствия, минимальный индекс опорного кадра, выбирают в качестве индекса опорного кадра комбинации). Векторы движения контрольной точки дополнительно масштабируются. Если информация о движении всех контрольных точек после масштабирования одинакова, комбинация недействительна.
[00374] D3: Необязательно, если sps_planar_enabled_flag=1, информация о движении, созданная с использованием ATMVP, добавляется в список кандидатов слияния на основе субблоков. Для получения подробной информации см. предыдущее описание в разделе «7. Планарное предсказание вектора движения».
[00375] Необязательно, в этом варианте осуществления этой заявки список кандидатных векторов движения может быть дополнен. Например, после вышеупомянутого процесса прохождения, если длина списка кандидатных векторов движения меньше, чем максимальная длина списка MaxNumSubblockMergeCand, список кандидатных векторов движения может дополняться до тех пор, пока длина списка не станет равной MaxNumSubblockMergeCand.
[00376] Заполнение может выполняться с использованием способа заполнения нулевого вектора движения или с помощью способа объединения или взвешенного усреднения существующей кандидатной информации о движении в существующем списке. Следует отметить, что в этой заявке также могут использоваться другие способы для заполнения списка кандидатных векторов движения. Подробности здесь не описаны.
[00377] Этап 803b: Синтаксически анализировать битовый поток и определить оптимальную информацию о движении контрольной точки.
[00378] Номер индекса merge_subblock_idx синтаксически анализируется, и оптимальная информация о движении определяется из списка кандидатов слияния на основе субблоков на основе номера индекса.
[00379] merge_subblock_idx обычно бинаризуется с использованием TR-кода (усеченный унарный, truncated unary code). Другими словами, merge_subblock_idx отображается в разные строки бинов на основе максимального значения индекса. Максимальное значение индекса предварительно сконфигурировано или передано. Например, если максимальное значение индекса равно 4, merge_subblock_idx преобразовывается в двоичную форму в соответствии с таблицей 3.
Таблица 3.
индекс
Строка бинов
0
0
1
1
0
2
1
1
0
3
1
1
1
0
4
1
1
1
1
[00380] Когда максимальное значение индекса равно 2, merge_subblock_idx преобразовывается в двоичную форму в соответствии с таблицей 4.
Таблица 4.
индекс
Строка бинов
0
0
1
1
0
2
1
1
[00381] Если merge_subblock_idx передается с использованием строки бинов, сторона декодера может определить номер индекса на основе максимального значения индекса и таблицы 2 или таблицы 3. Например, максимальное значение индекса равно 4. Когда декодирование выполняется для получения номера индекса, если получен 0 или номер индекса, полученный посредством декодирования, равен максимальному значению индекса, определяется номер индекса. Например, когда выполняется декодирование для получения номера индекса, если первый бит равен 0, декодирование, которое выполняется для получения номера индекса, заканчивается, и номер индекса определяется как 0. В другом примере, если первый бит равен 1, а второй бит равен 0, декодирование, которое выполняется для получения номера индекса, заканчивается, и номер индекса определяется как 1.
[00382] Установка максимального значения индекса и таблицы бинаризации конкретно не ограничивается в этом варианте осуществления этой заявки.
[00383] Этап 804b: Если оптимальной информацией о движении является ATMVP или информация о планарном движении, получить вектор движения для каждого субблока, напрямую используя ATMVP или планарный способ.
[00384] Если режим движения, указанный оптимальной информацией о движении, является аффинным режимом, вектор движения каждого субблока текущего блока получается на основе оптимальной информации о движении контрольной точки и  аффинной модели движения, используемой для текущего блока декодирования. Этот процесс аналогичен этапу 805a.
[00385] Этап 805b: Выполнить компенсацию движения для каждого субблока на основе определенного вектора движения субблока, чтобы получить значение выборки предсказания субблока.
[00386] В существующей технологии нет приемлемого способа определения максимальной длины (MaxNumSubblockMergeCand) списка кандидатных векторов движения, соответствующего режиму слияния субблоков.
[00387] Ввиду этого варианты осуществления этой заявки предоставляют способ и аппаратуру предсказания видеоизображения, чтобы обеспечить метод определения максимальной длины (MaxNumSubblockMergeCand) списка кандидатных векторов движения, соответствующего режиму слияния субблоков. Способ и аппаратура основаны на одной и той же изобретательской концепции. Поскольку принцип решения задач способа аналогичен принципу аппаратуры, между реализациями аппаратуры и способа может быть сделана взаимная ссылка. Повторных описаний нет.
[00388] Метод определения максимальной длины списка кандидатных векторов движения, соответствующего режиму слияния субблоков, подробно описывается ниже в двух случаях.
[00389] В первом случае режим слияния субблоков может содержать по меньшей мере одно из аффинного режима, режима расширенного временного предсказания вектора движения или режима планарного предсказания вектора движения.
[00390] Во втором случае считается, что режим планарного предсказания вектора движения не присутствует в режиме слияния субблоков. Другими словами, режим слияния субблоков может содержать по меньшей мере один из аффинного режима или режима расширенного временного предсказания вектора движения.
[00391] Ниже приводится подробное описание реализации этой заявки с точки зрения декодера со ссылкой на прилагаемые чертежи. В частности, способ может выполняться декодером 30 видео, или может быть реализован модулем компенсации движения в декодере видео, или может выполняться процессором.
[00392] Для первого случая в качестве примеров представлены несколько возможных реализаций, от первой реализации до пятой.
[00393] ФИГ. 9 показывает описание первой реализации.
[00394] Этап 901: синтаксически анализировать первый указатель из битового потока. Выполнить этап S902 или этап S904.
[00395] Первый указатель используется для обозначения того, содержит ли кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, аффинный режим. Другими словами, указатель 1 используется, чтобы указать, можно ли (или разрешено) использовать аффинный режим для выполнения компенсации движения в блоке, который должен быть обработан.
[00396] Например, первый указатель может быть сконфигурирован в SPS в битовом потоке. Исходя из этого, синтаксический анализ первого указателя из битового потока может быть реализован следующим образом: синтаксический анализ указателя 1 из SPS в битовом потоке. В качестве альтернативы, первый указатель может быть сконфигурирован в заголовке слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в слайсе. На основании этого, синтаксический анализ первого указателя из битового потока может быть реализован следующим образом: анализ первого указателя из заголовка слайса для слайса в битовом потоке, причем блок, который должен быть обработан, содержится в слайсе.
[00397] Например, первый указатель может быть представлен синтаксическим элементом sps_affine_enabled_flag, а sps_affine_enabled_flag используется для указания, может ли аффинный режим использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении. Например, когда sps_affine_enabled_flag=0, это указывает, что аффинный режим не может использоваться для внутреннего предсказания блока изображения, содержащегося в видеоизображении. Когда sps_affine_enabled_flag=1, это указывает, что аффинная модель движения может использоваться для внешнего предсказания блока изображения, содержащегося в видеоизображении.
[00398] Этап S902: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксически проанализировать второй указатель из битового потока, где второй указатель используется для указания (или определения) максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения - это список кандидатных векторов, созданный для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков. Первый список кандидатных векторов движения может называться MaxNumSubblockMergeCand.
[00399] Например, второй указатель может быть сконфигурирован в SPS, PPS или заголовке слайса. На основании этого синтаксический анализ второго указателя из битового потока может быть реализован следующим образом: анализ второго указателя из набора параметров последовательности в битовом потоке; или синтаксический анализ второго указателя из заголовка слайса для слайса, включая блок, который должен быть обработан, в битовом потоке.
[00400] Например, второй указатель может быть представлен K_minus_max_num_subblock_merge_cand.
[00401] Например, значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 4.
[00402] Например, максимальное значение MaxNumSubblockMergeCand может быть 5.
[00403] Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен с помощью five_minus_max_num_subblock_merge_cand.
[00404] В таблице 5 показан пример синтаксической структуры для синтаксического анализа второго указателя.
Таблица 5.
slice_header( ) {
<b>дескриптор</b>
<b>...</b>
if(sps_affine_enable_flag)
five_minus_max_num_subblock_merge_cand
ue(v)
...
}
[00405] Этап S903: Определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя.
[00406] В примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, максимальная длина (MaxNumSubblockMergeCand) первого списка кандидатных векторов может быть получена в соответствии со следующей формулой: MaxNumSubblockMergeCand=K K_minus_max_num_subblock_merge_cand,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, а K - предварительно установленное неотрицательное целое число.
[00407] Этап S904: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель используется, чтобы указать, что режим ATMVP присутствует в режиме предсказания слияния субблоков, определить третье число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе третьего числа.
[00408] То, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, означает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, не может (не разрешено) содержать аффинный режим. Третий указатель используется для указания, присутствует ли режим ATMVP в режиме предсказания слияния субблоков. Другими словами, третий указатель используется для указания, разрешено ли использование режима ATMVP для внешнего предсказания блока, который должен быть обработан. Третий указатель может быть сконфигурирован в SPS, PPS или заголовке слайса.
[00409] В примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, а третий указатель используется для указания того, что режим ATMVP присутствует в режиме предсказания слияния субблоков, максимальная длина (MaxNumSubblockMergeCand) первого списка кандидатных векторов движения равна третьему числу.
[00410] Например, третий указатель может быть представлен sps_sbtmvp_enabled_flag. Например, когда sps_sbtmvp_enabled_flag равен первому значению, это указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков; или когда sps_sbtmvp_enabled_flag равен второму значению, это указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков. Например, первое значение равно 0, а второе значение равно 1.
[00411] Например, третье число может использоваться для указания максимального количества векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Например, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, если sps_sbtmvp_enabled_flag=0, третье число равно 0, или если sps_sbtmvp_enabled_flag=1 , третье число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Дополнительно, когда максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP, равно 1, третье число может быть равно значению sps_sbtmvp_enabled_flag. Например, если sps_sbtmvp_enabled_flag=0, третье число равно 0; или если sps_sbtmvp_enabled_flag=1, третье число равно 1.
[00412] То, что максимальное значение MaxNumSubblockMergeCand может быть равно 5, используется в качестве примера. Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag.
[00413] Если sps_affine_enable_flag=1, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00414] Например, five_minus_max_num_subblock_merge_cand может быть определен как вычитание максимальной длины списка предсказания вектора движения слияния на основе субблока в слайсе из 5 (five_minus_max_num_subblock_merge_cand указывает максимальное количество кандидатов предсказания векторов движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, который вычтен из 5).
[00415] Максимальное количество кандидатов MVP слияния на основе субблоков, MaxNumSubblockMergeCand, определяется следующим образом:
-- Если sps_affine_enabled_flag равно 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00416] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.
[00417] ФИГ. 10 показывает описание второй реализации.
[00418] Этап S1001: Для получения подробной информации о этапе S1001 см. этап S901. Подробности здесь снова не описываются. Выполнить этап S1002 или этап S1004.
[00419] Этап S1002: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксически анализировать второй указатель и третий указатель из битового потока, где второй указатель используется для указания (или определения) максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения представляет собой список кандидатных векторов движения, созданный для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков.
[00420] Этап S1003: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определить первое число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.
[00421] Для объяснения первого указателя, второго указателя и третьего указателя обратитесь к варианту осуществления, соответствующему фиг. 9. Подробности не описаны здесь снова.
[00422] Когда третий указатель указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков, первое число может быть равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Например, третий указатель может быть представлен sps_sbtmvp_enabled_flag. Когда sps_sbtmvp_enabled_flag=0, это указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. В этом случае первое число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Напротив, когда sps_sbtmvp_enabled_flag=1, это указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. В этом случае первое число равно 0. Например, максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP, может быть 1. В этом случае первое число может быть равно значению третьего указателя. Для получения подробной информации обратитесь к описанию варианта осуществления, соответствующего фиг. 9. Подробности здесь снова не описываются.
[00423] В возможном примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, максимальная длина первого списка кандидатных векторов движения может быть получена в соответствии со следующей формулой:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1,
где MaxNumSubblockMergeCand представляет максимальную длину первого списка кандидатных векторов движения, K_minus_max_num_subblock_merge_cand представляет второй указатель, L1 представляет первое число, а K представляет собой предварительно установленное неотрицательное целое число.
[00424] Например, значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 3.
[00425] Например, максимальное значение MaxNumSubblockMergeCand может быть 5.
[00426] Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен с помощью five_minus_max_num_subblock_merge_cand.
[00427] Например, L1 можно получить по следующей формуле:
L1=sps_sbtmvp_enabled_flag == 1? 0 : 1. Если sps_sbtmvp_enabled_flag=1, L1=0. Если sps_sbtmvp_enabled_flag=0, L1=1.
[00428] Этап S1004: Для получения подробной информации об этапе S1004 см. этап S904. Подробности здесь снова не описываются.
[00429] То, что максимальное значение MaxNumSubblockMergeCand может быть равно 5, используется в качестве примера. Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag.
[00430] Если sps_affine_enable_flag=1, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1).
[00431] Например, five_minus_max_num_subblock_merge_cand может быть определен как вычитание максимальной длины списка предсказания вектора движения слияния на основе субблока в слайсе из 5 (five_minus_max_num_subblock_merge_cand указывает максимальное количество кандидатов предсказания векторов движения (MVP) слияния, который вычтен из 5). Максимальное количество кандидатов MVP слияния на основе субблоков, MaxNumSubblockMergeCand, определяется следующим образом:
-- Если sps_affine_enabled_flag равно 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1).
[00432] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.
[00433] ФИГ. 11 показывает описание третьей реализации.
[00434] Этап S1101 – этап S1103: Для получения подробной информации о этапе S1101 – этапе S1103, обратитесь к этапу S901 – этапу S903. Подробности здесь снова не описываются.
[00435] Следует отметить, что в третьей реализации максимальное значение MaxNumSubblockMergeCand может быть разрешено равным 5. Например, второй указатель может быть представлен K_minus_max_num_subblock_merge_cand, где значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 4. Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен с помощью five_minus_max_num_subblock_merge_cand.
[00436] Этап S1104: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, синтаксически анализировать третий указатель и четвертый указатель из битового потока. Выполнить этап S1105, этап S1106 или этап S1107.
[00437] Третий указатель используется для указания состояния присутствия режима ATMVP в режиме предсказания слияния субблоков. Связанные описания третьего указателя см. в описаниях в варианте осуществления, соответствующем фиг. 9. Подробности не описаны здесь снова.
[00438] Четвертый указатель используется для указания состояния присутствия режима прямолинейного предсказания  (PLANAR) вектора движения в режиме предсказания слияния субблоков. Другими словами, четвертый указатель используется для указания, разрешено ли использование планарного режима для внешнего предсказания блока, который должен быть обработан.
[00439] Этап S1105: Когда третий указатель указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков, определить третье число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе только третьего числа.
[00440] Например, когда четвертый указатель является третьим значением, он указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков; или когда четвертый указатель представляет собой четвертое значение, он указывает, что планарный режим присутствует в режиме предсказания слияния субблоков. Например, третье значение равно 0, а четвертое значение равно 1. Например, четвертый указатель может быть сконфигурирован в SPS, PPS или заголовке слайса. Четвертый указатель может быть представлен sps_planar_enabled_flag.
[00441] Этап S1106: Когда третий указатель указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что планарный режим присутствует в режиме предсказания слияния субблоков, определить четвертое число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе четвертого числа.
[00442] Например, когда четвертый указатель указывает, что планарный режим присутствует в режиме предсказания слияния субблоков, четвертое число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима.
[00443] Например, на этапе S1106 максимальная длина первого списка кандидатных векторов движения равна четвертому числу. Например, если максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима, равно 1, максимальная длина первого списка кандидатных векторов движения равна 1. В другом примере, когда четвертый указатель равен 1, это указывает, что планарный режим присутствует в режиме предсказания слияния субблоков. В этом случае максимальная длина первого списка кандидатных векторов движения равна четвертому указателю.
[00444] Этап S1107: Когда третий указатель указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что планарный режим присутствует в режиме предсказания слияния субблоков, определить третье число на основе третьего указателя, определить четвертое число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе третьего числа и четвертого числа.
[00445] В примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, максимальное количество векторов движения, которые поддерживаются в предсказании, выполняемом с использованием планарного режима равно 1, и максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP, равно 1, если третий указатель равен 1, это указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков; или если третий указатель равен 0, это указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков; и если четвертый указатель равен 1, это указывает, что режим PLANAR присутствует в режиме предсказания слияния субблоков; или если четвертый указатель равен 0, это указывает, что планарный режим присутствует в режиме предсказания слияния субблоков. В этом случае максимальная длина первого списка кандидатных векторов движения может быть равна сумме третьего указателя и четвертого указателя.
[00446] Третий указатель представлен sps_sbtmvp_enabled_flag, а четвертый указатель представлен sps_planar_enabled_flag. Максимальная длина первого списка кандидатных векторов движения может быть получена по следующей формуле:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.
[00447] Когда sps_sbtmvp_enabled_flag=1 (указывает, что режим ATMVP присутствует в режиме предсказания слияния субблоков), и sps_planar_enabled_flag=0 (указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков), MaxNumSubblockMergeCand = sps_sbtmvp_enabled_flag = 1, который соответствует этапу S1105. Когда sps_sbtmvp_enabled_flag=0 (что указывает на то, что режим ATMVP не присутствует в режиме предсказания слияния субблоков) и sps_planar_enabled_flag=1 (указывает, что планарный режим присутствует в режиме предсказания слияния субблоков), MaxNumSubblockMergeCand = sps_planar_enabled_flag = 1, который соответствует этапу S1106. Когда sps_sbtmvp_enabled_flag=1 и sps_planar_enabled_flag=1, MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag=2, что соответствует этапу S1107.
[00448] Конечно, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит только режим прямолинейного предсказания вектора движения, третий указатель указывает, что режим ATMVP не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков, MaxNumSubblockMergeCand=0.
[00449] То, что максимальное значение MaxNumSubblockMergeCand может быть равно 5, используется в качестве примера.
[00450] Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.
[00451] Если sps_affine_enable_flag=1, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00452] Например, five_minus_max_num_subblock_merge_cand может быть определен как вычитание максимальной длины списка предсказания вектора движения слияния на основе субблока в слайсе из 5 (five_minus_max_num_subblock_merge_cand указывает максимальное количество кандидатов предсказания векторов движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, который вычтен из 5).
[00453] Максимальное количество кандидатов MVP слияния на основе субблоков, MaxNumSubblockMergeCand, определяется следующим образом:
-- Если sps_affine_enabled_flag равно 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand.
[00454] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.
[00455] ФИГ. 12A и фиг. 12B показывает описания четвертой реализации.
[00456] Этап S1201: Для получения подробной информации о этапе S1201 см. этап S901. Подробности здесь снова не описываются. Выполнить этап S1202 или этап S1206.
[00457] Этап S1202: Когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, синтаксически анализировать второй указатель, третий указатель и четвертый указатель из битового потока, где второй указатель используется для указания (или определения) максимальной длины первого списка кандидатных векторов движения, и первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков. Выполните этапы S1203, S1204 или этап S1205.
[00458] Этап S1203: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определить второе число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и второго числа.
[00459] Этап S1204: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, а четвертый указатель указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков, определить первое число на основе третьего указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя и первого числа.
[00460] Этап S1205: Когда третий указатель указывает, что режим расширенного временного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, и четвертый указатель указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков, определить первое число на основе третьего указателя, определить второе число на основе четвертого указателя и определить максимальную длину первого списка кандидатных векторов движения на основе второго указателя, первого числа и второго числа.
[00461] Когда четвертый указатель указывает, что планарный режим не присутствует в режиме предсказания слияния субблоков, второе число может быть равно максимальному числу векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима. Например, четвертый указатель может быть представлен sps_planar_enabled_flag. Когда sps_planar_enabled_flag=0, это указывает, что режим планарного предсказания вектора движения не присутствует в режиме предсказания слияния субблоков. В этом случае второе число равно максимальному количеству векторов движения, которые поддерживаются при предсказании, выполняемом с использованием режима ATMVP. Напротив, когда sps_planar_enabled_flag=1, это указывает, что режим планарного предсказания вектора движения присутствует в режиме предсказания слияния субблоков. В этом случае второе число равно 0. Например, максимальное количество векторов движения, которые поддерживаются при предсказании, выполняемом с использованием планарного режима, может быть 1. В этом случае второе число может быть равно значению sps_planar_enabled_flag.
[00462] В возможном примере, когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, максимальная длина первого списка кандидатных векторов движения может быть получена в соответствии со следующей формулой:
MaxNumSubblockMergeCand=K - K_minus_max_num_subblock_merge_cand - L1-L2,
[00463] Например, в четвертой реализации значение K_minus_max_num_subblock_merge_cand может находиться в диапазоне от 0 до 2 или от 0 до 3.
[00464] Например, максимальное значение MaxNumSubblockMergeCand может быть 5 или 6.
[00465] Когда максимальное значение MaxNumSubblockMergeCand может быть равно 5, второй указатель может быть представлен five_minus_max_num_subblock_merge_cand. Когда максимальное значение MaxNumSubblockMergeCand может быть 6, второй указатель может быть представлен с помощью six_minus_max_num_subblock_merge_cand.
[00466] Например, L1 можно получить по следующей формуле:
L1=sps_sbtmvp_enabled_flag == 1? 0 : 1. Если sps_sbtmvp_enabled_flag=1, L1=0. Если sps_sbtmvp_enabled_flag=0, L1=1.
[00467] В примере L2 может быть получен по следующей формуле:
L2=sps_planar_enabled_flag == 1? 0 : 1. Если sps_planar_enabled_flag=1, L2=0. Если sps_sbtmvp_enabled_flag=0, L2=1.
[00468] Этапы S1206 - S1209: Для получения подробной информации о этапах S1206 - S1209, обратитесь к этапам S1104 - S1107. Подробности здесь снова не описываются.
[00469] Например, максимальное значение MaxNumSubblockMergeCand может быть 5. Значение five_minus_max_num_subblock_merge_cand находится в диапазоне от 0 до 2.
[00470] Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag.
[00471] В противном случае (если sps_affine_enable_flag=1) MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1),
где (five_minus_max_num_subblock_merge_cand указывает максимальное число кандидатов предсказания вектора движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, вычтенном из 5), максимальное количество кандидатов MVP слияния на основе субблока, MaxNumSubblockMergeCand, определяется следующим образом:
-- Если sps_affine_enabled_flag равно 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):
MaxNumSubblockMergeCand=5 - five_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).
[00472] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 5 включительно.
[00473] Например, максимальное значение MaxNumSubblockMergeCand может быть 6. Значение five_minus_max_num_subblock_merge_cand находится в диапазоне от 0 до 3.
[00474] Если sps_affine_enable_flag=0, MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
[00475] В противном случае (если sps_affine_enable_flag=1) MaxNumSubblockMergeCand получается по следующей формуле:
MaxNumSubblockMergeCand=6 - six_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).
где (six_minus_max_num_subblock_merge_cand указывает максимальное число кандидатов предсказания вектора движения (MVP) слияния на основе субблока, поддерживаемых в слайсе, вычтенном из 6), максимальное количество кандидатов MVP слияния на основе субблока, MaxNumSubblockMergeCand, определяется следующим образом:
-- Если sps_affine_enabled_flag равно 0:
MaxNumSubblockMergeCand=sps_sbtmvp_enabled_flag+sps_planar_enabled_flag;
-- В противном случае (sps_affine_enabled_flag равно 1):
MaxNumSubblockMergeCand=6 - six_minus_max_num_subblock_merge_cand - (sps_sbtmvp_enabled_flag == 1? 0 : 1) - (sps_planar_enabled_flag == 1? 0 : 1).
[00476] Значение MaxNumSubblockMergeCand должно находиться в диапазоне от 0 до 6 включительно.
[00477] Для второго случая режим планарного предсказания вектора движения не считается присутствующим в режиме слияния субблоков. Другими словами, когда режим слияния субблоков может содержать по меньшей мере один из аффинного режима и режима расширенного временного предсказания вектора движения, может использоваться первая реализация или вторая реализация. Подробности не описаны здесь снова.
[00478] На основе той же концепции изобретения, что и в вариантах осуществления упомянутого способа, вариант осуществления этой заявки дополнительно предоставляет аппаратуру. Как показано на фиг. 13, аппаратура 1300 может быть, в частности, процессором в декодере видео, микросхемой, системой микросхем или модулем в декодере видео, например, блоком 304 энтропийного декодирования и/или блоком 344 внешнего предсказания.
[00479] Например, аппаратура может содержать блок 1301 синтаксического анализа и блок 1302 определения. Блок 1301 синтаксического анализа и блок 1302 определения выполняют этапы способа, описанные в вариантах осуществления, соответствующих фиг. 9 - фиг. 12A и фиг. 12B. Например, блок 1301 синтаксического анализа может быть сконфигурирован для синтаксического анализа указателей (например, первого указателя, второго указателя, третьего указателя или четвертого указателя), содержащихся в битовом потоке, а блок 1302 определения сконфигурирован для определения максимальной длины первого списка кандидатных векторов движения.
[00480] Вариант осуществления этой заявки дополнительно обеспечивает другую структуру аппаратуры, используемой в декодере. Как показано на фиг. 14, аппаратура 1400 может содержать интерфейс 1410 связи и процессор 1420. Необязательно, аппаратура 1400 может дополнительно содержать память 1430. Память 1430 может располагаться внутри или снаружи аппаратуры. И блок 1301 синтаксического анализа, и блок 1302 определения, показанные на фиг. 13 может быть реализован процессором 1420. Процессор 1420 отправляет или принимает видеопоток или битовый поток через интерфейс 1410 связи и сконфигурирован для реализации способов, показанных на фиг. 9 - фиг. 12A и фиг. 12B. В процессе реализации этапы процедуры обработки могут выполняться с использованием аппаратной интегральной логической схемы в процессоре 1420 или инструкции в форме программного обеспечения, чтобы завершить способы, показанные на фиг. 9 - фиг. 12A и фиг. 12B.
[00481] Интерфейс 1410 связи в этом варианте осуществления этой заявки может быть схемой, шиной, приемопередатчиком или любой другой аппаратурой, которая может быть сконфигурирована для обмена информацией. Например, другая аппаратура может быть устройством, подключенным к аппаратуре 1400. Например, если аппаратура является кодером видео, другая аппаратура может быть декодером видео.
[00482] В этом варианте осуществления этой заявки процессор 1420 может быть процессором общего назначения, процессором цифровых сигналов, специализированной интегральной схемой, программируемой вентильной матрицей или другим программируемым логическим устройством, дискретным затвором или транзисторным логическим устройством, или дискретным аппаратным компонентом и может реализовывать или выполнять способы, этапы и логические блок-схемы, раскрытые в вариантах осуществления этой заявки. Универсальный процессор может быть микропроцессором, любым традиционным процессором или т.п. Этапы способов, раскрытых со ссылкой на варианты осуществления этой заявки, могут выполняться непосредственно аппаратным процессором или могут выполняться с использованием комбинации аппаратного обеспечения в процессоре и программного модуля. Программный код, выполняемый процессором 1420 для реализации вышеупомянутых способов, может храниться в памяти 1430. Память 1430 связана с процессором 1420.
[00483] Соединение в этом варианте осуществления этой заявки может быть косвенным соединением или коммуникационным соединением между устройствами, блоками или модулями в электрической, механической или другой форме и используется для обмена информацией между устройствами, блоками, или модулями.
[00484] Процессор 1420 может работать совместно с памятью 1430. Память 1430 может быть энергонезависимой памятью, например, жестким диском (hard disk drive, HDD) или твердотельным накопителем (solid-state drive, SSD), или может быть энергозависимой памятью (volatile memory), например, оперативной памятью (random-access memory, RAM). Память 1430 - это любой другой носитель, который может быть сконфигурирован для переноса или хранения ожидаемого программного кода в форме инструкции или структуры данных, и к которому компьютер может получить доступ, но не ограничивается этим.
[00485] В этом варианте осуществления этой заявки конкретная среда соединения между интерфейсом 1410 связи, процессором 1420 и памятью 1430 не ограничивается. В этом варианте осуществления этой заявки память 1430, процессор 1420 и интерфейс 1410 связи подключены через шину на фиг. 14. Шина представлена жирной линией на фиг. 14. Режим соединения между другими компонентами описан просто схематично и не ограничивается этим. Шину можно разделить на адресную шину, шину данных, шину управления и т.п. Для простоты представления используется только одна толстая линия для представления шины на Фиг.14, но это не означает, что есть только одна шина или только один тип шины.
[00486] Вышеупомянутые возможные реализации и конкретные варианты осуществления, относящиеся к фиг. 9 - фиг. 12A и фиг. 12B предоставляют описания одного или нескольких аппаратур декодирования видеоданных в этой заявке. Следует понимать, что согласно предшествующему описанию сторона кодера обычно определяет режим внешнего предсказания и кодирует режим внешнего предсказания в битовом потоке. После того, как режим внешнего предсказания будет окончательно выбран, указатель (например, первый указатель, второй указатель, третий указатель или четвертый указатель, описанный выше) для режима внешнего предсказания кодируется в битовом потоке с использованием процесса кодирования, который полностью обратен вышеуказанному методу декодирования (процесс кодирования соответствует процессу декодирования синтаксического анализа первого указателя, второго указателя, третьего указателя или четвертого указателя). Следует понимать, что определение максимальной длины первого списка кандидатных векторов движения стороной кодера полностью согласуется с определением стороной декодера. Конкретный вариант осуществления стороны кодера не описывается. Однако следует понимать, что способ предсказания видеоизображения, описанный в этой заявке, также используется в устройстве кодирования.
[00487] Вариант осуществления этой заявки дополнительно предоставляет устройство, используемое в кодере. Как показано на фиг. 15, аппаратура 1500 может содержать интерфейс 1510 связи и процессор 1520. Необязательно, аппаратура 1500 может дополнительно содержать память 1530. Память 1530 может быть расположена внутри или снаружи аппаратуры. Процессор 1520 отправляет или принимает видеопоток или битовый поток через интерфейс 1510 связи.
[00488] В одном аспекте процессор 1520 сконфигурирован для: кодирования первого указателя в битовом потоке; и когда первый указатель указывает, что кандидатный режим, используемый для внешнего предсказания блока, который должен быть обработан, содержит аффинный режим, кодировать второй указатель в битовом потоке, причем второй указатель используется для указания максимальной длины первого списка кандидатных векторов движения, а первый список кандидатных векторов движения является списком кандидатных векторов движения, созданным для блока, который должен быть обработан, с использованием режима предсказания слияния субблоков.
[00489] Интерфейс 1510 связи в этом варианте осуществления этой заявки может быть схемой, шиной, приемопередатчиком или любой другой аппаратурой, которая может быть сконфигурирована для обмена информацией. Например, другая аппаратура может быть устройством, подключенным к аппаратуре 1500. Например, если аппаратура является кодером видео, другая аппаратура может быть декодером видео.
[00490] В этом варианте осуществления этой заявки процессор 1520 может быть процессором общего назначения, процессором цифровых сигналов, специализированной интегральной схемой, программируемой вентильной матрицей или другим программируемым логическим устройством, дискретным затвором или транзисторным логическим устройством, или дискретным аппаратным компонентом и может реализовывать или выполнять способы, этапы и логические блок-схемы, раскрытые в вариантах осуществления этой заявки. Универсальный процессор может быть микропроцессором, любым традиционным процессором или т.п. Этапы способов, раскрытых со ссылкой на варианты осуществления этой заявки, могут выполняться непосредственно аппаратным процессором или могут выполняться с использованием комбинации аппаратного обеспечения в процессоре и программного модуля. Программный код, выполняемый процессором 1520 для реализации вышеупомянутых способов, может храниться в памяти 1530. Память 1530 связана с процессором 1520.
[00491] Соединение в этом варианте осуществления этой заявки может быть косвенным соединением или коммуникационным соединением между аппаратурами, блоками или модулями в электрической, механической или другой форме и используется для обмена информацией между аппаратурами, блоками, или модулями.
[00492] Процессор 1520 может работать во взаимодействии с памятью 1530. Память 1530 может быть энергонезависимой памятью, например, жестким диском (hard disk drive, HDD) или твердотельным накопителем (solid-state drive, SSD), или может быть энергозависимой памятью (volatile memory), например, оперативной памятью (random-access memory, RAM). Память 1530 представляет собой любой другой носитель, который может быть сконфигурирован для переноса или хранения ожидаемого программного кода в форме инструкции или структуры данных, и к которому компьютер может получить доступ, но не ограничивается этим.
[00493] В этом варианте осуществления этой заявки конкретная среда связи между интерфейсом 1510 связи, процессором 1520 и памятью 1530 не ограничена. В этом варианте осуществления этой заявки память 1530, процессор 1520 и интерфейс 1510 связи подключены через шину на фиг. 15. Шина представлена жирной линией на фиг. 15. Режим соединения между другими компонентами описан просто схематично и не ограничивается этим. Шину можно разделить на адресную шину, шину данных, шину управления и т.п. Для простоты представления используется только одна толстая линия для представления шины на Фиг.15, но это не означает, что есть только одна шина или только один тип шины.
[00494] На основе вышеописанных вариантов осуществления, вариант осуществления данной заявки дополнительно обеспечивает компьютерный носитель данных. На носителе хранится программное обеспечение. Когда программное обеспечение считывается и выполняется одним или несколькими процессорами, может быть реализован способ, предусмотренный в любом одном или нескольких вышеупомянутых вариантах осуществления. Компьютерный носитель данных может содержать любой носитель, на котором может храниться программный код, такой как флэш-накопитель USB, съемный жесткий диск, постоянное запоминающее устройство, оперативное запоминающее устройство, магнитный диск или оптический диск.
[00495] На основе вышеописанных вариантов осуществления, вариант осуществления данной заявки дополнительно обеспечивает микросхему. Микросхема содержит процессор, сконфигурированный для реализации функций в любом одном или нескольких из вышеупомянутых вариантов осуществления, например, получения или обработки информации или сообщения, используемых в вышеупомянутых способах. Необязательно, микросхема дополнительно содержит память. Память сконфигурирована для хранения программных инструкций и данных, которые необходимы и выполняются процессором. Микросхема может содержать микросхему или может содержать микросхему и другое дискретное устройство.
[00496] Хотя конкретные аспекты этой заявки были описаны со ссылкой на кодер 20 видео и декодер 30 видео, следует понимать, что технологии этой заявки могут использоваться многими другими модулями кодирования и/или декодирования видео, процессорами, модулями обработки и аппаратными блоками декодирования и т.п., например кодерами/декодерами (CODEC). Кроме того, следует понимать, что этапы, описанные и показанные на фиг. С 8А по фиг. 12A и фиг. 12B представлены просто как возможные реализации. Другими словами, этапы, описанные в возможных реализациях на фиг. С 8А по фиг. 12A и фиг. 12B не обязательно выполняются в порядке, показанном на фиг. С 8А по фиг. 12A и фиг. 12B, и может быть выполнено меньше этапов, дополнительные или альтернативные этапы.
[00497] Кроме того, следует понимать, что в зависимости от возможных реализаций конкретные действия или события в любом из способов, описанных в этой спецификации, могут выполняться в разных порядках, действие или событие могут быть добавлены, или действия или события могут быть объединены, или опущены (например, не все описанные действия или события необходимы для реализации способов). Кроме того, в конкретной возможной реализации действия или события могут (например) подвергаться многопоточной обработке или обработке прерываний или могут обрабатываться множеством процессоров одновременно, а не последовательно. Кроме того, хотя конкретные аспекты этой заявки описаны как выполняемые одним блоком или устройством для ясности, следует понимать, что технологии этой заявки могут выполняться комбинацией блоков или модулей, связанных с видеодекодером.
[00498] В одной или нескольких возможных реализациях описанные функции могут быть реализованы с использованием оборудования, программного обеспечения, встроенного программного обеспечения или любой их комбинации. Если функции реализуются с использованием программного обеспечения, функции могут храниться на машиночитаемом носителе в виде одной или нескольких инструкций или кода или передаваться через машиночитаемый носитель и выполняться аппаратным блоком обработки. Машиночитаемый носитель может содержать машиночитаемый носитель данных или среду связи. Машиночитаемый носитель данных соответствует материальному носителю, например, носителю данных. Среда связи включает в себя любую среду, которая облегчает передачу компьютерной программы (например) из одного места в другое в соответствии с протоколом связи.
[00499] Таким образом, машиночитаемый носитель может соответствовать, например, (1) энергонезависимому материальному машиночитаемому носителю данных или (2) среде связи, такой как сигнал или носитель. Носитель данных может быть любым доступным носителем, к которому может получить доступ один или несколько компьютеров или один или несколько процессоров для извлечения инструкций, кода и/или структур данных для реализации технологий, описанных в этой заявке. Компьютерный программный продукт может содержать машиночитаемый носитель.
[00500] В качестве возможной реализации, а не ограничения, машиночитаемый носитель данных может содержать RAM, ROM, EEPROM, CD-ROM или другую аппаратуру хранения оптического диска, аппаратуру хранения магнитного диска или другую аппаратуру магнитного хранения, флэш-память или любой другой носитель, который можно использовать для хранения необходимого кода в форме инструкции или структуры данных и к которому может получить доступ компьютер. Точно так же любое соединение может быть соответственно названо машиночитаемым носителем. Например, если инструкция передается с веб-сайта, сервера или другого удаленного источника через коаксиальный кабель, оптическое волокно, витую пару, цифровую абонентскую линию (DSL) или беспроводные технологии, такие как инфракрасный порт, радио и микроволны, коаксиальный кабель, оптическое волокно, витая пара, DSL или беспроводные технологии, такие как инфракрасный порт, радио и микроволны, содержатся в определении среды.
[00501] Однако следует понимать, что машиночитаемый носитель данных и носитель хранения данных могут не содержать соединение, носитель, сигнал или другой временный носитель, но, альтернативно, означают энергонезависимые материальные носители данных. Магнитный диск и оптический диск, описанные в этой спецификации, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), дискету и диск Blu-ray. Магнитный диск обычно воспроизводит данные магнитным способом, а оптический диск воспроизводит данные оптически с помощью лазера. Комбинация вышеупомянутого магнитного диска и оптического диска также должна входить в объем машиночитаемого носителя.
[00502] Инструкция может выполняться одним или несколькими процессорами, такими как один или несколько процессоров цифровых сигналов (DSP), микропроцессоры общего назначения, специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA) или другие эквивалентные интегрированные или дискретные логические схемы. Следовательно, термин «процессор», используемый в этой спецификации, может быть любой из вышеупомянутых структур или другой структурой, которая используется для реализации технологий, описанных в этой спецификации. Кроме того, в некоторых аспектах функции, описанные в этой спецификации, могут быть предоставлены в рамках выделенных аппаратных и/или программных модулей, сконфигурированных для кодирования и декодирования, или могут быть включены в комбинированный кодек. Аналогичным образом, все технологии могут быть реализованы в одной или нескольких схемах или логических элементах.
[00503] Технологии в этой заявке могут быть реализованы в различных аппаратурах или устройствах, в том числе беспроводной мобильный телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). Различные компоненты, модули или блоки описаны в этой заявке, чтобы подчеркнуть функциональные аспекты устройства, сконфигурированного для выполнения раскрытых технологий, но не обязательно реализованы различными аппаратными блоками. Точнее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или обеспечены взаимодействующими аппаратными блоками (включая один или несколько процессоров, описанных выше) в комбинации с соответствующим набором программного обеспечения и/или встроенного программного обеспечения.
[00504] Приведенные выше описания являются просто примерами конкретных реализаций этой заявки, но не предназначены для ограничения объема защиты этой заявки. Любое изменение или замена, легко обнаруживаемая специалистом в данной области техники в пределах технического объема, раскрытого в настоящей заявке, должно/должна попадать в область охраны данной заявки. Следовательно, объем охраны данной заявки подлежит защите формулой изобретения.