СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ ВИДЕО С ПРЕДСКАЗАНИЕМ
METHOD AND DEVICE FOR PREDICTIVE VIDEO CODING

Область технического применения
Данное изобретение относится к технологиям обработки видео, в частности к способу и устройству кодирования видео с предсказанием.
Предпосылки к созданию изобретения
В настоящее время сетевые приложения постепенно развиваются в направлении предоставления мультимедийных услуг. Видео как важный компонент мультимедийных услуг стало одним из основных носителей информации. Широкое применение видео привело к появлению новых требований к его качеству. Разрешение всех типов видео в настоящее время возрастает. При этом темпы увеличения объема видеоданных превышают темпы развития устройств хранения данных и скорость расширения полосы пропускания сети. Поэтому в течение длительного времени большое внимание уделялось технологиям сжатия и кодирования видео.
В существующих технологиях кодирования и сжатия видео видеопоток обычно делится для соответствующего кодирования на I-кадры, Р-кадры и В-кадры. I-кадр - это кадр внутрикадрового кодирования, предсказать который при кодировании можно только с помощью внутрикадровой информации. В процессе декодирования изображение I-кадра может быть декодировано и восстановлено с использованием кодового потока текущего кадра. Процессы кодирования и декодирования I-кадра независимы, т.е. не связаны с соседними кадрами, например предыдущим и следующим. В процессах кодирования Р-кадра и В-кадра помимо использования технологий внутрикадрового предсказания может также применяться межкадровое предсказание. В технологиях межкадрового предсказания требуется поиск в опорном кадре блока, в наибольшей степени похожего на текущий макроблок, который требуется предсказать. В процессе декодирования блок предсказания для реализации декодирования может быть найден из декодированного опорного кадра по информации о векторе движения. Процессы кодирования и декодирования Р-кадра и В-кадра взаимосвязаны, имеют высокую временную сложность и для обеспечения эффективного сжатия в них используются межкадровая и внутрикадровая временная корреляция. По сравнению с процессом кодирования Р-кадра и В-кадра для предсказания I-кадра может использоваться только внутрикадровая пространственная корреляция. Поэтому этот процесс кодирования независим и менее сложен. Однако эффективность сжатия (-кадра намного меньше эффективности сжатия Р-кадра и В-кадра.
В настоящее время внутрикадровое предсказание в основном используется в процессе кодирования I-кадров. Однако если в Р- или В-кадре трудно найти точный блок предсказания с помощью технологий межкадрового поиска вектора движения, для некоторых макроблоков может также использоваться внутрикадровое предсказание.
В настоящее время в стандартах MPEG-2 (Moving Picture Exports Group-2) для внутрикадрового предсказания может применяться простой алгоритм пространственного предсказания. Для предсказания вместо использования информации кадра кодирования каждый пиксель в блоке кодирования может использовать значение 128. Для большинства последовательностей ошибка предсказания такого способа больше. Поэтому эффективность сжатия I-кадра, для которого используется такой алгоритм внутрикадрового предсказания, ниже. В стандартах MPEG-4 блок внутрикадрового кодирования использует алгоритм предсказания по постоянному/переменному току (DC/AC) частотной области. Сначала блок кодирования выполняет Дискретное Косинусное Преобразование ДКП (Direct Cosine Transform (DCT)) в частотную область, а затем - предсказание по коэффициенту текущего блока, используя коэффициент DC/AC соседнего блока. При использовании метода MPEG-4 эффективность сжатия I-кадра повышается. В спецификации H.264/AVC (Advanced Video Coding) предусмотрен алгоритм внутрикадрового предсказания по направлению. Для каждого блока пикселей 16*16, 8*8 и 4*4 этот алгоритм позволяет выполнять предсказание с определенного направления, используя верхний, левый, левый верхний и правый верхний кодированные блоки. Эффективность сжатия I-кадра может быть существенно повышена путем использования технологий предсказания по направлению. Однако в процессе предсказания, в котором блок применяется как блок предсказания, используется только корреляция пикселей между блоками, а корреляция между соседними пикселями в пределах блока полностью не используется. Для всего блока трудно точно предсказать пиксель, расположенный далеко от пикселя предсказания в пределах блока. Поэтому ошибка предсказания в пределах кадра больше. В частности, для блока со сложной текстурной информацией трудно достигнуть хорошего предсказания, что приводит к снижению эффективности сжатия внутрикадрового кодирования. Это может отрицательно сказаться на эффективности сжатия всей видеопоследовательности.
Для видеоизображений с одинаковым содержимым корреляция между пикселями больше и разрешение выше. Однако такая пространственная корреляция не полностью используется в существующих технологиях внутрикадрового кодирования. Для устранения этого недостатка очень важно изучить алгоритм предсказания, в котором полностью используется корреляция между пикселями для повышения эффективности сжатия при кодировании видео.
Краткое описание изобретения
В реализации настоящего изобретения предлагается способ кодирования видео с предсказанием для повышения эффективности сжатия при кодировании видео.
В реализации настоящего изобретения предлагается также устройство кодирования видео с предсказанием для повышения эффективности сжатия при кодировании видео.
Далее рассматриваются технические схемы, использованные в реализациях настоящего изобретения.
Предлагается способ кодирования видео с предсказанием, в котором предусмотрены следующие действия:
извлечение блока пикселей из текущего кадра и деление этого блока на основной и дополнительный наборы пикселей;
кодирование основного набора пикселей, вывод его кодового потока и получение значения восстановления этого набора пикселей;
интерполяция по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, использование результата в качестве предсказательного значения дополнительного набора пикселей, кодирование дополнительного набора пикселей с внутрикадровым предсказанием, вывод кодового потока дополнительного набора пикселей и получение значения восстановления дополнительного набора пикселей;
объединение значения восстановления основного набора пикселей со значением восстановления дополнительного набора пикселей и получение значения восстановления блока пикселей.
Предлагается устройство кодирования видео с предсказанием, содержащее блок деления пикселей, блок кодирования основного набора пикселей, блок кодирования дополнительного набора пикселей и блок объединения значений восстановления блока пикселей, причем
блок деления пикселей предназначен для извлечения блока пикселей из текущего кадра и деления этого блока на основной и дополнительный наборы пикселей;
блок кодирования основного набора пикселей служит для кодирования основного набора пикселей, вывода его кодового потока и получения значения восстановления этого набора пикселей;
блок кодирования дополнительного набора пикселей предназначен для интерполяции по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, использования результата в качестве предсказательного значения дополнительного набора пикселей, кодирования дополнительного набора пикселей с внутрикадровым предсказанием, вывода кодового потока дополнительного набора пикселей и получения значения восстановления дополнительного набора пикселей;
блок объединения значений восстановления блока пикселей служит для объединения значения восстановления основного набора пикселей со значением восстановления дополнительного набора пикселей и получения значения восстановления блока пикселей.
Как указано в приведенном выше описании технических схем, в режимах реализации данного изобретения сначала из текущего кадра извлекается блок пикселей, который делится на основной и дополнительный наборы пикселей. Затем выполняется кодирование основного набора пикселей, осуществляется вывод кодового потока основного набора пикселей и производится получение значения восстановления основного набора пикселей. Далее выполняется интерполяция по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, результат используется в качестве предсказательного значения дополнительного набора пикселей, дополнительный набор пикселей кодируется с внутрикадровым предсказанием, выводится кодовый поток дополнительного набора пикселей и производится получение значения восстановления дополнительного набора пикселей. Наконец, значение восстановления основного набора пикселей объединяется со значением восстановления дополнительного набора пикселей для получения значения восстановления блока пикселей. Таким образом, в режимах реализации настоящего изобретения полностью используется корреляция между внутрикадровыми пикселями. В результате точность предсказания может быть увеличена, а ошибка предсказания уменьшена. Кроме того, может быть непосредственно уменьшен объем связанных с ошибкой предсказания служебных данных кодового потока и повышена эффективность сжатия.
Режимы реализации настоящего изобретения могут применяться для кодирования I-кадра согласно спецификации H.264/AVC. Четный и нечетный макроблоки могут быть получены после выборки и деления по горизонтали с использованием каждого столбца для уменьшения доли служебных данных флагов в кодовом потоке в режиме кодирования с внутрикадровым предсказанием. В результате может быть дополнительно повышена эффективность сжатия. Для нечетного макроблока объем служебных данных флагов в кодовом потоке, связанных с режимом предсказания, может быть уменьшен посредством использования режима фиксированного предсказания. Для четного макроблока можно в большей степени уменьшить объем связанных с режимом внутрикадрового предсказания служебных данных флагов в кодовом потоке посредством кодирования с предсказанием усовершенствованного режима внутрикадрового предсказания.
Сложность реализации настоящего изобретения меньше. При кодировании нечетного макроблока с предсказанием с использованием восстановленного блока пикселей кодированного четного макроблока в вычислении интерполяционного фильтра с шестью ответвлениями используется только пиксель 19*16, причем пиксель 16*16 берется из пикселей, относящихся к четному макроблоку в текущем блоке 32*16, а пиксель 3*16 - из левого восстановленного соседнего макроблока. Буферизация макроблоков других строк в процессе кодирования не требуется. В результате объем используемой памяти существенно уменьшается и коэффициент успешных обращений к кэшу возрастает. Для источника видео высокой четкости с очень большим объемом данных схема с малым объемом используемой памяти легко реализуется с помощью микросхемы. Кроме того, режим реализации настоящего изобретения очень подходит для высокопараллельных вычислений. Таким образом, для источника видео высокой четкости может быть реализовано кодирование с быстрым сжатием.
Краткое описание изображений
На фиг.1 показана соответствующая реализации настоящего изобретения блок-схема способа кодирования видео с предсказанием.
На фиг.2 приведено соответствующее реализации настоящего изобретения схематическое представление режима выборки по всем строкам и столбцам.
На фиг.3 приведено соответствующее реализации настоящего изобретения схематическое представление выборки на доске.
На фиг.4 приведено соответствующее реализации настоящего изобретения схематическое представление выборки на классной доске, в котором в качестве единицы выборки используется блок пикселей 2*1.
На фиг.5 показана соответствующая реализации настоящего изобретения блок-схема способа кодирования яркостного компонента I-кадра.
На фиг.6 приведено соответствующее реализации настоящего изобретения схематическое представление способа деления макроблока.
На фиг.7 приведено соответствующее реализации настоящего изобретения схематическое представление способа выбора пикселя предсказания яркостного блока 4*4.
На фиг.8 приведено соответствующее реализации настоящего изобретения схематическое представление способа использования результата интерполяции четного макроблока в качестве предсказательного значения нечетного блока.
На фиг.9 приведено соответствующее реализации настоящего изобретения схематическое представление способа предсказания четного макроблока в режиме внутрикадрового предсказания.
На фиг.10 приведено соответствующее реализации настоящего изобретения схематическое представление общей структуры устройства кодирования видео с предсказанием.
На фиг.11 приведена соответствующая реализации настоящего изобретения структурная схема устройства кодирования видео с предсказанием.
На фиг.12 представлена соответствующая реализации настоящего изобретения диаграмма сравнения функций случайных искажений последовательности BigShips.
Варианты реализации изобретения
Чтобы цели, технические решения и преимущества изобретения стали понятнее, ниже приводятся подробные описания реализации изобретения с использованием прилагаемых изображений.
В реализациях на базе известного уровня техники недостатком является неполное использование внутрикадровой фиксированной пространственной взаимосвязи в технологиях внутрикадрового кодирования. Для устранения указанного выше недостатка и повышения эффективности кодирования в реализации настоящего изобретения используется способ кодирования видео с предсказанием на основе взаимосвязи соседних пикселей.
На фиг.1 показана соответствующая реализации настоящего изобретения блок-схема способа кодирования видео с предсказанием.
Как видно из фиг.1, в этом способе предусмотрены следующие действия.
Блок 101: извлечение блока пикселей из текущего кадра и деление этого блока на основной и дополнительный наборы пикселей.
Например, из текущего кадра кодирования может быть извлечен блок пикселей М*N, называемый исходным. М - ширина блока пикселей, а N - высота. Блоком пикселей M*N может быть яркостный блок или блок цветности (в реализациях изобретения нет ограничений на тип блока). Затем делается выборка нескольких пикселей блока пикселей M*N согласно определенному правилу выборки (предположим, что число этих пикселей - Р). Прошедшие выборку пиксели считаются основным набором пикселей. Остальные пиксели составляют дополнительный набор пикселей. То есть выполняется выборка Р пикселей из исходного блока M*N для формирования основного набора пикселей. Остальные пиксели могут образовать дополнительный набор пикселей. Значение М должно быть меньше или равно ширине текущего кадра. Значение N должно быть меньше или равно высоте текущего кадра, a P<M*N (т.е. размер основного набора пикселей должен быть меньше размера исходного блока).
В частности, блок пикселей может быть разделен на основной и дополнительный наборы пикселей с использованием режима выборки по всем строкам и столбцам или режима выборки на доске (либо классной доске). Ниже приведено подробное описание режимов выборки.
В режиме выборки по всем строкам и столбцам могут использоваться разные подрежимы выборки в зависимости от периода выборки по строке (обозначаемого Tr, Tr - целое, отличное от нуля, Tr<N), периода выборки по столбцу (обозначаемого Тc, Тc - целое, отличное от нуля, Тс≤М, Тr·Тс≠1), номера первой строки основного набора пикселей в блоке пикселей (обозначаемого r, r=1,…, Tr) и номера первого столбца основного набора пикселей в блоке пикселей (обозначаемого с, с=1,…, Тc).
На фиг.2 приведено соответствующее реализации настоящего изобретения схематическое представление режима выборки по всем строкам и столбцам, где параметры имеют следующие значения: с=3, r=4, Тc=4, Tr=5. Пиксели, представленные серыми прямоугольниками, образуют основной набор пикселей. При размещении основного набора пикселей для формирования блока m*n согласно начальной последовательности расположения (ширина основного набора пикселей - m, высота основного набора пикселей - n) отношение между значениями m, n и М, N определяется формулой (1).
<mrow><mi>m</mi><mo>=</mo><mrow><mo>⌊</mo><mrow><mfrac><mrow><mi>M</mi><mo>−</mo><mi>c</mi></mrow><mrow><msub><mi>T</mi><mi>c</mi></msub></mrow></mfrac></mrow><mo>⌋</mo></mrow><mo>+</mo><mn>1</mn></mrow>
<mrow><mi>n</mi><mo>=</mo><mrow><mo>⌊</mo><mrow><mfrac><mrow><mi>N</mi><mo>−</mo><mi>r</mi></mrow><mrow><msub><mi>T</mi><mi>r</mi></msub></mrow></mfrac></mrow><mo>⌋</mo></mrow><mo>+</mo><mn>1</mn><mtext> </mtext><mtext> </mtext><mi>ф</mi><mi>о</mi><mi>р</mi><mi>м</mi><mi>у</mi><mi>л</mi><mi>а</mi><mtext> </mtext><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>
,
<mrow><mrow><mo>⌊</mo><mrow /><mo>⌋</mo></mrow></mrow>
Функция
означает округление до ближайшего целого в сторону меньшего значения.
К режиму выборки на доске (классной доске) относятся сам этот режим и различные производные от него подрежимы выборки. При выборке на доске выборка соседних пикселей (верхнего, нижнего, левого и правого) каждого подлежащего выборке пикселя не выполняется. Когда подлежащей выборке единицей является блок пикселей фиксированного размера, а не отдельный пиксель, используется правило выборки на доске и такая выборка называется выборкой на классной доске. На фиг.3 приведено соответствующее реализации настоящего изобретения схематическое представление выборки на доске. На фиг.4 приведено соответствующее реализации настоящего изобретения схематическое представление выборки на классной доске, в котором в качестве единицы выборки используется блок пикселей 2*1. Как видно из фиг.3, пиксели, представленные серыми (или белыми) прямоугольниками, могут быть выбраны для формирования основного набора пикселей.
Следует отметить, что размер основного набора пикселей может быть разным в зависимости от режима выборки. Основной набор пикселей может формировать блок кодирования в соответствии с требованиями к кодированию. Дополнительный набор пикселей формируется из остальных пикселей исходного блока, исключая пиксели основного набора пикселей. Таким образом, размер дополнительного набора пикселей может совпадать или не совпадать с размером основного набора пикселей. Форма и номер блока кодирования, образованного дополнительным набором пикселей, могут быть не совместимы с формой и номером блока кодирования, образованного основным набором пикселей.
Блок 102: кодирование основного набора пикселей, вывод кодового потока основного набора пикселей и получение значения восстановления основного набора пикселей.
Способ предсказания, связанный с основным набором пикселей, может быть разным в зависимости от типа текущего кадра. Когда текущим является I-кадр, основной набор пикселей позволяет осуществлять предсказание с помощью алгоритмов, подобных алгоритму предсказания по направлению H.264/AVC. Когда текущим является Р- или В-кадр, основной набор пикселей позволяет осуществлять предсказание посредством алгоритма, подобного алгоритму предсказания по направлению H.264/AVC, или с помощью технологий межкадрового поиска вектора движения.
Сначала определяется тип текущего кадра. Если текущим является I-кадр, для кодирования основного набора пикселей используется алгоритм, подобный алгоритму предсказания по направлению H.264/AVC. Если текущим является Р- или В-кадр, для кодирования основного набора пикселей используется алгоритм, подобный алгоритму предсказания по направлению H.264/AVC, или технологии межкадрового поиска вектора движения.
H.264/AVC - это стандарт кодирования видео с самой высокой в настоящее время эффективностью сжатия. В стандарте H.264/AVC технологии предсказания по направлению используются блоком внутрикадрового кодирования для внутрикадрового предсказания. Для блоков с разными размерами при предсказании по направлению используются разные режимы предсказания. Для яркостного компонента размер блока может быть 16*16 или 4*4. Для яркостного блока 16*16 (тип соответствующего макроблока - I16МВ) возможны 4 разновидности режимов предсказания. Для яркостного блока 4*4 (тип соответствующего макроблока - I4MB) возможны 9 разновидностей режимов предсказания. Для компонента цветности размер блока - 8*8 и может быть 4 разновидности режимов предсказания. Для яркостного блока 16*16 (и блока цветности 8*8) возможны 4 разновидности режимов предсказания - предсказание по горизонтали, предсказание по вертикали, предсказание по постоянному току ПТ (DC) и планарное предсказание. При предсказании по горизонтали предсказательные значения всех пикселей в одной строке одинаковы. Предсказательное значение - это значение краевого пикселя левого соседнего восстановленного блока в строке. При предсказании по вертикали предсказательные значения всех пикселей в одном столбце одинаковы. Предсказательное значение - это значение краевого пикселя верхнего соседнего восстановленного блока в столбце. При предсказании по ПТ (DC) для всего блока используется одно и то же Предсказательное значение. Это значение может быть получено усреднением 16 (или 8) краевых пикселей верхнего соседнего восстановленного блока данного блока, 16 (или 8) краевых пикселей левого соседнего восстановленного блока данного блока и соседних пикселей в верхнем левом углу. Если некоторые из этих пикселей отсутствуют (текущий макроблок расположен на верхней или левой границе изображения), Предсказательное значение может быть получено усреднением существующих пикселей. При планарном предсказании предсказание для каждого пикселя в текущем блоке может выполняться с помощью линейной функции с использованием краевых пикселей левого и правого соседних восстановленных блоков текущего блока. При предсказании по направлению для яркостного блока 4*4 может быть 9 разновидностей режимов предсказания: предсказание по вертикали (режим 0), предсказание по горизонтали (режим 1), предсказание по диагонали в направлении влево вниз (режим 3), предсказание по диагонали в направлении вправо вниз (режим 4), предсказание по вертикали в направлении вправо (режим 5), предсказание по горизонтали в направлении вниз (режим 6), предсказание по вертикали в направлении влево (режим 7), предсказание по горизонтали в направлении влево (режим 8) и предсказание по ПТ (DC) (режим 2). Для предсказания пикселей в текущем блоке во всех режимах предсказания могут использоваться восстановленные пиксели в направлении, соответствующем режиму.
Блок 103: интерполяция по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, получение предсказательного значения дополнительного набора пикселей, кодирование дополнительного набора пикселей с внутрикадровым предсказанием, вывод кодового потока дополнительного набора пикселей и получение значения восстановления дополнительного набора пикселей.
Восстановленные значения пикселей могут содержать значение восстановления основного набора пикселей, а также значение восстановления основного набора пикселей и значение восстановления другого блока пикселей, за исключением текущего. Например, если текущим кодированным блоком пикселей является первый блок пикселей, выполняющий кодирование, то значение восстановления существует только для текущего блока пикселей. При этом восстановленные значения пикселей могут содержать только значение восстановления для основного набора пикселей. Затем после интерполяции по значению восстановления основного набора пикселей может быть получено предсказательное значение дополнительного набора пикселей. После этого выполняется кодирование с внутрикадровым предсказанием для дополнительного набора пикселей, выводится кодовый поток дополнительного набора пикселей и производится получение значения восстановления дополнительного набора пикселей. При наличии восстановленных значений пикселей другого блока пикселей выполняется интерполяция по всем этим значениям (которые содержат значение восстановления основного набора пикселей и восстановленные значения пикселей другого блока пикселей) для получения предсказательного значения дополнительного набора пикселей. Затем выполняется кодирование с внутрикадровым предсказанием, выводится кодовый поток дополнительного набора пикселей и производится получение значения восстановления дополнительного набора пикселей.
Все пиксели дополнительного набора пикселей могут быть классифицированы по их местоположению в этом наборе (предпочтительный вариант). Пиксели с информацией о соседних пикселях одной и той же известной степени могут быть отнесены к одной категории. Затем для дополнительного набора пикселей в каждой категории выполняется интерполяция по всем восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, значение восстановления восстановленного дополнительного набора пикселей и восстановленные значения пикселей другого блока пикселей, для получения предсказательного значения. После этого выполняется кодирование с внутрикадровым предсказанием для иерархической структуры.
Для предсказания дополнительный набор пикселей может использовать все восстановленные значения пикселей, в частности значение восстановления основного набора пикселей. Дополнительные наборы пикселей могут также классифицироваться по их размеру, в частности, когда размеры этих наборов намного превышают размеры основных наборов пикселей (например, в 10 раз). Затем дополнительный набор пикселей может быть предсказан с использованием иерархической структуры. Дополнительные наборы пикселей классифицируются, главным образом, по своему местоположению. "Известная степень" информации о соседних пикселях может определяться по местоположению пикселей. Дополнительные наборы пикселей с информацией о соседних пикселях одной и той же известной степени могут классифицироваться в одну категорию. Для пикселей одной категории может использоваться один и тот же режим предсказания. Для дополнительных наборов пикселей, находящихся в разных категориях, могут использоваться разные режимы предсказания. Когда для дополнительного набора пикселей выполняется кодирование с предсказанием с использованием иерархической структуры, при предсказании самого низкого уровня (т.е. предсказании последних кодированных пикселей) может использоваться результат кодирования из процесса предсказания высокого уровня (т.е. процесса предсказания ранее кодированных пикселей). Предсказание более низкого уровня может иметь более высокую точность. Таким образом, в последующем процессе квантования для пикселей, расположенных в разных категориях, могут выбираться разные точности квантования в зависимости от точности предсказания. Для данных ошибок предсказания более высокого уровня может использоваться более высокая точность квантования.
В конкретных реализациях получение предсказательного значения дополнительного набора пикселей осуществляется, в основном, путем интерполяции по восстановленным значениям пикселей с помощью интерполяционного фильтра. Для предсказания с использованием иерархической структуры могут быть созданы различные фильтры, соответствующие дополнительному набору пикселей на каждом уровне. Может быть несколько вариантов фильтров. Возможно непосредственное копирование восстановленных значений соседних пикселей или использование фильтра H.264/AVC с шестью ответвлениями. Возможна также разработка фильтров других типов. Для соответствующей интерполяции и выбора оптимального результата предсказания могут использоваться различные фильтры.
Блок 104: объединение значения восстановления основного набора пикселей со значением восстановления дополнительного набора пикселей для получения значения восстановления блока пикселей.
В этом блоке значение восстановления основного набора пикселей, полученное в блоке 102, повторно объединяется с полученным в блоке 103 значением восстановления дополнительного набора пикселей для получения значения восстановления исходного блока. Режим объединения представляет собой обратный процесс относительно режима выборки в блоке 101.
Выше подробно описан процесс кодирования в реализации данного изобретения.
Ниже описывается процесс кодирования в реализации данного изобретения с использованием в качестве примера кодирования яркостного компонента I-кадра видеоизображения.
На фиг.5 показана соответствующая реализации настоящего изобретения блок-схема способа кодирования яркостного компонента I-кадра. Ниже описывается процесс реализации данного изобретения с использованием яркостного блока 32*16 шириной и высотой 32 и 16 соответственно (число 32 соответствует упоминавшемуся выше значению М, а 16 - упоминавшемуся выше значению N). Специалистам в данной области должно быть понятно, что описание с использованием яркостного блока 32*16 в качестве примера является только иллюстративным и не служит для ограничения области реализации настоящего изобретения.
Как видно из фиг.5, в данном способе предусмотрены следующие действия. В блоке 501 из местоположения текущего кадра кодирования (соответствующего двум последовательно расположенным в направлении по горизонтали обычным макроблокам) извлекается яркостный блок 32*16 и выполняется его деление по горизонтали. Четные столбцы могут формировать четный макроблок (МБ), а нечетные - соответствующий ему нечетный макроблок (МБ).
В частности, извлекаются столбцы с четными номерами (2, 4, 6,…, 16) яркостного блока 32*16 для формирования четного макроблока и столбцы с нечетными номерами (1, 3, 5,…, 15) яркостного блока 32*16 для формирования нечетного макроблока. Соответствующее схематическое представление показано на фиг.6.
В блоке 502 определяется, достигает ли текущая позиция кодирования макроблока, расположенного на правой границе кадра, а также, существует ли только один макроблок и невозможно ли извлечь яркостный блок 32*16. Если да, осуществляется переход к блоку 503, а в противном случае - к блоку 504.
В блоке 503 выполняется кодирование одного макроблока с помощью алгоритма предсказания по направлению и осуществляется переход к блоку 507. Для одного макроблока на правой границе выполняются предсказание с помощью алгоритма предсказания по направлению, преобразование, квантование и энтропийное кодирование ошибки предсказания для вывода кодового потока блока, а также обратное квантование и обратное преобразование коэффициента квантования для получения блока восстановления данного блока.
В блоке 504 выполняются предсказание четного макроблока с помощью алгоритма предсказания по направлениию, преобразование, квантование и энтропийное кодирование ошибки предсказания для вывода кодового потока блока, а также обратное квантование и обратное преобразование коэффициента квантования для получения блока восстановления данного блока.
Для четного макроблока требуется также принять решение в отношении одной из 4 разновидностей режимов предсказания (предсказание по горизонтали, предсказание по вертикали, предсказание по ПТ (DC) и планарное предсказание) для блока типа I16МВ (ответственного за выполнение внутрикадрового предсказания для всего макроблока 16*16) и одной из 9 разновидностей режимов предсказания (предсказание по вертикали (режим 0), предсказание по горизонтали (режим 1), предсказание по диагонали в направлении влево вниз (режим 3), предсказание по диагонали в направлении вправо вниз (режим 4), предсказание по вертикали в направлении вправо (режим 5), предсказание по горизонтали в направлении вниз (режим 6), предсказание по вертикали в направлении влево (режим 7), предсказание по горизонтали в направлении влево (режим 8) и предсказание по ПТ (DC) (режим 2)) для блока типа I4MB (ответственного за выполнение внутрикадрового предсказания для 16 блоков 4*4, которые получаются в результате деления макроблока 16*16). Такое решение необходимо для выбора оптимального режима предсказания с вычислением кода. Если текущий четный макроблок используется в качестве блока 16*16, который требуется предсказать, способ предсказания и местоположение вводимых пикселей совместимы со способом предсказания и местоположением вводимых пикселей в способе предсказания яркостного блока 16*16 при применении алгоритма предсказания по направлению, используемого в реализациях на базе известного уровня техники. Если текущий макроблок делится на 16 подлежащих предсказанию блоков 4*4, то, несмотря на наличие 9 разновидностей режимов предсказания, местоположение пикселя, используемого для предсказания, может изменяться. На фиг.6 серые точки представляют пиксели, образующие четный макроблок, а белые точки - пиксели, образующие нечетный макроблок. Серые точки в прямоугольнике могут формировать кодируемый в данный момент блок 4*4. Для предсказания используются пиксели А-М. Пиксели A-D берутся из верхнего соседнего четного макроблока текущего макроблока. Пиксели I-M берутся из левого соседнего четного макроблока текущего макроблока. Они совместимы с выбором пикселей предсказания при выполнении предсказания для яркостного блока 4*4 с помощью алгоритма предсказания по направлению, используемого в реализациях на базе известного уровня техники. Однако местоположение пикселей Е-Н может изменяться. Пиксели Е-Н могут браться из ближайшего обычного макроблока, расположенного в верхней правой части текущего макроблока.
В блоке 505 выполняется предсказание нечетного макроблока с помощью пикселей восстановления четного макроблока. Используется фильтр H.264/AVC с шестью ответвлениями для интерполяции по восстановленному четному макроблоку и получения предсказательного значения нечетного макроблока. Выполняются преобразование, квантование и энтропийное кодирование ошибки предсказания нечетного макроблока для вывода кодового потока, а также обратное квантование и обратное преобразование коэффициента квантования для получения блока восстановления данного блока.
В частности, с помощью блока пикселей восстановления четного макроблока предсказывается нечетный макроблок. После восстановления четного макроблока восстанавливаются левый и правый соседние пиксели нечетного макроблока. Для интерполяции по значениям пикселей восстановления четного макроблока с целью получения предсказательного значения текущего нечетного макроблока может использоваться интерполяционный фильтр с шестью ответвлениями. На фиг.7 серые точки представляют восстановленные пиксели в четном макроблоке, а белые точки - пиксели, подлежащие кодированию в текущем нечетном макроблоке.
предсказание
Для пикселя X, подлежащего кодированию в текущем нечетном макроблоке, предсказательное значение может быть заранее представлено значением X. Для интерполяции по значениям восстановления восстановленных пикселей А, В, С, D, Е и F, расположенных слева и справа от пикселя X, применяется формула (2). Результат используется в качестве предсказательного значения Х пикселя X, подлежащего кодированию в текущем нечетном макроблоке.
<mtable columnalign="left"><mtr><mtd><msub><mi>X</mi><mrow><mi>п</mi><mi>р</mi><mi>е</mi><mi>д</mi><mi>с</mi><mi>к</mi><mi>а</mi><mi>з</mi><mi>а</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo>=</mo><mi>О</mi><mi>к</mi><mi>р</mi><mi>у</mi><mi>г</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi><mo stretchy="false">(</mo><mo stretchy="false">(</mo><msub><mi>А</mi><mrow><mi>в</mi><mi>о</mi><mi>с</mi><mi>с</mi><mi>т</mi><mi>а</mi><mi>н</mi><mi>о</mi><mi>в</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo>−</mo><mn>5</mn><msub><mi>В</mi><mrow><mi>в</mi><mi>о</mi><mi>с</mi><mi>с</mi><mi>т</mi><mi>а</mi><mi>н</mi><mi>о</mi><mi>в</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo>+</mo><mn>20</mn><msub><mi>С</mi><mrow><mi>в</mi><mi>о</mi><mi>с</mi><mi>с</mi><mi>т</mi><mi>а</mi><mi>н</mi><mi>о</mi><mi>в</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo>+</mo></mtd></mtr><mtr><mtd><mn>20</mn><msub><mi>D</mi><mrow><mi>в</mi><mi>о</mi><mi>с</mi><mi>с</mi><mi>т</mi><mi>а</mi><mi>н</mi><mi>о</mi><mi>в</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo>−</mo><mn>5</mn><msub><mi>Е</mi><mrow><mi>в</mi><mi>о</mi><mi>с</mi><mi>с</mi><mi>т</mi><mi>а</mi><mi>н</mi><mi>о</mi><mi>в</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo>+</mo><msub><mi>F</mi><mrow><mi>в</mi><mi>о</mi><mi>с</mi><mi>с</mi><mi>т</mi><mi>а</mi><mi>н</mi><mi>о</mi><mi>в</mi><mi>л</mi><mi>е</mi><mi>н</mi><mi>и</mi><mi>е</mi></mrow></msub><mo stretchy="false">)</mo><mo>/</mo><mn>32</mn><mtext> </mtext><mi>ф</mi><mi>о</mi><mi>р</mi><mi>м</mi><mi>у</mi><mi>л</mi><mi>а</mi><mtext> </mtext><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mtd></mtr></mtable>
"Округление" - это функция, означающая округление до ближайшего целого.
восстановление
С - значение восстановления восстановленного пикселя С, расположенного рядом с пикселем Х с левой стороны.
восстановление
В - значение восстановления восстановленного пикселя В, расположенного во второй позиции слева от пикселя X.
восстановление
А - значение восстановления восстановленного пикселя А, расположенного в третьей позиции слева от пикселя X.
восстановление
D - значение восстановления восстановленного пикселя D, расположенного рядом с пикселем Х с правой стороны.
восстановление
Е - значение восстановления восстановленного пикселя Е, расположенного во второй позиции справа от пикселя X.
восстановление
F - значение восстановления восстановленного пикселя F, расположенного в третьей позиции справа от пикселя X.
В блоке 505 все пиксели нечетного макроблока могут предсказываться независимо от соседних с ними пикселей, т.е. полностью используется корреляция по горизонтали между пикселями. Результат предсказания более точен, чем при предсказании по направлению. В частности, для блока со сложной текстурой результат такого режима предсказания может быть существенно улучшен, что может также привести к непосредственному повышению производительности кодирования. Используя блок 505, можно также получить другое преимущество: при применении в реализации данного изобретения способа внутрикадрового кодирования можно существенно снизить временную сложность по сравнению с алгоритмом H.264/AVC. Благодаря использованию блока 505, в кодируемом в данный момент I-кадре может быть предсказана половина или почти половина пикселей с помощью простого унифицированного интерполяционного фильтра с шестью ответвлениями. Принимать решение об использовании режима с более высокой сложностью не требуется, что существенно уменьшает сложность вычислений.
При использовании стандартов кодирования видео H.264/AVC в реализациях на базе известного уровня техники для макроблока, кодируемого с использованием типа I4МВ, необходимо регистрировать режим предсказания каждого блока 4*4. Чтобы сократить эти служебные данные кодового потока, требуется предсказывать эти режимы предсказания. Благодаря применению блока 505, независимо от типа макроблока (I4МВ или I16МВ), используемого нечетным макроблоком, для нечетного макроблока возможен только один режим фиксированного предсказания. Таким образом, регистрация в кодовом потоке не требуется. Для четного макроблока при использовании макроблока типа I4MB по-прежнему необходимо регистрировать режим предсказания для каждого блока 4*4. Для более точного предсказания режима предсказания четного макроблока типа I4MB местоположение блока, подлежащего предсказанию, может изменяться. Как видно из фиг.9, при обычном внутрикадровом кодировании для предсказания режима предсказания текущего блока (номер 1) используются режимы предсказания блоков U и Lo. Однако применение блока 505 может позволить левому соседнему макроблоку текущего четного макроблока стать нечетным макроблоком, для которого используется режим фиксированного предсказания. Следовательно, здесь режим предсказания текущего блока (номер 1) предсказывается посредством использования режимов предсказания блоков Le и U в четном макроблоке, расположенном рядом с текущим четным блоком елевой стороны. Подобные ситуации существуют для блоков с номерами 5, 9 и 13 в текущем четном макроблоке и блоках, расположенных на левых границах других четных блоков.
В блоке 506 блок восстановления четного макроблока, полученный в блоке 504, объединяется с блоком восстановления нечетного макроблока, полученным в блоке 505, и получается блок восстановления исходного яркостного блока 32*16. Все столбцы четного макроблока соответствуют четным столбцам блока 32*16. Все столбцы нечетного макроблока соответствуют нечетным столбцам блока 32*16.
В блоке 507 определяется, завершено ли кодирование текущего кадра. Если кодирование завершено, процесс заканчивается. В противном случае происходит переход к блоку 501 для непрерывного кодирования следующего яркостного блока.
На основе представленного выше подробного описания в реализации данного изобретения предусмотрено также устройство кодирования видео с предсказанием.
На фиг.10 приведено соответствующее реализации настоящего изобретения схематическое представление общей структуры устройства кодирования видео с предсказанием.
Как видно из этой схемы, данное устройство содержит блок 1001 деления пикселей, блок 1002 кодирования основного набора пикселей, блок 1003 кодирования дополнительного набора пикселей и блок 1004 объединения значений восстановления блока пикселей.
Блок 1001 деления пикселей предназначен для извлечения блока пикселей из текущего кадра и деления этого блока на основной и дополнительный наборы пикселей.
Блок 1002 кодирования основного набора пикселей служит для кодирования основного набора пикселей, вывода кодового потока основного набора пикселей и получения значения восстановления основного набора пикселей.
Блок 1003 кодирования дополнительного набора пикселей предназначен для интерполяции по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, использования результата в качестве предсказательного значения дополнительного набора пикселей, кодирования дополнительного набора пикселей с внутрикадровым предсказанием, вывода кодового потока дополнительного набора пикселей и получения значения восстановления дополнительного набора пикселей.
Блок 1004 объединения значений восстановления блока пикселей служит для объединения значения восстановления основного набора пикселей со значением восстановления дополнительного набора пикселей (согласно режиму, соответствующему делению пикселей) и получения значения восстановления блока пикселей.
В режиме реализации блок 1002 кодирования основного набора пикселей служит для определения типа текущего кадра. Если текущим является I-кадр, этот блок может использовать для кодирования алгоритм предсказания по направлению H.264/AVC. Если текущим является Р- или В-кадр, этот блок может использовать для кодирования алгоритм, подобный алгоритму предсказания по направлению H.264/AVC, или алгоритм межкадрового поиска вектора движения.
В режиме реализации блок 1003 кодирования дополнительного набора пикселей предназначен для классификации всех пикселей дополнительного набора по их местоположению в этом наборе, отнесения пикселей с информацией о соседних пикселях одной и той же известной степени к одной категории, использования для дополнительного набора пикселей в каждой категории интерполяционного фильтра для соответствующей интерполяции по всем значениям пикселей восстановления, содержащим значение восстановления основного набора пикселей, значение восстановления восстановленного дополнительного набора пикселей и восстановленные значения пикселей другого блока пикселей, с целью получения предсказательного значения и последующего кодирования с внутрикадровым предсказанием для иерархической структуры.
В качестве интерполяционного фильтра, входящего в блок 1003 кодирования дополнительного набора пикселей, может применяться фильтр с шестью ответвлениями H.264/AVC или другие фильтры. При использовании интерполяционного фильтра с шестью ответвлениями этот фильтр может применяться для интерполяции по восстановленным пикселям и использования полученного результата в качестве предсказательного значения дополнительного набора пикселей в каждой категории.
На фиг.11 приведена соответствующая реализации настоящего изобретения структурная схема устройства кодирования видео с предсказанием. Устройство на этом изображении служит для кодирования блока пикселей M*N с предсказанием.
Как видно из фиг.11, устройство содержит блок выборки, предназначенный для извлечения блока M*N из кодируемого в данный момент кадра и извлечения из этого блока некоторых пикселей (согласно определенному правилу выборки) для формирования основного набора пикселей. Остальные пиксели могут регистрироваться в качестве пикселей дополнительного набора пикселей.
В зависимости от типа текущего кадра основной набор пикселей позволяет выполнять предсказание с использованием подходящего для данного типа кадра режима предсказания, преобразование, квантование и энтропийное кодирование ошибки предсказания для вывода кодового потока основного набора пикселей, а также обратное квантование и обратное преобразование коэффициента квантования и добавление предсказательного значения основного набора пикселей к результату для получения значения восстановления основного набора пикселей.
Для дополнительного набора пикселей сначала выполняются следующие действия: интерполяция по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, использование результата в качестве предсказательного значения дополнительного набора пикселей, преобразование, квантование и энтропийное кодирование ошибки предсказания для вывода кодового потока дополнительного набора пикселей, а также обратное квантование и обратное преобразование коэффициента квантования и добавление предсказательного значения дополнительного набора пикселей к результату для получения значения восстановления дополнительного набора пикселей.
Затем значение восстановления основного набора пикселей объединяется со значением восстановления дополнительного набора пикселей (в режиме, соответствующем делению пикселей) для получения значения восстановления блока пикселей. На фиг.11 кружком обозначается сумма двух потоков данных; знак "плюс" означает, что поток данных является положительным, а знак "минус" указывает, что поток данных отрицательный. Ниже приведено более подробное описание фиг.11. Сначала блок выборки извлекает из кодируемого в данный момент кадра блок М*N, а также некоторые пиксели из этого блока для формирования основного набора пикселей согласно определенному правилу выборки. Остальные пиксели могут регистрироваться в качестве пикселей дополнительного набора пикселей.
В зависимости от типа текущего кадра основной набор пикселей позволяет выполнять предсказание с использованием режима предсказания, подходящего для данного типа кадра. В узле А предсказательное значение основного набора пикселей вычитается из исходного значения этого набора для получения ошибки предсказания основного набора пикселей. Затем производится вычисление в направлении вниз от узла А и выполняются преобразование, квантование и энтропийное кодирование ошибки предсказания основного набора пикселей для вывода кодового потока этого набора. При вычислении в направлении вниз от узла А коэффициент ошибки предсказания после преобразования и квантования должен быть обработан посредством последовательного выполнения обратного квантования и обратного преобразования, чтобы получить значение расхождения. В узле В значение расхождения складывается с предсказательным значением основного набора пикселей и получается значение восстановления этого набора.
Аналогично для дополнительного набора пикселей сначала выполняется интерполяция по восстановленным значениям пикселей, содержащим значение восстановления основного набора пикселей, и результат используется в качестве предсказательного значения дополнительного набора пикселей. Затем в узле D предсказательное значение дополнительного набора пикселей вычитается из исходного значения этого набора и получается ошибка предсказания дополнительного набора пикселей. После этого последовательно выполняются преобразование, квантование и энтропийное кодирование предсказательного значения дополнительного набора пикселей и выводится кодовый поток этого набора. При вычислении в направлении вниз от узла D коэффициент ошибки предсказания после преобразования и квантования должен быть обработан посредством последовательного выполнения обратного квантования и обратного преобразования, чтобы получить значение расхождения. Затем в узле С значение расхождения складывают с предсказательным значением дополнительного набора пикселей для получения значения восстановления этого набора.
Как было указано в описании примера, представленного на фиг.5, поскольку в результате использования режима реализации настоящего изобретения для предсказания половины, или почти половины, пикселей каждого I-кадра может применяться простой, фиксированный и эффективный алгоритм интерполяционного фильтра, обеспечиваются полное использование корреляции по горизонтали между внутрикадровыми пикселями, повышение точности предсказания и уменьшение ошибки предсказания. Таким образом, может быть непосредственно уменьшен объем связанных с ошибкой предсказания служебных данных кодового потока и повышена эффективность сжатия.
В то же время в результате использования режима реализации настоящего изобретения может быть уменьшен объем связанных с режимом внутрикадрового предсказания служебных данных флагов в кодовом потоке, что также обеспечивает повышение эффективности сжатия. Для нечетного макроблока режим фиксированного предсказания позволяет уменьшить объем связанных с режимом предсказания служебных данных флагов в кодовом потоке. Для четного макроблока способ кодирования с предсказанием улучшенного режима внутрикадрового предсказания позволяет еще больше уменьшить объем служебных данных флагов в кодовом потоке, связанных с режимом внутрикадрового предсказания.
Кроме того, в схеме внутрикадрового кодирования, рассмотренной в примере описания режима реализации настоящего изобретения, для нечетного макроблока используется блок пикселей восстановления кодированного четного макроблока, а также простой унифицированный интерполяционный фильтр с шестью ответвлениями для кодирования с предсказанием. Таким образом, в кодируемом в данный момент I-кадре для половины или почти половины пикселей не требуется принимать решение об использовании режима с более высокой сложностью. Следовательно, по сравнению с алгоритмом внутрикадрового предсказания H.264/AVC, сложность вычислений может быть существенно уменьшена.
Кроме того, сложность реализации технической схемы, предложенной в реализациях настоящего изобретения, меньше. При использовании блока пикселей восстановления кодированного четного макроблока для кодирования с предсказанием нечетного макроблока в вычислении интерполяционного фильтра с шестью ответвлениями может использоваться только пиксель 19*16, причем пиксель 16*16 берется из пикселей, относящихся к четному макроблоку в текущем блоке 32*16, а пиксель 3*16 - из левого восстановленного соседнего макроблока. Буферизация макроблоков других строк в процессе кодирования не требуется. В результате объем задействуемой памяти существенно уменьшается и коэффициент успешных обращений к кэшу может увеличиться. Для источника видео высокой четкости с очень большим объемом данных схема с малым объемом задействуемой памяти легко реализуется с помощью микросхемы.
Техническое решение, предложенное в реализациях настоящего изобретения, подходит для выполнения высокопараллельных вычислений. Таким образом, может быть реализовано сжатие с быстрым кодированием источника видео высокой четкости.
Способ, предусмотренный режимом реализации настоящего изобретения, применим для базового уровня стандартов H.264/AVC. В качестве базового программного обеспечения может использоваться базовое программное обеспечение JM15.0 стандартов H.264/AVC. Для последовательности с разрешением 720р могут быть достигнуты увеличение Пикового Отношения Сигнал/Шум ПОСШ (PSNR) в среднем на 0,39 дБ или экономия на скорости передачи 7,31%.
На фиг.12 представлена соответствующая реализации настоящего изобретения диаграмма сравнения функций случайных искажений последовательности BigShips. На этом изображении сравниваются графики функций случайных искажений последовательности BigShips при разрешении 720р и скорости передачи 30 кадров в секунду. Верхний график на диаграмме соответствуют функции случайных искажений последовательности BigShips с разрешением 720р и скоростью передачи 30 кадров в секунду при использовании реализации настоящего изобретения. Нижний график на диаграмме соответствуют функции случайных искажений последовательности BigShips с разрешением 720р и скоростью передачи 30 кадров в секунду при использовании стандарта Н.264. Для данной последовательности при использовании реализации настоящего изобретения возможны увеличение значения ПОСШ (PSNR) на 0,79 дБ или экономия на скорости передачи 15%. Выше описаны только предпочтительные реализации данного изобретения. Они не используются для его ограничения. Любые модификации, эквивалентные замены и улучшения, сделанные в рамках сущности и согласно принципам настоящего изобретения, должны входить в объем охраны режимов его реализации.