СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ, СИГНАЛ, НОСИТЕЛЬ ДАННЫХ И ПРОДУКТЫ КОМПЬЮТЕРНОЙ ПРОГРАММЫ
METHOD AND APPARATUS FOR ENCODING AND DECODING SIGNAL, DATA MEDIUM AND COMPUTER PROGRAM PRODUCT

1. Область изобретения
Область изобретения относится к кодированию и декодированию последовательностей изображений.
Более конкретно, изобретение относится к сжатию/распаковке последовательностей изображений или сцен (двухмерные или многомерные сцены), используя преобразование, основанное на блоке изображений. Изобретение может быть, в частности, применено к временному прогнозу, реализованному в известных видеокодерах изображения (MPEG, H.264 и т.д.) или в будущих видеокодерах (Н.265).
2. Уровень техники
Современные видеокодеры, осуществляющие стандарты видеосжатия, полученные из организации MPEG (MPEG 1, MPEG 2, MPEG 4, …) или от ITU-Т Международного союза электросвязи (Н.261, …, H.264/AVC), используются для кодирования последовательности изображений и передачи кодированной последовательности, сжатой из последовательности исходного изображения.
С этой целью в этих кодерах используется схема кодирования, используя прогноз между передачей последовательности изображений, чтобы получить основные характеристики для сжатия.
Можно вспомнить, что изображения в последовательности традиционно подразделяются на части массива, которые затем подразделяются на макроблоки. Каждый макроблок затем подразделяется на блоки пикселей, где блок пикселей соответствует группировке смежных пикселей. Блок пикселей изображения последовательности может затем быть кодирован временным прогнозом от одного или нескольких блоков одного или нескольких других изображений последовательности. В этом случае используется термин "промежуточный блок". Блок пикселей также может быть кодирован пространственным прогнозом от одного или нескольких блоков изображения, которое будет кодировано. В этом случае используется термин "внутренний блок".
Во время кодирования блока определяется, кодируется ли этот блок, используя информацию, полученную из других изображений последовательности, называемых опорными изображениями. Эти опорные изображения - изображения, которые уже были ранее подвергнуты кодированию/декодированию. Опорный блок соответствует группировке пикселей опорного изображения.
Более конкретно, кодирование промежуточного блока осуществляется в две стадии:
- прежде всего, делается прогноз кодируемого блока, используя один или несколько опорных блоков и механизм компенсации движения для учета видимого движения или снова для достижения эффективного прогноза;
- затем вычисляется остаток ошибки в прогнозе, определяя разницу между кодированным блоком и прогнозом.
Затем кодируется и передается (и/или сохраняется в зависимости от способа применения) разница или остаток между текущим блоком и предсказанным блоком. Во время декодирования полученная разница добавляется к прогнозу, чтобы реконструировать (восстановить) блок.
Классически, в стандартах видеосжатия, прогноз компенсацией движения промежуточного блока достигается посредством компенсации движения типа преобразования. Таким образом, если v обозначает рассматриваемый вектор движения и R - рассматриваемое опорное изображение, прогноз Р в каждой точке или пикселе х блока определяется как: P(x)=R(x+v).
Один недостаток этого метода компенсации движения заключается в том, что он не может использоваться для учета естественных движений вращения, изменения масштаба, сдвига или изменений другого типа.
Для прогноза предлагаются и другие разновидности компенсации движения.
Например, П.Ишвар и П.Мулин в работе "On Spatial Adaptation of Motion Field Smoothness in Video Coding" ("Пространственная адаптации однородности движения поля при видеокодировании"), предложили основанный на блоке способ компенсации движения, известный как ОВМС (компенсация перекрытием движения блока), который состоит в рассмотрении нескольких значений векторов для установления движения для прогнозирования значения пикселя х блока, подлежащего кодированию:
<mrow><mi>P</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mi>i</mi></munder><mrow><msub><mi>w</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mi>R</mi><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><msub><mi>ν</mi><mi>i</mi></msub></mrow><mo>)</mo></mrow></mrow></mstyle></mrow>
i
где векторы ν соответствуют векторам движения i,
i
величины w(x) соответствуют взвешиваемым значениям между различными прогнозами, полученными различными векторами движения;
i
i
взвешенные значения w(x)в, основном, зависят от положения точки х, рассмотренной в блоке. Как правило, используемые веса w(x) являются одними и теми же для всех блоков.
Хотя эта методика может использоваться для учета большого семейства естественных движений, полученный прогноз имеет среднее качество.
Следовательно, объем передаваемой информации о прогнозируем остатке является очень большим, и эта передача дополнительной информации влечет за собой потери с точки зрения эффективности сжатия.
Следовательно, есть потребность в новых способах кодирования/декодирования изображения, имеющих низкую сложность, хотя, в то же время, обеспечивающих высококачественный прогноз, и которые, по меньшей мере, частично исправляют недостатки известного уровня техники.
3. Краткое описание изобретения
Изобретение предлагает новый подход, который не имеет указанных недостатков известного уровня техники в виде способа кодирования последовательности изображений, содержащего стадию кодирования, по меньшей мере, одного блока текущего изображения последовательности, осуществляя прогноз, связывающий, по меньшей мере, один блок с соответствующим блоком в опорном изображении последовательности.
В соответствии с изобретением, прогноз содержит следующие стадии, по меньшей мере, для одного данного блока текущего изображения или опорного изображения соответственно:
- определение множества векторов управления для указанного блока, каждый из которых представляет собой сдвиг между характерной точкой блока и соответствующей позицией указанной характерной точки в опорном изображении или в текущем изображении соответственно;
- выполнение, по меньшей мере, одного подразбиения блока в подблоки;
- определение множества векторов управления для подблоков из векторов управления для блока;
- определение величины прогноза, по меньшей мере, для одной точки текущего изображения, из компенсации движения, по меньшей мере, одного из указанных подблоков, выполняемого из векторов управления, определенных для подблока.
Способ кодирования также содержит стадию вставки в сигнал, представляющий последовательность, информации для восстановления векторов управления для данного блока.
Таким образом, изобретение предлагает новый метод прогноза "промежуточного" блока, обеспечивающего эффективное качество прогноза, который, в то же время, имеет низкую сложность. Предложенное решение также учитывает естественные движения в последовательности изображений с тем, чтобы принимать во внимание движения блока относительно, по меньшей мере, одного из его соседей (то есть блоков, расположенных слева, справа, над или под этим блоком).
С этой целью, изобретение предлагает определить несколько векторов управления для блока (например, два, три, четыре или больше векторов), определенных в зависимости от соединения этого блока с одним или несколькими его соседями.
Например, векторы управления для блока или подблока каждый связан с одной из вершин блока или подблока. Таким образом, для изображения 2D четыре вектора управления связаны с блоком, при этом один вектор управления связан с каждой вершиной или углом блока. Для изображения 3D восемь векторов связаны с блоком, который фактически соответствует кубу, при этом вектор управления связан с каждым углом блока. Также возможно связать эти векторы управления с другими точками блока, соответствующими, например, контуру. Таким же образом, ряд векторов управления, связанных с блоком, не фиксируются.
В частности, предложенная методика применима для кодирования последовательности изображений, используя прямые и/или обратные проекции.
Таким образом, если используемая методика реализует обратную проекцию, эта проекция является прогнозом обратной компенсации движения, и векторы управления указывают на путь от текущего изображения до одного или нескольких опорных изображений. В этом случае, множество векторов управления, определенных для данного блока, принадлежит текущему изображению.
Наоборот, если используемая методика реализует прямую проекцию, прогноз является прогнозом компенсацией движения вперед, и векторы управления указывают на путь от одного или нескольких опорных изображений к текущему изображению. Затем для данного блока, принадлежащего опорному изображению, определяется множество векторов управления.
По меньшей мере, для одного данного блока опорного изображения или текущего изображения, указанный блок разбивается на подблоки, для которых определяется множество векторов управления. Эти подблоки, в частности, могут иметь различные размеры.
Такое разбиение, в частности, позволяет учитывать естественные движения в последовательности изображений, таких как аффинная деформация, хотя, в то же время, может быть ограничено только выполнением операции преобразования блока. Таким образом, эти операции преобразования блока значительно снижают сложность вычисления интерполированных значений изображения в субпиксельных позициях (т.е. совместное использование блока вычисления более эффективно, чем отдельное вычисление, основанное на точке).
Согласно одной конкретной цели изобретения, порции информации для восстановления векторов управления включают векторы управления для данного блока или информации, представляющей эти векторы управления. Таким образом, эти векторы управления для блока могут быть легко восстановлены в декодере.
Согласно одному варианту воплощения изобретения, порции информации для восстановления векторов управления включают, по меньшей мере, один флажок соединения, представляющий движение между данным блоком и, по меньшей мере, одним соседним блоком.
Например, порции информации для восстановления векторов управления содержат два флажка соединения, включающие:
- первый флажок, представляющий движение между данным блоком и блоком, расположенным выше данного блока, между текущим изображением и опорным изображением, и
- второй флажок, представляющий движение между данным блоком и блоком, расположенным влево от данного блока, между текущим изображением и опорным изображением.
Эти флажки, обозначенные, например, как "flag_tc" для первого флажка и "flag_lc" для второго флажка, используются, чтобы связать движения данного блока и его соседа (верхней или левой стороны соседнего блока) между текущим изображением и опорным изображением. После получения декодером эти флажки будут использоваться, чтобы восстановить векторы управления.
Например, если данный блок и блок, расположенный над ним, имеют общий гребень, как в текущем изображении, так и в опорном изображении, после компенсации движения, второй флажок равен 1 (flag_tc=1). Предполагается, что два блока соединяются вместе.
Если данный блок и блок, расположенный с его левой стороны, имеют общий гребень, как в текущем изображении, так и в опорном изображении, после компенсации движения, второй флажок равен 1 (flag_lc=1).
Изобретение также относится к продукту компьютерной программы, загружаемому из сети связи и/или сохраненному на считываемом компьютером носителе и/или исполнимой процессором программе, содержащей команды кода программы для реализации способа кодирования, описанного выше, когда программа выполняется на компьютере.
В другом примере воплощения изобретение относится к устройству для кодирования последовательности изображений, содержащему средства для кодирования, по меньшей мере, одного блока текущего изображения последовательности, применяя средство прогнозирования, связывающее указанный, по меньшей мере, один блок с соответствующим блоком в опорном изображении последовательности.
В соответствии с изобретением, средства прогнозирования содержат, по меньшей мере, один указанный блок текущего изображения или опорного изображения, соответственно:
- средство для определения множества векторов управления для блока;
- средство для разбиения блока на подблоки;
- средство для определения множества векторов управления для подблоков из векторов управления, определенных для данного блока;
- средство для определения значения прогноза, по меньшей мере, для одной точки текущего изображения из компенсации движения, по меньшей мере, одного из указанных подблоков, выполняемого из векторов управления, определенных для данного подблока.
Кроме того, кодирующее устройство этого типа имеет средства для вставки в сигнал, представляющий последовательность, информации для восстановления векторов управления для указанного блока.
Такое кодирующее устройство, в частности, приспособлено к реализации вышеописанного способа кодирования. Например, это может быть видеокодер MPEG или Н.264 или кодер, использующий будущий стандарт видеосжатия.
Еще одна цель изобретения относится к сигналу, представляющему последовательность изображения, кодированную по способу кодирования, описанному выше.
Такой сигнал содержит, по меньшей мере, одну порцию информации для восстановления векторов управления для указанного блока.
Этот сигнал, конечно, может иметь различные характеристики, относящиеся к способу кодирования по настоящему изобретению.
Например, информация о восстановлении включает, по меньшей мере, один флажок соединения, представляющий движение между данным блоком и, по меньшей мере, одним соседним блоком.
Согласно одному варианту воплощения изобретения, информация о восстановлении включает векторы управления или информацию, представляющую эти векторы, для указанного блока.
В частности такой сигнал также включает разницу или остаток между текущим блоком изображения и прогнозом.
Сигнал также может передавать информацию о порядке подразбиения блоков.
Изобретение также относится к носителю, несущему сигнал как упомянуто выше.
Еще одна цель изобретения относится к способу декодирования сигнала, представляющего последовательность изображений, содержащему стадию для восстановления, по меньшей мере, одного изображения из последовательности, из прогноза изображения, подлежащего восстановлению, при этом указанный прогноз, связывает блок восстанавливаемого изображения, по меньшей мере, с одним соответствующим блоком в опорном изображении последовательности.
Такой способ декодирования содержит стадию получения информации о восстановлении векторов управления, по меньшей мере, для одного указанного блока изображения, подлежащего восстановлению, или опорного изображения соответственно.
Кроме того, прогноз включает следующие стадии для указанного блока:
- определение множества векторов управления для блока, каждый из которых представляет собой сдвиг между характерной точкой указанного блока и соответствующей позицией указанной характерной точки в опорном изображении или в изображении, подлежащем восстановлению, соответственно, из указанной информации о восстановлении;
- по меньшей мере, одно разбиение блока на подблоки;
- определение множества векторов управления для подблоков из векторов управления для блока;
- определение величины прогноза, по меньшей мере, для одной точки изображения, подлежащего восстановлению из компенсации движения, по меньшей мере, одного из указанных подблоков, выполняемого из векторов управления, определенных для подблока.
Такой способ является особенно подходящим для декодирования последовательности изображений, кодированных согласно вышеописанному способу кодирования. Таким образом, выполняются те же самые стадии прогноза, которые выполнялись при кодировании, чтобы восстановить данный блок, добавляя переданный в сигнале остаток прогноза к прогнозу.
Прогноз, выполняемый на стороне декодирования, использует информацию о восстановлении векторов управления, переданных в сигнале.
Таким образом, согласно первому примеру воплощения, стадия получения включает стадию извлечения, по меньшей мере, одного флажка соединения, представляющего движение между данным блоком и, по меньшей мере, одним соседним блоком.
Флажки, например, "flag_tc" (первый флажок) и "flag_lc" (второй флажок) передаются в сигнале.
Эти флажки используются, в частности, чтобы восстановить векторы управления для указанного блока.
Согласно второму примеру воплощения, стадия получения включает стадию приема векторов управления для данного указанного блока.
В частности способ декодирования включает стадию решения и/или параметризации разбиения, позволяя решить, должен ли данный блок быть разбит и/или параметризовать разбиение указанного блока. Эти стадии решения и/или параметризации определяются, принимая во внимание предопределенный критерий, принадлежащий группе, содержащей:
- предопределенное число подблоков для блока;
- информацию о сходстве указанных векторов управления;
- размер указанного блока;
- флажок, представляющий число разбиений и т.д.
Таким образом, все блоки изображения, подлежащего восстановлению, или блоки опорного изображения, не обязательно подразделяются на подблоки, и разбиение на подблоки может изменяться от одного блока изображения к другому. Следовательно, разделение на подблоки является адаптивным.
Изобретение также относится к продукту компьютерной программы, загружаемому из сети связи и/или сохраненному на считываемом компьютером носителе и/или выполняемом процессором, содержащим команды кода программы для реализации способа декодирования, как описано выше, когда программа выполняется процессором.
Другой пример воплощения изобретения относится к устройству декодирования сигнала, представляющего последовательность изображений, при этом указанное устройство содержит средство для восстановления, по меньшей мере, одного изображения из последовательности, создавая средство для прогноза изображения, подлежащего восстановлению, связывая блок восстанавливаемого изображения, по меньшей мере, с одним соответствующим блоком в последовательности опорного изображения.
Такое устройство также содержит средства получения информации о восстановлении векторов управления, по меньшей мере, для одного указанного блока изображения, подлежащего восстановлению или для опорного изображения соответственно.
Указанные средства прогнозирования для указанного блока включают:
- средство для определения множества векторов управления для блока из информации о восстановлении;
- средство для разбиения блока на подблоки;
- средства для определения множества векторов управления для подблоков из векторов управления блока;
- средство для определения величины прогноза, по меньшей мере, для одной точки изображения, подлежащего восстановлению, из компенсации движения, по меньшей мере, одного из указанных подблоков, выполняемого из векторов управления, определенных для подблока.
Декодер этого типа, в частности, наиболее подходит для реализации способа декодирования, описанного выше. Это, например, видеодекодер MPEG или Н.264 или декодер, в котором будет использован любой будущий стандарт видеосжатия.
4. Описание чертежей
Другие признаки и преимущества изобретения будут очевидны из следующего описания, не ограничивающего конкретного примера воплощения изобретения, со ссылками на приложенные чертежи, на которых:
- фигуры 1А и 1В представляют основные стадии прогноза компенсацией движения и способа кодирования согласно одному примеру воплощения изобретения;
- фигура 2 предлагает алгоритм определения векторов управления для блока;
- фигуры 3A-3G иллюстрируют определение векторов для блока, принимая во внимание его соседей;
- фигура 4 представляет пример разбиения блока на подблоки;
- фигура 5 иллюстрирует определение величины прогноза для пикселя;
- фигура 6 представляет основные стадии способа декодирования согласно одному примеру воплощения изобретения;
- фигуры 7 и 8 представляют структуру кодирующего устройства и декодирующего устройства согласно одному конкретному примеру воплощения изобретения.
5. Описание одного примера воплощения изобретения
5.1 Общие принципы
Общий принцип изобретения основан на кодировании и декодировании последовательности изображений, осуществляя временный прогноз, связывающий блок изображения, подлежащий кодированию, по меньшей мере, с одним соответствующим блоком в последовательности опорного изображения.
Более конкретно, изобретение предлагает новый способ прогноза путем компенсации движения блока, кодируемого в "промежуточном» режиме. Предложенный способ может использоваться для получения представления естественного движения, ограничивая сложность, которую он вносит в вычисления и в число передаваемых параметров.
Изобретение, в частности, может быть применено к кодированию последовательностей изображений или сцен, представленных посредством движущегося изображения, где движущееся изображение соответствует блоку пикселей, изменяющихся с течением времени. Во время этого изменения изображение может быть деформировано, например, для учета видимого движения или когда число пикселей, присутствующих в блоке, увеличивается или уменьшается. Это изображение также может быть изменено, например, переходом к субпиксельному уровню блока. Изобретение может использоваться, в частности, для определения деформации, которой подвергается изображение.
В частности, можно вспомнить, что движущееся изображение определяется, по меньшей мере, следующими порциями информациями:
- блок опорных пикселей, содержащий информацию об опорной текстуре;
- моменты запуска и остановки изображения;
- информация о переходе, используемая для обновления указанного опорного блока и, по меньшей мере, один отрывок указанной последовательности.
Такой способ для представления последовательности изображения, в частности, описан во французской патентной заявке 0756007, зарегистрированной 25 июня 2007 года на имя настоящего заявителя.
Временный прогноз по настоящему изобретению основан на определении множества векторов управления, по меньшей мере, для одного блока, разбивая, по меньшей мере, этот блок на подблоки и определяя множество векторов управления для подблоков. Эти векторы управления затем используются для определения прогноза подблоков и затем самого блока.
5.2 Компенсация движения
Ниже со ссылкой на фигуру 1А, мы описываем основные стадии, реализованные для прогноза компенсации движения, реализованной в видеокодере, например, типа Н.264.
Следует отметить, что изобретение может быть применено к блокам, так же как к макроблокам по стандарту Н.264. Следовательно, термин "блок" в описании должен пониматься как "макроблок" или "блок" по значению этого стандарта, не используя противоположные индикации.
Как показано на фигуре 1А, прогноз компенсацией движения (11), по меньшей мере, одного блока текущей последовательности изображений реализует следующие стадии, по меньшей мере, для указанного блока 6 с первого изображения;
C
C
C
- определение 111 множества векторов управления vb для блока b, каждый из которых представляет собой сдвиг между характерной точкой блока b и его соответствующей позицией во втором изображении;
C
SC1
SC2
- по меньшей мере, одно разбиение 112 блока b в подблоки b, b и т.д.;
SC1
SC2
C
- определение 113 множества векторов управления vb, vb и т.д. для подблоков на основе векторов управления vb для блоков;
SC1
SC2
- определение 114 величины прогноза, по меньшей мере, для одной точки текущего изображения на основе компенсации движения, выполняемой на основе векторов управления vb, vb и т.д., определенных для подблока.
В частности, если прогноз выполняет компенсацию движения назад, первое изображение - текущее изображение, а второе изображение - опорное изображение. Следует вспомнить, что опорное изображение соответствует ранее кодированному/декодированному изображению.
Если прогноз выполняет компенсацию движения вперед, первое изображение - опорное изображение, а второе изображение - текущее изображение.
<mrow><msub><mrow><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>C</mi></msub></mrow>
Таким образом, определяется прогноз, по меньшей мере, одного текущего блока изображения, также называемого прогнозируемым блоком
.
Ниже приводится более подробное описание различных стадий, реализованных для определения прогноза промежуточного кодированного блока. Стадии для определения вектора управления и для разбиения блока на подблоки описываются для случая компенсации движения назад, согласно которому векторы управления указывают на путь от текущего изображения до одного или нескольких опорных изображений. Специалисты в данной области хорошо понимают процесс компенсации движения вперед, согласно которому векторы управления указывают на путь от опорного изображения до текущего изображения при замене текущего изображения опорным изображением, и наоборот. Стадия определения величины прогноза точки или пикселя описывается для каждого из двух типов компенсации движения.
А) Определение векторов управления
C
C
Прежде всего, классическим способом определяется вектор движения для блока b текущего изображения I. Этот вектор движения обозначается как v.
C
C
Затем определяется множество векторов управления vb (111) для блока b. В этом примере воплощения определяются четыре вектора управления для данного блока, каждый из которых связан с вершиной или углом блока.
В частности, отметим следующее:
br
C
- ν вектор управления связан с углом, расположенным внизу справа от блока b;
bl
C
- ν вектор управления связан с углом, расположенным внизу слева от блока b,
tr
C
- ν вектор управления связан с углом, расположенным в главном правом углу блока b;
tl
C
- ν вектор управления связан с углом, расположенным в верхнем левом углу блока b.
Эти векторы управления инициализируются с нулевым значением.
C
C
R
На стороне кодирования положение блока b в текущем изображении I по сравнению с положением его соседей, и положение соответствующего блока в опорном изображении I сравнивается с положением его соседей.
C
Например, если блок b и блок, расположенный над ним, имеют гребень, общий для текущего изображения и для опорного изображения после компенсации движения, то это означает, что два блока соединены вертикально.
Значение 1 затем присваивается первому флажку flag_tc.
C
Если блок b и блок, расположенный с его левой стороны, имеют гребень, общий как для текущего изображения, так и для опорного изображения после компенсации движения, то это означает, что два блока соединены горизонтально.
Значение 1 затем присваивается второму флажку flag_lc.
C
Эти флажки используются, для представления движения блока b и его соседа (сверху или слева) между текущим изображением и опорным изображением. Они могут использоваться для определения векторов управления. Эти флажки могут использоваться для восстановления векторов управления, если они получены декодером.
Дополнительно, для реализации с уменьшенным числом сигналов, два флажка flag_tc и flag_lc могут быть ограничены одной и той же величиной. Они затем представляются единственным флажком, flag_c, принимая единственную величину 0 или 1. Следовательно, в этом варианте воплощения декодером используется уникальный флажок для восстановления векторов управления.
br
bl
tr
tl
C
После анализа текущих и опорных изображений мы определяем векторы управления ν, νи ν, ν для блока b, как показано на фигуре 2.
br
C
Например, вектор управления ν, связанный с углом, расположенным внизу справа блока b, выделяется как 21 вектор движения v, предопределенный для этого блока.
C
Затем осуществляется проверка (22), чтобы проверить, равен ли flag_lc единице, означающей, что блок b и блок, расположенный с его левой стороны, соединены горизонтально.
C
Также осуществляется операция (231, 232), чтобы проверить, равен ли flag_tc единице, означающей, что блок b и расположенный над ним блок соединены вертикально.
bl
br
C
bl
br
Если flag_lc равен 1, то вектор управления ν принимает значение вектора управления ν блока, расположенного влево от блока b (ν=ν (left_block)). Эти обозначения были выбраны, чтобы облегчить специалистам чтение и понимание уравнения в рассматриваемой области.
tr
br
C
tr
br
tl
bl
C
tr
C
tl
tr
bl
Кроме того, в режиме вертикального соединения (флажок flag_tc равен 1), вектор управления ν принимает значение вектора управления ν блока, расположенного выше блока b (ν=ν(top_block)), и вектор управления νпринимает среднее значение вектора управления ν блока, расположенного выше блока b, и вектора управления ν блока, расположенного влево от блока b (ν=moy[ν(left_block), ν(top_block)]).
tl
tr
C
tl
tr
tr
C
tr
tl
br
bl
В вертикальном режиме без соединения (flag_tc равен 0) вектор управления ν принимает значение вектора управления ν блоков, расположенных влево от блока b (ν=ν(left_block)), и вектор управления ν получается из трех других векторов управления блока b (ν=ν+ν-ν).
C
Если на стадии 22, отмечается, что flag_lc не равен 1, это означает, что блок b и блок, расположенный с его правой стороны, находятся режиме разрыва соединения, и мы получаем:
- в режиме соединения по вертикали (флажок flag_tc равен 1):
tr
br
C
tr
br
о вектор управления ν принимает значение вектора управления ν блока, расположенного над блоком b (ν=ν(top_block));
tl
bl
C
tl
bl
о вектор управления ν принимает значение вектора управления ν блока, расположенного над блоком b (ν=ν(top_block));
bl
C
bl
tl
br
tr
о вектор управления ν получен из других трех векторов управления блока b(ν=ν+ν-ν);
- в не соединенном вертикальном режиме (flag_tc равен 0):
tl
tr
bl
br
C
bl
tl
br
tr
о векторы управления ν, ν и ν все принимают значение вектора управления ν блока b (ν=ν=ν=ν=ν).
bl
br
tl
tr
tl
bl
tr
br
bl
tl
tr
br
C
В частности, если блок не имеет никаких соседей с левой стороны, то векторы управления, связанные с его верхним левым и нижним левым углами, определяются из векторов управления, определенных для его верхнего правого и нижнего правого углов (ν=ν и ν=ν). Таким же образом, если блок не имеет никаких соседей над ним, то векторы управления, связанные с его верхними левыми углами и верхними правыми углами, определяются на основе векторов управления, определенных для его нижних левых и нижних правых углов (ν=νи ν=ν). Если у блока нет ни соседа слева, ни соседа над ним, то векторы управления, связанные с его верхними левыми углами, верхними правыми и нижними правыми углами находятся на основе вектора управления, определенного для его нижнего правого угла (ν=ν=ν=ν). Согласно представленному примеру воплощения, флажки flag_lc и flag_tc передаются на декодер в виде информации для восстановления векторов управления для блока b.
В частности флажки могут быть определены рядом блоков или опять блок за блоком. Кроме того, эти флажки могут быть использованы во время определения вектора движения v для указанного блока. Действительно, эти порции информации могут использоваться, например, в режиме прогноза, используемом для прогноза вектора движения, связанного с данным блоком.
Таким образом, если данный блок и блок, расположенный над ним, соединяются и если данный блок не соединяется с блоком, расположенным с его левой стороны, то кодирование вектора движения указанного блока может быть выполнено путем прогноза, определенного вектором движения блока, расположенного выше (а не прогноза на основе среднего вектора соседних блоков, как это делается в кодере известного уровня техники).
Точно так же, если данный блок и блок, расположенный с его левой стороны, соединяются вместе и если данный блок не соединяется с блоком, расположенным над ним, то кодирование вектора движения указанного блока может быть выполнено путем прогноза, определенного вектором движения блока, расположенного с его левой стороны (а не прогноза на основе среднего вектора соседних блоков, как это делается в кодере известного уровня техники).
br
tr
tl
bl
Кроме того, согласно представленному примеру воплощения, только один вектор движения может быть кодирован, а именно вектор v (ν=ν). Другие векторы движения (ν,ν,ν) могут быть определены посредством флажков flag_lc и flag_tc.
C
C
C
R
На фигурах 3A-3F показано определение векторов управления для блока b текущего изображения I, для прогноза компенсации обратного движения назад, согласно которой векторы управления указывают путь от текущего изображения I до опорного изображения I.
C
C
C
C
Более конкретно, фигура 3А иллюстрирует определение векторов управления для блока b, если блок, расположенный слева и над блоком b, является постоянным, т.е. когда нижний левый угол блока, расположенного над блоком b, и верхний правый угол блока, расположенного влево от блока b, соединяются вместе и флажки flag_lc и flag_tc равны 1.
C
На фигуре 3В показан случай, когда блоки, расположенные слева и над блоком b, являются постоянными, flag_lc равен 1 и flag_tc равен 0.
C
На фигуре 3С показан случай, когда блоки, расположенные слева и над блоком b, являются постоянными, flag_lc равен 0 и flag_tc равен 1.
C
На фигуре 3D показан случай, когда блоки, расположенные слева и над блоком b, являются постоянными, и флажки flag_lc и flag_tc равны 0.
C
C
C
На фигуре 3Е показан случай, когда блоки, расположенные слева и над блоком b, не являются постоянными, т.е. что нижний левый угол блока, расположенного над блоком b, и верхний правый угол блока, расположенного влево от блока b, отличаются друг от друга, flag_lc равен 1 и flag_tc равен 0.
C
На фигуре 3F показан случай, когда блоки, расположенные слева и над блоком b, не являются постоянными, flag_lc равен 0 и flag_tc равен 1.
C
На фигуре 3G показан случай, когда блоки, расположенные слева и над блоком b, не являются постоянными, и flag_lc и flag_tc равны 1.
В) Разбиение блока на подблоки
C
Ниже мы приводим более подробное описание стадии 112 разбиения блока b на подблоки. Следует отметить, что по настоящему изобретению, по меньшей мере, один блок текущего изображения разбивается на подблоки.
C
Затем используются четыре вектора управления, определенные для блока b, которые интерполируются для определения векторов управления различных подблоков. Например, мы определяем четыре вектора управления для каждого подблока.
C
SC1
SC2
SC3
SC4
C
Таким образом, как показано на фигуре 4, блок b, например, подразделяется на четыре подблока b, b, b и b. Векторы управления, присоединенные к блоку b, являются интерполированными и служат для определения новых векторов управления для подблоков. Например, используются следующие обозначения:
ml
SC1
SC3
- ν вектор управления, связанный с углом, расположенным внизу слева подблока b, также соответствуя углу, расположенному вверху слева подблока b;
tm
SC1
SC2
- ν вектор управления, связанный с углом, расположенным над подблоком b, также соответствуя углу, расположенному вверху слева подблока b;
mr
SC2
SC4
- ν вектор управления, связанный с углом, расположенным внизу справа подблока b, также соответствуя углу, расположенному сверху справа подблока b,
bm
SC3
SC4
- ν вектор управления, связанный с углом, расположенным вверху справа подблока b, также соответствуя углу, расположенному внизу слева подблока b, и
mm
SC1
SC2
SC3
SC4
- ν вектор управления, связанный с углом, расположенным внизу справа подблока b, также соответствуя углу, расположенному внизу слева подблока b, углу, расположенному сверху справа подблока b, и углу, расположенному вверху слева подблока b.
C
Векторы управления для подблоков затем определяются из векторов управления блока b, например, следующим образом:
<mrow><msub><mi>ν</mi><mrow><mi>t</mi><mi>m</mi></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>ν</mi><mrow><mi>t</mi><mi>l</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>t</mi><mi>r</mi></mrow></msub></mrow><mn>2</mn></mfrac><msub><mi>ν</mi><mrow><mi>b</mi><mi>m</mi></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>ν</mi><mrow><mi>b</mi><mi>l</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>b</mi><mi>r</mi></mrow></msub></mrow><mn>2</mn></mfrac></mrow>
<mrow><msub><mi>ν</mi><mrow><mi>m</mi><mi>l</mi></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>ν</mi><mrow><mi>t</mi><mi>l</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>b</mi><mi>l</mi></mrow></msub></mrow><mn>2</mn></mfrac><msub><mi>ν</mi><mrow><mi>m</mi><mi>r</mi></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>ν</mi><mrow><mi>t</mi><mi>r</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>b</mi><mi>r</mi></mrow></msub></mrow><mn>2</mn></mfrac><msub><mi>ν</mi><mrow><mi>m</mi><mi>m</mi></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>ν</mi><mrow><mi>t</mi><mi>l</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>t</mi><mi>r</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>b</mi><mi>l</mi></mrow></msub><mo>+</mo><msub><mi>ν</mi><mrow><mi>b</mi><mi>r</mi></mrow></msub></mrow><mn>4</mn></mfrac><mo>.</mo></mrow>
и
Эти векторы управления затем выделяются для различных подблоков:
SC1
tl
tm
ml
mm
- подблок b, расположенный вверху слева, имеет, как векторы управления, векторы движения ν ν; ν ν
SC2
tm
tr
mm
mr
- подблок b, расположенный вверху слева, имеет, как векторы управления, векторы движения ν ν; ν ν
SC3
ml
mm
bl
bm
- подблок b, расположенный внизу слева, имеет, как векторы управления, векторы движения ν ν; ν ν
SC4
mm
mr
bm
br
- подблок b, расположенный внизу справа, имеет, как векторы управления, векторы движения ν ν ν ν
Число разбиений может зависеть от нескольких параметров. Например, оно может быть определено общим параметром, определенным для ряда блоков, или иной настройкой блока. Таким образом, блок делится на подблоки меньшего размера, для которого делается конкретный прогноз. Затем появляются переменные размеры блока для получения компенсации движения.
Более конкретно, число разбиений может быть определено по размеру блока или в соответствии с предопределенным числом подблоков для этого блока. Например, макроблок размером 16×16 может быть разбит на 8 блоков размером 4×8 или 8×4 или на четыре блока размером 8×8 или на блоки, сформированные двумя блоками размером 8×16 или 16×8.
C
C
Согласно одному варианту воплощения изобретения, векторы управления, связанные с блоком b, сравниваются два на два для получения информации о сходстве. Блок b затем разбивается на подблоки, только если информации о сходстве, по меньшей мере, выше предопределенного порога.
Там, где это адаптируется блоком, мы можем определить число разбиений, которые будут сделаны в зависимости от максимальной разницы между амплитудой векторов управления (например, простым квантованием величины максимальной разницы).
C) Определение величины прогноза, по меньшей мере, для одной точки текущего изображения для компенсации обратного движения подблока текущего изображения
Ниже представлена стадия 114 для определения величины прогноза, по меньшей мере, для одного пикселя текущего изображения от компенсации обратного движения, выполняемого на основе векторов управления, определенных для подблока текущего изображения, показанного на фигуре 5.
Взяв подблок и его четыре вектора управления, мы устанавливаем для любой точки х этого подблока прогноз Р(х) по следующему уравнению:
1
R
1
2
R
2
3
R
3
4
R
4
Р(х)=w(х)I(х+ν)+w(х)I(х+ν)+w(х)I(х+ν)+w(х)I(x+ν)c:
1
2
3
4
tl
tm
mm
ml
SC1
(ν, ν, ν, ν)=(ν, ν, ν, ν) для подблока b;
1
2
3
4
tm
tr
mr
mm
SC2
(ν, ν, ν, ν)=(ν, ν, ν, ν) для подблока b;
1
2
3
4
ml
mm
bm
bl
SC3
(ν, ν, ν, ν)=(ν, ν, ν, ν) для подблока b и
1
2
3
4
mm
mr
br
bm
SC4
(ν, ν, ν, ν)=(ν, ν, ν, ν) для подблока b.
1
2
3
4
Взвешенные значения w(x), w(х), w(х), w(х) могут быть определены, как описано в приведенном выше документе "Пространственная адаптации однородности движения поля при видеокодировании". Также могут быть использованы и другие известные способы.
C
Таким образом, мы определяем прогноз, по меньшей мере, одного блока текущего изображения I.
D) Определение величины прогноза, по меньшей мере, одной точки текущего изображения для компенсации поступательного движения подблока опорного изображения
Ниже представлена стадия 114 для определения величины прогноза, по меньшей мере, для одного пикселя текущего изображения на основе компенсации поступательного движения, выполняемого на основе векторов управления, определенных для подблока опорного изображения.
В случае компенсации поступательного движения блоки текущего изображения могут быть спрогнозированы несколькими блоками одного или более опорных изображений.
Чтобы вычислить величину прогноза для точки текущего изображения, необходимо спроектировать все блоки опорных изображений на текущем изображении, чтобы определить, какие блоки могут использоваться для прогноза точки текущего изображения.
Ниже предлагается алгоритм для создания прогнозируемого изображения для текущего изображения.
На первой стадии мы инициируем прогнозируемое изображение. Таким образом, для любой точки изображения х мы имеем: RI(х)=0, RW(х)=0. RI соответствует прогнозируемому изображению, в котором все величины прогноза, выданные блоками опорных изображений, взвешиваются и накапливаются, RW соответствует накопленному весу изображения.
SC1
SC1
Для любого подблока b, b, …, выполняются следующие стадии:
- для каждого вектора движения подблока прогнозируемое изображение обновляется для ab, равного tl, tr, bl и затем br. Для любого х в подблоке:
ab
ab
ab
ab
- величина w(х)*Р(х) в точке RI(х+v):RI(x+v)+=w(х)*Р(х), накапливается, при этом
Р(х) является прогнозом в точке х подблока;
ab
ab
ab
ab
- в точках RW(х+v): RW(x+v)+=w (х) накапливается величина w(х).
ab
Вес w, используемый при компенсации поступательного движения, может принять величину весов, используемых при компенсации движения назад, так же как и других различных величин. В частности, эти величины могут отличаться и могут быть адаптированы блоком. Например, эта адаптация может зависеть от сходства векторов движения управления.
Прогнозируемое изображение затем стандартизуется для любой точки х в изображении:
- если RW (х) отличается от 0, RI (х) делится на RW (х):
RW(x)!=0, затем RI (х) /=RW (х);
- в противном случае RI(x) обновляется в предопределенной величине UNDEF, например, величине 0.
Дополнительно, неопределенные величины, для которых RW(x) равно 0, изменяются, чтобы иметь более вероятную величину относительно их окружения. Эта последняя стадия может быть выполнен по-разному, например, при определении для любой величины, не определяемой значением точки у, которая является наиболее близкой к прогнозируемому изображению, которое имеет точно определенную величину (т.е. RW(y), отличающуюся от 0).
C
Таким образом, определяется прогноз блоков текущего изображения I.
5.3 Кодирование
Ниже, со ссылкой на фигуру 1В, мы определяем основные стадии кодирования, например, реализованные в видеокодере типа Н.264. В частности, способ изобретения может быть реализован различными способами, т.е. аппаратным или программным способом.
C
C
Как показано на фигуре 1В, способ кодирования по настоящему изобретению включает стадию кодирования 11 для кодирования, по меньшей мере, одного блока b текущей последовательности изображений I, осуществляя прогноз компенсацией движения, как описано выше со ссылкой на фигуру 1А.
C
<mrow><msub><mrow><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>C</mi></msub></mrow>
Таким образом, мы определяем прогноз, по меньшей мере, одного блока текущего изображения I, также называемого прогнозируемым блоком
.
<mrow><msub><mrow><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>C</mi></msub></mrow>
Затем мы классически определяем ошибку остатка прогноза, соответствующую разнице между текущим блоком изображения и прогнозируемым блоком
.
C
Наконец, на стадии 12, информация о восстановлении векторов управления для блока b вставляется в сигнал, представляющий последовательность изображений.
C
C
Например, эти порции информации о восстановлении принимают форму флажков соединения, представляющих движение между блоком b и, по меньшей мере, одним соседним блоком, или они содержит непосредственно векторы управления для блока b.
Остатки ошибки прогноза также вставляются в сигнал. Эти ошибки могут использоваться декодером во время восстановления последовательности изображения.
Сигнал, представляющий последовательность изображения, затем может быть передан и/или сохранен на носителе данных.
5.4 Сигнал
После кодирования изображения последовательности передаются в декодер.
C
Кроме того, элементы информации о восстановлении векторов управления для блока b вставляются в этот сигнал. Например, эти порции информации о восстановлении включают флажки flag_lc и flag_tc.
Согласно одному примеру воплощения, остатки ошибки прогноза также вставляются в сигнал, в частности, остаток прогноза вектора движения v, который будет использоваться декодером при восстановлении последовательности изображения.
C
Также можно вставить флажок, определяющий число операций разбиения, которым подвергается блок b в кодере. Таким образом, обеспечивается тот факт, что разбиение, выполняемое во время прогноза кодером, идентично разбиению, выполняемому во время прогноза декодером.
5.5 Декодирование
Обратимся теперь к фигуре 6, на которой представляем основные стадии декодирования, например, реализуемые видеодекодером типа Н.264.
Способ по настоящему изобретению может быть осуществлен различным образом, в частности, аппаратным или программным способом.
Предполагается, что декодер принимает сигнал, представляющий последовательность изображений, кодированных, например, способом кодирования, описанным выше.
C
Более конкретно, как показано на фигуре 6, способ декодирования по настоящему изобретению включает стадию 61 для восстановления, по меньшей мере, одного изображения из прогнозируемой последовательности изображений, подлежащего восстановлению, и стадию получения информации 62 о восстановлении векторов управления, по меньшей мере, для одного указанного блока b сообщения, подлежащего восстановлению, или опорного изображения.
C
Согласно этому примеру, следующие стадии выполняются, по меньшей мере, для указанного блока b изображения, подлежащего восстановлению, или опорного изображения:
C
C
C
- определение 611 множества векторов управления vb для блока b, каждый из которых представляет собой сдвиг между характерной точкой блока b и его соответствующим положением в опорном изображении или в изображении, подлежащем восстановлению, на основе информации о восстановлении;
C
SC1
SC2
- по меньшей мере, одно разбиение 612 блока b на подблоки b, b и т.д.;
SC1
SC1
- определение 613 множества векторов управления vb, vb и т.д. для подблоков на основе векторов управления для этого блока;
- определение 614 величины прогноза, по меньшей мере, для одного пикселя изображения, подлежащего восстановлению, на основе компенсации движения, по меньшей мере, одного из подблоков, выполненного на основе векторов управления определенных для подблока.
<mrow><msub><mrow><mover><mi>b</mi><mo>^</mo></mover></mrow><mi>C</mi></msub></mrow>
Таким образом, прогноз определяется, по меньшей мере, для одного блока восстанавливаемого изображения также называемого прогнозируемым блоком
.
Затем, остаток ошибки прогноза определяется классическим образом при кодировании прогнозируемого блока для определения восстановленного блока восстанавливаемого изображения.
Стадии 611 для определения множества векторов управления для блока, разбиение 612 блока на подблоки, определение 613 множества векторов управления для подблоков и определение 614 величины прогноза, по меньшей мере, для одного пикселя изображения, подлежащего восстановлению, подобны стадиям, выполняемым во время кодирования, и, следовательно, не требуют более подробного описания.
C
C
В частности можно отметить, что эта стадия 611 для определения множества векторов управления vb для блока b учитывает информацию о восстановлении, полученную на стадии 62.
Согласно первому варианту воплощения изобретения, эти порции информации о восстановлении, в частности, принимают форму, по меньшей мере, одного флажка соединения, вставленного в сигнал, представляющий последовательность изображений в кодере. Например, эти порции информации о восстановлении включают флажки flag_tc и flag_lc.
C
Согласно второму варианту воплощения изобретения, эти порции информации о восстановлении принимают форму векторов управления для блока b, непосредственно передаваемые в потоке данных.
5.6 Инверсия движения
Как отмечено выше, предлагаемый способ обеспечивает кодирование/декодирование последовательности изображений, используя прямые и/или обратные проекции.
Таким образом, движение, определенное на блоках, может быть инвертировано и может включать создание из процесса кодирования/декодирования прямой проекции (векторы движения определяются в опорном изображении), порций информации (прогноз в текущем изображении структурных значений движения или другой полезной информации, такой как информация о глубине для информации видео 3D от кодера, кодирующего информацию по глубине.
Изображение, восстановленное инверсией движения, получается путем разбиения на описанные выше подблоки. Это восстановленное изображение может использоваться в кодере и/или в декодере.
5.7 Структуры кодера и декодера
Обратимся теперь к фигурам 7 и 8, на которых представляем упрощенные структуры кодирующего и декодирующего устройств или кодера и декодера, соответственно, реализующих способ кодирования и способ декодирования, как описано выше.
Кодирующее устройство, показанное на фигуре 7, содержит память 71, включающую буферную память, процессор 72, оборудованный, например, микропроцессором МР и выполняющий компьютерную программу 73 для осуществления способа кодирования по настоящему изобретению.
При инициализации команды кода компьютерной программы 73, например, загружаются в ОЗУ и затем выполняются процессором 72. Процессор 72 принимает на входе, по меньшей мере, одно изображение, подлежащее кодированию, или блок кодируемых изображений. Микропроцессор процессора 72 выполняет стадии описанного выше способа кодирования, согласно инструкциям компьютерной программы 73 для определения прогноза изображения или блока кодируемого изображения и кодирует блок или соответствующее изображение. С этой целью, кодирующее устройство содержит, в дополнение к буферной памяти 71, средство прогнозирования, связывающее, по меньшей мере, один блок с соответствующим блоком в последовательности опорного изображения, и средство для того, чтобы вставить в сигнале, представляющем последовательность, информацию о восстановлении векторов управления для блока, причем средство прогнозирования содержит средство для определения множества векторов управления для блока, средство для разбиения блока на подблоки, средство для определения множества векторов управления для подблоков и средство для определения величины прогноза, по меньшей мере, для одного пикселя текущего изображения. Эти средства приводятся в действие микропроцессором процессора 72.
Декодирующее устройство, показанное на фигуре 8, содержит память 81, включающую буферную память, процессор 82, оборудованный, например, микропроцессором МР и исполняющий компьютерную программу 83, осуществляя способ кодирования по настоящему изобретению.
При инициализации команды кода компьютерной программы 83, например, загружаются в ОЗУ и затем выполняются процессором 82. Процессор 82 принимает на своем входе сигнал, представляющий последовательность изображений, содержащих порции информации для восстановления векторов управления, связанных, по меньшей мере, с одним данным блоком. Микропроцессор блока управления 82 выполняет стадии описанного выше способа декодирования, по командам компьютерной программы 83, для определения прогноза указанного блока и восстановления соответствующего изображения. С этой целью, декодер содержит, в дополнение к буферной памяти 81, средство восстановления, по меньшей мере, одного изображения указанной последовательности и средство получения информации о восстановлении векторов управления, по меньшей мере, для одного указанного блока, средство восстановления, содержащее средство прогноза, включающее средство для определения множества векторов управления для блока, средство подразделения на подблоки и средство для определения множества векторов управления для подблока, и средство для определения величины прогноза, по меньшей мере, для одного пикселя изображения, подлежащего восстановлению. Эти средства приводятся в действие микропроцессором процессора 82.