ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к кодированию данных о глубине. В частности, оно относится к способам и устройствам для кодирования и декодирования иммерсивного видео.
УРОВЕНЬ ТЕХНИКИ
Иммерсивное видео, также известное как видео с шестью степенями свободы (6DoF), представляет собой видео трехмерной (3D) сцены, позволяющее реконструировать виды сцены для точек обзора, которые различаются по положению и ориентации. Оно представляет развитие видео с тремя степенями свободы (3DoF), которое позволяет реконструировать виды для точек обзора с произвольной ориентацией, но только в одной фиксированной точке в пространстве. В 3DoF степени свободы являются угловыми, а именно: поворот вокруг поперечной оси, поворот вокруг продольной оси и поворот вокруг вертикальной оси. Видео 3DoF поддерживает повороты головы - другими словами, пользователь, потребляющий видеоконтент, может смотреть в любом направлении в сцене, но не может переместиться в другое место в сцене. Видео 6DoF поддерживает повороты головы и дополнительно поддерживает выбор положения в сцене, из которого просматривают сцену.
Для формирования видео 6DoF требуется запись сцены с множества камер. Каждая камера формирует данные изображения (в данном контексте часто называемые текстурными данными) и соответствующие данные о глубине. Для каждого пикселя данные о глубине представляют глубину, на которой наблюдают соответствующие данные пикселя изображения. Каждая из множества камер обеспечивает соответствующий вид сцены.
Для снижения избыточности между видами было предложено обрезать виды и упаковывать их в «текстурный атлас» для каждого кадра видеопотока. В этом подходе предпринимается попытка уменьшить или устранить перекрывающиеся части между множеством видов и тем самым улучшить эффективность. Неперекрывающиеся части различных видов, которые остаются после обрезания, могут называться «заплатками». Пример такого подхода описан в статье Alvaro Collet и др., «High-quality streamable free-viewpoint video» (Высококачественное пригодное для потоковой передачи видео со свободными точками обзора), ACM Trans. Graphics (SIGGRAPH), 34(4), 2015.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
Было бы желательно эффективно кодировать данные о глубине. Относящиеся к глубине данные являются данными о занятости, которые указывают, занят ли данный пиксель в данном виде заплаткой или нет. Для заплаток существуют достоверные данные о глубине. Для незанятых пикселей достоверных данных о глубине нет. Одним из подходов могло бы быть кодирование карты занятости отдельно от данных о глубине, но это потребовало бы передачи дополнительной структуры данных. Еще одним подходом могло бы быть кодирование информации о занятости, встроенной в данные о глубине, например, путем резервирования конкретного значения глубины для сигнализации о том, что пиксель не занят. Однако данные о глубине могут быть сжаты для передачи. Как сжатие, так и последующая передача могут ввести ошибки в декодированные данные о глубине. Если данные о занятости встроены в данные о глубине, ошибки сжатия или передачи могут также повредить данные о занятости, что могло бы в конечном счете привести к заметным или искажающим визуальным артефактам в декодированном и преобразованном для воспроизведения иммерсивном видео. Было бы желательно уменьшить или исключить такие артефакты при эффективном кодировании данных о глубине и занятости.
Изобретение определено формулой изобретения.
Согласно примерам, в соответствии с аспектом настоящего изобретения предложен способ кодирования данных о глубине, включающий:
прием исходных данных, содержащих по меньшей мере значения глубины;
определение карты глубины, содержащей массив значений карты, причем каждое значение карты принимает один из множества уровней;
анализ значений глубины для определения того, как выполнить кодирование значений глубины с получением указанного множества уровней;
определение, на основе результата анализа, первого подмножества множества уровней для представления данных о глубине занятой части карты глубины;
определение, на основе результата анализа, второго подмножества множества уровней для представления незанятой части карты глубины;
назначение одного или более значений карты из определенного второго подмножества множества уровней для незанятой части карты глубины;
преобразование значений глубины в значения карты в определенном первом подмножестве множества уровней с кодированием тем самым значений глубины на карте глубины для занятой части карты глубины и
формирование двоичного потока, содержащего карту глубины и метаданные, содержащие определение первого подмножества и второго подмножества.
Этот способ позволяет кодировать занятость в карте глубины. Автор изобретения понял, что кодирование занятости и глубины вместе работает лучше, если кодирование может быть адаптировано к содержимому карты глубины. Если первое и второе подмножества фиксированные, то кодирование может быть неоптимальным. За счет анализа значений глубины и выбора первого и второго подмножества в соответствии с результатами анализа настоящий способ может повысить эффективность использования битов, доступных для карты глубины.
Исходные данные могут быть исходными видеоданными. Исходные данные могут также содержать данные о занятости, указывающие занятую и/или незанятую части карты глубины.
Определение первого подмножества и второго подмножества зависит от содержимого данных о глубине. Иными словами, выбор подмножеств адаптируют к содержимому исходных данных.
Способ может также включать сжатие карты глубины с использованием алгоритма сжатия видео, необязательно стандартизированного алгоритма сжатия видео, такого как высокоэффективное кодирование видео (High Efficiency Video Coding, HEVC), известное также как H.265 и MPEG-H, часть 2. Двоичный поток может содержать сжатую карту глубины.
Определение подмножеств может включать выбор по меньшей мере одного порогового уровня.
Определение первого и второго подмножеств может включать выбор первого порогового уровня среди множества уровней, причем одно из подмножеств содержит все уровни больше первого порогового уровня.
Необязательно другое подмножество содержит все уровни ниже первого порогового уровня. Метаданные могут содержать определение первого порогового уровня. Это может быть явным (т.е. метаданные могут содержать первый пороговый уровень) или неявным (например, метаданные могут определять функцию преобразования, которая неявно включает первый порог).
Первый пороговый уровень может быть выбран равным степени двойки.
Иными словами, первый пороговый уровень выбирают равным 2n, где n неотрицательное целое число. Когда значения карты кодируют как двоичные числа, это может позволить определять занятость путем исследования подмножества битов двоичного значения карты.
Способ может также включать определение третьего подмножества множества уровней в качестве защитных уровней, не подлежащих использованию в карте глубины, причем метаданные также содержат определение третьего подмножества.
Третье подмножество отличается от первого подмножества и второго подмножества. Иными словами, уровней третьего подмножества нет в первом подмножестве и во втором подмножестве.
Введение защитных уровней может дополнительно усилить устойчивость к ошибкам, вводимым сжатием или передачей. Защитные уровни могут содержать диапазон уровней между первым подмножеством и вторым подмножеством. Защитные уровни не используют для представления данных о глубине и не используют для представления незанятой части карты глубины. В декодере любой случай, когда значение карты равно одному из защитных уровней, может быть обнаружен как ошибка и, необязательно, исправлен.
Третье подмножество может быть определено с помощью второго порогового уровня. Например, третье подмножество может быть определено как содержащее уровни между первым пороговым значением и вторым пороговым значением. Метаданные могут содержать определение второго порогового уровня. Это определение может быть прямым/явным (например, метаданные могут содержать второй пороговый уровень) или косвенным/неявным.
Анализ данных о глубине может включать определение динамического диапазона данных о глубине.
Способ может также включать измерение или прогнозирование степени ошибок в декодированных данных о глубине, которые будут вызваны кодированием значений глубины в карте глубины данных образом.
Данные о глубине могут содержать нормализованные значения диспаратности. Нормализованные значения диспаратности занимают диапазон [0, 1], где 0 представляет бесконечную глубину, а 1 представляет минимальную глубину. Использование нормализованных значений диспаратности может способствовать лучшему распределению битов для значений глубины. Например, предположим, что глубину измеряют в метрах. Разница между 1 м и 2 м более визуально значима, чем разница между 10 м и 11 м (даже несмотря на то, что абсолютная разность глубин 1 м одна и та же в обоих случаях). Нормализованная диспаратность помогает улавливать эту относительную значимость: в первом случае разность нормализованной диспаратности составляет (1/1-1/2) = 0,5, тогда как во втором случае разность нормализованной диспаратности составляет (1/10-1/11) = 0,009.
Преобразование значений глубины в значения карты может включать преобразование с использованием кусочно-линейной функции, а метаданные могут также содержать определение кусочно-линейной функции.
Исходные данные могут представлять собой видеоданные, содержащие множество исходных видов, причем каждый исходный вид содержит значения текстуры и значения глубины. Другими словами, способ кодирования данных о глубине, кратко изложенный выше, может быть применен в способе кодирования иммерсивного видео.
Также предложен способ декодирования данных о глубине, включающий:
прием двоичного потока, содержащего карту глубины и связанные метаданные,
причем карта глубины содержит массив значений карты,
каждое значение карты принимает один из множества уровней,
метаданные определяют первое подмножество множества уровней, которое представляет данные о глубине занятой части карты глубины, и метаданные определяют второе подмножество множества уровней, которое представляет незанятую часть карты глубины;
декодирование карты глубины, включающее преобразование значений карты в первом подмножестве значений в значения глубины; и
вывод значений глубины.
Декодирование карты глубины необязательно также включает формирование карты занятости, идентифицирующей значения карты, которые находятся во втором подмножестве значений.
Карта глубины в двоичном потоке могла быть сжата с использованием алгоритма сжатия видео, необязательно стандартизированного алгоритма сжатия видео. Способ может включать, перед декодированием карты глубины, разуплотнение карты глубины в соответствии с алгоритмом сжатия видео.
По меньшей мере одно из первого и второго подмножеств может быть определено с помощью первого порогового уровня среди множества уровней, причем одно из подмножеств содержит все уровни больше первого порогового уровня. Другое подмножество может содержать все уровни ниже первого порогового уровня.
Метаданные могут также содержать определение кусочно-линейной функции, а преобразование значений карты в значения глубины может включать преобразование с использованием кусочно-линейной функции.
Метаданные могут также содержать определение третьего подмножества множества уровней, являющихся защитными уровнями, которые не использовали в карте глубины, а способ также включает, перед декодированием карты глубины, обнаружение любых значений карты в третьем подмножестве значений.
В принятой карте глубины любые значения в третьем подмножестве являются ошибками. Они могли быть введены за счет ошибок сжатия или передачи. Способ может также включать пропуск или исправление этих значений при декодировании карты глубины. В некоторых вариантах реализации значения карты, которые близки к значению в первом подмножестве (т. е. близки к допустимому значению) могут быть исправлены путем замены их на ближайшее допустимое значение.
Значения глубины могут быть данными о глубине видеоданных, содержащих множество исходных видов, а способ может также включать реконструкцию по меньшей мере одного из множества исходных видов.
Метаданные могут содержать отрицательные нормализованные значения диспаратности и положительные нормализованные значения диспаратности. Это может предложить один способ неявного определения первого подмножества и второго подмножества, в частности, при использовании линейной (или кусочно-линейной) функции преобразования между значениями глубины и значениями карты. Отрицательное нормализованное значение диспаратности может определять пересечение оси x функцией преобразования (или частью функции преобразования), Это отрицательное нормализованное значение диспаратности может быть назначено уровню 0 в значениях карты. Положительное нормализованное значение диспаратности может определять максимальную нормализованную диспаратность (минимальную глубину), которая должна быть кодирована (или максимальную нормализованную диспаратность, которая должна быть кодирована с помощью этой части функции преобразования). Это положительное нормализованное значение диспаратности назначают определенному уровню (например, максимальному уровню в случае одной линейной функции преобразования). Этим косвенно определяют первое подмножество уровней (те, которые соответствуют положительным значениям глубины) для представления данных о глубине и косвенно определяют второе подмножество уровней (те, которые соответствуют «отрицательным» значениям глубины) для представления незанятых частей карты глубины. Поскольку реальные нормализованные значения диспаратности не могут быть отрицательными, все значения глубины будут преобразованы в уровни в первом подмножестве.
Также раскрыта компьютерная программа, содержащая компьютерный код для вызова реализации системой обработки способа, кратко описанного выше, при выполнении упомянутой программы в системе обработки. Компьютерная программа может храниться на компьютерочитаемом носителе для хранения данных. Это может быть некратковременный носитель для хранения данных.
Также предложен кодер для данных о глубине, выполненный с возможностью кодирования значений глубины с получением карты глубины, содержащей массив значений карты, причем каждое значение карты принимает один из множества уровней, при этом кодер содержит:
вход, выполненный с возможностью приема исходных данных, содержащих по меньшей мере значения глубины;
анализатор, выполненный с возможностью:
анализа значений глубины для определения того, как выполнить кодирование значений глубины с получением указанного множества уровней,
определения на основе результата анализа первого подмножества множества уровней для представления данных о глубине занятой части карты глубины;
определения на основе результата анализа второго подмножества множества уровней для представления незанятой части карты глубины; и
кодер значений глубины, выполненный с возможностью:
назначения одного или более значений карты из определенного второго подмножества множества уровней для незанятой части карты глубины;
преобразования значений глубины в значения карты в определенном первом подмножестве множества уровней с кодированием тем самым значений глубины на карте глубины для занятой части карты глубины и
формирования двоичного потока, содержащего карту глубины и метаданные, содержащие определение первого подмножества и второго подмножества.
Также предложен декодер для данных о глубине, содержащий:
вход, выполненный с возможностью приема двоичного потока, содержащего карту глубины и связанные метаданные,
причем карта глубины содержит массив значений карты,
каждое значение карты принимает один из множества уровней,
метаданные определяют первое подмножество множества уровней, которое представляет данные о глубине занятой части карты глубины, и метаданные определяют второе подмножество множества уровней, которое представляет незанятую часть карты глубины;
декодер значений глубины, выполненный с возможностью декодирования карты глубины, включающего преобразование значений глубины в первом подмножестве значений в значения глубины; и
выход, выполненный с возможностью вывода преобразованных значений глубины.
В соответствии еще с одним аспектом предложен двоичный поток, содержащий карту глубины и связанные метаданные,
при этом карта глубины содержит массив значений карты, причем каждое значение карты принимает один из множества уровней,
метаданные определяют первое подмножество множества уровней, которое представляет данные о глубине занятой части карты глубины, и метаданные определяют второе подмножество множества уровней, которое представляет незанятую часть карты глубины.
Двоичный поток может быть кодирован и декодирован с использованием способов, которые кратко описаны выше. Он может быть реализован на компьютерочитаемом носителе для хранения данных или в виде сигнала, модулируемого на электромагнитную несущую волну.
Эти и другие аспекты изобретения будут очевидны и разъяснены со ссылкой на варианты реализации, описанные далее в настоящем документе
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Для лучшего понимания изобретения и для более четкого показа того, как оно может быть введено в действие, далее ссылки будут делаться только посредством примеров на прилагаемые чертежи, на которых:
на Фиг. 1 приведена блок-схема способа кодирования данных о глубине в соответствии с первым вариантом реализации настоящего изобретения;
на Фиг. 2 приведена блочная схема кодера для данных о глубине в соответствии с вариантом реализации, который выполнен с возможностью осуществления способа, показанного на Фиг. 1;
на Фиг. 3 приведена блок-схема, иллюстрирующая способ декодирования данных о глубине в соответствии со вторым вариантом реализации настоящего изобретения;
на Фиг. 4 приведена блочная схема декодера для данных о глубине в соответствии с вариантом реализации, который выполнен с возможностью осуществления способа, показанного на Фиг. 3; и
на Фиг. 5 показан пример линейной функции преобразования для преобразования между значениями глубины и значениями карты;
на Фиг. 6 показан еще один пример линейной функции преобразования;
на Фиг. 7 показана линейная функция преобразования с защитными уровнями;
на Фиг. 8 показан альтернативный способ определения линейной функции преобразования;
на Фиг. 9 показана кусочно-линейная функция преобразования; и
на Фиг. 10 показана кусочно-линейная функция преобразования с защитными уровнями.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
Настоящее изобретение будет описано со ссылкой на фигуры.
Следует понимать, что подробное описание и конкретные примеры, хотя они и указывают примеры реализации устройства, систем и способов, предназначены только для целей иллюстрации, а не для ограничения объема изобретения. Эти и другие признаки, аспекты и преимущества устройства, систем и способов согласно настоящему изобретению станут лучше понятны из последующего описания, прилагаемых формулы изобретения и чертежей. Следует понимать, что фигуры просто схематические и не показаны в масштабе. Также следует понимать, что одинаковые номера позиций используются на всех фигурах для указания одних и тех же или аналогичных частей.
Раскрыты способы кодирования и декодирования данных о глубине. В способе кодирования как значения глубины, так и данные о занятости кодируют с получением карты глубины. Способ адаптирует порядок выполнения преобразования значений глубины и данных о занятости в значения карты в карте глубины. Например, он может адаптивно выбирать порог, выше или ниже которого все значения представляют незанятые пиксели. За счет адаптации порядка выполнения кодирования глубины и занятости на основе анализа значений глубины способ может позволить эффективнее кодировать и передавать данные о глубине и данные о занятости. На выходе способа кодирования получают метаданные, определяющие адаптивное кодирование. Эти метаданные могут быть использованы соответствующим способом декодирования для декодирования значений карты. Также предложены кодер и декодер для данных о глубине и соответствующий двоичный поток, содержащий карту глубины и связанные с ней метаданные.
Было бы желательно сжимать данные о глубине с использованием известных алгоритмов сжатия изображения и видео. Особенно желательно было бы иметь возможность сжатия данных о глубине с использованием стандартизированных алгоритмов. Подходящее оборудование и программное обеспечения для кодирования и декодирования в соответствии со стандартизированными кодеками широко доступно и часто в высокой степени оптимизировано с точки зрения скорости, качества и энергопотребления. Однако в большинстве случаев сжатие видео происходит с потерями, чтобы достичь скорости передачи в битах, которая применима на практике для передачи и хранения. Поэтому, как правило, нельзя гарантировать, что карта глубины, сжатая с помощью методов сжатия видео, будет идеально реконструирована на декодере. Ошибки будут введены как сжатием, так и, потенциально, передачей и/или хранением двоичного потока.
Одним из основных подходов к объединенному кодированию значений глубины и данных о занятости в карте глубины (не в соответствии с настоящим изобретением) могла бы стать установка фиксированного порогового значения для различения незанятых пикселей и допустимых значений глубины. Например, было бы желательно кодировать данные о глубине с использованием HEVC Main 10 Level 5.2, т. е. с максимальной глубиной в битах, равной 10. Это означает, что для кодирования данных о глубине и заполнении доступны 1024 уровня (от 0 до 1023). Схема кодирования для данных о глубине может определять, что все уровни от 0 до 63 указывают незанятые пиксели. Для кодирования значений глубины используют только уровни с 64 по 1023. Это означает, что свыше 6% доступного диапазона отведено под кодирование занятости. Это может подойти для одного содержимого, но неэффективно для другого содержимого. Трудно выбрать одно пороговое значение, которое подойдет вообще для всех типов содержимого.
На Фиг. 1 показан способ в соответствии с первым вариантом реализации настоящего изобретения. На Фиг. 2 приведена блочная схема кодера для выполнения способа, изображенного на Фиг. 1.
Кодер 300 содержит вход 310, анализатор 320, кодер 330 значений глубины и выход 340. На этапе 110 вход 310 принимает исходные данные, содержащие значения глубины. В настоящем изобретении исходные данные представляют собой данные иммерсивного видео, содержащие множество исходных видов. Каждый исходный вид содержит значения текстуры и значения глубины. Кодирование значений текстуры не входит в объем настоящего изобретения и не будет рассмотрено далее в настоящем документе.
На этапе 120 кодер 330 значений глубины определяет карту глубины, содержащую массив значений карты. Каждое значение карты принимает один из множества уровней. Например, если максимальная глубина в битах равна 10, то будет 1024 уровней.
Вход 310 соединен с анализатором 320. На этапе 130 анализатор анализирует значения глубины для определения того, как лучше всего кодировать значения глубины во множество уровней. В настоящем изобретении значения карты ниже порогового значения будут использованы для представления незанятых пикселей, а значения карты выше порогового значения будут использованы для кодирования значений глубины. Поэтому задача анализатора заключается в выборе порогового значения (этап 140) на основе анализа значений глубины. Дальнейшие подробности того, как выбирать пороговое значение, будут рассмотрены позднее ниже. Пока что следует отметить, что пороговое значение (T) может быть выбрано равным степени двойки (T = 2n). Это может быть выгодно, поскольку может позволить с помощью простой проверки на декодере установить, находится ли данное значение карты выше или ниже порогового значения. Вместо того, чтобы сравнивать значение карты с конкретным пороговым значением, декодер может просто проверить старшие значимые биты (СЗБ) значения карты. Например, если пороговое значение T = 256 = 28, то декодер может проверить два старших значимых бита 10-битового представления. Если оба эти бита равны 0, значение ниже порогового значения, в противном случае, если любой из двух битов равен 1, значение выше порогового значения.
На этапе 150 кодер 330 значений глубины заполняет карту глубины. В случае пикселей, которые не заняты, карту глубины заполняют одним или более значениями карты, которые ниже выбранного порогового значения. Для каждого пикселя, который занят, кодер 330 значений глубины преобразует значение глубины в соответствующее значение карты, лежащее выше порогового значения.
Кодер 330 значений глубины подает заполненную карту глубины, содержащую кодированные значения карты, на выход 340. Тем временем, анализатор 320 подает метаданные на выход 340. Метаданные содержат информацию, определяющую порядок выполнения кодирования значений глубины. В частности, метаданные содержат информацию о выбранном пороговом значении. Метаданные могут также содержать информацию об отображении значений глубины в значения карты в диапазоне выше порогового значения. Однако в некоторых вариантах реализации это может быть необязательным, поскольку отображение может быть определено явно в схеме кодирования. Например, все значения глубины могут представлять собой нормализованные значения диспаратности в диапазоне [0, 1], а отображение может быть линейным отображением в значения карты, превышающие пороговое значение.
Выход 340 формирует и выводит двоичный поток, содержащий по меньшей мере карту глубины. Он также выводит метаданные, либо как часть того же потока данных, либо отдельно от потока данных.
На Фиг. 3 приведена блок-схема, иллюстрирующая способ декодирования кодированной карты глубины в соответствии со вторым вариантом реализации настоящего изобретения. На Фиг. 4 приведена блочная схема декодера для выполнения способа, изображенного на Фиг. 3.
Декодер 400 содержит вход 410, декодер 420 значений глубины и выход 430. Необязательно он может также содержать преобразователь 440 для воспроизведения.
На этапе 210 вход 410 принимает двоичный поток, содержащий карту глубины. Вход также принимает метаданные, описывающие двоичный поток. Метаданные могут быть встроены в двоичный поток или могут быть отдельными. Карта глубины в этом примере представляет собой созданную в соответствии с приведенным на Фиг. 1 способом карту, описанную выше. Следует отметить, что карта глубины, вводимая в декодер 400, как правило, будет версией карты глубины, выводимой кодером 300, которая впоследствии подверглась сжатию видео с потерей данных (и, возможно, склонной к ошибкам передаче по каналу передачи).
На этапе 220 декодер 420 значений глубины декодирует карту глубины. Это включает в себя определение значений карты, превышающих пороговое значение, и преобразование их обратно в значения глубины. Как отмечалось выше, пороговое значение включают в метаданные. Надлежащая функция преобразования может быть заранее согласована между кодером и декодером (например, определена как часть стандартизированной схемы кодирования). В альтернативном варианте реализации, если заранее не определено/согласовано, функция преобразования может быть встроена в метаданные, и декодер может извлечь ее из метаданных.
Декодер 420 значений глубины подает декодированные значения глубины на выход 430. Выход 430 выводит значения глубины (этап 230). Декодер значений глубины может также вывести карту занятости, указывающую пиксели карты глубины, в которых значение карты было ниже порогового значения.
Если декодер 400 содержит необязательный преобразователь 440 для воспроизведения, декодер 420 значений глубины может подать декодированные значения глубины на преобразователь для воспроизведения, который реконструирует один или более видов из данных о глубине. В этом случае преобразователь 440 для воспроизведения может подать восстановленный вид на выход 430, а выход 430 может вывести этот восстановленный вид (например, в буфер кадров).
Существуют различные способы, в которых значения карты могут назначаться динамически для кодирования данных о глубине (и, соответственно, занятости). Некоторые из этих способов будут рассмотрены подробнее далее наряду с соответствующим анализом, который должен выполняться анализатором 320.
В некоторых вариантах реализации анализ значений глубины включает определение динамического диапазона значений глубины. Если динамический диапазон небольшой (т. е., если значения глубины все находятся вокруг одного и того же значения и разницы между ними незначительные, то для кодирования занятости может быть использовано небольшое количество битов). Например, если все камеры достаточно близки к объекту, и динамический диапазон карты глубины не критичен, то для кодирования карты занятости может быть использован один бит. Иными словами, в случае 10-битовой карты пороговый уровень будет T = 512 = 29. При этом остаются еще 512 уровней для кодирования данных о глубине, которых может быть достаточно в сценариях с крупным планом.
Когда заплатку, кадр или видео определяют как полностью занятые, пороговое значение может быть установлено на 0, указывая, что все пиксели заняты. Это максимально увеличивает количество уровней, доступных для кодирования данных о глубине.
В некоторых вариантах реализации способ может включать измерение или прогнозирование степени видимых ошибок в декодированных данных о глубине, которые будут вызваны кодированием значений глубины в карте глубины конкретным образом. Например, анализатор 320 может изучить параметры карты, связанные с исходными видами, чтобы определить, как выполнить кодирование значений глубины. Если две камеры имеют широкий угловой интервал (например, 90°), то ошибки глубины в одном виде будут явно видны как сдвиг влево или вправо в другом виде. В этих обстоятельствах было бы выгодно кодировать значения глубины как можно точнее. С другой стороны, если две камеры имеют небольшой угловой интервал (например, 5°), то восприятие ошибок в значениях глубины будет гораздо менее вероятным.
В некоторых вариантах реализации анализ может включать кодирование значений глубины, сжатие значений глубины, разуплотнение и декодирование значений глубины и синтез пробного вида из декодированных значений глубины. Синтезированный пробный вид можно сравнить с опорным видом, полученным из первоначальных исходных данных, чтобы получить изображение ошибок/различия. Это можно повторить для различных конфигураций первого подмножества и второго подмножества уровней. Конфигурация, приводящая к наименьшей ошибке/различию, может быть выбрана для кодирования значений глубины.
Значения глубины могут быть сохранены как нормализованные диспаратности (1/Z), причем малая и большая глубина соответствуют наибольшему и наименьшему уровню, соответственно. В одной модели предполагается, что выбранный пороговый уровень соответствует большой глубине, а 1023 - малой глубине (для 10-битовых данных).
При определении диапазона глубины существуют различные способы задания кодирования занятости.
На Фиг. 5 показан пример значений глубины, кодированных в значения карты с помощью линейной функции. Для данного значения глубины на оси x функция определяет соответствующее значение карты на оси y. Предполагаются, что значения глубины подают в виде нормализованных диспаратностей, следовательно, значения глубины меняются в диапазоне от минимального значения 1/Zmax до максимального значения 1/Zmin. В примере на Фиг. 5 предполагается, что максимальная глубина равна бесконечности (Z = ∞); следовательно, минимальное значение нормализованной диспаратности равно 0. Пересечение линии по оси y дает пороговый уровень. T. Значения карты ниже уровня T будут использованы для представления незанятых пикселей. Максимальное значение глубины (1/Zmin) будет преобразовано в максимальное значение карты (1023, в случае 10-битового кодирования). Значения карты для значений глубины между 0 и 1/Zmin могут быть получены линейной интерполяцией. Функция преобразования может быть определена в метаданных различными способами. Например, метаданные могут содержать пороговое значение T и минимальное значение глубины Zmin. Максимальное и минимальное значения карты могут быть известны косвенно из глубины в битах (например, 1023 и 0, соответственно, для 10-битовой глубины), поэтому явное кодирование их в метаданных может не потребоваться.
На Фиг. 6 показан еще один пример линейной функции преобразования. В данном случае максимальная глубина, Zmax, меньше бесконечности, поэтому имеется ненулевое 1/Zmax. Линейная функция преобразования проходит от координат (1/Zmax, T) до координат (1/Zmin, 1023). В и этом случае значения карты ниже T используют для представления незанятых областей. Функция преобразования может быть определена в метаданных тремя параметрами: пороговым значением T, минимальным значением глубины Zmin и максимальным значением глубины Zmax.
Потенциальная проблема может возникнуть при введении ошибок сжатия или передачи в нормализованных значениях диспаратности, которые очень близки к 1/Zmax. Значение карты может пересекать пороговое значение T в результате ошибки, т. е. пиксель на больших глубинах неправильно заменяется незанятым пикселем. На Фиг. 7 показана функция преобразования, которая стремится предотвратить это путем введения защитных уровней между уровнями, которые используют для кодирования данных о глубине, и уровнями, которые используют для указания незанятых пикселей. Наинизшее значение карты, используемое для кодирования значений глубины, задают с помощью первого порогового значения T. Но для представления незанятых пикселей используют только значения карты ниже второго порогового значения TG. Это в равной степени можно рассматривать как введение защитной полосы в значениях глубины между 1/Zmax и 1/ZG. Это может быть описано в метаданных любым образом. Другими словами, в метаданных определяют одно дополнительное пороговое значение, которое может быть порогом по значению карты или порогом по значению глубины.
На Фиг. 8 показан еще один способ определения линейной функции преобразования. В данном случае метаданные содержат положительное значение глубины, 1/Zmin, и отрицательное значение глубины, -d. Отрицательное значение глубины не имеет реального физического смысла (поскольку нормализованные диспаратности всегда неотрицательные). Оно служит в качестве косвенного определения порогового значения T (на пересечении оси y), ниже которого значения карты используют для указания незанятых пикселей. В примере на Фиг. 8 нет защитных уровней, но они могут быть введены путем указания дополнительного порогового значения, аналогично подходу, принятому на Фиг. 7.
На Фиг. 9 показана кусочно-линейная функция преобразования. Кусочно-линейная функция преобразования имеет три сегмента, которые могут быть определены в метаданных координатами своих конечных точек. Значение карты, определяющее координату по оси y первой конечной точки, косвенно определяет пороговое значение T. Другими словами, координатами (x, y) первой конечной точки являются (1/Zmax, T). Первый линейный сегмент имеет относительно пологий наклон, т. е. значениям глубины в этом диапазоне назначают относительно мало значений карты. Средний линейный сегмент имеет относительно более крутой наклон, указывающий на то, что значениям глубины в этом диапазоне назначают относительно больше значений карты. Третий линейный сегмент опять имеет более пологий наклон с меньшим количеством уровней, назначенных его значениями карты. Такой профиль может подойти, например, когда большинство значений глубины сгруппированы на среднем расстоянии. В этом случае ошибки в пикселях, находящихся очень близко к камере или очень далеко от нее, могут вносить меньше искажений, т. е. более приемлемы для наблюдателя.
На Фиг. 10 показана еще одна кусочно-линейная функция преобразования с защитными уровнями. Защитные уровни можно понимать (и потенциально кодировать в метаданных) как вертикальную ступеньку в кусочно-линейной функции. Защитные уровни представляют собой значения карты в диапазоне ступеньки от TG до T. Незанятые пиксели указывают только значениями карты, которые меньше TG.
Примеры на Фиг. 5-10 не являются взаимоисключающими, и могут быть предусмотрены функции преобразования, которые объединяют атрибуты нескольких из этих примеров. Например, один или более кусков кусочно-линейной функции (такой, как функция на Фиг. 9) могут быть определены условным отрицательным значением глубины, как на Фиг. 8. В любом из примеров может быть введено третье подмножество уровней, состоящее из защитных уровней.
В каждом из вышеприведенных примеров второе подмножество уровней (указывающее незанятые пиксели) отделено от первого подмножества уровней (указывающих значения глубины) одним или двумя пороговыми значениями, причем первое подмножество уровней выше второго подмножества уровней. Понятно, что это несущественно. В других вариантах реализации уровни могут быть распределены другими способами. Например, анализ на этапе 130 может выявить, что данные о глубине состоят из кластера значений глубины, близких к камере, и кластера значений глубины, очень далеких от камеры, причем на среднем расстоянии пиксели не имеют значений глубины. В этом случае для обозначения незанятых пикселей имеет смысл выделить набор уровней посередине диапазона значений карты. Такой диапазон может быть определен начальным пороговым значением и конечным пороговым значением. В случае кодирования с использованием кусочно-линейной функции эти пороговые значения могут быть неявно указаны в координатах конечных точек линейных сегментов.
Хотя в вышеописанных примерах были использованы кусочно-линейные функции, для преобразования между значениями глубины и значениями карты, разумеется, можно использовать другие функции. В число таких функция могут входить (без ограничений): квадратичные функции, полиномиальные функции более высокого порядка, экспоненциальные функции и логарифмические функции. Функции могут быть использованы во всей их полноте или кусочно в сочетании с другими кусочными функциями.
Варианты реализации настоящего изобретения опираются на использование метаданных, описывающих процесс кодирования при декодировании значений карты. Поскольку метаданные важны для процесса декодирования, то, возможно, выгодно кодировать метаданные дополнительными кодами, обнаруживающими или исправляющими ошибки. Подходящие коды известны в области теории связи.
Способы кодирования и декодирования, приведенные на Фиг. 1 и 3, и кодер и декодер на Фиг. 2 и 4 могут быть реализованы в оборудовании или программном обеспечении или в сочетании того и другого (например, в виде встроенного программного обеспечения, выполняющегося на аппаратном устройстве). В зависимости от того, насколько вариант реализации осуществлен частично или полностью в программном обеспечении, функциональные этапы, проиллюстрированные в блок-схеме процесса, могут быть выполнены подходящим образом запрограммированными физическими вычислительными устройствами, таким как один или более центральных процессоров (ЦП) или один или более графических процессоров (ГП). Каждый процесс, и его отдельные составляющие этапы, которые показаны в блок-схемах, могут быть выполнены одним и тем же или разными вычислительными устройствами. В соответствии с вариантами реализации, компьютерочитаемый носитель для хранения данных хранит компьютерную программу, содержащую компьютерный программный код, выполненный с возможностью вызова выполнения одними или более физическими вычислительными устройствами способа кодирования или декодирования, как описано выше, при выполнении программы на одном или более физических вычислительных устройств.
К носителям для хранения данных можно отнести энергозависимую и энергонезависимую компьютерную память, такую как ОЗУ, ППЗУ, СППЗУ и ЭСППЗУ. Различные носители для хранения данных могут быть неподвижно размещены в вычислительном устройстве или могут быть переносными, чтобы одна или более хранящихся на них программ могли быть загружены в процессор.
Метаданные в соответствии с вариантом реализации могут храниться на носителе для хранения данных. Двоичный поток в соответствии с вариантом реализации может храниться на том же самом носителе для хранения данных или на другом носителе для хранения данных. Метаданные могут быть встроены в двоичный поток, но это не существенно. Аналогичным образом метаданные и/или двоичные потоки (с метаданными в двоичном потоке или отдельно от них) могут быть переданы как сигнал, модулированный на электромагнитную несущую волну. Сигнал может быть определен в соответствии со стандартом для цифровой связи. Несущая волна может быть оптической несущей, радиочастотной волной, миллиметровой волной или волной связи ближнего радиуса действия. Она может быть проводной или беспроводной.
В зависимости от того, насколько вариант реализации осуществлен частично или полностью в оборудовании, показанные на Фиг. 2 и 4 блоки могут быть отдельными физическими компонентами или логическими секциями единых физических компонентов или могут быть все осуществлены интегрированным образом в одном физическом компоненте. Функции одного блока, показанного на чертежах, могут быть разделены между множеством компонентов в реализации, или функции множества блоков, показанных на чертежах, могут быть объединены в единых компонентах в реализации. В число компонентов оборудования для использования в вариантах реализации настоящего изобретения входят, без ограничений, обычные микропроцессоры, специализированные интегральные схемы (ASIC) и программируемые пользователем вентильные матрицы (FPGA). Один или более блоков могут быть реализованы в виде комбинации специализированного оборудования для выполнения некоторых функций и одного или более программируемых микропроцессоров и связанной с ними схемы для выполнения других функций.
При использовании на практике данного заявленного изобретения, изучении чертежей, описания и приложенной формулы изобретения специалистами в данной области могут быть поняты и осуществлены изменения к описанным вариантам реализации. В формуле изобретения слово «содержащий/включающий» не исключает другие элементы или этапы, а грамматические средства выражения единственного числа не исключают множественного числа. Один процессор или иной модуль может выполнять функции нескольких элементов, перечисленных в формуле изобретения. Сам факт того, что определенные меры изложены во взаимно отличающихся зависимых пунктах формулы, не означает того, комбинация этих мер не может быть использована эффективно. Если компьютерная программа является обсуждаемой выше, она может храниться/распространяться на подходящем носителе, таком как оптический носитель для хранения данных или твердотельный носитель, поставляемый вместе с другим оборудованием или как его часть, но может также распространяться в других видах, например, через Интернет или другие проводные или беспроводные системы дальней связи. Следует отметить, что если в формуле изобретения или описании используется выражение «выполнен таким образом, чтобы», то выражение «выполнен таким образом, чтобы» следует считать эквивалентным выражению «выполнен с возможностью». Никакие номера позиций в формуле изобретения не следует рассматривать как ограничивающие объем изобретения.
Изобретение относится к области обработки изображений и, в частности, к кодированию данных о глубине для кодирования и декодирования иммерсивного видео. Технический результат заключается в повышении эффективности кодирования данных о глубине. Предложен способ кодирования и декодирования данных о глубине, где в способе кодирования как значения глубины, так и данные о занятости кодируют с получением карты глубины. Способ адаптирует порядок выполнения преобразования значений глубины и данных о занятости в значения карты в карте глубины. Например, он может адаптивно выбирать порог, выше или ниже которого все значения представляют незанятые пиксели. За счет адаптации порядка выполнения кодирования глубины и занятости на основе анализа значений глубины способ может позволить эффективнее кодировать и передавать данные о глубине и данные о занятости. На выходе способа кодирования получают метаданные, определяющие адаптивное кодирование. Эти метаданные могут быть использованы соответствующим способом декодирования для декодирования значений карты. Также предложены кодер и декодер для данных о глубине и соответствующий двоичный поток, содержащий карту глубины и связанные с ней метаданные. 6 н. и 9 з.п. ф-лы, 10 ил.
1. Способ кодирования данных о глубине, включающий:
прием (110) исходных данных, содержащих по меньшей мере значения глубины;
определение (120) карты глубины, содержащей массив значений карты, причем каждое значение карты принимает один из множества уровней;
анализ (130) значений глубины для адаптивного выбора порога для выполнения кодирования значений глубины с получением указанного множества уровней;
определение (140) на основе результата анализа первого подмножества множества уровней для представления данных о глубине занятой части карты глубины;
определение (140) на основе результата анализа второго подмножества множества уровней для представления незанятой части карты глубины;
назначение одного или более значений карты из определенного второго подмножества множества уровней для незанятой части карты глубины;
преобразование значений глубины в значения карты в определенном первом подмножестве множества уровней с кодированием (150) тем самым значений глубины на карте глубины для занятой части карты глубины и
формирование двоичного потока, содержащего карту глубины и метаданные, определяющие адаптивное кодирование и содержащие определение первого подмножества и второго подмножества.
2. Способ по п. 1, в котором определение первого и второго подмножеств включает выбор (140) порогового уровня среди множества уровней, причем одно из подмножеств содержит все уровни больше порогового уровня.
3. Способ по п. 1 или 2, также включающий определение третьего подмножества множества уровней в качестве защитных уровней, не подлежащих использованию в карте глубины, причем метаданные также содержат определение третьего подмножества.
4. Способ по любому из пп. 1-3, в котором анализ значений глубины включает определение динамического диапазона значений глубины.
5. Способ по любому из пп. 1-4, в котором преобразование значений глубины в значения карты включает преобразование с использованием кусочно-линейной функции и в котором метаданные также содержат определение кусочно-линейной функции.
6. Способ декодирования данных о глубине, включающий: прием (210) двоичного потока, содержащего карту глубины и связанные метаданные,
причем карта глубины содержит массив значений карты, каждое значение карты принимает один из множества уровней,
метаданные определяют адаптивное кодирование и первое подмножество множества уровней, которое представляет данные о глубине занятой части карты глубины, и метаданные определяют второе подмножество множества уровней, которое представляет незанятую часть карты глубины;
декодирование (220) карты глубины, включающее преобразование значений карты в первом подмножестве значений в значения глубины; и
вывод (230) значений глубины.
7. Способ по п. 6, в котором по меньшей мере одно из первого и второго подмножеств определяют с помощью первого порогового уровня среди множества уровней,
причем одно из подмножеств содержит все уровни больше первого порогового уровня.
8. Способ по п. 6 или 7, в котором метаданные также содержат определение кусочно-линейной функции и в котором преобразование значений карты в значения глубины включает преобразование с использованием кусочно-линейной функции.
9. Способ по любому из пп. 6-8, в котором метаданные также содержат определение третьего подмножества множества уровней, являющихся защитными уровнями, которые не использовали в карте глубины,
причем способ также включает, перед декодированием карты глубины, обнаружение любых значений карты в третьем подмножестве значений.
10. Способ по любому из пп. 6-9, в котором значения глубины представляют собой данные о глубине видеоданных, содержащие множество исходных видов, причем способ также включает реконструкцию по меньшей мере одного из множества исходных видов.
11. Способ по любому из пп. 6-10, в котором метаданные содержат отрицательное нормализованное значение диспаратности и положительное нормализованное значение диспаратности.
12. Компьютерочитаемый носитель, хранящий компьютерную программу, которая содержит компьютерный код для вызова реализации системой обработки способа по любому из пп. 1-11 при выполнении упомянутой программы в системе обработки.
13. Кодер (300) для данных о глубине, выполненный с возможностью кодирования значений глубины с получением карты глубины, содержащей массив значений карты, причем каждое значение карты принимает один из множества уровней, при этом кодер содержит:
вход (310), выполненный с возможностью приема исходных данных, содержащих по меньшей мере значения глубины;
анализатор (320), выполненный с возможностью:
анализа значений глубины для адаптивного выбора порога для выполнения кодирования значений глубины с получением указанного множества уровней,
определения на основе результата анализа первого подмножества множества уровней для представления данных о глубине занятой части карты глубины;
определения на основе результата анализа второго подмножества множества уровней для представления незанятой части карты глубины; и
кодер (330) значений глубины, выполненный с возможностью:
назначения одного или более значений карты из определенного второго подмножества множества уровней для незанятой части карты глубины;
преобразования значений глубины в значения карты в определенном первом подмножестве множества уровней с кодированием тем самым значений глубины на карте глубины для занятой части карты глубины и
формирования двоичного потока, содержащего карту глубины и метаданные, определяющие адаптивное кодирование и содержащие определение первого подмножества и второго подмножества.
14. Декодер для данных о глубине, содержащий:
вход (410), выполненный с возможностью приема двоичного потока, содержащего карту глубины и связанные метаданные,
причем карта глубины содержит массив значений карты, каждое значение карты принимает один из множества уровней, метаданные определяют адаптивное кодирование и определяют первое подмножество множества уровней, которое представляет данные о глубине занятой части карты глубины, и метаданные определяют второе подмножество множества уровней, которое представляет незанятую часть карты глубины;
декодер (420) значений глубины, выполненный с возможностью декодирования карты глубины, включающего преобразование значений карты в первом подмножестве значений в значения глубины; и
выход (430), выполненный с возможностью вывода преобразованных значений глубины.
15. Компьютерочитаемый носитель, хранящий двоичный поток, который содержит карту глубины и связанные метаданные,
при этом карта глубины содержит массив значений карты, причем каждое значение карты отображает один из множества уровней,
метаданные содержат информацию об адаптивном кодировании и содержат информацию о первом подмножестве множества уровней, которое представляет данные о глубине занятой части карты глубины, и метаданные содержат информацию о втором подмножестве множества уровней, которое представляет незанятую часть карты глубины.
Аппарат для очищения воды при помощи химических реактивов | 1917 |
|
SU2A1 |
Аппарат для очищения воды при помощи химических реактивов | 1917 |
|
SU2A1 |
Авторы
Даты
2024-11-05—Публикация
2020-09-10—Подача