КОДИРОВАНИЕ ВИДЕО ПРИ ПОМОЩИ СОГЛАСОВАННОГО ПО ВРЕМЕМИ ОТОБРАЖЕНИЯ ДИНАМИЧЕСКОГО ДИАПАЗОНА
VIDEO ENCODING USING TIME-MATCHED DYNAMIC RANGE MAPPING

Настоящая заявка относится к кодированию видео, такому как для использования с HDR-последовательностями.
До сих пор, прикладные задачи кодирования изображений и видео могли охватывать диапазон яркости лишь около 2 порядков величины (низкий динамический диапазон (LDR))[1]. Тем не менее, Зрительная Система Человека (HVS) позволяет нам адаптироваться к условиям света, которые могут охватывать диапазон более десяти порядков величины и одновременно воспринимать около пяти порядков величины [2]. С растущим количеством прикладных задач, которые могут воспользоваться представлением полной HDR яркости (например, CGI, создание спецэффектов, HDR-дисплеи), возрастет потребность в способах кодирования HDR-видео. Использование стандартного способа кодирования, подобного H.264/AVC, позволит обеспечить гладкий переход от LDR к HDR кодированию видео без больших дополнительных усилий. Следует отметить, что в данной работе понятие HDR относится к представлению реальных значений яркости, а не к отображенному в тонах LDR представлению, которое иногда именуется HDRI.
<mi>Y</mi>
<mrow><mo stretchy="false">(</mo><msup><mi>u</mi><mo>′</mo></msup><mo>,</mo><msup><mi>v</mi><mo>′</mo></msup><mo stretchy="false">)</mo></mrow>
<mrow><mo stretchy="false">(</mo><msup><mi>u</mi><mo>′</mo></msup><mo>,</mo><msup><mi>v</mi><mo>′</mo></msup><mo stretchy="false">)</mo></mrow>
<mrow><mo stretchy="false">(</mo><msup><mi>u</mi><mo>′</mo></msup><mo>,</mo><msup><mi>v</mi><mo>′</mo></msup><mo stretchy="false">)</mo></mrow>
Поскольку наиболее естественное представление HDR-данных, чисел с плавающей точкой, не приводит к хорошему сжатию, а так же дорого в плане обработки, то ряд авторов предлагает приемлемое отображение значений яркости с плавающей точкой в целочисленных значениях гамма-корректированной яркости [3, 4, 5, 6]. У таких способов отображения яркости в гамма-корректированной яркости общее то, что связанные с ними потери в точности находятся ниже порогового значения HVS и вследствие этого искажение не воспринимается. Так же их объединяет то, что они применяют преобразование данных HDR-изображения в цветовое пространство CIELUV [1] перед дальнейшей обработкой. Т.е., данные представляются в яркостной компоненте
и цветовых компонентах
. Преимущество
представления цвета состоит в том, что оно однородно в плане восприятия. Т.е., равные смещения в данном представлении представляют собой равные воспринимаемые цветовые различия и вследствие этого, они могут линейно отображаться в целочисленных значениях с битовой глубиной, например, 8 бит. Такое отображение воспринимаемого
интервала [0, 0,62] в целочисленных значениях в диапазоне [0, 255] привносит максимальную абсолютную погрешность квантования в размере 0,00172, которая находится значительно ниже видимого порогового значения.
<mi>Y</mi>
Поскольку HVS подчиняется закону Вебера-Фехнера, применительно к большим диапазонам яркости, то в большинстве работ выполняется логарифмическое отображение яркости
в кодовых значениях гамма-корректированной яркости [3, 5, 6]. Это приводит к постоянной относительной погрешности квантования, которая в свою очередь ведет к однородно воспринимаемому представлению яркости. Например, в [3] Larson предложил следующее отображение яркости в гамма-корректированной яркости (LogLuv преобразование):
<mrow><msub><mi>L</mi><mrow><mn>15</mn></mrow></msub><mo>=</mo><mrow><mo>⌊</mo><mrow><mn>256</mn><mo stretchy="false">(</mo><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><mi>Y</mi><mo stretchy="false">)</mo><mo>+</mo><mn>64</mn></mrow><mo>⌋</mo></mrow></mrow>
<mrow><mi>Y</mi><mo>=</mo><msup><mn>2</mn><mrow><mfrac><mrow><msub><mi>L</mi><mrow><mn>15</mn></mrow></msub><mo>+</mo><mn>0,5</mn></mrow><mrow><mn>256</mn></mrow></mfrac><mo>−</mo><mn>64</mn></mrow></msup></mrow>
;
(1)
<mrow><mo stretchy="false">[</mo><mn>5,44</mn><mo>×</mo><msup><mrow><mn>10</mn></mrow><mrow><mo>−</mo><mn>20</mn></mrow></msup><mo>,</mo><mtext> </mtext><mn>1,84</mn><mo>×</mo><msup><mrow><mn>10</mn></mrow><mrow><mn>19</mn></mrow></msup><mo stretchy="false">]</mo></mrow>
<mrow><mo stretchy="false">[</mo><msup><mrow><mn>0,2</mn></mrow><mrow><mn>15</mn></mrow></msup><mo>−</mo><mn>1</mn><mo stretchy="false">]</mo></mrow>
Оно отображает действительнозначные яркости в интервале
в 15 битных целочисленных значениях гамма-корректированной яркости в диапазоне
и наоборот. Т.е., около 38 порядков величины яркости представлены с относительным размером шага в 0,27%. Это значительно ниже видимого порогового значения квантования, которое составляет около 1% [1].
Тем не менее, динамический диапазон, охватываемый таким отображением, находится далеко за пределами диапазона, который одновременно может воспринимать HVS. Кроме того, не существует данных естественных изображений, которые охватывают такие высокие динамические диапазоны. Тогда как при сжатии изображений без потерь такой чрезвычайно высокий диапазон и точность данных, которые могут подвергаться дальнейшим этапам обработки изображений, может быть полезен, однако для кодирования видео с потерями, которое предназначено для дальнейшего просмотра зрителями-людьми, это не так. Следовательно, нет необходимости в резервировании бит для представления значений яркости, которые не воспринимаются или которые не встречаются в исходном изображении или видео кадре. Поскольку это ухудшит эффективность сжатия, например, при кодировании неподвижного HDR-изображения при помощи TIFF библиотеки [3], может использоваться коэффициент масштабирования для масштабирования исходного изображения до соответствующего диапазона перед LogLuv преобразованием. В аналогичном LogLuv подходе [6], масштабирование применялось к каждому отдельному кадру видео последовательности, чтобы использовать весь диапазон возможных кодовых значений гамма-корректированной яркости для заданной битовой глубины.
Тем не менее, подобно большинству способов кодирования HDR-видео, последний является лишь непосредственным расширением кодирования HDR-изображения на отдельные видео кадры. Вследствие этого, подход не учитывает некоторые специфичные для видео аспекты, что значительно ухудшает эффективность сжатия. Наиболее заметно, что отображение значений яркости последовательных кадров в разных кодовых значениях при помощи индивидуального масштабирования, значительно вредит согласованности по времени последовательности. Следовательно, в большинстве случаев не удается реализовать временное предсказание с компенсацией движения в видео кодере стандарта H-264/AVC.
Естественно это так же справедливо для других кодеров с временным предсказанием, а так же для значений отсчетов, отличных от значений яркости.
Таким образом, цель настоящего изобретения заключается в предоставлении концепции кодирования, которая позволит более эффективно совместно использовать отображение динамического диапазона с одной стороны и временного предсказания с другой стороны.
Данная цель достигается предметом независимых пунктов формулы изобретения.
Основная идея, которая лежит в основе настоящего изобретения, состоит в том, что более эффективное совместное использование отображения динамического диапазона с одной стороны и временного предсказания с другой стороны, как, например, для того, чтобы кодировать последовательности HDR-кадров, может быть достигнута посредством использования концепции взвешенного предсказания для того, чтобы перейти от параметра отображения из опорного кадра к текущему кадру, который подвергается временному предсказанию. Посредством этого, временное предсказание не проваливается и, несмотря на, покадровое изменение отображения динамического диапазона, таким образом, сохраняется эффективность кодирования. В качестве благоприятного побочного аспекта, взвешенное временное предсказание, уже заключено в возможностях существующих каскадов кодирования видео, таких как, например, H.264/AVC.
Ниже более подробно будут описаны предпочтительные варианты осуществления настоящего изобретения. В частности,
Фиг.1 показывает структурную схему кодера видео в соответствии с вариантом осуществления;
Фиг.2 показывает структурную схему каскада кодирования видео с Фиг.1 в соответствии с вариантом осуществления;
Фиг.3 показывает структурную схему декодера видео в соответствии с вариантом осуществления;
Фиг.4 показывает структурную схему каскада декодирования видео в соответствии с вариантом осуществления;
Фиг.5 показывает принципиальную схему, иллюстрирующую участок потока данных, формируемый кодером видео с Фиг.1 и декодируемый декодером видео с Фиг.3 в соответствии с вариантом осуществления;
Фиг.6 показывает график с характерным адаптивным логарифмическим отображением яркости в гамма-корректированной яркости с разными диапазонами для разных кадров; и
Фиг.7 показывает результаты кодирования для трех случаев, а именно: использования согласованного по времени отображения в соответствии с вариантом осуществления, описанным в отношении фигур; использования покадровой адаптации, не выполняя согласования по времени; и использования постоянного отображения, для разных фрагментов видео (левого, среднего, правого), и используя разные измерения ухудшения качества (верхняя и нижняя строка).
Перед тем как ниже будут описаны варианты осуществления настоящего изобретения со ссылкой на фигуры, следует отметить, что эквивалентные элементы, встречающиеся на разных фигурах, обозначены при помощи эквивалентных обозначений, и соответственно, описание этих элементов в отношении одной фигуры так же применимо в отношении другой фигуры, до тех пор, пока конкретные детали, представленные в отношении последнего, не указывают обратного.
Фиг.1 показывает кодер 10 видео в соответствии с вариантом осуществления настоящего изобретения. Кодер 10 видео выполнен с возможностью кодирования первой последовательности 12 кадров 14, значение 16 отсчетов которых представлено в первом формате, охватывающем первый динамический диапазон. Например, последовательность 12 кадров может быть видео, таким как HDR-видео, а значения 16 отсчетов могут представлять собой пространственную дискретизацию распределения яркости отдельных кадров 14. Первым форматом, в котором представлены значения 16 отсчетов, может быть формат с плавающей точкой. Подробные примеры будут приведены ниже. Тем не менее, следует отметить, что тип информации, подвергаемой пространственной дискретизации посредством значений 16 отсчетов, не ограничивается яркостью. Наоборот, вместо этого прочие типы информации могут быть объектом значений 16 отсчетов. Например, кадры 14 могут представлять собой карты глубин, и соответственно, последовательность 12 может представлять собой временную дискретизацию карты глубин определенной сцены или подобного.
Кодер 10 видео содержит преобразователь 18 значений отсчетов, каскад 20 кодирования видео и блок 22 задания параметров. Преобразователь 18 значений отсчетов и каскад 20 кодирования видео располагаются между входом 24 и выходом 26 кодера 10 видео, при этом вход 24 выполнен с возможностью приема последовательности 12 кадров, в то время как выход 26 служит для вывода потока данных, полученного в результате кодирования последовательности 12 кодером 10 видео. Блок 22 задания параметров имеет вход, соединенный с входом 24, и выходы, соединенные с входами параметров преобразователя 18 значений отсчетов и каскада 20 кодирования видео, соответственно. Как указано пунктирной линией 28, блок 22 задания параметров так же может выводить дополнительную информацию, вносящую свой вклад в поток 26 данных, как будет более подробно изложено ниже.
Преобразователь 18 значений отсчетов выполнен с возможностью преобразования значений 16 отсчетов кадров 14 первой последовательности 12 из первого формата во второй формат, динамический диапазон которого ниже первого динамического диапазона. Таким образом, преобразователь 18 значений отсчетов пересылает каскаду 20 кодирования видео вторую последовательность 30 кадров 32, которая полностью соответствует последовательности 12, за исключением того, что значения 16 отсчетов были преобразованы из первого формата во второй формат. Соответственно, каждый кадр 32 соответствует соответствующему кадру 14 последовательности 12, при этом кадры 32 в последовательности 30 располагаются в той же очередности, в которой располагаются соответствующие кадры 14 в последовательности 12.
<mi>n</mi>
<mi>n</mi>
<mrow><msup><mrow><mn>10</mn></mrow><mn>2</mn></msup><mo>≈</mo><msup><mn>2</mn><mn>8</mn></msup></mrow>
<mrow><msup><mrow><mn>10</mn></mrow><mn>3</mn></msup><mo>≈</mo><msup><mn>2</mn><mrow><mn>10</mn></mrow></msup></mrow>
Вторым форматом может быть, например, целочисленный формат в котором, например, значения 34 отчетов кадров 32 представлены, например, в закодированной PCM форме, используя бинарный код. Например, значения 34 отсчетов могут быть представлены
битами, при этом
, например, равно 8, 9 или 10. В случае восьми бит, например, второй формат, таким образом, охватывает диапазон значений отсчетов лишь около двух порядков величины (
), а в случае десяти бит, например, второй формат, таким образом, будет охватывать диапазон значений отсчетов лишь около трех порядков величины (
). По сравнению с ним, первый формат, посредством которого представлены значения 16 отсчетов, охватывает больший, или даже значительно больший динамический диапазон. Как упомянуто выше, и в соответствии с излагаемыми ниже более подробными вариантами осуществления, первым форматом может быть формат с плавающей точкой. Тем не менее, следует отметить, что первый формат может быть целочисленным форматом, при этом, тем не менее, используя большее число бит, чем второй формат.
Чтобы преобразовать значения отсчетов кадров 14 первой последовательности 12 из первого формата во второй формат, преобразователь 18 значений отсчетов использует функцию 36 отображения, которая отображает участок 38 первого динамического диапазона 40 во втором динамическом диапазоне 42. В частности, преобразователь 18 значений отсчетов выполнен таким образом, что участок 38, который функция 36 отображения отображает в динамическом диапазоне 42, соответствующем второму формату, является участком, который задается параметром 44 отображения, который в свою очередь задается блоком 22 задания параметров, как будет изложено более подробно ниже, покадрово. В определенных вариантах осуществления, более подробно изложенных ниже, функция 36 отображения представляет собой функцию линейного отображения из первого динамического диапазона 40 в логарифмической области во второй динамический диапазон в линейной области. Тем не менее, вместо функции данного типа так же могут использоваться прочие строго монотонные функции. Как станет очевидно из приведенного ниже дальнейшего описания, участок 38 задается блоком 22 задания параметров покадрово, так чтобы захватить, по сути, всю информацию, которая содержится в соответствующем кадре 14 в первом формате. Вкратце, блок 22 задания параметров осуществляет поиск позиции и размера - или масштаба - участка 38 в первом динамическом диапазоне 40 таким образом, чтобы все значимые для восприятия отсчеты в соответствующем кадре 14 имели свое значение 16 отсчета в участке 38, так чтобы все эти значения отсчетов были корректно отображены - без отсечения - во втором динамическом диапазоне второго формата 42. Характерное распределение 44 значений 16 отсчетов в текущем кадре в качестве примера показано на Фиг.1. В примере Фиг.1, данное распределение полностью содержится в участке 38. Как будет более подробно изложено ниже, распределение 44 может представлять собой всего лишь распределение значений 16 отсчетов в определенной части кадра 14, такой как его центральный участок, поскольку такой центральный участок наиболее вероятно содержит наиболее важный участок в сцене видео контента.
Как явно видно, распределение значений 16 отсчетов в первом динамическом диапазоне 40 может меняться от кадра к кадру, и соответственно, Фиг.1 с помощью пунктирной линии 46 показывает характерное распределение другого кадра 14 в последовательности 12. Как показано в качестве примера на Фиг.1, первое распределение 46 может, например, быть смещено относительно и/или может быть уже распределения 44 текущего кадра. Соответственно, блок 22 установки параметров должен будет задать параметр 44 отображения для кадра с распределением 46 значений отсчетов по-другому в сравнении с параметром 45 отображения, определяющим участок 48. Например, распределение 46 значений отсчетов может задать параметр отображения для этих кадров таким образом, что участок 48 аппроксимирует участок первого динамического диапазона 40, занятого распределением 46, т.е. таким образом, что участок 48 мал, насколько это возможно, но все же охватывает диапазон распределения 46, при этом то же применяется к участку 38 по отношению к распределению 44.
Таким образом, последовательность 30, по сути, соответствует последовательности 12 со значениями отсчетов, которые, тем не менее, представлены в другом формате. Тем не менее, просмотр последовательности 30, приведет к неприятному впечатлению, поскольку значения 34 отсчетов одного кадра в последовательности 30 будут определены в отношении другого участка яркости, чем значения 34 отсчетов в другом кадре той же последовательности. Например, вышеупомянутые кадры последовательности 12 будут иметь значения 16 отсчетов, отображенные в значениях 34 отсчетов, которые находятся в участках 38 и 48, соответственно. Таким образом, значение 34 отсчета, например, равное одному в одном кадре вероятнее всего будет соответствовать другому фактическому значению яркости, чем значение отсчета равное одному в другом кадре последовательности 30. Таким образом, без дополнительных мер, каскад 20 кодирования видео не будет иметь возможности выполнить обычное временное предсказание, использующее, например, предсказание с компенсацией движения, поскольку требуемый поиск вектора движения, скорее всего, не будет успешным.
В частности, каскад 20 кодирования видео выполнен с возможностью кодирования второй последовательности 30 кадров 32 посредством взвешенного временного предсказания первого кадра второй последовательности 30, используя второй кадр второй последовательности 30 реконструированной версии второго кадра второй последовательности 30, взвешенного параметром веса и смещенного параметром смещения, в качестве опорного кадра. Другими словами, каскад 20 кодирования видео может предсказать по времени текущий кадр 32 последовательности 30 посредством предсказания с компенсацией движения и при использовании другого, ранее закодированного кадра 32 последовательности 30, в качестве опорного кадра. Предсказание с компенсацией движения может выполняться поблочно. Данные предсказания движения, такие как векторы движения и индекс опорного кадра вставляются в поток данных в качестве дополнительной информации, наряду с упомянутыми выше параметрами веса/смещения. Каждый предсказанный по времени блок может иметь связанный с ним вектор движения, который каскад 20 кодирования видео определяет посредством определения наилучшего совпадения контента текущего блока текущего кадра 32 с опорным, т.е., опорным кадром с взвешенным и смещенным посредством параметров 50 значением отсчета, при этом пробуя различные смещения (векторы движения), относящиеся к позиции, соответствующей позиции блока в текущем кадре. Чтобы ограничить потери на поиск, каскад 20 кодирования видео ограничивает поиск некоторым диапазоном поиска.
Как станет очевидно ниже, благодаря тому, что каскад 20 кодирования видео использует взвешенное временное предсказание, блок 22 задания параметров может адаптировать опорный кадр для текущего кадра относительно разницы связанных частей 48 и 38 отображения, соответственно.
В частности, блок 22 задания параметров задает параметр веса и параметр смещения, проиллюстрированные совместно на Фиг.1 стрелкой 50, в зависимости от параметра 45 отображения для опорного кадра, при этом параметр отображения для опорного кадра связан с параметром отображения для текущего кадра через параметр веса и параметр 50 смещения, как будет подробно изложено ниже. Другими словами, блок 22 задания параметров отвечает за задание как параметра веса и параметра 50 смещения для текущего кадра с одной стороны, так и параметра 45 отображения для текущего кадра с другой стороны. Тем не менее, блок 22 задания параметров не вправе задавать параметры 50 веса и смещения независимо от задания параметра 45 отображения для текущего кадра. Наоборот, оба задания связаны друг с другом, например, однозначно определенным образом. Соответственно, в действительности, блок 22 задания параметров задает параметры 50 веса и смещения и параметр 45 отображения параллельно и, в частности, таким образом, что параметры 50 веса/смещения смещают и масштабируют размер участка 48 опорного изображения таким образом, что интервал, получаемый при данном смещении и масштабировании, дает участок 38 текущего кадра, который пригоден для захвата значимого для восприятия участка распределения 44, как рассмотрено выше. Параметры 50 веса/смещения смещают и масштабируют участок 48 опорного кадра посредством их применения к опорному кадру: Параметры 50 веса/смещения отображают все возможные значения в участке 48 в значениях совместно охватывающих диапазон, который определяет участок 38.
Перед представленным ниже более подробным описанием функционирования кодера видео по Фиг.1 в соответствии с конкретными вариантами осуществления, в отношении Фиг.2 описывается вариант осуществления для реализации каскада 20 кодирования видео. В соответствии с вариантом осуществления Фиг.2, каскад 20 кодирования видео содержит кодер 60 остатка, энтропийный кодер 62, блок 64 реконструкции остатка, временной предсказатель 66, вычитатель 68, сумматор 70, дополнительный сумматор 72, и блок весовой обработки или умножитель 74. Вычитатель 68, кодер 60 остатка и энтропийный кодер 62 располагаются, в упомянутой очередности, между входом 76 каскада 20 кодирования видео, который, в свою очередь, соединен с выходом преобразователя 18 значений отсчетов, и выходом 78 каскада 20 кодирования видео, который в свою очередь соединен с входом 26 кодера 10 видео. Блок 64 реконструкции остатка имеет вход, соединенный с выходом кодера 60 остатка. Первый вход сумматора 70 соединен с выходом блока 64 реконструкции остатка. Умножитель 74, сумматор 72 и временной предсказатель 66 образуют контур и последовательно располагаются, в упомянутой очередности, между выходом сумматора 70 и его дополнительным входом. Одновременно, последовательное соединение умножителя 74, сумматора 72 и временного предсказателя 66 соединено с дальнейшим вычитаемым входом вычитателя 68. Значения, применяемые к дополнительным входам сумматора 72 и умножителя 74, соответственно, определяются посредством взвешивания параметров 50 смещения, подаваемых на вход 80 параметров каскада 20 кодирования видео.
В процессе работы текущий кадр подается на вход 76, в то время как временное предсказание текущего кадра подается на вычитаемый вход вычитателя 68. Остаток 82 предсказания, получаемый посредством вычитания временного предсказания 84 из текущего кадра, кодируется кодером 60 остатка. Кодер 60 остатка может, например, подвергать остаточный сигнал 82 преобразованию, такому как преобразование спектрального разложения, при этом кодер 60 остатка может выполнить данное преобразование поблочно. Дополнительно или в качестве альтернативы, кодер 60 остатка может применить квантование к остаточному сигналу 82, чтобы сократить содержимое информации, которое содержится в остатке 82 предсказания, который будет закодирован в поток данных. Кодер 60 остатка может использовать параметр размера шага квантования в качестве параметра квантования, который может дополнительно меняться от кадра к кадру, как показано в качестве иллюстрации пунктирной стрелкой 86. Таким образом, на выходе кодера 60 остатка, получается закодированная с потерями версия 88 остатка предсказания. Она же кодируется в поток данных на выходе 78 энтропийного кодера 62 без потерь.
<mrow><mo stretchy="false">(</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo>,</mo><mi>log</mi><mi>W</mi><mi>D</mi><mo stretchy="false">)</mo></mrow>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
Блок 64 реконструкции остатка воссоздает реконструированную версию 90 остатка предсказания на своем выходе, который соединен с первым входом сумматора 70. На другой вход сумматора 70, подается результат временного предсказания 84 для текущего кадра, и соответственно, сумматор 70 объединяет реконструированный остаток 90 и временное предсказание 84, чтобы получить реконструированную версию текущего кадра, формирующую основу для временного предсказания следующего кадра. Как будет более подробно изложено ниже, умножитель 74 умножает или масштабирует каждое значение отсчета реконструированной версии 70 в зависимости от параметра веса
, а сумматор 72 добавляет смещение, в зависимости от параметра смещения
к каждому, таким образом, масштабированному значению отсчета. Посредством этого, значения отсчетов реконструированной версии 70 смещаются в соответствующие позиции яркости внутри участка 38 текущего кадра, который будет далее временно предсказан. Соответственно, на выходе сумматора 72 получают взвешенный и смещенный опорный кадр 92, на основании которого временный предсказатель 66 выполняет временное предсказание, используя, например, предсказание движения. Например, временной предсказатель 66 использует определенный блок текущего кадра, потенциально интерполированный и смещенный (в соответствии с вектором движения) участок из опорного кадра 92 в качестве предсказания для данного блока текущего кадра, подаваемого в настоящий момент на вход 76.
Таким образом, поскольку каскад 20 кодирования видео использует взвешенное временное предсказание, то временный предсказатель 66 использует реконструированную версию ранее закодированного кадра в форме 92 с взвешенными значениями отсчетов и смещенными значениями отсчетов вместо непосредственно версии кадра на выходе сумматора 70. Посредством этого, разность позиционирования и задания размеров участков 38 и 48 между этими кадрами является выровненной. Другими словами, выравнивание гарантируется блоком 22 задания параметров, который, в свою очередь, соответствующим образом задает параметры 50 веса и смещения, подаваемые на вход 80.
Таким образом, вновь возвращаясь к Фиг.1, блок 22 задания параметров может быть выполнен с возможностью определения занятого участка первого динамического диапазона 40, в котором распределены значения 16 отсчетов текущего кадра первой последовательности 12, затем задавая параметры 50 веса и смещения таким образом, чтобы участок 38, задаваемый параметром 55 отображения для текущего кадра, аппроксимировал занятый участок. Другими словами, блок 22 задания параметров сначала может инспектировать распределение 44, чтобы определить интересующий занятый участок первого динамического диапазона 40. Затем блок 22 задания параметров может задать параметры 50 веса и смещения текущего кадра таким образом, что применение этих параметров 50 к значениям отсчетов реконструированной версии 70 фактически приводит к смещению и масштабированию участка 48 кадра, реконструкцию которого представляет реконструированная версия 70, причем получают участок 38, аппроксимирующий занимаемый участок, определяемый распределением 44.
Применительно к этому следует отметить, что внутренним образом каскад 20 кодирования видео может использовать более высокий динамический диапазон, такой как большее количество бит, с тем, чтобы представить масштабированный и со смешенными значениями отсчетов опорный кадр, получаемый при применении параметров веса и смещения на входе 80 к реконструкции 70 опорного кадра, т.е. для опорного кадра 92, в сравнении с динамическим диапазоном последовательности 30, таким образом, чтобы применение этих параметров не приводило к каким-либо проблемам ограничения. Например, количество битов представления может быть увеличено вдвое.
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mrow><mo stretchy="false">(</mo><mi>log</mi><mi>W</mi><mi>D</mi><mo>,</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo stretchy="false">)</mo></mrow>
<mover accent="true"><mi>Y</mi><mo>⌢</mo></mover>
Таким образом, еще более подробно, блок 22 задания параметров может быть выполнен с возможностью задания параметра
смещения в зависимости от расхождения между верхней границей, и расхождения между нижней границей, участков 38, 48, заданных параметрами отображения для текущего и опорного кадров, соответственно, и задания параметра
веса в зависимости от расхождения между длиной участков 38, 48, соответственно. В конкретных изложенных далее ниже вариантах осуществления, например, преобразователь значений отсчетов, выполнен с возможностью преобразования значений
отсчетов кадров 14 первой последовательности 12 из первого формата во второй формат по формуле
<mrow><mi>b</mi><mo>⋅</mo><mo stretchy="false">(</mo><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mo stretchy="false">)</mo><mo>−</mo><mi>a</mi><mo stretchy="false">)</mo></mrow>
<mi>b</mi>
<mi>a</mi>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi></mrow></msub></mrow>
при этом
и
содержатся в параметре 45 отображения и соотносятся к нижней границей
и верхней границей
участка 38 первого динамического диапазона 40, от
до
, по формуле
<mrow><mi>b</mi><mo>=</mo><mfrac><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac></mrow>
<mrow><mi>a</mi><mo>=</mo><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow>
,
<mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub></mrow>
<mi>m</mi>
<mi>n</mi>
при этом
является логарифмической функцией по основанию
, а
является целым числом, указывающим количество битов представления целого числа во втором формате. При этом блок задания параметров может быть выполнен с возможностью определения занимаемого участка первого динамического диапазона, в котором распределены значения 16 отсчетов первого кадра 14 первой последовательности 12, и задания параметра веса и параметра смещения таким образом, что
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo>=</mo><mover accent="true"><mi>w</mi><mo>˜</mo></mover></mrow>
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn><mo>=</mo><mover accent="true"><mi>o</mi><mo>˜</mo></mover></mrow>
при условии, что
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>≥</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>≤</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
и
<mrow><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub></mrow>
при этом
является нижней границей, а
является верхней границей занимаемого участка.
Точность и диапазон параметра веса и смещения могут быть ограничены, например, каскадом 20 кодирования видео, который функционирует, например, по стандарту H.264/AVC. Раз так, то блок задания параметров может быть выполнен с возможностью определения занимаемого участка первого динамического диапазона, в котором распределены значения 16 отсчетов первого кадра 14 первой последовательности 12, и задания параметра веса и параметра смещения таким образом, что
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><msup><mn>2</mn><mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow></msup><mo>=</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover></mrow>
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><msub><mi>n</mi><mn>0</mn></msub></mrow></msup></mrow></mfrac><mo>=</mo><mover accent="true"><mi>o</mi><mo>⌢</mo></mover></mrow>
при условии, что
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>≥</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>≤</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
и
<mrow><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub></mrow>
<mrow><msub><mi>n</mi><mn>0</mn></msub></mrow>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mi>l</mi>
<mi>k</mi>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mrow><mo>−</mo><mn>128</mn><mo>≤</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo>≤</mo><mn>127</mn></mrow>
при этом
является нижней границей, а
является верхней границей занимаемого участка,
является целым числом, которое относится к диапазону определения
, индекс
служит указателем текущего кадра последовательности кадров, индекс
служит указателем опорного кадра последовательности кадров,
и
содержатся в параметре веса, а
содержится в параметре смещения. Допустимая точность
и
может соответствовать целым числам, при этом диапазон
, например, может ограничиваться
.
Кроме того, как так же будет рассмотрено применительно к подробным изложенным ниже вариантам осуществления, каскад 20 кодирования видео и кодеры 60 остатков могут быть выполнены с возможностью использования параметра размера шага квантователя при кодировании второй последовательности 30 кадров 32, и блок задания 22 параметров может быть выполнен с возможностью задания параметра размера шага квантователя для кадров 32 последовательности 30 в зависимости от длины соответствующего участка 38, 48, заданного для соответствующего кадра. Посредством этого, можно согласовать изменение по времени шума квантования, которое бы происходило при использовании статического параметра размера шага квантования из-за изменения по времени длины участков 38 и 48, соответственно. Блок 22 задания параметров может быть выполнен с возможностью кодирования параметра размера шага квантователя в потоке данных дифференциально по отношению параметру размера шага квантователя начального кадра второй последовательности, как например I кадра IPPPPP… последовательности.
После того как описан вариант осуществления кодера видео, ниже в отношении Фиг.3 описывается декодер 100 видео в соответствии с вариантом осуществления. Декодер видео служит для реконструкции последовательности 102 кадров 104, значения 106 отчетов которых представлены в первом формате, охватывающем первый динамический диапазон, из потока данных, такого как тот, что формируется кодером видео с Фиг.1. Формат, в котором представлены значения 106, может быть форматом, подразумевающим значения 16 отсчетов. Тем не менее, это не является обязательным.
Декодер 100 видео содержит каскад 108 декодирования видео, блок 110 задания параметров и обратный преобразователь 112 значений отсчетов. Кроме того, декодер 100 видео содержит вход 114, через который на декодер 100 видео подается вышеупомянутый поток данных, и выход 116 для вывода последовательности 102. Между входом 114 и выходом 116, последовательно располагаются каскад 108 декодирования видео и обратный преобразователь 112 значений отсчетов в упомянутой очередности. Блок 110 задания параметров располагается между входом 114 и входом обратного преобразователя 112 значений отсчетов.
Применительно к Фиг.4 показано, что каскад 108 декодирования видео может быть реализован, по сути, аналогично компонентам 64, 70, 74, 72 и 66 кодера с Фиг.2. В частности, каскад 108 декодирования видео может содержать блок 118 реконструкции остатка, сумматор 120, временной предсказатель 122, преобразователь масштаба/умножитель 124 и дополнительный сумматор 126. Блок 118 реконструкции остатка и сумматор 120 могут последовательно располагаться между входом 128 каскада 108 декодирования видео, который в свою очередь соединен с входом 114, и выходом 130 каскада кодирования видео, который в свою очередь соединен с обратным преобразователем 112 значений отсчетов. В виде контура, умножитель 124, сумматор 126 и временной предсказатель 122 последовательно располагаются в упомянутой очередности между входом сумматора 120 и его дополнительным входом. Управление значениями, которые подаются на дополнительные входы умножителя и сумматора 126, осуществляется в зависимости от параметров веса и смещения, которые каскад 108 декодирования видео получает из потока данных, подаваемого на вход 128.
Таким образом, после того как описана внутренняя структура декодера 100 видео и каскада 108 декодирования видео, соответственно, в соответствии с вариантом осуществления, ниже более подробно описывается их режим функционирования.
Как уже упоминалось выше, декодер 100 видео служит для декодирования потока данных, сформированного, например, кодером видео с Фиг.1. Поток данных был получен из последовательности 30 в формате более низкого динамического диапазона, и используя параметры 50 веса и смещения, которые каскад 20 кодирования видео вставил в поток данных, в качестве дополнительной информации. Соответственно, декодер видео имеет доступ к параметрам 50 веса и смещения, использованным на стороне кодирования, и может эмулировать реконструкцию на стороне кодирования, используя параметры, которые в итоге были выбраны на стороне кодирования в качестве, например, некой оптимизации скорости передачи/искажения.
В частности, каскад 108 декодирования видео выполнен с возможностью реконструкции, из потока данных, подаваемого на вход 114, второй последовательности 30' кадров 32', которая соответствует последовательности 30 с Фиг.1 без учета потерь кодирования, таких как потери квантования, которые внесены каскадом 20 кодирования видео. Значения 34' отсчетов кадров 32', соответственно, так же представлены во втором формате, охватывающем второй динамический диапазон 42, который ниже динамического диапазона итоговой реконструируемой последовательности 102. Так же, как и в случае каскада 20 кодирования видео, каскад 108 декодирования видео выполняет реконструкцию посредством взвешенного временного предсказания текущего кадра второй последовательности 30', используя опорный кадр второй последовательности 30', взвешенный параметром веса и смещенный параметром смещения, оба из которых содержатся в потоке данных, подаваемом на вход 114, в качестве опорного кадра. Блок 110 задания параметров, в свою очередь, выполнен с возможностью задания параметра 132 отображения для текущего кадра второй последовательности 30', в зависимости от параметра отображения для опорного кадра второй последовательности 30', и параметра веса и параметра 50 смещения текущего кадра. Обратный преобразователь 112 значений отсчетов в свою очередь выполнен с возможностью преобразования значений 34' отчетов кадров 32' второй последовательности 30' из второго формата в первый формат, используя функцию отображения, которая является обратной для функции отображения, использованной преобразователем 18 значений отсчетов, которая отображает второй динамический диапазон 42 на участке первого динамического диапазона, такого как 40, который задан параметром отображения для соответствующего кадра второй последовательности.
<mrow><mo stretchy="false">(</mo><mi>log</mi><mi>W</mi><mi>D</mi><mo>,</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo stretchy="false">)</mo></mrow>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
Предположим, например, что блок 118 реконструкции остатка каскада 108 декодирования видео в настоящий момент реконструирует остаток для текущего кадра 32', при этом реконструкция обозначена числом 134 на Фиг.4. Очевидно, что остаток 134 будет соответствовать тому, который получают во время кодирования в месте, которое обозначено числом 88 на Фиг.2. Сумматор 120 объединяет данный остаток 134 с временным предсказанием 136 текущего кадра, которое является выходом временного предсказателя 122, чтобы получить реконструированную версию 138 текущего кадра, т.е. кадр 32'. Далее предположим, что данная реконструированная версия 138 служит в качестве опорного кадра для следующего декодируемого кадра последовательности 30' кадров. Затем, параметр
веса и параметр
смещения должны содержаться в потоке данных для следующего декодируемого кадра, и соответственно, значения 34' отсчетов опорного кадра 32' будут смещены и масштабированы на этапах 124 и 126 перед фактическим использованием в качестве опорного кадра 140 при временном предсказании, выполняемом предсказателем 122. Это является зеркальным отражением функционирования на стороне кодирования. Временной предсказатель 122 использует векторы движения, которые содержатся в потоке данных, чтобы получить временное предсказание 136 из опорного кадра 140. Поскольку динамический диапазон, или количество бит, использованных для представления опорного кадра 140, больше динамического диапазона исходной последовательности 30 кадров, реконструкция которой должна быть выведена на выходе 130 каскада 108 декодирования видео, то выполняется эффективное предотвращение потенциальных эффектов отсечения, которые в противном случае могут возникать из-за применения параметров 50 веса и смещения на этапах 124 и 126.
Таким образом, последовательность 30', выдаваемая каскадом 108 декодирования видео, представляет собой реконструкцию последовательности 30 кадров, подаваемой на каскад 20 кодирования видео на стороне кодирования. Обратный преобразователь 112 значений отсчетов, преобразует данную последовательность 30' в интерпретируемую последовательность 102 посредством отображения значений отсчетов кадров 32' в общем формате, обладающем достаточным динамическим диапазоном, чтобы обеспечить динамический диапазон, который исходно содержался в исходном материале 12. Данный формат может быть форматом значений 16 отсчетов последовательности 12, но так же может отклоняться от него. Для того чтобы получить участок в данном общем динамическом диапазоне, который охватывают значения 34' отсчетов соответствующего кадра 32', обратный преобразователь 112 значений отсчетов последовательно применяет цепочку параметров веса/смещения, связанных с этими кадрами 32'. В частности, для текущего кадра, обратный преобразователь 112 значений отсчетов определяет данный участок, т.е. участок и его размер, посредством применения параметров веса и смещения для текущего кадра к позиции и размеру участка, которые были ранее определены для опорного кадра текущего кадра. Посредством этого, обратный преобразователь 112 значений отсчетов последовательно восстанавливает участки 38 и 48, показанные на Фиг.1.
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>−</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>−</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mi>l</mi>
<mrow><mo stretchy="false">(</mo><mi>log</mi><mi>W</mi><mi>D</mi><mo>,</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo stretchy="false">)</mo></mrow>
<mi>k</mi>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>−</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mi>k</mi>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mi>l</mi>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mi>k</mi>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mtable><mtr><mtd><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></mtd><mtd><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></mtd></mtr></mtable></mrow></msub></mrow>
Таким образом, другими словами, упомянутый выше параметр отображения может определять длину
участка 38 первого динамического диапазона 40 и нижнюю границу
, или верхнюю границу
, участка 38 первого динамического диапазона для текущего кадра 32', и блок 110 задания параметров может быть выполнен с возможностью задания данного параметра 132 отображения для текущего кадра второй последовательности 30' посредством модификации длины
участка 48 первого динамического диапазона 40, который определен параметром отображения для опорного кадра
последовательности 30', в зависимости от параметра
веса для текущего кадра
, чтобы получить длину
участка 38, который определен параметром 132 движения для текущего кадра
, и посредством модификации нижней или верхней границы
участка 48 первого динамического диапазона 40, который определен параметром отображения опорного кадра
в зависимости от параметра
смещения текущего кадра
, чтобы получить нижнюю или верхнюю границу
, как определено параметром 132 отображения текущего кадра. Соответственно, блок 110 задания параметров направляется параметрами 50 веса и смещения, которые содержатся в потоке данных, подаваемом на вход 114, таким образом, чтобы он действовал подобно блоку 22 задания параметров, управляющему каскадом 20 кодирования видео и преобразователем 18 значений отсчетов.
В данном случае следует отметить, что блок 110 задания параметров на Фиг.3 показан как соединенный лишь с обратным преобразователем 112 значений отчетов, тогда как блок задания параметров показан таким образом, что управляет как преобразователем значений отсчетов, так и каскадом 20 кодирования видео, соответственно. Кажущееся расхождение между сторонами кодирования и декодирования является результатом вышеупомянутого факта, который состоит в том, что каскад 20 кодирования видео кодера не обладает возможностью свободного выбора параметров веса/смещения. Наоборот, они задаются извне, а именно блоком 22 задания параметров, который в свою очередь, должен учитывать исходный сигнал и его распределение 44 и 46, соответственно, при задании этих параметров веса/смещения. Тем не менее, блок 110 задания параметров, направляется результатом данного выбора через дополнительную информацию, которая содержится в потоке данных, поступающем через вход 110, и таким образом, каскад 108 декодирования видео может использовать информацию о параметре веса/смещения, которая содержится в потоке данных, независимо от оценки блоком задания параметров той же информации, а именно информации о параметре веса/смещения, и соответственно, не требуется канала управления, ведущего от блока 110 задания параметров к каскаду 108 декодирования видео. Тем не менее, в соответствии с альтернативным вариантом осуществления, предполагается ответственность блока 110 задания параметров, как за задание параметров, так и за соответствующее управление каскадом 108 декодирования видео извне. В последнем случае, канал управления должен вести от блока 110 задания параметров к каскаду 108 декодирования видео.
<mrow><msub><mi>L</mi><mi>n</mi></msub></mrow>
Как уже было упомянуто выше, изложенное ниже более подробное описание варианта осуществления, будет использовать функцию логарифмического отображения между двумя форматами, т.е. функцию линейного отображения между первым форматом в логарифмической области и вторым форматом в логарифмической области. Соответственно, обратный преобразователь 112 значений отсчетов может быть выполнен с возможностью преобразования значений
34' отсчетов кадров 32' второй последовательности 30' из второго формата в первый формат по формуле
<mrow><msup><mi>m</mi><mrow><mo stretchy="false">(</mo><msub><mi>L</mi><mi>n</mi></msub><mo>+</mo><mi>ε</mi><mo stretchy="false">)</mo><msup><mi>b</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup><mo>+</mo><mi>a</mi></mrow></msup></mrow>
<mi>b</mi>
<mi>a</mi>
<mrow><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub></mrow>
<mrow><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub></mrow>
при этом
и
содержатся параметром отображения и соотносятся с нижней границей
и верхней границей
участка 38 первого динамического диапазона, от
до
, по формуле
<mrow><mi>b</mi><mo>=</mo><mfrac><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac></mrow>
<mrow><mi>a</mi><mo>=</mo><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow>
,
<mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub></mrow>
<mi>m</mi>
<mi>n</mi>
при этом
является логарифмической функцией по основанию
, а
является целым числом, указывающим количество бит представления целого числа второго формата.
<mi>a</mi>
<mi>b</mi>
Раз так, то блок 112 задания параметров может быть выполнен таким образом, чтобы вычислять
и
, таким образом, что
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo>⋅</mo><msup><mn>2</mn><mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow></msup><mo>=</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover></mrow>
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mi>m</mi></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mfrac><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><mrow><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><msub><mi>n</mi><mn>0</mn></msub></mrow></msup></mrow></mfrac><mo>=</mo><mover accent="true"><mi>o</mi><mo>⌢</mo></mover></mrow>
;
<mrow><msub><mi>n</mi><mn>0</mn></msub></mrow>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mi>l</mi>
<mi>m</mi>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
при этом
является целым числом, которое относится к диапазону определения
, индекс
служит указателем первого кадра второй последовательности кадров, индекс
служит указателем второго кадра второй последовательности,
и
содержаться в параметре веса, а
содержится в параметре смещения.
Кроме того, аналогично приведенному выше описанию, каскад 108 декодирования видео может быть выполнен с возможностью использования параметра размера шага квантователя при реконструкции второй последовательности кадров, и блок задания параметров может быть выполнен с возможностью задания параметра размера шага квантователя для кадров второй последовательности в зависимости от длины участка первого динамического диапазона, как задано для соответствующих кадров второй последовательности. В этом отношении, блок 110 задания параметров может быть выполнен с возможностью декодирования параметра размера шага квантователя из потока данных дифференциально по отношению к параметру размера шага квантователя начального кадра второй последовательности.
Как описано выше, хотя предполагалось, что значения отсчетов кадров первой последовательности являются значениями с плавающей точкой яркости, и предполагалось, что значениями отсчетов кадров второй последовательности гамма-корректированной яркости являются целочисленные значения, также существуют другие возможности.
<mi>t</mi>
Фиг.5 показывает характерный участок потока данных, переданный от стороны кодирования стороне декодирования в соответствии с вариантами осуществления, изложенными выше в отношении Фиг.1-4. Из вышеприведенного описания следует, что поток 150 данных имеет первую последовательность 102 кадров, значения отсчетов которых представлены в первом формате, охватывающем первый динамический диапазон, закодированную в нем с возможностью реконструкции. В частности, первая последовательность закодирована в потоке 150 данных опосредованно через вторую последовательность 30 из кадров 32, значения отсчетов которых, представлены во втором формате, охватывающем второй динамический диапазон 42, который ниже первого динамического диапазона, при этом вторая последовательность закодирована в поток данных посредством взвешенного временного предсказания первого кадра второй последовательности 30' с использованием второго кадра второй последовательности 30', взвешена параметром веса и смещена параметром смещения, в качестве опорного кадра, при этом параметр веса и параметр смещения содержатся в потоке данных, так что параметр 132 отображения первого кадра второй последовательности 30' зависит от параметра отображения второго кадра второй последовательности 30', параметра веса и параметра смещения, а значения 34' отсчетов кадров 32' второй последовательности преобразуются из второго формата в первый формат с использованием функции отображения, которая отображает второй динамический диапазон 42 в часть первого динамического диапазона 40, который задан параметром отображения для соответствующего кадра второй последовательности, для реконструкции первой последовательности. Другими словами, поток данных может быть структурирован в виде участков 152 кадра, каждый из которых связан с соответствующим одним из кадров 30' и 104, соответственно. Каждый кадр 30' может быть закодирован в потоке 150 данных в единицах блоков. Каждый участок 152 кадра может включать в себя данные 154 предсказания движения, включающие в себя, например, вектор движения. Соответственно, каждый участок 152 кадра может включать в себя параметры 50 веса и смещения для соответствующего кадра. Поток данных может быть закодирован таким образом, что данные 154 предсказания движения каждого участка кадра ссылаются 156 в обратном направлении на участок кадра, непосредственно предшествующий на время
, т.е. при расстановке участков 152 кадров вдоль оси времени представления. Т.е., каждый кадр может быть P кадром, использующим непосредственно предшествующий кадр в качестве опорного кадра, и участок общего динамического диапазона 40 может обновляться при помощи данной цепочки зависимостей. Проще, самым первым, т.е. начальным, кадром 158 последовательности кадров может быть I кадр, или начальные кадры каждой GOP, т.е. группы (непосредственно предшествующих) изображений. Данный начальный кадр 158 может иметь встроенное в него явное кодирование 160 параметров отображения для данного первого кадра 158. В качестве альтернативы, даже данное явное кодирование 160 может быть ненужным. Кроме того, каждый кадр 152, или каждый кадр 152, кроме начального кадра 158, может иметь закодированный параметр 162 шага квантователя, предписывающий размер шага квантования, который должен использоваться при деквантовании в блоке 118 реконструкции остатка и который задается в зависимости от длины участка 38. В частности, параметр 162 шага квантователя может быть закодирован в потоке данных дифференциально, используя в качестве опорного значения (явно или неявно определенный) параметр размера шага квантователя участка 158 начального кадра.
<mrow><mi>Q</mi><mi>P</mi></mrow>
После того как описаны, с использованием довольно общих понятий, варианты осуществления устройства кодирования и декодирования, ниже излагаются подробные варианты осуществления, представляющие собой конкретные реализации приведенных выше вариантов осуществления. В соответствии с конкретными изложенными ниже подробностями реализации, покадровое адаптивное отображение яркости в гамма-корректированной яркости используется для выполнения перехода между каскадом де/кодирования видео и обратным/преобразователем значений отсчетов, соответственно. В соответствии с изложенными ниже вариантами осуществления, инструмент взвешенного предсказания стандарта H.264/AVC используется для сохранения согласованности по времени. Другими словами, в соответствии с изложенными ниже вариантами осуществления, каскад кодирования видео и каскад декодирования видео приведенных выше вариантов осуществления, выступают в роли H.264 подобных объектов, т.е. каскад 20 кодирования видео формирует H.264 подобный поток данных, а каскад 108 декодирования данных реализован в соответствии со стандартом H.264/AVC. Поток данных с Фиг.5 может быть даже полностью H.264/AVC подобным. В соответствии с нижеследующими вариантами осуществления инструмент взвешенного предсказания используется, таким образом, не только для сохранения согласованности по времени, но в, тоже время, и для передачи адаптивных параметров отображения, используемых для преобразования значений отсчетов. Кроме того, будет приведен пример того, каким образом можно использовать параметр квантования (
) для каждого кадра, в зависимости от адаптивного отображения.
Таким образом, в следующем, подробности реализации применительно к вышеизложенным на Фиг.1-5 вариантам осуществления, подробно представлены ниже при помощи математических выражений. Затем, в Разделе 2, представлены результаты экспериментов, полученные при использовании этих подробностей реализации.
1.1. Адаптивное к Динамическому Диапазону Отображение Яркости
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
<mi>n</mi>
Далее повторно рассматривается отображение яркости в гамма-корректированной яркости применительно к кодированию видео. Компромисс между диапазоном
яркости, которая может быть представлена битовой глубиной
гамма-корректированной яркости, и связанной относительной точностью, может быть виден из следующих более общих формулировок функций отображения яркости в гамма-корректированной яркости:
<mrow><msub><mi>L</mi><mi>n</mi></msub><mo>=</mo><mrow><mo>⌊</mo><mrow><mfrac><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo stretchy="false">(</mo><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><mi>Y</mi><mo stretchy="false">)</mo><mo>−</mo><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow><mo>⌋</mo></mrow></mrow>
(2)
<mrow><mi>Y</mi><mo>=</mo><msup><mn>2</mn><mrow><mo stretchy="false">(</mo><msub><mi>L</mi><mi>n</mi></msub><mo>+</mo><mn>0,5</mn><mo stretchy="false">)</mo><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow></mfrac><mo>+</mo><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub><mo stretchy="false">)</mo></mrow></msup></mrow>
(3)
<mi>Y</mi>
<mi>L</mi>
<mi>l</mi>
<mi>k</mi>
Данная линейная зависимость между логарифмом яркости
и пространством
гамма-корректированной яркости так же изображено на Фиг.6. Фиг.6 показывает адаптивное логарифмическое отображение яркости в гамма-корректированной яркости: разные диапазоны для разных кадров
и
приводят к разным функциям отображения. Следовательно, разные значения гамма-корректированной яркости могут представлять одинаковые значения яркости.
<mrow><msub><mi>Y</mi><mrow><mi>min</mi></mrow></msub></mrow>
<mrow><msub><mi>Y</mi><mrow><mi>max</mi></mrow></msub></mrow>
Очевидно, что отображение достигает максимальной точности, когда
и
равны минимальной и максимальной яркости текущего видео кадра, соответственно. Т.е., если существующие значения яркости в видео кадре отображены во всем диапазоне гамма-корректированной яркости при помощи функции отображения с наибольшей возможной крутизной. Тем не менее, поскольку динамические диапазоны могут меняться от одного кадра к следующему (даже в статической сцене, из-за шума), то такая непосредственная адаптация разрушит согласованность по времени видео последовательности и воспрепятствует эффективному временному предсказанию. Следующий раздел представит адаптивное отображение, которое учитывает такие эффекты.
1.2. Согласованное по Времени Адаптивное Отображение Яркости
<mi>k</mi>
<mrow><mi>l</mi><mo>=</mo><mi>k</mi><mo>+</mo><mn>1</mn></mrow>
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
<mrow><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mo>=</mo><msub><mi>Y</mi><mi>k</mi></msub><mo>=</mo><msub><mi>Y</mi><mi>l</mi></msub></mrow>
<mi>k</mi>
<mi>l</mi>
<mrow><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mrow><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mi>k</mi>
<mi>l</mi>
Рассмотрим, что два последовательных кадра
и
последовательности HDR-видео демонстрируют разные диапазоны яркости,
и
, соответственно. Очевидно, что использование экстремума каждого кадра в (2) приведет к разному отображению для каждого кадра. Т.е., одинаковое значение
яркости в кадре
и
, будет отображено в разных значениях
и
гамма-корректированной яркости, соответственно, как представлено в качестве примера на Фиг.1. Подстановка (3) в (2), используя разное отображение для кадра
и
, соответственно, дает:
<mrow><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>=</mo><mo stretchy="false">(</mo><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>+</mo><mn>0,5</mn><mo stretchy="false">)</mo><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo>+</mo><mo stretchy="false">(</mo><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo>=</mo><mo stretchy="false">(</mo><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>+</mo><mn>0,5</mn><mo stretchy="false">)</mo><mo>⋅</mo><mi>w</mi><mo>+</mo><mi>o</mi></mrow>
(4)
<mrow><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mrow><msub><mi>L</mi><mrow><mi>n</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mover accent="true"><mi>Y</mi><mo>⌢</mo></mover>
<mi>w</mi>
<mi>o</mi>
<mi>w</mi>
<mi>o</mi>
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
Очевидно, что отношение двух значений
и
, происходящих из одного и того же значения
яркости, полностью определяется масштабом
и смещение
.
и
могут быть легко получены из диапазонов
и
.
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mi>w</mi>
<mi>o</mi>
Стандарт H.264/AVC является первым международным стандартом кодирования видео, определяющим синтаксис для инструмента взвешенного предсказания (WP) [7]. Исходное предназначение WP состоит в повышении эффективности кодирования для затухающих и плавно проявляющихся последовательностей, в которых, как правило, предсказание с компенсацией движения не удается. Оно позволяет явно просигнализировать параметр
веса и параметр
смещения из расчета на серию последовательных макроблоков. Параметры могут использоваться для взвешивания и смещения опорного кадра для улучшения временного предсказания. Выражение (4) показывает, что изменение динамического диапазона последовательных кадров всего лишь приводит к умножению на весовой коэффициент
и смещение
идентичных значений яркости в пространстве гамма-корректированной яркости. Вследствие этого, синтаксис WP стандарта H.264/AVC прекрасно подходит для обеспечения эффективного временного предсказания независимо от любых изменений в диапазоне яркости. Рассмотрим, например, случай, при котором близкий к статичному сценарий записан HDR-камерой, направленной на яркое солнце. Когда солнце теперь внезапно закрывается облаком, то динамический диапазон изменится на несколько порядков величины, тогда как значения яркости всех расположенных на переднем плане объектов приблизительно останутся постоянными. Если мы можем использовать инструменты WP для адаптации значений гамма-корректированной яркости опорного кадра, то это позволяет получить прекрасное временное предсказание расположенных на переднем плане пикселей, которые вытекают из одних и тех же значений яркости. Кроме того, информация о параметре WP достаточно для передачи любой необходимой дополнительной информации для покадровой адаптации отображения яркости в гамма-корректированной яркости, как это будет показано ниже.
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mrow><mn>1</mn><mo>/</mo><msup><mn>2</mn><mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow></msup></mrow>
<mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow>
<mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mrow><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>8</mn></mrow></msup></mrow>
<mi>n</mi>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
В стандарте H.264/AVC точность и динамический диапазон
и
ограничены. Оба параметра могут принимать целочисленные значения в диапазоне от -128 до 127. Точность
ограничивается интервалом квантования в размере
, где
сигнализируется явным образом и может принимать целочисленные значения от 0 до 7. Следовательно, более высокое значение
приводит к более детализированному представлению
. Это также означает, что больше бит требуется для кодирования весовых коэффициентов и сужает диапазон эффективного масштабирования [7]. Размер шага параметра смещения определяется посредством
, чтобы учитывать битовую глубину
представления гамма-корректированной яркости в кодере H.264/AVC. Следовательно, чтобы обеспечить прекрасное временное предсказание не меняющихся значений яркости от одного кадра к следующему, необходимо квантовать изменение адаптивной функции отображения таким образом, чтобы она могла быть представлена параметрами
и
WP стандарта H.264/AVC.
<mi>k</mi>
<mrow><mo stretchy="false">[</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>,</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>m</mi><mi>а</mi><mi>х</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
Т.е., для заданного динамического диапазона яркости, охватываемого функцией отображения кадра
,
, мы должны найти минимальное
и максимальное
, которые удовлетворяют
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo>⋅</mo><msup><mn>2</mn><mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow></msup><mo>=</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover></mrow>
<mrow><mo>{</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo>∈</mo><mi>Ζ</mi><mo>|</mo><mo>−</mo><mn>128</mn><mo>≤</mo><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo>≤</mo><mn>127</mn><mo>}</mo></mrow>
;
(5)
и
<mrow><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac><mo>⋅</mo><mfrac><mrow><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow><mrow><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>8</mn></mrow></msup></mrow></mfrac><mo>=</mo><mover accent="true"><mi>o</mi><mo>⌢</mo></mover></mrow>
<mrow><mover accent="true"><mi>o</mi><mo>⌢</mo></mover><mo>∈</mo><mo>{</mo><mi>Ζ</mi><mo>|</mo><mo>−</mo><mn>128</mn><mo>≤</mo><mover accent="true"><mi>o</mi><mo>⌢</mo></mover><mo>≤</mo><mn>127</mn><mo>}</mo></mrow>
;
(6)
при условии
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>≥</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>≤</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
и
(7)
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
Последние два неравенства гарантируют то, что диапазон яркости, охватываемый адаптивным отображением, охватывает, по меньшей мере, диапазон собственно диапазона яркости, представленного в настоящем кадре
.
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>=</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>=</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
На практике, блок 22 задания параметров может найти решение данной задачи посредством решения уравнений (5) и (6), задавая
и
, и выполняя округление к нулю. Это даст исходные значения для
и
и (5) и (6) со ссылкой на
и
, соответственно, могут быть решены:
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>=</mo><msup><mn>2</mn><mrow><mrow><mo>[</mo><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo><mo>−</mo><mfrac><mrow><mover accent="true"><mi>o</mi><mo>⌢</mo></mover><mo>⋅</mo><msup><mn>2</mn><mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow></msup><msup><mn>2</mn><mrow><mi>n</mi><mo>−</mo><mn>8</mn></mrow></msup></mrow><mrow><mover accent="true"><mi>w</mi><mo>⌢</mo></mover><mo>⋅</mo><msup><mn>2</mn><mi>n</mi></msup><mo>−</mo><mn>1</mn></mrow></mfrac><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mo>]</mo></mrow></mrow></msup></mrow>
(8)
<mrow><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>=</mo><msup><mn>2</mn><mrow><mrow><mo>[</mo><mrow><mfrac><mrow><msup><mn>2</mn><mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow></msup></mrow><mover accent="true"><mi>w</mi><mo>⌢</mo></mover></mfrac><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo><mo>+</mo><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mover accent="true"><mi>Y</mi><mo>⌢</mo></mover><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mo>]</mo></mrow></mrow></msup></mrow>
(9)
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
Если результаты противоречат одному из условий в выражении (7), то блок 22 задания параметров может уменьшить
или увеличить
на 1, соответственно, и повторно вычислить уравнения (8) и (9).
<mrow><mo stretchy="false">[</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>,</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">]</mo></mrow>
<mi>l</mi>
<mi>k</mi>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
После нахождения наилучшего диапазона
яркости, кадра
со ссылкой на кадр
, блок 22 задания параметров и преобразователь 18 значений отсчетов могут использовать эти значения для отображения по формуле (2). Кроме того, параметры веса и смещения
и
легко доступны для использования во взвешенном временном предсказании кодера 20 видео H.264/AVC. В заключение, из зависимостей в уравнениях (5) и (6) может быть видно, что этих параметров достаточно для точного восстановления диапазона яркости текущего кадра 38, при заданном диапазоне предыдущего кадра 48. Не требуется никакой дополнительной информации для адаптивного отображения, когда отображение первого кадра (и возможно IDR кадров) охватывает максимальный видимый динамический диапазон. В противном случае, диапазон первого кадра должен явно сигнализироваться декодеру, как проиллюстрировано пунктирной линией 28. Тем не менее, в целом схема в соответствии с Разделом 1 избегает ситуации, при которой информация масштабирования со значениями с плавающей точкой должна передаваться в качестве дополнительной информации для каждого кадра, что в противном случае затрудняет стандартное совместимое кодирование и увеличивает скорость передачи битов.
1.3. Согласованное по Времени Квантование
<mrow><mi>Q</mi><mi>P</mi></mrow>
<mrow><mi>Δ</mi><mi>Q</mi><mi>P</mi></mrow>
<mrow><mi>Δ</mi><mi>Q</mi><mi>P</mi></mrow>
<mrow><mi>Q</mi><mi>P</mi></mrow>
<mrow><mi>Q</mi><mi>P</mi></mrow>
<mrow><msub><mi>Q</mi><mrow><mi>s</mi><mi>t</mi><mi>e</mi><mi>p</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow>
<mrow><msub><mi>Q</mi><mrow><mi>s</mi><mi>t</mi><mi>e</mi><mi>p</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow>
<mi>l</mi>
<mi>k</mi>
В соответствии с представленными выше мерами, для каждого кадра, разные диапазоны яркости отображаются в кодовых значениях гамма-корректированной яркости. Вследствие этого, использование идентичного
во время процесса кодирования по стандарту H.264/AVC приведет к меняющемуся в зависимости от отображения квантованию пространства яркости. Другими словами, даже если кодер мог бы использовать постоянное квантование, то эффективное квантование менялось бы в больших пределах по времени, приводя к сильным изменениям по качеству и скорости передачи битов. Вследствие этого, в соответствии с вариантом осуществления, каскады 20 и 108 кодирования учитывают диапазон отображения яркости и соответственно находят приемлемый
для каждого кадра. Здесь,
обозначает смещение
для текущего кадра по отношению к опорному
, который используется для кодирования первого кадра. На Фиг.1 можно видеть, что для того чтобы ввести одинаково эффективное квантование для значений яркости, размеры
и
шагов квантователя текущего кадра
и произвольного опорного кадра
должны быть связаны в соответствии со следующим:
<mrow><mi>Q</mi><mi>r</mi><mi>e</mi><msub><mi>l</mi><mrow><mi>l</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>Q</mi><mrow><mi>s</mi><mi>t</mi><mi>e</mi><mi>p</mi><mo>,</mo><mi>l</mi></mrow></msub></mrow><mrow><msub><mi>Q</mi><mrow><mi>s</mi><mi>t</mi><mi>e</mi><mi>p</mi><mo>,</mo><mi>k</mi></mrow></msub></mrow></mfrac><mo>=</mo><mfrac><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo></mrow><mrow><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><msub><mi>Y</mi><mrow><mi>max</mi><mo>,</mo><mi>l</mi></mrow></msub><mo>/</mo><msub><mi>Y</mi><mrow><mi>min</mi><mo>,</mo><mi>l</mi></mrow></msub><mo stretchy="false">)</mo></mrow></mfrac></mrow>
(10)
<mrow><msub><mi>Q</mi><mrow><mi>s</mi><mi>t</mi><mi>e</mi><mi>p</mi></mrow></msub></mrow>
<mrow><mi>Q</mi><mi>P</mi></mrow>
Учитывая тот факт, что по определению
приблизительно удваивается, когда значение
увеличивается на 6 единиц, можно констатировать:
<mrow><mi>Q</mi><mi>r</mi><mi>e</mi><msub><mi>l</mi><mrow><mi>l</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>≈</mo><msup><mn>2</mn><mrow><mi>Δ</mi><mi>Q</mi><msub><mi>P</mi><mrow><mi>l</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>/</mo><mn>6</mn></mrow></msup><mo>⇒</mo><mi>Δ</mi><mi>Q</mi><msub><mi>P</mi><mrow><mi>l</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>=</mo><mi>r</mi><mi>o</mi><mi>u</mi><mi>n</mi><mi>d</mi><mo stretchy="false">(</mo><mn>6</mn><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mo stretchy="false">(</mo><mi>Q</mi><mi>r</mi><mi>e</mi><msub><mi>l</mi><mrow><mi>l</mi><mo>,</mo><mi>k</mi></mrow></msub><mo stretchy="false">)</mo><mo stretchy="false">)</mo></mrow>
(11)
<mrow><mi>Q</mi><mi>P</mi></mrow>
<mi>l</mi>
<mrow><mi>Q</mi><mi>P</mi><mo>=</mo><mi>Q</mi><msub><mi>P</mi><mn>1</mn></msub><mo>+</mo><mi>Δ</mi><mi>Q</mi><msub><mi>P</mi><mrow><mi>l</mi><mn>,1</mn></mrow></msub></mrow>
В данной работе постоянно используется первый кадр последовательности в качестве опорного кадра для вычисления значений смещения
для каждого кадра. Т.е., произвольный кадр
будет квантоваться с
.
2. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТОВ
<mrow><msup><mrow><mn>10</mn></mrow><mrow><mn>10</mn></mrow></msup><mo>:</mo><mn>1</mn></mrow>
<mrow><msup><mrow><mn>10</mn></mrow><mn>5</mn></msup><mo>:</mo><mn>1</mn></mrow>
<mrow><msup><mrow><mn>10</mn></mrow><mn>7</mn></msup><mo>:</mo><mn>1</mn></mrow>
Для оценки согласованного по времени отображения яркости в гамма-корректированной яркости Раздела 1, были выполнены эксперименты по кодированию в отношении трех тестовых HDR-последовательностей: Панорама, Тоннель и Солнце. Все последовательности имеют разрешение 640×480 пикселей и частоту кадров 30 кадр/с. Тестовая последовательность Панорама была сформирована посредством панорамирования 8000×4000 пиксельного HDR-изображения панорамы. Она показывает зоны темного интерьера, как впрочем, и очень яркие отражения солнца за окном. Ее общий динамический диапазон имеет порядок
. Последовательности Тоннель и Солнце были получены из движущегося автомобиля при помощи HDR-видео камеры и находятся в открытом доступе в Институте Макса Планка [8]. Первая последовательность показывает проезд по темному тоннелю, последняя показывает проезд по автомагистрали в направлении яркого солнца. Общий динамический диапазон, представленный в этих последовательностях, составляет
и
, соответственно. В наших экспериментах мы использовали две метрики для оценки качества декодированных фрагментов HDR-видео: HDR-предсказатель визуального различия (VDP) [9] и однородно воспринимаемое пиковое отношение сигнала к шуму (PU PSNR) [10]. Первая метрика оценивает процент пикселей в паре изображений, которые зритель заметит как отличающиеся с вероятностью более 75%. Последняя метрика является непосредственным расширением общей метрики PSNR применительно к HDR. Для LDR-изображения предполагается, что значения гамма-корректированных кодов пикселя являются однородно воспринимаемыми, т.е., равные значения погрешности в равной степени видимы в ярких и темных областях изображения. Тем не менее, данное предположение не сохраняется для HDR-изображений и вследствие этого, кодовые значения должны масштабироваться до однородно воспринимаемого пространства, перед тем как могут быть вычислены показательные значения PSNR [10].
<mrow><mi>u</mi><mo>'</mo></mrow>
<mrow><mi>v</mi><mo>'</mo></mrow>
<mrow><mi>Q</mi><mi>P</mi></mrow>
<mrow><mi>Q</mi><mi>P</mi></mrow>
<mrow><mi>Q</mi><mi>P</mi></mrow>
Для кодирования последовательностей, они сначала преобразуются из значений с плавающей точкой в цветовом пространстве RGB в пространство LogLuv, а затем кодируются с помощью опорного программного обеспечения JM 17.2 стандарта H.264/AVC. Компонент гамма-корректированной яркости кодируется с битовой глубиной в размере 12 бит/отсчет,
и
компоненты подвергаются субдискретизации с коэффициентом два по вертикали и горизонтали, и кодируются с 8 бит/отсчет. Используется одинаковая конфигурация профиля высокого качества стандарта H.264/AVC с 8×8 преобразованием, IPPP структурой GOP, межкадровым периодом в 15 кадров и активированной CABAC для всех экспериментов. Фиксированный опорный
выбран для каждого прохода кодера, а управление скоростью передачи битов отключено. Тем не менее, покадровый
может отклоняться от данного опорного
, как описано в Разделе 1.3. После декодирования последовательностей они обратно отображаются в значениях с плавающей точкой цветового пространства RGB, и их качество оценивается в соответствии с описанными ранее метриками.
<mrow><mo stretchy="false">[</mo><msup><mrow><mn>10</mn></mrow><mrow><mo>−</mo><mn>4</mn></mrow></msup><mo>,</mo><mtext> </mtext><msup><mrow><mn>10</mn></mrow><mn>8</mn></msup><mo stretchy="false">]</mo></mrow>
В частности, Фиг.7 показывает результаты кодирования для этих трех случаев: согласованное по времени отображение в соответствии с Разделом (1) («предложенный»), покадровая адаптация для каждого кадра без согласования по времени («покадровый») [6], и постоянное отображение всего диапазона видимой яркости
(«визуальный диапазон»). Верхняя строка: предсказатель видимого различия (VDP). Нижняя строка: однородно воспринимаемое пиковое отношение сигнала к шуму (PU PSNR).
Фиг.7 показывает результаты кодирования для всех тестовых последовательностей, исходя из VDP, который усреднен по всем декодированным кадрам (верхняя строка), и исходя из значения PU PSNR составляющей яркости (нижняя строка). В частности, Фиг.7 показывает результаты кодирования для трех случаев: согласованное по времени отображение («предложенный»), покадровая адаптация для каждого кадра без согласования по времени («покадровый») [6], и постоянное отображение всего диапазона видимой яркости [10-4, 108] («визуальный диапазон»). Верхняя строка: предсказатель видимого различия (VDP). Нижняя строка: однородно воспринимаемое пиковое отношение сигнала к шуму (PU PSNR).
Предложенный способ («предложенный») сравнивается с двумя опорными способами на Фиг.7: непосредственная покадровая адаптация отображения яркости в гамма-корректированной яркости к динамическому диапазону каждого кадра без учета согласованности по времени («покадровый») [6], и постоянное отображение всего воспринимаемого диапазона яркости [10-4, 108] («визуальный диапазон»). В последнем случае диапазон яркости функции отображения может превышать диапазон встречающихся яркостей в большинстве последовательностей HDR-видео. Тем не менее, в приложениях кодирования в реальном времени невозможно сузить диапазон отображения до диапазона абсолютной яркости последовательности, так как это потребует обработки всей последовательности перед кодированием. Фиг.7 явно показывает, что предложенное отображение значительно превосходит опорные способы применительно ко всем тестовым последовательностям. Здесь стоит отметить, что метрика VDP является пороговой метрикой, которая предлагает лишь оценить, воспринимаются или нет неправильно пиксели. Она не определяет, насколько данная ошибка раздражает зрителя. Таким образом, например, результаты на Фиг.7(a) могут интерпретироваться следующим образом: если допускается неправильное восприятие около 1% пикселей при предложенном отображении, то потребуется скорость передачи битов лишь менее 2500 кбит/с. Это сокращение составляет около 50% (25%) в сравнении с 5000 кбит/с (3250 кбит/с), которые следует затратить, чтобы получить то же значение VDP при сценарии «видимого диапазона» («покадрового»). Подобным образом, значительная экономия скорости может наблюдаться для тестовых последовательностей Тоннель и Солнце на Фиг.7(b) и (c).
Как ожидалось, результаты PU PSNR на Фиг.7(d)-(f) изображают характеристики эффективности, аналогичные результатам VDP для всех последовательностей. Кроме того, при предложенном способе они позволяют получить количественное подтверждение прироста по качеству для большого диапазона скоростей передачи битов. Например, для последовательности Панорама значение PU PSNR предложенного способа превышает значение PU PSNR отображения «видимого диапазона» на 3 дБ при 3250 кбит/с (сравни Фиг.7(d)). Это означает, что среднеквадратичная ошибка в однородно воспринимаемом пространстве яркости составляет половину при той же скорости передачи битов и значительно увеличивается визуальное качество.
Здесь стоит отметить, что применительно к последовательности Панорама покадровое адаптивное отображение оказывает очень вредное влияние на эффективность кодирования в сравнении с не адаптивным отображением «видимого диапазона». Данная последовательность обладает очень большими и быстрыми изменениями ее динамического диапазона и вследствие этого, в случае покадрового адаптивного отображения, отказывает временное предсказание (см. Фиг.7(a),(d)). С другой стороны, на Фиг.7(b) и (e) можно видеть, что предложенный способ выполняет по большей части отображение идентичное «покадровому» отображению. В данной последовательности, изменения по времени динамического диапазона очень гладкие. В экспериментах было дополнительно обнаружено, что для «покадрового» отображения сильные изменения по времени скорости передачи битов и качества присутствуют всякий раз, когда значительно меняется динамический диапазон. Данное негативное влияние можно обойти посредством согласованного по времени квантования и отображения предложенного способа.
3. ЗАКЛЮЧЕНИЕ
Таким образом, в Разделе 1 было предложено адаптивное отображение яркости в гамма-корректированной яркости, которое позволяет обеспечить сжатие видео данных с плавающей точкой и высоким динамическим диапазоном с помощью современного стандарта H.264/AVC кодирования видео. В отличие от других способов отображение адаптируется к динамическому диапазону каждого кадра. Однако согласованность по времени достигается посредством использования инструментов взвешенного предсказания стандарта H.264/AVC и посредством применения покадровой адаптации параметра квантования в зависимости от функции отображения. Не требуется никакой дополнительной информации и при том же качестве может наблюдаться значительная экономия скорости передачи битов, вплоть до 50%, в сравнении с не адаптивными способами.
<mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
<mover accent="true"><mi>o</mi><mo>⌢</mo></mover>
<mrow><mi>log</mi><mi>W</mi><mi>D</mi></mrow>
<mover accent="true"><mi>w</mi><mo>⌢</mo></mover>
В заключение следует отметить, что все подробности, представленные в Разделах 1-3, также могут меняться в некотором плане. Например, ни параметры веса/смещения, упомянутые в отношении Фиг.1-5, ни параметры веса/смещения, упомянутые в Разделах 1-3, не ограничены тем, что присутствуют в стандарте H.264/AVC, т.е.
,
и
. Параметры веса/смещения могут передаваться в форме разных синтаксических элементов. В частности, не обязательно разбивать передачу параметра веса на два объекта
,
синтаксических элемента. Аналогичным образом, следует отметить, что последовательность 30 и 30', соответственно, могут кодироваться в виде IPPPP… последовательности - или в виде IPPPP... GOP - используя непосредственно предшествующий кадр в качестве опорного кадра. Первый I-кадр может представлять собой начальный кадр, как упомянуто в Разделе 1.3, ссылаясь на который может повторно регулироваться параметр квантования. Тем не менее, все изложенные выше варианты осуществления не ограничиваются таким типом последовательности. Даже B-кадры могут использоваться в схеме кодирования в каскаде 20 кодирования видео и каскаде 108 декодирования видео при учете дополнительных измерений в блоке 22 здания параметров, чтобы выполнить ограничения, наложенные на оба параметра веса/смещения текущего кадра по отношению к двум опорным кадрам, т.е., учитывая параметры веса/смещения опорного кадра и параметры веса/смещения другого опорного кадра текущего кадра, при этом обе пары параметров передаются в потоке данных.
Кроме того, как уже отмечалось выше, вместо отображения яркости в гамма-корректированной яркости, другое отображение может быть предметом изложенных выше вариантов осуществления. Другими словами, значения отсчетов могут относиться к информации, отличной от яркости. Кроме того, реализации каскада 20 кодирования видео и каскада 108 декодирования видео на Фиг.2 и 4 должны пониматься лишь как представленные в качестве иллюстрации. Например, энтропийный кодер 62, отвечающий за энтропийное кодирование остаточного сигнала 88, может быть опущен. Аналогичным образом, энтропийный декодер 129 может опционально располагаться между входом 128 и блоком 118 реконструкции остатка каскада 108 декодирования видео с Фиг.4.
Хотя некоторые аспекты были описаны в контексте устройства, очевидно, что эти аспекты также представляют собой описание соответствующего способа, причем блок или устройство соответствует этапу способа или признаку этапа способа. Аналогичным образом, аспекты, описанные в контексте этапа способа, также представляют собой описание соответствующего блока или элемента или признака соответствующего устройства. Часть или все этапы способа могут исполняться посредством (или при помощи) устройства аппаратного обеспечения, подобного, например, микропроцессору, программируемому компьютеру или электронной схеме. В некоторых вариантах осуществления, некоторые или больше из наиболее важных этапов способа могут исполняться таким устройством.
Относящийся к изобретению поток данных может храниться на цифровом носителе данных или может передаваться по передающей среде, такой как среда беспроводной передачи или среда проводной передачи, такая как Интернет.
В зависимости от конкретных требований к реализации, варианты осуществления изобретения могут быть реализованы в аппаратном обеспечении или программном обеспечении. Реализация может осуществляться при помощи цифрового носителя данных, например гибкого диска, DVD, Blue-Ray, CD, ROM, PROM, EPROM или FLASH-памяти, обладающие хранящимися на них электронно-считываемыми сигналами управления, которые взаимодействуют (или способны взаимодействовать) с программируемой компьютерной системой, таким образом, что выполняется соответствующий способ. Вследствие этого, цифровой носитель данных может быть машиночитаемым.
Некоторые варианты осуществления в соответствии с изобретением содержат носитель данных с электронно-читаемыми сигналами управления, которые выполнены с возможностью взаимодействия с программируемой компьютерной системой, таким образом, что может выполняться один из описанных здесь способов.
В целом, варианты осуществления настоящего изобретения могут быть реализованы в качестве компьютерного программного продукта с программным кодом, при этом программный код функционирует для выполнения одного из способов, когда компьютерный программный продукт запущен на компьютере. Программный код, например, может храниться на машиночитаемом носителе информации.
Прочие варианты осуществления содержат компьютерную программу для выполнения одного из описанных здесь способов, хранящуюся на машиночитаемом носителе информации.
Другими словами, вариантом осуществления относящегося к изобретению способа, вследствие этого, является компьютерная программа с программным кодом для выполнения одного из описанных здесь способов, когда компьютерная программа запущена на компьютере.
Вследствие этого, дополнительным вариантом осуществления относящихся к изобретению способов является носитель данных (или цифровой носитель данных, или машиночитаемый носитель информации), содержащий записанную на нем, компьютерную программу для выполнения одного из описанных здесь способов. Носитель данных, цифровой носитель данных или записываемый носитель информации, как правило, являются вещественными и/или не временными.
Вследствие этого, дополнительным вариантом осуществления относящегося к изобретению способа является поток данных или последовательность сигналов, представляющая собой компьютерную программу для выполнения одного из описанных здесь способов. Поток данных или последовательность сигналов может, например, быть выполнена с возможностью передачи через соединение передачи данных, например, через Интернет.
Дополнительный вариант осуществления содержит средство обработки, например, компьютер, или программируемое логическое устройство, выполненное с возможностью или адаптированное для выполнения одного из описанных здесь способов.
Дополнительный вариант осуществления содержит компьютер, с установленной на нем компьютерной программой для выполнения одного из описанных здесь способов.
Дополнительный вариант осуществления в соответствии с изобретением содержит устройство или систему, выполненную с возможностью передачи (например, электронным или оптическим способом) компьютерной программы для выполнения одного из описанных здесь способов приемнику. Приемник может, например, быть компьютером, мобильным устройством, запоминающим устройством или подобным. Устройство или система могут, например, содержать файловый сервер для передачи компьютерной программы приемнику.
В некоторых вариантах осуществления, программируемое логическое устройство (например, программируемая вентильная матрица) может использоваться для выполнения некоторых или всех функциональных возможностей описанных здесь способов. В некоторых вариантах осуществления, программируемая вентильная матрица может взаимодействовать с микропроцессором, для того чтобы выполнять один из описанных здесь способов. В целом, способы предпочтительно выполняются любым устройством аппаратного обеспечения.
Описанные выше варианты осуществления служат лишь в качестве иллюстрации принципов настоящего изобретения. Следует понимать, что другим специалистам в соответствующей области будут очевидны модификации и вариации в описанных здесь компоновках и деталях. Вследствие этого, объем и сущность должны ограничиваться лишь объемом предстоящей формулы изобретения, а не конкретными деталями, представленными здесь в качестве описания и объяснения вариантов осуществления.
Другими словами, были описаны варианты осуществления, приемлемые для эффективного сжатия последовательностей видео с высоким динамическим диапазоном (HDR). Для того чтобы получить закодированное представление, которое совместимо со стандартом H.264/AVC кодирования видео, HDR-значения с плавающей точкой отображаются в приемлемом целочисленном представлении. Используемое отображения является адаптированным к динамическому диапазону каждого видео кадра. Кроме того, чтобы компенсировать связанное с этим изменение динамической контрастности между кадрами, введены способ взвешенного предсказания и адаптации квантования.
С другой точки зрения, приведенные выше варианты осуществления являются усовершенствованием Адаптивного-LogLuv преобразования, также описанного в EP10151074.1, описание которого включено в настоящее описание для получения дополнительной информации. Как правило, адаптивное логарифмическое отображение значений с плавающей точкой в целочисленных значениях аналогично тому, что использовалось в EP10151074.1. Тем не менее, параметры данного отображения более не являются совершенно свободными. Наоборот, они, в соответствии с приведенными выше вариантами осуществления, ограничены, чтобы соответствовать характеристикам кодека видео стандарта H.264/AVC и в частности инструменту взвешенного предсказания (WP) стандарта H.264/AVC. При помощи этих ограничений, были получены следующие преимущества: (1) может использоваться инструмент WP, чтобы гарантировать согласованность по времени. (2) Синтаксис стандарта H.264/AVC для WP может использоваться для сигнализации параметров LogLuv отображения, таким образом, снимая потребность в дополнительной информации. В приведенном выше описании, было показано, каким образом следует адаптировать параметр квантования кодера H.264/AVC в зависимости от адаптивного отображения.
СПИСОК ЦИТИРОВАННОЙ ЛИТЕРАТУРЫ
[1] Erik Reinhard, Greg Ward, Sumanta Pattanaik и Paul Debevec, High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting, Morgan Kaufmann Publishers Inc., Сан-Франциско, Калифорния, США, 2005 г.
[2] J. A. Ferwerda, «Elements of early vision for computer graphics», IEEE Comp. Graph. and Appl., том. 21, № 5, стр. 22-33, 2001 г.
[3] Gregory Ward Larson, «The LogLuv encoding for full gamut, highdynamic range images», Journal of Graph. Tools, том. 3, № 1, стр. 15-31, 1998 г.
[4] RafaI Mantiuk, Grzegorz Krawczyk, Karol Myszkowski, и Hans-Peter Seidel, «Perception-motivated high dynamic range video encoding», ACM Trans. Graph., том. 23, № 3, стр. 733-741, 2004 г.
[5] Masahiro Okuda и Nicola Adami, «Effective color space representation for wavelet based compression of HDR images», на International Conference on Image Analysis and Processing, 2007 г., стр. 388-392.
[6] Ajit Motra и Herbert Thoma, «An adaptive LogLuv transform for high dynamic range video compression», на Proc. Intl. Conf on Image Processing (ICIP), Гонконг, Китай, сентябрь 2010 г.
[7] J.M. Boyce, «Weighted prediction in the H.264/MPEG AVC video coding standard», на Proc. Intl. Symposium on Circuits and Systems (ISCAS), май 2004 г., стр. 789-792.
[8] Grzegorz Krawczy, «HDR video environment maps samples», http:kkwww.mpi-inf.mpg.de/resources/hdr/video/, MPI
[9] Rafal Mantiuk, Scott Daly, Karol Myszkowski, и Hans-Peter Seidel, «Predicting visible differences in high dynamic range images - model and its calibration», на SPIE Human Vision and Electronic Imaging X, 2005 г.
[10] TunC, Ozan Aydin, Rafal Mantiuk, и Hans-Peter Seidel, «Extending quality metrics to full dynamic range images», на SPIE Human Vision and Electronic Imaging XIII, Сан-Хосе, США, январь 2008 г.