СПОСОБ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ МНОГОРАКУРСНОЙ ВИДЕОПОСЛЕДОВАТЕЛЬНОСТИ НА ОСНОВЕ ЛОКАЛЬНОЙ КОРРЕКЦИИ ЯРКОСТИ И КОНТРАСТНОСТИ ОПОРНЫХ КАДРОВ БЕЗ ПЕРЕДАЧИ ДОПОЛНИТЕЛЬНЫХ СЛУЖЕБНЫХ ДАННЫХ
METHOD OF ENCODING/DECODING MULTI-VIEW VIDEO SEQUENCE BASED ON LOCAL ADJUSTMENT OF BRIGHTNESS AND CONTRACT OF REFERENCE FRAMES WITHOUT TRANSMITTING ADDITIONAL SERVICE DATA

Настоящее изобретение относится к способу коррекции различий в яркости и контрастности, которые могут возникать между кадрами многоракурсной видеопоследовательности. В частности, настоящее изобретение может быть использовано при кодировании и декодировании многоракурсных видеопоследовательностей.
Один из способов, применяемых для кодирования многоракурсных видеопоследовательностей, заключается в использовании кадров, принадлежащих соседним видам (ракурсам), а также кадров, синтезированных с помощью кадров соседних видов (ракурсов) и карт глубин. Такие кадры выступают в качестве опорных кадров при проведении кодирования с предсказанием [1]. При этом производится устранение смещения объекта в текущем кадре относительно одного из опорных кадров. Под смещением может пониматься движение объекта или различие в положении объекта между текущим кодируемым кадром и кадрами, принадлежащими соседним видам (ракурсам), или синтезированным кадром. Цель устранения указанного смещения заключается в получении минимальной межкадровой разности. Полученная межкадровая разность затем кодируется (например, путем применения декоррелирующего преобразования, квантования и энтропийного кодирования) и помещается в выходной битовый поток.
Возможные различия в параметрах камер, используемых для съемки многоракурсных видеопоследовательностей, а также различие в световом потоке, поступающем от объектов съемки к камерам, приводят к различию в яркости и контрастности между кадрами, принадлежащими разным ракурсам. Указанные различия в яркости и контрастности также влияют на характеристики синтезированных кадров. Это может приводить к увеличению абсолютных значений межкадровой разности, что негативно сказывается на эффективности кодирования.
Для решения указанной выше проблемы в стандарте Н.264 [2] используется взвешенный прогноз, изначально предназначенный для эффективного кодирования одновидовых (одноракурсных) видеопоследовательностей, в которых встречаются эффекты плавного введения и выведения изображения, мерцания или смены сцены. Взвешенный прогноз позволяет устранять различие в яркости между кодируемым кадром и опорными кадрами на уровне макроблоков. При этом используются одни и те же значения весовых коэффициентов для всех макроблоков, принадлежащих одному и тому же слою. Весовые коэффициенты могут определяться в процессе кодирования и сохраняться в выходном битовом потоке («явный» взвешенный прогноз) или вычисляться в процессе кодирования/декодирования («неявный» взвешенный прогноз). Однако в случае многоракурсных последовательностей, где могут наблюдаться локальные изменения яркости и/или контрастности, такой способ может оказаться неэффективным.
Другим решением указанной проблемы является адаптивная поблочная коррекция различия в яркости [3]. Одним из способов, реализующих указанный подход, является способ одношаговой аффинной коррекции яркости для многоракурсных видеопоследовательностей (Multiview One-Step Affine Illumination Compensation - MOSAIC) [4, 5]. Указанный способ предполагает комбинацию поблочной коррекции различия в яркости с описанными в стандарте Н.264 режимами межкадрового предсказания. В процессе такого кодирования для каждого макроблока вычисляют средние значения пикселей текущего кодируемого блока и опорного блока-кандидата. Для указанных блоков формируют модифицированные блоки путем вычитания среднего значения для каждого пикселя блока. Затем для полученных блоков вычисляют сумму абсолютных разностей (Mean-Removed Sun of Absolute Difference - MRSAD). Результатом межкадрового предсказания являются относительные координаты опорного блока (вектор смещения), которые дают минимальное значение стоимости кодирования, а также разность между модифицированным кодируемым блоком и модифицированным опорным блоком. При этом вычисление стоимости кодирования основывается на вычисленном значении MRSAD и оценке битовых затрат на передачу дополнительной информации, необходимой для последующего декодирования. Помимо вектора смещения, дополнительная информация включает в себя разность между средними значениями текущего и опорного блоков. Эта разность обозначается как DVIC (Difference Value of Illumination Compensation) и является параметром коррекции яркости. Значение DVIC подвергается дифференциальному кодированию и помещается в выходной битовый поток. Необходимо отметить, что в случае режима "Р Skip" значение DVIC определяется на основании значений DVIC соседних макроблоков, которые уже были закодированы на момент кодирования текущего макроблока. Таким образом, приведенный способ не позволяет полностью устранить необходимость явной передачи дополнительной информации, необходимой для последующего декодирования.
Параметры, необходимые для коррекции различия яркости и контрастности, могут быть получены путем анализа восстановленных (закодированных, а затем декодированных) областей кадров. Это помогает уменьшить количество дополнительной информации, которая должна быть закодирована и явным образом помещена в выходной битовый поток. Указанный подход был реализован в способе взвешенного предсказания с использованием соседних пикселей (WPNP - Weighted Prediction using Neighboring Pixels) [6]. Этот способ использует значения пикселей кодируемого кадра, соседних с текущим кодируемым блоком, и значения пикселей опорного кадра, соседних с опорным блоком, для попиксельной оценки изменения яркости. При этом изменения яркости для выбираемых двух соседних пикселей умножаются на весовые коэффициенты и складываются, образуя оценку изменения яркости и контрастности между отдельными пикселями текущего и опорного блоков. Необходимо отметить, что весовые коэффициенты вычисляются отдельно для каждого положения пикселя кодируемого блока. Значения весовых коэффициентов определяются исходя из взаимного расстояния между пикселем кодируемого блока и выбранными соседними пикселями. Основной недостаток описанного способа заключается в том, что сокращение объема дополнительной информации достигается за счет возможного снижения качества коррекции. Причина снижения качества состоит в том, что изменение яркости пикселей, соседних по отношению к кодируемому и опорному блокам, может отличаться от изменения яркости пикселей, принадлежащих непосредственно кодируемому и опорному блокам.
Другой вариант, реализующий подход, связанный с оценкой параметров изменения яркости и контрастности путем анализа восстановленных (закодированных, а затем декодированных) областей кадров, описан в патентной заявке США 2011/0286678 [7]. Описываемый в заявке способ кодирования многоракурсных видеопоследовательностей включает в себя коррекцию различия яркости в процессе кодирования с предсказанием. Параметры коррекции изменения яркости оцениваются исходя из оценки изменения яркости для смежных, по отношению к кодируемому и опорному блокам, областей. Так как указанные смежные области доступны как при кодировании, так и при декодировании, то отпадает необходимость явной передачи параметров коррекции в выходном битовом потоке. Получаемые параметры применяются для коррекции опорного блока. Надежность оценки параметров изменения яркости определяется путем коррекции яркости для области опорного кадра, смежной с опорным блоком, и сравнения полученной скорректированной области с восстановленной (закодированной и затем декодированной) областью кодируемого кадра, смежной с текущим кодируемым блоком. Недостаток указанного способа заключается в том, что надежность коррекции изменения яркости определяется только путем анализа смежных областей. Данные, содержащиеся в опорном блоке, не используются при анализе надежности коррекции изменения яркости, что может приводить к ошибочной коррекции, тем самым снижая ее эффективность.
Наиболее близким к заявляемому изобретению является способ, описанный в патентной заявке США 2008/0304760 [8]. Указанный способ коррекции изменения яркости и контрастности для опорного блока включает в себя следующие этапы: получение восстановленных значений пикселей, соседних по отношению к текущему кодируемому блоку, и восстановленных значений пикселей, соседних по отношению к опорному блоку, в качестве входной информации; предсказание средних значений для текущего кодируемого и опорного блоков на основании восстановленных значений пикселей, соседних по отношению к текущему кодируемому блоку, и восстановленных значений пикселей, соседних по отношению к опорному блоку; определение параметров коррекции яркости для опорного блока на основе предсказанного среднего значения пикселей текущего кодируемого блока, предсказанного среднего значения опорного блока и значений пикселей текущего кодируемого блока и опорного блока; и выполнение коррекции яркости для опорного блока, используя ранее определенный параметр коррекции яркости.
Недостаток прототипа заключается в следующем. Восстановленные значения пикселей, соседних по отношению к текущему кодируемому блоку и опорному блоку, используются исключительно для предсказания средних значений. Это ограничение не позволяет использовать информацию, которая содержится в соседних пикселях. Кроме того, отсутствует анализ соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку. Таким образом, не принимаются во внимание возможные различия в параметрах коррекции изменения яркости и контрастности между рассматриваемыми блоками и областями, соседними по отношению к рассматриваемым блокам. Это может приводить к снижению надежности процедуры коррекции различия в яркости и контрастности, что негативным образом будет сказываться на эффективности кодирования.
В соответствии с описанием, в прототипе [8] предлагается способ кодирования цифровых изображений (кадров), основанный на использовании коррекции изменения яркости. Этот способ включает в себя следующие шаги: определение опорного блока, предназначенного для формирования блока-предсказания для текущего кодируемого блока; определение параметра коррекции яркости для коррекции найденного опорного блока; выполнение коррекции яркости найденного опорного блока на основе определенного на предыдущем шаге параметра коррекции яркости; формирование блока-предсказания для текущего кодируемого блока, используя скорректированный опорный блок; кодирование разности между сформированным блоком-предсказанием и текущим кодируемым блоком; формирование выходного битового потока и сохранение информации о параметре коррекции яркости в предопределенном месте внутри сформированного битового потока. Недостатком описанного метода является необходимость сохранения параметров коррекции в выходном битовом потоке.
Заявляемое изобретение направлено на повышение эффективности кодирования многоракурсных видеопоследовательностей в случае, если используется модель гибридного видеокодирования. Изобретение заключается в применении более надежной адаптивной процедуры оценки параметров изменения яркости и контрастности опорного блока, а также процедуры коррекции яркости и контрастности опорного блока.
Технический результат достигается за счет использования большего количества данных для оценки параметров изменения яркости и контрастности. В частности, в заявляемом способе проводится анализ соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку, а также соотношений между восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку. При реализации способа предусмотрено также применение усовершенствованных способов кодирования и декодирования многоракурсных видеопоследовательностей, причем такие способы основаны на использовании коррекции яркости и контрастности, что позволяет повысить эффективность сжатия благодаря тому, что при оценке изменения яркости и контрастности используются значения пикселей, которые доступны как при проведении кодирования, так и при декодировании. В этом случае параметры коррекции яркости и контрастности могут быть точно восстановлены без необходимости передачи дополнительных данных в выходном битовом потоке.
Согласно основному аспекту заявляемого изобретения предложен способ коррекции различия яркости и контрастности между опорным блоком и текущим кодируемым блоком при проведении межкадрового предсказания для кодирования многоракурсной видеопоследовательности, причем такой способ включает в себя:
- получение значений пикселей текущего кодируемого блока, принадлежащего кодируемому кадру, и значений пикселей опорного блока, принадлежащего опорному кадру;
- получение восстановленных (закодированных и затем декодированных) значений пикселей, соседних по отношению к текущему блоку кодируемого кадра, и значений пикселей, соседних по отношению к опорному блоку опорного кадра;
- определение соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку, а также соотношений между восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку;
- определение параметров коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности между опорным блоком и текущим кодируемым блоком на основе найденных на предыдущем шаге соотношений, значениями пикселей опорного блока, восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку;
- выполнение коррекции различия в яркости и контрастности между опорным блоком и текущим кодируемым блоком на основе найденных на предыдущем шаге параметров коррекции.
В одном из вариантов реализации заявляемого изобретения предлагается модификация упомянутого выше способа, заключающаяся в том, что процесс определения соотношений между пикселями текущего кодируемого кадра и опорного кадра, а также процесс определения параметров коррекции яркости и контрастности включают в себя:
- вычисление статистических характеристик для восстановленных значений пикселей, соседних по отношению к текущему кодируемому блоку, статистических характеристик для пикселей опорного блока и статистических характеристик для пикселей, соседних по отношению к опорному блоку;
- определение соотношений между статистическими характеристиками для пикселей опорного блока и статистическими характеристиками для восстановленных значений пикселей, соседних по отношению к опорному блоку;
- вычисление оценки значения статистической характеристики для текущего кодируемого блока на основе вычисленных статистических характеристик и соотношений между ними производят;
- определение параметра коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности между опорным и текущим кодируемым блоками на основе найденной оценки статистической характеристики для текущего блока и статистической характеристики опорного блока.
В другом варианте реализации заявляемого изобретения предлагается модификация упомянутого выше способа, в рамках которой процесс вычисления статистических характеристик, определения соотношений между статистическими характеристиками и определения параметра коррекции изменения яркости и контрастности включает в себя:
- вычисление среднего значения для восстановленных пикселей, соседних по отношению к текущему кодируемому блоку и расположенных слева от текущего кодируемого блока, в случае их наличия; вычисление среднего значения для восстановленных пикселей, соседних по отношению к текущему кодируемому блоку и расположенных сверху над текущим кодируемым блоком, в случае их наличия, вычисление среднего значения для пикселей опорного блока, вычисление среднего значения для пикселей, соседних по отношению к опорному блоку и расположенных слева от опорного блока, в случае их наличия, и вычисление среднего значения для пикселей, соседних по отношению к опорному блоку и расположенных сверху над опорным блоком, в случае их наличия;
- в случае наличия восстановленных пикселей, соседних по отношению к текущему кодируемому блоку и расположенных слева от текущего кодируемого блока, а также наличия пикселей, соседних по отношению к опорному блоку и расположенных слева от опорного блока, вычисление отношения между средним значением пикселей опорного блока и средним значением пикселей, соседних по отношению к опорному блоку и расположенным слева от опорного блока; вычисление произведения полученного отношения и среднего значения восстановленных пикселей, соседних по отношению к текущему кодируемому блоку и расположенных слева от текущего кодируемого блока; определение параметра коррекции изменения яркости и контрастности как отношения между вычисленным произведением и средним значением для пикселей опорного блока;
- иначе, в случае наличия восстановленных пикселей, соседних по отношению к текущему кодируемому блоку и расположенных сверху над текущим кодируемым блоком, и наличия пикселей, соседних по отношению к опорному блоку и расположенных сверху над опорным блоком, вычисление отношения между средним значением пикселей опорного блока и средним значением пикселей, соседних по отношению к опорному блоку и расположенным сверху над опорным блоком; вычисление произведения полученного отношения и среднего значения восстановленных пикселей, соседних по отношению к текущему кодируемому блоку и расположенных сверху от текущего кодируемого блока; определение параметра коррекции изменения яркости и контрастности как отношения между вычисленным произведением и средним значением для пикселей опорного блока;
- иначе, путем использования Метода Медианного Предсказания для вычисления оценки среднего значения текущего кодируемого блока;
- определение параметра коррекции изменения яркости и контрастности как отношения между оценкой среднего значения для пикселей текущего кодируемого блока и средним значением для пикселей опорного блока.
Еще одна модификация заявляемого изобретения состоит в том, что способ коррекции яркости и контраста опорного блока в процессе кодирования многоракурсной видеопоследовательности, включает в себя:
- получение значений пикселей текущего блока кодируемого кадра и значений пикселей опорного блока опорного кадра;
- получение восстановленных (закодированных и затем декодированных) значений пикселей, соседних по отношению к текущему кодируемому блоку, и значений пикселей, соседних по отношению к опорному блоку;
i,j
i,j
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow>
- вычисление первой оценки estD для каждого положения (i,j) пикселя в опорном блоке; причем первая оценка estD является функцией линейной комбинации восстановленных значений
пикселей, соседних по отношению к текущему кодируемому блоку, k=0, …, N-1, N - число пикселей, соседних по отношению к текущему кодируемому и опорному блокам;
i,j
i,j
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
- вычисление второй оценки estR для каждого положения (i,j) пикселя в опорном блоке; причем вторая оценка estR является функцией линейной комбинации значений
пикселей, соседних по отношению к опорному блоку, k=0, …, N-1;
i,j
i,j
i,j
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
- определение параметров коррекции изменения яркости и контрастности для коррекции каждого пикселя в опорном блоке; при этом определение этих параметров основывается на значении первой оценки estD, значении второй оценки estR, а также на значениях R пикселей опорного блока, на восстановленных значениях
пикселей, соседних по отношению к текущему блоку, и на значениях
пикселей, соседних по отношению к опорному блоку;
- выполнение коррекции изменения яркости и контрастности для каждого пикселя в опорным блоке, используя найденные на предыдущем шаге параметры коррекции изменения яркости и контрастности.
Согласно другой модификации заявляемого изобретения, способ предусматривает, что вычисление первой и второй оценок для каждого положения пикселя в опорном блоке и определение параметров коррекции изменения яркости и контрастности для каждого положения пикселя в опорном блоке включает в себя:
i,j
- вычисление первой оценки estD как
<mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>D</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mstyle displaystyle="true"><msub><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>N</mi><mo>−</mo><mn>1</mn></mrow></msub><mrow><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>⋅</mo><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow></mstyle></mrow>
,
k
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow>
где W(i,j), k=0, …, N-1 - весовые коэффициенты, и
, k=0, …, N-1 - это восстановленные значения пикселей, соседних по отношению к текущему кодируемому блоку, N - это число пикселей, соседних по отношению к текущему кодируемому и опорному блокам;
i,j
- вычисление второй оценки estR как
<mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mstyle displaystyle="true"><msub><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>N</mi><mo>−</mo><mn>1</mn></mrow></msub><mrow><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>⋅</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow></mstyle></mrow>
k
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
где W(i,j), k=0, …, N-1 - весовые коэффициенты, и
, k=0, …, N-1 - значения пикселей, соседних по отношению к опорному блоку;
<mrow><msub><mi>α</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mfrac><mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>D</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></mfrac></mrow>
i,j
i,j
- определение параметров коррекции изменения яркости и контрастности для каждого положения (i,j) пикселя в опорном блоке; этот параметр представляет собой отношение
, если вторая оценка estR не равна нулю. В противном случае α полагается равным 1.
i,j
i,j
- выполнение коррекции изменения яркости и контрастности для опорного блока путем умножения значения каждого пикселя опорного блока R на соответствующий параметр коррекции α.
Еще одна модификация заявляемого изобретения предусматривает, что вычисление первой и второй оценок для каждого положения пикселя в опорном блоке включает в себя:
k
i,j,
i,j
k
- вычисление весовых коэффициентов W(i,j), k=0, …, N-1  для первой оценки estD и второй оценки estR, для каждого положения (i,j) пикселя в опорном блоке весовой коэффициент W(i,j) равен невозрастающей функции абсолютной разности:
<mrow><mrow><mo>|</mo><mrow><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow><mo>|</mo></mrow></mrow>
,
k
i,j
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
что обеспечивает обратно пропорциональное увеличение/уменьшение значения W(i,j) в зависимости от уменьшения/увеличения абсолютной разности. Здесь R - это значение пикселя опорного блока;
(k=0, …, N-1) - значение пикселя, соседнего по отношению к опорному блоку; N - число пикселей, соседних по отношению к текущему кодируемому и опорному блокам.
В другом варианте реализации заявляемого изобретения предлагается модификация упомянутого выше метода, которая предусматривает, что вычисление первой и второй оценок для каждого положения пикселя в опорном блоке включает в себя:
k
i,j
i,j
k
- вычисление весовых коэффициентов W(i,j), k=0, …, N-1  для первой оценки estD и второй оценки estR; для каждого положения (i,j) пикселя в опорном блоке весовой коэффициент W(i,j) равен невозрастающей функции абсолютной разности:
<mrow><mrow><mo>|</mo><mrow><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow><mo>|</mo></mrow></mrow>
,
k
k
i,j
<mrow><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
что обеспечивает обратно пропорциональное увеличение/уменьшение значения W(i,j)  в зависимости от уменьшения/увеличения абсолютной разности; в случае
, где Thr - предопределенное пороговое значение; иначе W(i,j). Здесь R - значение пикселя опорного блока;
(k=0, …, N-1) - значение пикселя, соседнего по отношению к опорному блоку; N - число пикселей, соседних по отношению к текущему кодируемому и опорному блокам.
При реализации заявляемого изобретения имеет смысл применить еще одну модификацию упомянутого выше метода, которая предусматривает, что вычисление первой и второй оценок для каждого положения пикселя в опорном блоке включает в себя:
k
i,j
i,j,
k
- вычисление весовых коэффициентов W(i,j), k=0, …, N-1   для первой оценки estD и второй оценки estR для каждого положения (i,j) пикселя в опорном блоке весовой коэффициент W(i,j) равен невозрастающей функции абсолютной разности:
<mrow><mrow><mo>|</mo><mrow><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow><mo>|</mo></mrow></mrow>
,
k
k
i,j
<mrow><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>1</mn></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow>
<mrow><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>2</mn></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
что обеспечивает обратно пропорциональное увеличение/уменьшение значения W(i,j) в зависимости от уменьшения/увеличения абсолютной разности; в случае
, где
(k=0, …, N) - значение пикселя, соседнего по отношению к текущему кодируемому блоку, Thr1 - первый предопределенный порог; и
, где Thr2 - второй предопределенный порог; иначе W(i,j)=0. Здесь R - значение пикселя опорного блока;
(k=0, …, N - 1) - значение пикселя, соседнего по отношению к опорному блоку; N - число пикселей, соседних по отношению к текущему кодируемому и опорному блокам.
Согласно другому варианту реализации заявляемого изобретения, предлагается модификация упомянутого выше метода, которая предусматривает, что вычисление первой и второй оценки для каждого положения пикселя в опорном блоке включает в себя:
k
i,j
i,j
k
k
k
k
i,j
k
<mrow><msub><mi>A</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>=</mo><mrow><mo>|</mo><mrow><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow><mo>|</mo></mrow></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
<mrow><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi></mrow>
- вычисление весовых коэффициентов W(i,j), k=0, …, N - 1 для первой оценки estD и второй оценки estR; для каждого положения (i,j) пикселя в опорном блоке весовой коэффициент W(i,j) равен W(i,j)=exp(-C·A(i,j)), где С - предопределенная константа больше 0, и A(i,j) равняется
, где R - значение пикселя опорного блока,
(k=0, …, N - 1) - значение пикселя, соседнего по отношению к опорному блоку, в случае
, где Thr - предопределенный порог; иначе W(i,j)=0.
В качестве альтернативы при реализации заявляемого изобретения, предлагается модификация упомянутого выше метода, которая предусматривает, что вычисление первой и второй оценок для каждого положения пикселя в опорном блоке включает в себя:
k
i,j
i,j
k
k
k
k
i,j
k
<mrow><msub><mi>A</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>=</mo><mrow><mo>|</mo><mrow><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow><mo>|</mo></mrow></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
<mrow><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>1</mn></mrow>
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow>
<mrow><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>2</mn></mrow>
- вычисление весовых коэффициентов W(i,j), k=0, …, N - 1 для первой оценки estD и второй оценки estR; для каждого положения (i,j) пикселя в опорном блоке весовой коэффициент W(i,j) равен W(i,j)=exp(-C·A(i,j)), где С - предопределенная константа больше 0, и A(i,j) равняется
, где R - значение пикселя опорного блока
(k=0, …, N - 1) - значение пикселя, соседнего по отношению к опорному блоку, в случае
, где
, k=0, …, N - 1 - значение пикселя, соседнего по отношению к текущему кодируемому блоку, Thr1 - первый предопределенный порог;
, где Thr2 - второй предопределенный порог; иначе W(i,j)=0.
Согласно другому варианту реализации заявляемого изобретения, предлагается модификация упомянутого выше метода, в которой предусматривается, что позиции восстановленных значений пикселей, соседних по отношению к текущему кодируемому блоку, и позиции значений пикселей, соседних по отношению к опорному блоку, определяются адаптивно вместо соответствующих пикселей с наперед заданными позициями.
В группу связанных единым замыслом изобретений входит также оригинальный способ кодирования многоракурсных видеопоследовательностей на основе коррекции изменения яркости и контрастности. Этот способ включает в себя:
- определение опорного блока, который используется для формирования блока-предсказания для текущего кодируемого блока;
- определение параметров коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности между опорным блоком и текущим кодируемым блоком в процессе поиска или по завершении поиска опорного блока;
- выполнение коррекции изменения яркости и контрастности найденного опорного блока за счет использования найденных параметров коррекции изменения яркости и контрастности;
- формирование блока-предсказания для текущего кодируемого блока за счет использования скорректированного по яркости и контрастности опорного блока;
- кодирование текущего блока с помощью сформированного блока-предсказания без кодирования найденных параметров коррекции изменения яркости и контрастности; кодирование информации об опорном блоке, если это необходимо для декодирования;
при этом определение параметров коррекции изменения яркости и контрастности включает в себя:
- получение восстановленных (закодированных и затем декодированных) значений пикселей, соседних по отношению к текущему блоку кодируемого кадра, и значений пикселей, соседних по отношению к опорному блоку опорного кадра;
- определение соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку, а также соотношений между восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку;
- определение параметров коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности между опорным блоком и текущим кодируемым блоком на основе найденных на предыдущем шаге соотношений между значениями пикселей опорного блока, восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку.
В рамках единого замысла предусматривается также использование оригинального способа декодирования многоракурсных видеопоследовательностей на основе коррекции изменения яркости и контрастности. Этот способ включает в себя:
- декодирование информации об опорном блоке, если это необходимо для того, чтобы определить опорный блок для текущего декодируемого блока; определение опорного блока;
- определение параметров коррекции изменения яркости и контрастности для найденного опорного блока;
- выполнение коррекции изменения яркости и контрастности найденного опорного блока, используя найденные параметры коррекции изменения яркости и контрастности;
- формирование блока-предсказания для текущего декодируемого блока за счет использования опорного блока, скорректированного по яркости и контрастности;
- декодирование текущего блока за счет использования полученного блока-предсказания и параметров коррекции изменения яркости и контрастности,
при этом процедура определения параметров коррекции яркости и контрастности включает в себя:
- получение восстановленных (закодированных и затем декодированных) значений пикселей, соседних по отношению к текущему блоку кодируемого кадра, и значений пикселей, соседних по отношению к опорному блоку опорного кадра;
- определение соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку, а также соотношений между восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку;
- определение параметров коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности между опорным блоком и текущим кодируемым блоком на основе найденных на предыдущем шаге соотношений между значениями пикселей опорного блока, восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку.
Далее существо изобретения поясняется с привлечением графических материалов.
Фиг.1 - структурная схема гибридного кодера многоракурсных видеопоследовательностей и место применения заявляемого изобретения.
Фиг.2 - структурная схема части гибридного видеокодера, реализующей заявляемый способ, входящий в состав процесса кодирования с предсказанием.
Фиг.3 - диаграмма, поясняющая способ коррекции изменения яркости и контрастности опорного блока в соответствии с одним из примеров реализации заявляемого изобретения.
Фиг.4 - блок-схема, иллюстрирующая способ коррекции изменения яркости и контрастности опорного блока, согласно одному из примеров реализации заявляемого изобретения.
Фиг.5 - диаграмма, иллюстрирующая процедуру выбора входных блоков в текущем кадре в процессе вычисления параметров коррекции изменения яркости и контрастности согласно одному из примеров реализации заявляемого изобретения.
Фиг.6 - диаграмма, иллюстрирующая способ коррекции изменения яркости и контрастности для опорного блока в соответствии с другим вариантом реализации заявляемого изобретения.
Фиг.7 - блок-схема, иллюстрирующая способ попиксельной коррекции изменения яркости и контрастности для опорного блока согласно одному из примеров реализации заявляемого изобретения.
Фиг.8 - диаграмма, поясняющая способ коррекции изменения яркости и контрастности для опорного блока в соответствии с другим вариантом реализации заявляемого изобретения.
Фиг.9 - блок-схема, описывающая способ кодирования многоракурсных видеопоследовательностей, основанный на коррекции изменения яркости и контрастности согласно одному из примеров реализации заявляемого изобретения.
Фиг.10 - блок-схема, описывающая способ декодирования многоракурсных видеопоследовательностей на основе коррекции изменения яркости и контрастности согласно одному из примеров реализации заявляемого изобретения.
На Фиг.1 изображена структурная схема гибридного кодера многоракурсных видеопоследовательностей. Входные данные гибридного кодера 105 многоракурсных видеопоследовательностей включают в себя исходный вид (кодируемый ракурс) 101 и уже закодированные и затем декодированные виды (ракурсы) 102, которые являются частью закодированных многоракурсных видеоданных. Уже закодированные/декодированные виды 102 и уже закодированные/декодированные последовательности 103 карт глубин используются для формирования синтезированного вида (ракурса) для исходного вида (кодируемого ракурса) с помощью процедуры 104 синтеза. Сформированный синтезированный вид (ракурс) также поступает на вход гибридного кодера 105.
Гибридный кодер 105 содержит следующие инструменты, используемые для кодирования исходного вида (ракурса): управление опорными кадрами 106, межкадровое предсказание 107, внутрикадровое предсказание 108, межкадровая и внутрикадровая компенсация 109, пространственное преобразование 110, оптимизация отношения скорость/искажение 111, энтропийное кодирование 112. Детальная информация об упомянутых инструментах содержится в [9]. Заявляемый способ может быть реализован в рамках межкадрового предсказания 107.
Фиг.2 содержит схему части гибридного видеокодера, которая реализует заявляемый способ в составе кодирования с предсказанием. Гибридный кодер включает в себя блок 201 вычитания, блок 202 преобразования и квантования, блок 203 энтропийного кодирования, блок 204 обратного преобразования и обратного квантования, блок 205 компенсации смещения и коррекции изменения яркости/контрастности, блок 206 синтеза вида (ракурса), блок 207 сложения, блок 208 буферизации опорных кадров и карт глубины, блок 209 предсказания параметров компенсации и коррекции, блок оценки смещения и изменения яркости/контрастности 210 и блок 211 принятия решения о режиме кодирования макроблока. Блоки 201-204, 207-209 и 211 являются стандартными блоками кодирования, которые используются в базовом гибридном способе кодирования [9]. Блок 206 синтеза вида (ракурса) является блоком, специфичным для многоракурсного кодирования. Блок 206 синтезирует дополнительные опорные кадры из уже закодированных/декодированных кадров и карт глубины.
Заявляемый способ может быть реализован в блоках 205 и 210. Эти блоки осуществляют способ поблочного кодирования с предсказанием, который включает в себя следующие этапы:
- Для текущего блока текущего кодируемого кадра выполняют поиск опорного блока, который минимизирует следующее выражение:
<mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><mrow><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mrow><mo>|</mo><mrow><mi>I</mi><mo stretchy="false">(</mo><mi>m</mi><mo>,</mo><mi>n</mi><mo stretchy="false">)</mo><mo>−</mo><mi>Ψ</mi><mo stretchy="false">(</mo><mi>R</mi><mo stretchy="false">(</mo><mi>m</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>n</mi><mo>+</mo><mi>j</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><mo>|</mo></mrow></mrow></mstyle></mrow></mstyle></mrow>
где I(m,n) представляет собой значение яркости пикселя с координатами (m,n) внутри текущего блока. Размер текущего кодируемого блока равен М×N, (i,j) определяет вектор смещения (DV), который указывает на опорный блок R в пределах предопределенной области поиска. ψ(x) - функция, корректирующая различия в яркости и контрастности между текущим блоком и опорным блоком. Описанный способ реализуется в блоке 210. Найденные параметры коррекции изменения яркости и контрастности, наряду с полученным DV, передаются в блок 205 и в блок 209.
- Найденный опорный блок преобразуют в соответствии с найденными параметрами коррекции изменения яркости и контрастности (блок 205). После этого блок 201 формирует разностный блок. Затем разностный блок преобразуется с помощью Дискретного Косинусного Преобразования (ДКП), квантуется (блок 202) и кодируется энтропийным кодером (блок 203). Дополнительные данные (SI), необходимые для последующего декодирования, также кодируется энтропийным кодером (блок 203).
Фиг.3 содержит диаграмму, поясняющую суть способа коррекции изменения яркости и контрастности для опорного блока в соответствии с одним из вариантов реализации заявляемого изобретения. В соответствии с Фиг.3, на каждой итерации процедуры поиска опорного блока для текущего блока 311 текущего кодируемого кадра 310 определяют вектор 320 смещения (DV). Вектор 320 указывает на опорный блок 301 опорного кадра 300. Согласно заявляемому способу, функция ψ(x) коррекции изменения яркости и контрастности имеет следующий вид:
ψ(x)=α·x.
Параметр коррекции изменения яркости и контрастности α описывается следующим уравнением:
<mrow><mi>α</mi><mo>=</mo><mfrac><mrow><mi>e</mi><mi>s</mi><mi>t</mi><mi>M</mi><mi>X</mi></mrow><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi></mrow></mfrac></mrow>
,
<mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>N</mi><mo>⋅</mo><mi>M</mi></mrow></mfrac><mo>⋅</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></msubsup><mrow><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></msubsup><mrow><mi>S</mi><mrow><mo>(</mo><mrow><mi>m</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>n</mi><mo>+</mo><mi>j</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mstyle></mrow>
refMX - среднее значение опорного блока 301. (i,j) - координаты левого верхнего угла опорного блока 301. S обозначает пиксель опорного кадра 300. Величина, выраженная как estMX, представляет собой оценку среднего значения для текущего кодируемого блока 311.
Фиг.4 содержит блок-схему, иллюстрирующую способ коррекции изменения яркости и контрастности для опорного блока, согласно одному из вариантов реализации заявляемого изобретения. Этот способ включает в себя выполнение следующих этапов.
1. Получение на вход значений пикселей блоков 301, 302, 303, 311, 312, 313 и 314 (Фиг.4, 401).
2. Вычисление следующих средних значений (Фиг.4, 402): вычисление среднего значения encMX_L блока 312
<mrow><mi>e</mi><mi>n</mi><mi>c</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>L</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>P</mi><mo>⋅</mo><mi>Q</mi></mrow></mfrac><mo>⋅</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><mi>P</mi></msubsup><mrow><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>Q</mi></msubsup><mrow><mi>D</mi><mi>I</mi><mrow><mo>(</mo><mrow><mi>p</mi><mo>,</mo><mi>q</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mstyle></mrow>
,
где DI(p,q) представляет собой восстановленное (закодированное и затем декодированное) значение яркости пикселя с координатами (p,q) внутри блока 312. Размеры блока 312 составляют P×Q.
Вычисление среднего значения encMX_А блока 313
<mrow><mi>e</mi><mi>n</mi><mi>c</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>A</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>U</mi><mo>⋅</mo><mi>V</mi></mrow></mfrac><mo>⋅</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>u</mi><mo>=</mo><mn>1</mn></mrow><mi>U</mi></msubsup><mrow><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>v</mi><mo>=</mo><mn>1</mn></mrow><mi>V</mi></msubsup><mrow><mi>D</mi><mi>I</mi><mrow><mo>(</mo><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mstyle></mrow>
,
где DI(u,v) представляет восстановленное (закодированное и затем декодированное) значение яркости пикселя с координатами (u,v) внутри блока 313. Размеры блока 313 составляют U×V.
Вычисление среднего значения refMX опорного блока 301.
Вычисление среднего значения refMX_L блока 302:
<mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>L</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>P</mi><mo>⋅</mo><mi>Q</mi></mrow></mfrac><mo>⋅</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>p</mi><mo>=</mo><mn>1</mn></mrow><mi>P</mi></msubsup><mrow><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>Q</mi></msubsup><mrow><mi>S</mi><mrow><mo>(</mo><mrow><mi>p</mi><mo>+</mo><mi>i</mi><mo>,</mo><mi>q</mi><mo>+</mo><mi>j</mi><mo>−</mo><mi>Q</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mstyle></mrow>
.
Размеры блока 302 равны размерам блока 312.
Вычисление среднего значения refMX_A блока 303:
<mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>A</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>U</mi><mo>⋅</mo><mi>V</mi></mrow></mfrac><mo>⋅</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>u</mi><mo>=</mo><mn>1</mn></mrow><mi>U</mi></msubsup><mrow><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>v</mi><mo>=</mo><mn>1</mn></mrow><mi>V</mi></msubsup><mrow><mi>S</mi><mrow><mo>(</mo><mrow><mi>u</mi><mo>+</mo><mi>i</mi><mo>,</mo><mo>−</mo><mi>U</mi><mo>,</mo><mi>v</mi><mo>+</mo><mi>j</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mstyle></mrow>
.
Размеры блока 303 равны размерам блока 313.
3. Проверка условия 1 (Фиг.4, 403): если блок 302 и блок 312 доступны (то есть блоки 302 и 312 расположены в границах кадра и, в случае, если опорный кадр является синтезированным кадром, то пиксели блока 302 не принадлежат области окклюзии, и значение хотя бы одного пикселя блока 302 отлично от 0), то переходят к оценке значения estMX (Фиг.4, 405) в соответствии со следующим выражением:
<mrow><mi>e</mi><mi>s</mi><mi>t</mi><mi>M</mi><mi>X</mi><mo>=</mo><mfrac><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi></mrow><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>L</mi></mrow></mfrac><mo>⋅</mo><mi>e</mi><mi>n</mi><mi>c</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>L</mi></mrow>
.
В противном случае, переходят к проверке условия 2 (Фиг.4, 404).
4. Проверка условия 2 (Фиг.4, 404): если блок 303 и блок 313 являются доступными (то есть блоки 303 и 313 расположены в границах кадра и, в случае, если опорный кадр является синтезированным кадром, то пиксели блока 303 не принадлежат области окклюзии, и значение хотя бы одного пикселя блока 303 отлично от 0), то переходят к оценке значения estMX (Фиг.4, 407) в соответствии со следующим выражением:
<mrow><mi>e</mi><mi>s</mi><mi>t</mi><mi>M</mi><mi>X</mi><mo>=</mo><mfrac><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi></mrow><mrow><mi>r</mi><mi>e</mi><mi>f</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>A</mi></mrow></mfrac><mo>⋅</mo><mi>e</mi><mi>n</mi><mi>c</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>A</mi></mrow>
.
В противном случае, переходят к оценке значения estMX (Фиг.4, 406) в соответствии со следующим выражением:
estMX=MAP(encMX_L,encMX_A,encMX_LA),
где MAP(x,y,z) - известный метод медианного предсказания [10], encMX_LA - это среднее значение блока 314:
<mrow><mi>e</mi><mi>n</mi><mi>c</mi><mi>M</mi><mi>X</mi><mo>_</mo><mi>L</mi><mi>A</mi><mo>=</mo><mfrac><mn>1</mn><mrow><mi>U</mi><mo>⋅</mo><mi>Q</mi></mrow></mfrac><mo>⋅</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>u</mi><mo>=</mo><mn>1</mn></mrow><mi>U</mi></msubsup><mrow><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mi>q</mi><mo>=</mo><mn>1</mn></mrow><mi>V</mi></msubsup><mrow><mi>D</mi><mi>I</mi><mo stretchy="false">(</mo><mi>u</mi><mo>,</mo><mi>q</mi><mo stretchy="false">)</mo></mrow></mstyle></mrow></mstyle></mrow>
Размеры блока 314 составляют U×Q и равны соответствующим размерам блоков 312 и 313.
5. Вычисление параметра коррекции изменения яркости и контрастности α (Фиг.4, 408) путем использования полученных значений estMX and refMX.
6. Выполнение коррекции изменения яркости и контрастности (Фиг.4, 409) для опорного блока 301 путем использования вычисленного параметра α.
Следует отметить, что опорный кадр 300, блоки 301, 302, 303 и восстановленные (закодированные и затем декодированные) блоки 312, 313, 314 доступны как во время кодирования, так и при декодировании. Фиг.5 иллюстрирует взаимное расположение рассматриваемых областей и блоков в текущем кадре 500. Область 501 текущего кадра 500 доступна во время кодирования и декодирования текущего кодируемого блока 502. Область 501 включает блоки 312, 313 и 314. Область 501 иногда называют «шаблоном». Область 503 не присутствует во время декодирования текущего блока 502 и не должна содержать блоков 312, 313 и 314. В связи с этим, описанный выше способ может быть реализован как в кодере, так и в декодере, и не требует передачи дополнительных данных в выходной битовый поток.
Другой вариант реализации заявляемого изобретения предусматривает попиксельную коррекцию изменения яркости и контрастности для опорного блока при кодировании с предсказанием. Ключевая идея заключается в попиксельной оценке параметра коррекции изменения яркости и контрастности, причем коррекция основывается на восстановленных значениях пикселей, соседних с текущим блоком, значениях пикселей опорного кадра и их взаимном подобии. Фиг.6 иллюстрирует конкретное применение этой техники.
<mrow><msubsup><mi>T</mi><mn>0</mn><mi>D</mi></msubsup><mo>∼</mo><msubsup><mi>T</mi><mrow><mn>15</mn></mrow><mi>D</mi></msubsup></mrow>
<mrow><msubsup><mi>T</mi><mn>0</mn><mi>R</mi></msubsup><mo>∼</mo><msubsup><mi>T</mi><mrow><mn>15</mn></mrow><mi>R</mi></msubsup></mrow>
Согласно Фиг.6 на каждой итерации процедуры поиска опорного блока для текущего блока 611, принадлежащего текущему кодируемому кадру 610, определяют вектор 620 смещения (DV). DV указывает на опорный блок 601 опорного кадра 600. Текущий блок 611 содержит пиксели, которые обозначены как А00~А33. Опорный блок 601 содержит пиксели, которые обозначены как R00~R33. Восстановленные значения пикселей (блоки 612 и 613), соседних по отношению к текущему кодируемому блоком, обозначены как
.
- пиксели, принадлежащие блокам 602 и 603. Блоки 602 и 603 являются соседними по отношению к опорному блоку 601 и ставятся в соответствие блокам 612 и 613. Следует также отметить, что общее число пикселей в блоках 612, 613 и 602, 603 является одинаковыми.
Для каждого положения (i,j) пикселя в опорном блоке 601 коррекция изменения яркости и контрастности осуществляется в соответствии со следующим уравнением:
i,j
i,j
i,j
ψ(x)=α·x.
i,j
Здесь параметр попиксельной коррекции изменения яркости и контрастности (в случае, если estR не равно 0) описывается как:
<mrow><msub><mi>α</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mfrac><mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>D</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></mfrac></mrow>
,
i,j
i,j
i,j
где estD - это первая оценка для пикселя с координатами (i,j) в опорном блоке; estR - это вторая оценка пикселя с координатами (i,j) в опорном блоке. В противном случае α полагается равным 1.
Блок-схема способа попиксельной коррекции изменения яркости и контрастности для опорного блока приведена на Фиг.7. Этот способ включает следующие этапы:
1. Получение значений пикселей блоков 601, 602, 603 из опорного кадра 600, блока 611 и блоков 612, 613, принадлежащих области шаблона текущего кодируемого кадра 610 (операция 701).
k
k
2. Вычисление весовых коэффициентов W(i,j), k=0, …, N - 1 для каждого положения (i,j) пикселя в опорном блоке 601 (операция 702). Весовые коэффициенты W(i,j) могут быть выражены следующим образом:
k
k
W(i,j)=exp(-C·A(i,j)),
<mrow><mi>C</mi><mo>=</mo><mfrac><mi>σ</mi><mn>2</mn></mfrac></mrow>
<mrow><msub><mi>A</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>=</mo><mrow><mo>|</mo><mrow><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow><mo>|</mo></mrow></mrow>
,
.
i,j
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
где σ>0 определяется экспериментально. Здесь N - это общее число пикселей в блоках 612, 613 (или 602, 603). Необходимо отметить, что весовые коэффициенты отражают тот факт что, чем значение R ближе к
, тем больше его вклад при определении параметра коррекции изменения яркости и контрастности для опорного блока.
i,j
3. Вычисление значений estD для каждого положения (i,j) пикселя в опорном блоке 601 (операция 703) в соответствии со следующим выражением:
<mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>D</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mstyle displaystyle="true"><msubsup><mo>∑</mo><mrow><mtable><mtr><mtd><mrow><mi>k</mi><mo>∈</mo><mn>0</mn><mo>…</mo><mi>N</mi><mo>−</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>k</mi><mo>:</mo><mtext> </mtext><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>1</mn><mtext> </mtext><mi>a</mi><mi>n</mi><mi>d</mi><mtext> </mtext><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>2</mn></mrow></mtd></mtr></mtable></mrow><mrow /></msubsup><mrow><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>⋅</mo><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow></mstyle></mrow>
i,j
<mrow><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow>
Thr1 и Thr2 - это предопределенные пороговые значения. Пороговые значения используются для исключения значений пикселей, соседних по отношению к опорному блоку, которые существенно отличаются от значений R и значений
, соседних по отношению к текущему кодируемому блоку.
i,j
4. Вычисление значений estR для каждого положения (i,j) пикселя в опорном блоке 601 (операция 704) в соответствии со следующим выражением:
<mrow><mi>e</mi><mi>s</mi><mi>t</mi><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><mstyle displaystyle="true"><munder><mo>∑</mo><mrow><mtable><mtr><mtd><mrow><mi>k</mi><mo>∈</mo><mn>0</mn><mo>…</mo><mi>N</mi><mo>−</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>k</mi><mo>:</mo><mtext> </mtext><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msubsup><mi>T</mi><mi>k</mi><mi>D</mi></msubsup></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>1</mn><mtext> </mtext><mi>a</mi><mi>n</mi><mi>d</mi><mtext> </mtext><mrow><mo>|</mo><mrow><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup><mo>−</mo><msub><mi>R</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow><mo>|</mo></mrow><mo>≤</mo><mi>T</mi><mi>h</mi><mi>r</mi><mn>2</mn></mrow></mtd></mtr></mtable></mrow></munder><mrow /></mstyle><msub><mi>W</mi><mi>k</mi></msub><mrow><mo>(</mo><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>⋅</mo><msubsup><mi>T</mi><mi>k</mi><mi>R</mi></msubsup></mrow>
.
i,j
Предопределенные пороговые значения Thr1 и Thr2 являются такими же, как в вычислении для вычисления estD.
i,j
i,j
i,j
i,j
i,j
5. Вычисление параметра коррекции изменения яркости и контрастности α (операция 705) для каждого пикселя с координатами (i,j) в опорном блоке 601 на основании полученных значений  estD и estR в случае, если estR не равно 0. В противном случае α полагается равным 1.
i,j
6. Выполнение коррекции изменения яркости и контрастности (операция 706) для опорного блока 601 на основе использования вычисленных параметров α.
Другой вариант реализации заявляемого изобретения основан на следующем. Обычно в качестве пикселей, соседних по отношению к опорному блоку, выбирают группу пикселей, непосредственно прилегающих к опорному блоку. Однако процедура поиска опорного блока может выбрать такой вектор смещения, что значения пикселей в указанной группе не будут в достаточной степени схожи с соответствующими им значениями пикселей, соседних по отношению к текущему кодируемому блоку. Более того, значения пикселей, непосредственно прилегающих к опорному блоку, могут значительно отличаться от значений пикселей опорного блока В этих случаях, коррекция изменения яркости и контрастности может выполняться неверно.
Для решения указанной проблемы, в варианте реализации заявляемого изобретения предлагается использовать "плавающее" (относительно опорного блока) положение упомянутой группы пикселей, соседних по отношению к опорному блоку. Фиг.8 объясняет заявляемый способ в соответствии с одним из вариантов реализации заявляемого изобретения. Согласно Фиг.8 на каждой итерации процедуры поиска опорного блока для текущего блока 811 текущего кодируемого кадра 810 определяют вектор 820 смещения (DV). DV указывает на опорный блок 801 опорного кадра 800. Координаты группы пикселей опорного кадра (которую образуют пиксели блоков 802 и 803) определяются с помощью дополнительного уточняющего вектора 804 смещения. Уточняющий вектор 804 смещения является результатом дополнительной процедуры оценки смещения. При этом определяется такой вектор 804 смещения, который дает минимальное значение штрафной функции, определяющей степень подобия блоков 812, 813 и блоков 802, 803 соответственно. В качестве штрафной функции могут выступать такие известные функции как: средне-квадратичная ошибка, сумма абсолютных разностей, сумма абсолютных разностей для сигналов с нулевым средним, и т.д. Вектор 804 может быть определен неявно во время процесса кодирования и декодирования без передачи дополнительной информации в выходном битовом потоке.
На Фиг.9 представлена блок-схема, которая описывает способ кодирования многоракурсных видеопоследовательностей, основанный коррекции яркости и контрастности согласно одному из вариантов реализации заявляемого изобретения. На этапе 901 определяют опорный блок, который используется для формирования предсказанного блока. На этапе 902 определяют параметры коррекции изменения яркости и контрастности для найденного опорного блока. Определение параметров коррекции изменения яркости и контрастности включает в себя:
- получение восстановленных (закодированных и затем декодированных) значений пикселей, соседних по отношению к текущему блоку, и значений пикселей, соседних по отношению к опорному блоку опорного кадра;
- определение числовых соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку, и соотношения между восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку;
- определение параметров коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности для опорного блока на основе найденных на предыдущем шаге числовых соотношений, значений пикселей опорного блока, восстановленных значений пикселей, соседних по отношению к текущему кодируемому блоку, и значений пикселей, соседних по отношению к опорному блоку.
На этапе 903, используя найденные параметры коррекции изменения яркости и контрастности, выполняют коррекцию для опорного блока. На этапе 904, используя скорректированный по яркости и контрастности опорный блок, формируют блок-предсказание для текущего блока. На этапе 905, используя сформированный блок-предсказание, кодируют текущий блок. В частности, кодируют информацию об опорном блоке, если это необходимо для декодирования. Необходимо отметить, что найденные параметры коррекции изменения яркости и контрастности не кодируются и не помещаются в выходной битовый поток.
Фиг.10 иллюстрирует способ декодирования многоракурсных видеопоследовательностей на основе коррекции изменения яркости и контрастности, согласно одному из примеров реализации заявляемого изобретения. Согласно Фиг.10 информация об опорном блоке декодируется, если требуется ее декодирование. Декодированная информация может использоваться для определения опорного блока на этапе 1001. На этапе 1002 определяют параметры коррекции изменения яркости и контрастности для коррекции опорного блока. Процедура определения параметров коррекции изменения яркости и контрастности включает в себя:
- получение восстановленных (закодированных и затем декодированных) значений пикселей, соседних по отношению к текущему блоку, и значений пикселей, соседних по отношению к опорному блоку опорного кадра;
- определение числовых соотношений между значениями пикселей опорного блока и значениями пикселей, соседних по отношению к опорному блоку, и соотношения между восстановленными значениями пикселей, соседних по отношению к текущему кодируемому блоку, и значениями пикселей, соседних по отношению к опорному блоку;
- определение параметров коррекции изменения яркости и контрастности для коррекции различия в яркости и контрастности для опорного блока на основе найденных на предыдущем шаге числовых соотношений, значений пикселей опорного блока, восстановленных значений пикселей, соседних по отношению к текущему кодируемому блоку, и значений пикселей, соседних по отношению к опорному блоку.
На этапе 1003, используя найденные параметры коррекции изменения яркости и контрастности, выполняют коррекцию опорного блока. На этапе 1004, используя скорректированный по яркости и контрастности опорный блок, формируют блок-предсказание для текущего декодируемого блока. На этапе 1005, используя сформированный блок-предсказание, осуществляют декодирование текущего блока.
На практике заявляемое изобретение может быть использовано при кодировании и декодировании многоракурсных видеопоследовательностей.
Варианты реализации заявляемого изобретения, описанные выше, приведены лишь с целью иллюстрации и не имеют ограничительного характера. Объем охраны изобретения определяется прилагаемой формулой изобретения
Ссылки
[1] Yea, S.; Vetro, A., «View Synthesis Prediction for Multiview Video Coding», Image Communication, ISSN: 0923-5965, Vol.24, Issue 1-2, pp.89-100, January 2009.
[2] ITU-T Rec. H.264. Advanced video coding for generic audiovisual services. 2010.
[3] US Patent 7,924,923. Motion Estimation and Compensation Method and Device Adaptive to Change in Illumination. April, 2011.
[4] Y.Lee, J.Hur, Y.Lee, R.Han, S.Cho, N.Hur, J.Kirn, J.Kirn, P.Lai, A.Ortega, Y.Su, P.Yin and C.Gomila. CE11: Illumination compensation. Joint Video Team (JVT) of ISO/IEC MPEG and ITU-T VCEG JVT-U052, Oct. 2006.
[5] J.H.Kirn, P.Lai, J.Lopez, A.Ortega, Y.Su, P.Yin, and C.Gomila. New coding tools for illumination and focus mismatch compensation in multiview video coding. IEEE Trans. on Circuits and Systems for Video Technology, vol.17, no. 11, pp.1519-1535, Nov. 2007.
[6] Т.Yamamoto, Т.Ikai, "Weighted prediction using neighboring pixels," ITU-T Q.6/SG16 VCEG, Proposal VCEG-AH19, January 2008.
[7] US Patent Application 2011/0286678. Multi-view Image Coding Method, Multi-view Image Decoding Method, Multi-view Image Coding Device, Multi-view Image Decoding device. Multi-view Image Coding Program, and Multi-view Image Decoding Program. November, 2011.
[8] US patent application 2008/0304760. Method and Apparatus for Illumination Compensation and Method and Apparatus for Encoding and Decoding Image Based on Illumination Compensation. December, 2008.
[9] Richardson I.E. The H.264 Advanced Video Compression Standard. Second Edition. 2010.
[10] Martucci S.A. «Reversible compression of HDTV images using median adaptive prediction and arithmetic coding», in IEEE Int. Symp. on Circuits and Systems, 1990.