RU2831969C1 - Coding scheme for video data using down/up sampling and non-linear filtering of depth map - Google Patents
Coding scheme for video data using down/up sampling and non-linear filtering of depth map Download PDFInfo
- Publication number
- RU2831969C1 RU2831969C1 RU2022119556A RU2022119556A RU2831969C1 RU 2831969 C1 RU2831969 C1 RU 2831969C1 RU 2022119556 A RU2022119556 A RU 2022119556A RU 2022119556 A RU2022119556 A RU 2022119556A RU 2831969 C1 RU2831969 C1 RU 2831969C1
- Authority
- RU
- Russia
- Prior art keywords
- depth map
- map
- decoded
- video
- depth
- Prior art date
Links
Abstract
Description
ОБЛАСТЬ ТЕХНИКИAREA OF TECHNOLOGY
Настоящее изобретение относится к кодированию видео. В частности, оно относится к способам и устройствам кодирования и декодирования иммерсивного видео.The present invention relates to video coding. In particular, it relates to methods and devices for coding and decoding immersive video.
УРОВЕНЬ ТЕХНИКИLEVEL OF TECHNOLOGY
Иммерсивное видео, также известное как видео с шестью степенями свободы (6DoF), представляет собой видео трехмерной (3D) сцены, которое позволяет реконструировать виды сцены для точек обзора, которые отличаются по положению и ориентации. Оно представляет дальнейшее развитие видео с тремя степенями свободы (3DoF), которое позволяет реконструировать виды для точек обзора с произвольной ориентацией, но только в одной фиксированной точке в пространстве. В 3DoF степени свободы являются угловыми, а именно наклоном, вращением и отклонением. 3DoF-видео поддерживает повороты головы, другими словами, пользователь, просматривающий видеоконтент, может смотреть в сцене в любом направлении, но не может перемещаться в другое место в сцене. 6DoF-видео поддерживает повороты головы и дополнительно поддерживает выбор позиции в сцене, с которой просматривается сцена.Immersive video, also known as six degrees of freedom (6DoF) video, is a video of a three-dimensional (3D) scene that allows for the reconstruction of views of the scene for viewpoints that differ in position and orientation. It is a further development of three degrees of freedom (3DoF) video, which allows for the reconstruction of views for viewpoints with arbitrary orientations, but only at one fixed point in space. In 3DoF, the degrees of freedom are angular, namely pitch, roll, and yaw. 3DoF video supports head rotation, in other words, the user viewing the video content can look in any direction in the scene, but cannot move to another location in the scene. 6DoF video supports head rotation and additionally supports the selection of the position in the scene from which the scene is viewed.
Для формирования 6DoF-видео для записи сцены требуется множество камер. Каждая камера формирует данные изображения (часто в данном контексте называемые данными текстуры) и соответствующие данные глубины. Для каждого пикселя данные глубины представляют глубину, на которой данной камерой наблюдаются пиксельные данные соответствующего изображения. Каждая из множества камер обеспечивает соответствующий вид сцены. Передача всех данных текстуры и данных глубины для всех видов может быть непрактичной или неэффективной во многих применениях.Generating 6DoF video to record a scene requires multiple cameras. Each camera produces image data (often called texture data in this context) and corresponding depth data. For each pixel, the depth data represents the depth at which the corresponding image pixel data is observed by a given camera. Each of the multiple cameras provides a corresponding view of the scene. Providing all the texture data and depth data for all views may be impractical or inefficient in many applications.
Для уменьшения избыточности между видами было предложено обрезать виды и упаковывать их в «текстурный атлас» для каждого кадра потока видео. Этот подход призван уменьшить или устранить перекрывающиеся части между множественными видами и тем самым повысить эффективность. Неперекрывающиеся участки различных видов, которые остаются после обрезки, могут назваться «накладками». Пример данного подхода описан в работе Alvaro Collet и др., «High-quality streamable free-viewpoint video», ACM Trans. Graphics (SIGGRAPH), 34(4), 2015.To reduce redundancy between views, it has been proposed to crop views and pack them into a “texture atlas” for each frame of the video stream. This approach is intended to reduce or eliminate overlapping parts between multiple views and thereby improve efficiency. The non-overlapping parts of different views that remain after cropping can be called “overlays”. An example of this approach is described in Alvaro Collet et al., “High-quality streamable free-viewpoint video,” ACM Trans. Graphics (SIGGRAPH), 34(4), 2015.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE ESSENCE OF THE INVENTION
Было бы желательно повысить качество и эффективность кодирования иммерсивного видео. Подход с использованием обрезки (т.е. исключения избыточных текстурных накладок) для создания текстурных атласов, как описано выше, может помочь снизить скорость передачи пикселей. Однако обрезка видов часто требует детального анализа, который не позволяет избежать ошибок и может привести к снижению качества для конечного пользователя. Поэтому существует потребность в надежных и простых способах снижения скорости передачи пикселей.It would be desirable to improve the quality and efficiency of immersive video encoding. The approach of using cropping (i.e., eliminating redundant texture overlays) to create texture atlases as described above can help reduce the pixel rate. However, cropping views often requires detailed analysis that is not error-free and can result in lower quality for the end user. Therefore, there is a need for reliable and simple ways to reduce the pixel rate.
Изобретение определено формулой изобретения.The invention is defined by the claims.
Как показано на примерах, в соответствии с аспектом настоящего изобретения предложен способ кодирования видеоданных, содержащих один или более исходных видов, причем каждый исходный вид содержит текстурную карту и карту глубины, при этом способ включает:As shown in the examples, in accordance with an aspect of the present invention, a method is proposed for encoding video data comprising one or more source views, wherein each source view comprises a texture map and a depth map, wherein the method includes:
прием видеоданных;receiving video data;
обработку карты глубины по меньшей мере одного исходного вида для формирования обработанной карты глубины, включающую:processing a depth map of at least one source view to generate a processed depth map, including:
нелинейную фильтрацию иnonlinear filtering and
понижающую дискретизацию; иdownsampling; and
кодирование обработанной карты глубины и текстурной карты по меньшей мере одного исходного вида для формирования двоичного видеопотока.encoding the processed depth map and the texture map of at least one original view to form a binary video stream.
Предпочтительно по меньшей мере часть нелинейной фильтрации выполняют перед понижающей дискретизацией.Preferably, at least some of the nonlinear filtering is performed before downsampling.
Авторы изобретения обнаружили, что нелинейная фильтрация карты глубины перед понижающей дискретизацией может помочь исключить, уменьшить или смягчить ошибки, вносимые понижающей дискретизацией. В частности, нелинейная фильтрация может помочь предотвратить частичное или полное исчезание с карты глубины мелких или тонких объектов переднего плана из-за понижающей дискретизации. Было обнаружено, что в этом отношении нелинейная фильтрация может быть предпочтительнее линейной фильтрации, поскольку линейная фильтрация может вводить промежуточные значения глубины на границах между объектами переднего плана и задним планом. Это затрудняет декодеру различение границ объекта и больших градиентов глубины.The inventors have found that nonlinear filtering of the depth map before downsampling can help to eliminate, reduce or mitigate the errors introduced by downsampling. In particular, nonlinear filtering can help to prevent small or thin foreground objects from partially or completely disappearing from the depth map due to downsampling. It has been found that nonlinear filtering can be preferable to linear filtering in this regard, since linear filtering can introduce intermediate depth values at the boundaries between foreground and background objects. This makes it difficult for the decoder to distinguish between object boundaries and large depth gradients.
Видеоданные могут содержать иммерсивное 6DoF-видео.Video data may contain immersive 6DoF video.
Нелинейная фильтрация может включать увеличение области по меньшей мере одного объекта переднего плана на карте глубины.Nonlinear filtering may involve increasing the region of at least one foreground object in the depth map.
Увеличение объекта переднего плана перед повышающей дискретизацией может помочь обеспечить, чтобы объект переднего плана лучше выдерживал процесс понижающей дискретизации, другими словами, чтобы он лучше сохранялся на обработанной карте глубины.Enlarging the foreground object before upsampling can help ensure that the foreground object survives the downsampling process better, in other words, that it is better preserved in the processed depth map.
Объект переднего плана может быть идентифицирован как локальная группа пикселей на относительной небольшой глубине. Задний план может быть идентифицирован как пиксели на относительно большой глубине. Периферийные пиксели объектов переднего плана можно локально отличить от заднего плана, например, применив пороговое значение к значениям глубины на карте глубины.The foreground object can be identified as a local group of pixels at a relatively shallow depth. The background can be identified as pixels at a relatively deep depth. The peripheral pixels of foreground objects can be locally distinguished from the background, for example by applying a threshold to the depth values in the depth map.
Нелинейная фильтрация может включать морфологическую фильтрацию, в частности, полутоновую морфологическую фильтрацию, например, фильтр «максимум», фильтр «минимум» или другой фильтр, основанный на порядковых статистиках. Когда карта глубины содержит уровни глубины с особым смыслом, например, нулевой уровень глубины указывает на недопустимую глубину, такие уровни глубины предпочтительно считать передним планом, несмотря на их фактическое значение. Соответственно, эти уровни предпочтительно сохраняются после субдискретизации. Следовательно, их область также может быть увеличена.Nonlinear filtering may include morphological filtering, in particular grayscale morphological filtering, such as a maximum filter, a minimum filter, or another filter based on ordinal statistics. When the depth map contains depth levels with a special meaning, such as a zero depth level indicating an invalid depth, such depth levels are preferably considered as foreground, regardless of their actual meaning. Accordingly, these levels are preferably preserved after subsampling. Consequently, their area can also be increased.
Нелинейная фильтрация может включать применение фильтра, разработанного с использованием алгоритма машинного обучения.Nonlinear filtering may involve the application of a filter designed using a machine learning algorithm.
Алгоритм машинного обучения может быть натренирован на уменьшение или минимизацию ошибки реконструкции реконструированной карты глубины после того, как обработанная карта глубины была кодирована и декодирована.A machine learning algorithm can be trained to reduce or minimize the reconstruction error of the reconstructed depth map after the processed depth map has been encoded and decoded.
Натренированный фильтр может точно также способствовать сохранению объектов переднего плана на обработанной (повергнутой понижающей дискретизации) карте глубины.A trained filter can similarly help preserve foreground objects in the processed (downsampled) depth map.
Способ может также включать разработку фильтра с использованием алгоритма машинного обучения, причем фильтр разрабатывают для уменьшения ошибки реконструкции реконструированной карты глубины после того, как обработанная карта была кодирована и декодирована, и при этом нелинейная фильтрация включает применение разработанного фильтра.The method may also include developing a filter using a machine learning algorithm, wherein the filter is developed to reduce the reconstruction error of the reconstructed depth map after the processed map has been encoded and decoded, and wherein the nonlinear filtering includes applying the developed filter.
Нелинейная фильтрация может включать обработку нейронной сетью, а разработка фильтра может включать тренировку нейронной сети.Nonlinear filtering may involve neural network processing, and filter design may involve neural network training.
Нелинейная фильтрация может быть выполнена нейронной сетью, содержащей множество слоев, а понижающая дискретизация может быть выполнена между двумя из указанных слоев.Nonlinear filtering can be performed by a neural network containing multiple layers, and downsampling can be performed between two of the said layers.
Понижающая дискретизация может быть выполнена слоем подвыборки по максимальному значению (или подвыборки по минимальному значению) нейронной сети.Downsampling can be performed by a max-pooling (or min-pooling) layer of a neural network.
Способ может включать обработку карты глубины в соответствии с множеством наборов параметров обработки для формирования соответствующего множества обработанных карт глубины, при этом способ включает: выбор набора параметров обработки, который уменьшает ошибку реконструкции реконструированной карты глубины после того, как соответствующая обработанная карта глубины была кодирована и декодирована; и формирование двоичного потока метаданных, идентифицирующего выбранный набор параметров.The method may include processing a depth map in accordance with a plurality of sets of processing parameters to generate a corresponding plurality of processed depth maps, wherein the method includes: selecting a set of processing parameters that reduces a reconstruction error of the reconstructed depth map after the corresponding processed depth map has been encoded and decoded; and generating a binary metadata stream identifying the selected set of parameters.
Это может позволить оптимизировать параметры для данного применения или данной видеопоследовательности.This may allow you to optimize the parameters for a given application or a given video sequence.
В число параметров обработки могут входить определение нелинейной фильтрации и/или определение выполненной понижающей дискретизации. В качестве альтернативы или дополнительно параметры обработки могут включать определение операций обработки, которые должны быть выполнены в декодере при реконструкции карты глубины.The processing parameters may include a definition of nonlinear filtering and/or a definition of the downsampling performed. Alternatively or additionally, the processing parameters may include a definition of the processing operations to be performed in the decoder when reconstructing the depth map.
Для каждого набора параметров обработки способ может включать: формирование соответствующей обработанной карты глубины в соответствии с набором параметров обработки; кодирование обработанной карты глубины для формирования кодированной карты глубины; декодирование кодированной карты глубины; реконструкцию карты глубины из декодированной карты глубины и сравнение реконструированной карты глубины с картой глубины по меньшей мере одного исходного вида для определения ошибки реконструкции.For each set of processing parameters, the method may include: generating a corresponding processed depth map in accordance with the set of processing parameters; encoding the processed depth map to generate a coded depth map; decoding the coded depth map; reconstructing a depth map from the decoded depth map and comparing the reconstructed depth map with a depth map of at least one original view to determine a reconstruction error.
В соответствии еще с одним аспектом предложен способ декодирования видеоданных, содержащих один или более исходных видов, включающий:According to another aspect, a method is proposed for decoding video data containing one or more source views, comprising:
прием двоичного видеопотока, содержащего кодированную карту глубины и кодированную текстурную карту по меньшей мере для одного исходного вида;receiving a binary video stream containing an encoded depth map and an encoded texture map for at least one source view;
декодирование кодированной карты глубины для получения декодированной карты глубины;decoding the encoded depth map to obtain a decoded depth map;
декодирование кодированной текстурной карты для получения декодированной текстурной карты иdecoding the encoded texture map to obtain a decoded texture map, and
обработку декодированной карты глубины для формирования реконструированной карты глубины, при этом обработка включает:processing the decoded depth map to form a reconstructed depth map, wherein the processing includes:
повышающую дискретизацию иupsampling and
нелинейную фильтрацию.nonlinear filtering.
Способ может также включать: перед этапом обработки декодированной карты глубины для формирования реконструированной карты глубины обнаружение того, что декодированная карта имеет меньшее разрешение, чем декодированная текстурная карта.The method may also include: before the step of processing the decoded depth map to form the reconstructed depth map, detecting that the decoded map has a lower resolution than the decoded texture map.
В некоторых схемах кодирования карта глубины может быть подвергнута понижающей дискретизации только в определенных случаях или только для определенных видов. Благодаря сравнению разрешения декодированной карты глубины с разрешением декодированной текстурной карты способ декодирования позволяет определять, применялась ли понижающая дискретизация в кодере. Это может позволить избежать необходимости использования метаданных в двоичном потоке метаданных для сигнализации о том, какие карты глубины были подвергнуты понижающей дискретизации, и в какой степени они были повергнуты понижающей дискретизации (в этом примере предполагается, что текстурная карта кодирована при полном разрешении).In some encoding schemes, the depth map may be downsampled only in certain cases or only for certain views. By comparing the resolution of the decoded depth map with the resolution of the decoded texture map, the decoding method can determine whether downsampling has been applied at the encoder. This can avoid the need for metadata in the metadata bitstream to signal which depth maps have been downsampled and to what extent they have been downsampled (this example assumes that the texture map is encoded at full resolution).
Для формирования реконструированной карты глубины декодированная карта глубины может быть повергнута повышающей дискретизации до того же самого разрешения, что и у декодированной текстурной карты.To generate a reconstructed depth map, the decoded depth map can be upsampled to the same resolution as the decoded texture map.
Предпочтительно нелинейная фильтрация в способе декодирования выполнена с возможностью компенсации эффекта нелинейной фильтрации, которую применяли в способе кодирования.Preferably, the nonlinear filtering in the decoding method is designed to compensate for the effect of the nonlinear filtering that was used in the coding method.
Нелинейная фильтрация может включать уменьшение области по меньшей мере одного объекта переднего плана на карте глубины. Это может быть уместно, когда нелинейная фильтрация во время кодирования включала увеличение области по меньшей мере одного объекта переднего плана.The nonlinear filtering may involve reducing the region of at least one foreground object in the depth map. This may be appropriate when the nonlinear filtering during encoding involved increasing the region of at least one foreground object.
Нелинейная фильтрация может включать морфологическую фильтрацию, в частности, полутоновую морфологическую фильтрацию, например, фильтр «максимум», фильтр «минимум» или другой фильтр, основанный на порядковых статистиках.Nonlinear filtering may include morphological filtering, in particular grayscale morphological filtering, such as a maximum filter, a minimum filter, or another filter based on ordinal statistics.
Нелинейная фильтрация во время декодирования предпочтительно компенсирует или обращает эффект нелинейной фильтрации во время кодирования. Например, если нелинейная фильтрация во время кодирования включает фильтр «максимум» (полутоновую дилатацию), то нелинейная фильтрация во время декодирования может включать фильтр «минимум» (полутоновую эрозию), и наоборот. Когда карта глубины содержит уровни глубины с особым смыслом, например, нулевой уровень глубины указывает на недопустимую глубину, такие уровни глубины предпочтительно считать передним планом, несмотря на их фактическое значение.Nonlinear filtering during decoding preferably compensates or reverses the effect of nonlinear filtering during encoding. For example, if nonlinear filtering during encoding includes a "maximum" filter (grayscale dilation), then nonlinear filtering during decoding may include a "minimum" filter (grayscale erosion), and vice versa. When a depth map contains depth levels with a special meaning, such as a zero depth level indicating an invalid depth, such depth levels are preferably considered foreground, regardless of their actual meaning.
Предпочтительно по меньшей мере часть нелинейной фильтрации выполняют после повышающей дискретизации. Необязательно всю нелинейную фильтрацию выполняют после повышающей дискретизации.Preferably, at least part of the nonlinear filtering is performed after upsampling. Not necessarily, all of the nonlinear filtering is performed after upsampling.
Обработка декодированной карты глубины может быть основана по меньшей мере частично на декодированной текстурной карте. Авторы изобретения поняли, что текстурная карта содержит полезную информацию, помогающую реконструировать карту глубины. В частности, когда границы объектов переднего плана были изменены нелинейной фильтрацией во время кодирования, анализ текстурной карты может помочь компенсировать или обратить изменения.The processing of the decoded depth map can be based at least in part on the decoded texture map. The inventors realized that the texture map contains useful information that helps reconstruct the depth map. In particular, when the boundaries of foreground objects have been changed by nonlinear filtering during encoding, analyzing the texture map can help compensate for or reverse the changes.
Способ может включать: повышающую дискретизацию декодированной карты глубины; идентификацию периферийных пикселей по меньшей мере одного объекта переднего плана на подвергнутой повышающей дискретизации карте глубины; определение на основе декодированной текстурной карты, похожи ли периферийные пиксели больше на объект переднего плана или на задний план; и применение нелинейной фильтрации только к периферийным пикселям, которые определены как более похожие на задний план.The method may include: upsampling a decoded depth map; identifying peripheral pixels of at least one foreground object in the upsampled depth map; determining, based on the decoded texture map, whether the peripheral pixels are more similar to the foreground object or to the background; and applying nonlinear filtering only to the peripheral pixels that are determined to be more similar to the background.
Таким образом, текстурную карту используют для помощи в идентификации пикселей, которые были преобразованы из заднего плана в передний план в результате нелинейной фильтрации во время кодирования. Нелинейная фильтрация во время декодирования может помочь вернуть эти идентифицированные пиксели в состав заднего плана.Thus, the texture map is used to help identify pixels that have been converted from background to foreground by nonlinear filtering during encoding. Nonlinear filtering during decoding can help return these identified pixels to the background.
Нелинейная фильтрация может включать сглаживание краев по меньшей мере одного объекта переднего плана.Nonlinear filtering may include smoothing the edges of at least one foreground object.
Сглаживание может включать: идентификацию периферийных пикселей по меньшей мере одного объекта переднего плана на подвергнутой повышающей дискретизации карте глубины; для каждого периферийного пикселя анализ количества и/или расположения пикселей переднего плана и заднего плана в окрестности этого периферийного пикселя; на основе результата анализа идентификацию выпадающих периферийных пикселей, которые выступают из объекта в задний план; и применение нелинейной фильтрации только к идентифицированным периферийным пикселям.Smoothing may include: identifying peripheral pixels of at least one foreground object in an upsampled depth map; for each peripheral pixel, analyzing the number and/or location of foreground and background pixels in the vicinity of that peripheral pixel; based on the result of the analysis, identifying outlying peripheral pixels that protrude from the object into the background; and applying nonlinear filtering only to the identified peripheral pixels.
Анализ может включать подсчет количества пикселей заднего плана в окрестности, причем периферийный пиксель идентифицируют как выпадающий из объекта, если количество пикселей заднего плана в окрестности выше заданного порогового значения.The analysis may include counting the number of background pixels in the vicinity, wherein a peripheral pixel is identified as outlier from the object if the number of background pixels in the vicinity is above a specified threshold.
В качестве альтернативы или дополнительно анализ может включать идентификацию пространственной структуры пикселей переднего плана и заднего плана в окрестности, причем периферийный пиксель идентифицируют как выброс, если пространственная структура в его окрестности соответствует одной или более заданным пространственным структурам.Alternatively or additionally, the analysis may include identifying a spatial structure of foreground and background pixels in the vicinity, wherein a peripheral pixel is identified as an outlier if the spatial structure in its vicinity matches one or more specified spatial structures.
Способ может также включать прием двоичного потока метаданных, связанного с двоичным видеопотоком, причем двоичный поток метаданных идентифицирует набор параметров, а способ необязательно также включает обработку декодированной карты глубины в соответствии с идентифицированным набором параметров.The method may also include receiving a binary metadata stream associated with the binary video stream, wherein the binary metadata stream identifies a set of parameters, and the method optionally also includes processing the decoded depth map in accordance with the identified set of parameters.
Параметры обработки могут включать определение нелинейной фильтрации и/или определение повышающей дискретизации, которую нужно выполнить.Processing parameters may include defining nonlinear filtering and/or defining the upsampling to be performed.
Нелинейная фильтрация может включать применение фильтра, разработанного с использованием алгоритма машинного обучения.Nonlinear filtering may involve the application of a filter designed using a machine learning algorithm.
Алгоритм машинного обучения может быть натренирован на уменьшение или минимизацию ошибки реконструкции реконструированной карты глубины после того, как обработанная карта глубины была кодирована и декодирована.A machine learning algorithm can be trained to reduce or minimize the reconstruction error of the reconstructed depth map after the processed depth map has been encoded and decoded.
Фильтр может быть определен в двоичном потоке метаданных, связанном с двоичным видеопотоком.The filter can be defined in the binary metadata stream associated with the video binary stream.
Предложена также компьютерная программа, содержащая компьютерный код для вызова осуществления системой обработки способа, описанного выше, при запуске указанной программы в системе обработки.A computer program is also proposed, containing a computer code for causing the processing system to implement the method described above, when the said program is launched in the processing system.
Компьютерная программа может храниться на компьютерочитаемом носителе данных. Это может быть некратковременный носитель данных.The computer program may be stored on a computer-readable storage medium. This may be a non-transitory storage medium.
В соответствии еще с одним аспектом предложен видеокодер, выполненный с возможностью кодирования видеоданных, содержащих один или более исходных видов, причем каждый исходный вид содержит текстурную карту и карту глубины, при этом видеокодер содержит:According to another aspect, a video encoder is provided that is configured to encode video data comprising one or more source views, wherein each source view comprises a texture map and a depth map, wherein the video encoder comprises:
вход, выполненный с возможностью приема видеоданных;an input capable of receiving video data;
видеопроцессор, выполненный с возможностью обработки карты глубины по меньшей мере одного исходного вида для формирования обработанной карты глубины, включающей:a video processor configured to process a depth map of at least one source view to generate a processed depth map, including:
нелинейную фильтрацию иnonlinear filtering and
понижающую дискретизацию;downsampling;
кодер, выполненный с возможностью кодирования текстурной карты по меньшей мере одного исходного вида и обработанной карты глубины для формирования двоичного видеопотока; иan encoder configured to encode a texture map of at least one original view and a processed depth map to form a binary video stream; and
выход, выполненный с возможностью вывода двоичного видеопотока.an output capable of outputting a binary video stream.
В соответствии еще с одним аспектом предложен видеодекодер, выполненный с возможностью декодирования видеоданных, содержащих один или более исходных видов, при этом видеодекодер содержит:According to another aspect, a video decoder is provided, configured to decode video data comprising one or more source views, wherein the video decoder comprises:
вход двоичного потока, выполненный с возможностью приема двоичного видеопотока, причем двоичный видеопоток содержит кодированную карту глубины и кодированную текстурную карту по меньшей мере для одного исходного вида;a binary stream input configured to receive a binary video stream, wherein the binary video stream comprises an encoded depth map and an encoded texture map for at least one source view;
первый декодер, выполненный с возможностью декодирования из двоичного видеопотока кодированной карты глубины для получения декодированной карты глубины;a first decoder configured to decode an encoded depth map from a binary video stream to obtain a decoded depth map;
второй декодер, выполненный с возможностью декодирования из двоичного видеопотока кодированной текстурной карты для получения декодированной текстурной карты;a second decoder configured to decode an encoded texture map from a binary video stream to obtain a decoded texture map;
процессор реконструкции, выполненный с возможностью обработки декодированной карты глубины для формирования реконструированной карты глубины, при этом обработка включает:a reconstruction processor configured to process the decoded depth map to generate a reconstructed depth map, wherein the processing includes:
повышающую дискретизацию иupsampling and
нелинейную фильтрацию,nonlinear filtering,
и выход, выполненный с возможностью вывода реконструированной карты глубины.and an output configured to output the reconstructed depth map.
Эти и другие аспекты изобретения будут очевидны и разъяснены со ссылкой на вариант (варианты) осуществления, описанный(-ые) ниже.These and other aspects of the invention will be apparent and elucidated with reference to the embodiment(s) described below.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF DRAWINGS
Для лучшего понимания изобретения и более ясной демонстрации способа его осуществления на практике далее только в качестве примера сделаны ссылки на сопроводительные чертежи, на которых:For a better understanding of the invention and a clearer demonstration of the method of its implementation in practice, references are made further, only as an example, to the accompanying drawings, in which:
на фиг. 1 показан пример кодирования и декодирования иммерсивного видео с использованием существующих видеокодеков;Fig. 1 shows an example of encoding and decoding immersive video using existing video codecs;
на фиг. 2 приведена блок-схема, показывающая способ кодирования видеоданных в соответствии с вариантом реализации;Fig. 2 is a block diagram showing a method for encoding video data in accordance with an embodiment;
на фиг. 3 приведена блок-схема видеокодера в соответствии с вариантом реализации;Fig. 3 shows a block diagram of a video encoder in accordance with an embodiment;
на фиг. 4 приведена блок-схема, иллюстрирующая способ кодирования видеоданных в соответствии еще с одним вариантом реализации;Fig. 4 is a block diagram illustrating a method for encoding video data in accordance with another embodiment;
на фиг. 5 приведена блок-схема, показывающая способ декодирования видеоданных в соответствии с вариантом реализации;Fig. 5 is a block diagram showing a method for decoding video data in accordance with an embodiment;
на фиг. 6 приведена блок-схема видеодекодера в соответствии с вариантом реализации;Fig. 6 shows a block diagram of a video decoder in accordance with an embodiment;
на фиг. 7 показан способ выборочного применения нелинейной фильтрации к конкретным пикселям в способе декодирования в соответствии с вариантом реализации;Fig. 7 shows a method for selectively applying nonlinear filtering to specific pixels in a decoding method according to an embodiment;
на фиг. 8 приведена блок-схема, иллюстрирующая способ декодирования видеоданных в соответствии еще с одним вариантом реализации; иFig. 8 is a block diagram illustrating a method for decoding video data in accordance with another embodiment; and
на фиг. 9 показано использование обработки нейронной сетью для кодирования и декодирования видеоданных в соответствии с вариантом реализации.Fig. 9 shows the use of neural network processing for encoding and decoding video data in accordance with an embodiment.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION
Далее описано изобретение со ссылками на фигуры чертежей.The invention is described below with reference to the figures of the drawings.
Следует понимать, что подробное описание и конкретные примеры, показывая отдельные варианты реализации устройства, систем и способов, служат только в качестве иллюстрации и не предусматривают ограничения объема изобретения. Эти и другие признаки, аспекты и преимущества устройства, систем и способов настоящего изобретения станут более понятными из нижеследующего описания, прилагаемой формулы изобретения и сопроводительных чертежей. Следует понимать, что фигуры являются лишь схематическими и изображены не в масштабе. Кроме того, следует понимать, что одинаковые ссылочные позиции использованы на всех фигурах для обозначения одинаковых или аналогичных деталей.It should be understood that the detailed description and specific examples, while showing individual embodiments of the device, systems and methods, serve only as an illustration and are not intended to limit the scope of the invention. These and other features, aspects and advantages of the device, systems and methods of the present invention will become more apparent from the following description, the appended claims and the accompanying drawings. It should be understood that the figures are only schematic and are not drawn to scale. In addition, it should be understood that the same reference numbers are used throughout the figures to designate the same or similar parts.
Раскрыты способы кодирования и декодирования иммерсивного видео. В способе кодирования исходные видеоданные, содержащие один или более исходных видов, кодируют в двоичный видеопоток. Перед кодированием к данным о глубине по меньшей мере одного из исходных видов применяют нелинейную фильтрацию и понижающую дискретизацию. Понижающая дискретизация карты глубины помогает уменьшить объем данных, подлежащих передаче, и, следовательно, помогает уменьшить скорость передачи в битах. Однако авторы изобретения обнаружили, что просто понижающая дискретизация может привести к исчезанию тонких или небольших объектов переднего плана, таких как провода, с карты глубины, повергнутой понижающей дискретизации. Варианты реализации настоящего изобретения направлены на смягчение этого эффекта и сохранения небольших и тонких объектов на карте глубины.Methods for encoding and decoding immersive video are disclosed. In the encoding method, source video data comprising one or more source views is encoded into a binary video stream. Before encoding, nonlinear filtering and downsampling are applied to the depth data of at least one of the source views. Downsampling of the depth map helps to reduce the amount of data to be transmitted and, therefore, helps to reduce the bit rate. However, the inventors have found that simply downsampling can lead to the disappearance of thin or small foreground objects, such as wires, from the downsampled depth map. Embodiments of the present invention are aimed at mitigating this effect and preserving small and thin objects on the depth map.
Варианты реализации настоящего изобретения могут быть пригодны для реализации части технического стандарта, такого как ISO/IEC 23090-12 MPEG-I, часть 12, Иммерсивное видео. Там, где это возможно, терминология, используемая в настоящем документе, выбрана в соответствии с терминами, используемыми в MPEG-I, часть 12. Тем не менее, следует понимать, что объем настоящего изобретения не ограничен ни MPEG-I Part 12, ни каким-либо другим техническим стандартом.Embodiments of the present invention may be suitable for implementing a part of a technical standard, such as ISO/IEC 23090-12 MPEG-I Part 12, Immersive Video. Where possible, the terminology used in this document is chosen to be consistent with the terms used in MPEG-I Part 12. However, it should be understood that the scope of the present invention is not limited to MPEG-I Part 12 or any other technical standard.
Возможно, будет полезно изложить следующие определения/пояснения:It may be helpful to provide the following definitions/explanations:
«3D-сцена» относится к визуальному контенту в глобальной эталонной системе координат."3D scene" refers to visual content in a global reference coordinate system.
«Атлас» представляет собой совокупность накладок из одного или более представлений вида после процесса упаковки в пару картинок, которая содержит картинку компонента текстуры и соответствующую картинку компонента глубины.An "atlas" is a collection of overlays of one or more view representations after a process of packing into a pair of images that contains a texture component image and a corresponding depth component image.
«Атласный компонент» представляет собой текстурный или глубинный компонент атласа.The "Satin Component" is the textural or depth component of the satin.
«Параметры камеры» определяют проекцию, используемую для формирования представления вида из трехмерной сцены.Camera Settings define the projection used to generate a view representation of a 3D scene.
«Обрезка» представляет собой процесс идентификации и извлечения перекрытых областей в разных видах, что приводит к появлению накладок."Cropping" is the process of identifying and extracting overlapping areas in different views, resulting in overlaps.
«Рендерер» представляет собой вариант осуществления процесса создания окна просмотра или всенаправленного вида из трехмерного вида сцены, соответствующего положению и ориентации просмотра.A "renderer" is a process for creating a viewport or omnidirectional view from a 3D scene view that matches the view's position and orientation.
«Исходный вид» представляет собой исходный видеоматериал перед кодированием, который соответствует формату представления вида, который может быть получен путем захвата трехмерной сцены реальной камерой или путем проецирования виртуальной камерой на поверхность с использованием параметров исходной камеры."Original view" is the original video material before encoding, which corresponds to the view representation format, which can be obtained by capturing a 3D scene with a real camera or by projecting a virtual camera onto a surface using the original camera's parameters.
«Целевой вид» определяется либо как пространственное окно просмотра, либо как всенаправленный вид в требуемом положении и ориентации просмотра.The "target view" is defined as either a spatial viewport or an omnidirectional view at the desired viewing position and orientation.
«Представление вида» содержит массивы двумерных образцов компонента текстуры и соответствующего компонента глубины, представляющие собой проекцию трехмерной сцены на поверхность с использованием параметров камеры.The "View View" contains arrays of 2D texture component samples and the corresponding depth component, representing a projection of the 3D scene onto the surface using camera parameters.
Алгоритм машинного обучения представляет собой любой алгоритм самообучения, который обрабатывает входные данные с целью получения или прогнозирования выходных данных. В некоторых вариантах осуществления настоящего изобретения входные данные содержат один или более видов, декодированных из битового потока, а выходные данные содержат прогнозирование/реконструкцию целевого вида.A machine learning algorithm is any self-learning algorithm that processes input data to produce or predict output data. In some embodiments of the present invention, the input data comprises one or more views decoded from a bitstream, and the output data comprises a prediction/reconstruction of the target view.
Специалисту в данной области очевидны подходящие алгоритмы машинного обучения для использования в настоящем изобретении. Примеры подходящих алгоритмов машинного обучения включают алгоритмы на основе дерева принятия решений и искусственных нейронных сетей. Другие алгоритмы машинного обучения, такие как логистическая регрессия, машины опорных векторов или наивная байесовская модель, являются подходящими альтернативами.Suitable machine learning algorithms for use in the present invention are obvious to those skilled in the art. Examples of suitable machine learning algorithms include decision tree and artificial neural network algorithms. Other machine learning algorithms, such as logistic regression, support vector machines or naive Bayesian models, are suitable alternatives.
Структура искусственной нейронной сети (или просто нейронной сети) вдохновлена головным мозгом человека. Нейронные сети состоят из слоев, причем каждый слой содержит множество нейронов. Каждый нейрон содержит математическую операцию. В частности, каждый нейрон может содержать отличную от других взвешенную комбинацию преобразований одного типа (например, преобразований одного и того же типа, сигмоидального и т.д., но с разными весами). В ходе обработки входных данных математическую операцию каждого нейрона выполняют на входных данных для создания числовых выходных данных, и выходные данные каждого слоя в нейронной сети подают на один или более других слоев (например, последовательно). Конечный слой предоставляет выходные данные.The structure of an artificial neural network (or simply neural network) is inspired by the human brain. Neural networks are composed of layers, with each layer containing many neurons. Each neuron contains a mathematical operation. Specifically, each neuron may contain a different weighted combination of transformations of the same type (e.g., transformations of the same type, sigmoid, etc., but with different weights). During input processing, each neuron's mathematical operation is performed on the input to produce a numerical output, and the output of each layer in the neural network is fed to one or more other layers (e.g., sequentially). The final layer provides the output.
Способы обучения алгоритма машинного обучения хорошо известны. Как правило, такие способы включают получение обучающего набора данных, содержащего элементы обучающих входных данных и соответствующие элементы обучающих выходных данных. Инициализированный алгоритм машинного обучения применяют к каждому элементу входных данных для формирования элементов спрогнозированных выходных данных. Ошибку между элементами спрогнозированных выходных данных и соответствующими элементами обучающих выходных данных используют для изменения алгоритма машинного обучения. Этот процесс может повторяться до тех пор, пока ошибка не сойдется, и прогнозируемые элементы выходных данных будут достаточно похожи (например, ±1%) на элементы обучающих выходных данных. Это широко известно как метод обучения с учителем.Methods for training a machine learning algorithm are well known. Typically, such methods involve obtaining a training data set containing training input items and corresponding training output items. An initialized machine learning algorithm is applied to each input item to produce predicted output items. The error between the predicted output items and the corresponding training output items is used to modify the machine learning algorithm. This process may be repeated until the error converges and the predicted output items are sufficiently similar (e.g., ±1%) to the training output items. This is commonly known as a supervised learning method.
Например, когда последовательность операций для машинного обучения формируют из нейронной сети, математическую операцию (ее вес) могут изменять для каждого нейрона до тех пор, пока ошибка не сойдется. Известные способы модификации нейронной сети включают градиентный спуск, алгоритмы обратного распространения и т.д.For example, when a sequence of operations for machine learning is formed from a neural network, the mathematical operation (its weight) can be changed for each neuron until the error converges. Known methods for modifying a neural network include gradient descent, backpropagation algorithms, etc.
Сверточная нейронная сеть (convolutional neural network, CNN или ConvNet) представляет собой класс глубоких нейронных сетей, наиболее часто применяемых для анализа визуальных изображений. CNN являются регуляризованными вариантами многослойных перцептронов.A convolutional neural network (CNN or ConvNet) is a class of deep neural networks most commonly used for visual image analysis. CNNs are regularized versions of multilayer perceptrons.
На фиг. 1 показана в упрощенном виде система для кодирования и декодирования иммерсивного видео. Для захвата множества видов сцены используют массив камер 10. Каждая камера захватывает обычные изображения (называемые в настоящем документе «текстурными картами») и карту глубины вида перед ней. Набор видов, содержащий данные о текстуре и глубине, подают в кодер 300. Кодер кодирует, как данные о текстуре, так и данные о глубине, в обычный двоичных видеопоток - в данном случае двоичный поток с высокоэффективным кодированием видео (high efficiency video coding, HEVC). Он сопровождается двоичным потоком метаданных для информирования декодера 400 о том, что означают различные части двоичного видеопотока. Например, метаданные указывают декодеру, какие части двоичного видеопотока соответствуют текстурным картам, а какие соответствуют картам глубины. В зависимости от сложности и гибкости схемы кодирования может потребоваться больше или меньше метаданных. Например, очень простая схема может весьма жестко определять структуру двоичного потока, так что для его распаковки на стороне декодера требуется мало метаданных или вообще не требуется метаданных. Чем больше количество дополнительных возможностей для двоичного потока, тем большее количество метаданных потребуется.Fig. 1 shows a simplified system for encoding and decoding immersive video. An array of cameras 10 is used to capture multiple views of a scene. Each camera captures regular images (called "texture maps" herein) and a depth map of the view in front of it. The set of views containing texture and depth data is fed to an encoder 300. The encoder encodes both the texture data and the depth data into a regular video bitstream - in this case, a high efficiency video coding (HEVC) bitstream. It is accompanied by a metadata bitstream to inform the decoder 400 what the various parts of the video bitstream mean. For example, the metadata indicates to the decoder which parts of the video bitstream correspond to texture maps and which correspond to depth maps. Depending on the complexity and flexibility of the coding scheme, more or less metadata may be required. For example, a very simple scheme may very strictly define the structure of the bitstream, so that little or no metadata is required to decompress it at the decoder end. The more additional features a bitstream has, the more metadata is required.
Декодер 400 декодирует кодированные виды (текстуру и глубину). Он передает декодированные виды синтезатору 500. Синтезатор 500 соединен с устройством отображения, таким как гарнитура 550 виртуальной реальности. Гарнитура 550 подает синтезатору 500 запрос на синтез и рендеринг конкретного вида 3D-сцены с использованием декодированных видов в соответствии с текущим положением и ориентацией гарнитуры 550.The decoder 400 decodes the encoded views (texture and depth). It transmits the decoded views to the synthesizer 500. The synthesizer 500 is connected to a display device, such as a virtual reality headset 550. The headset 550 requests the synthesizer 500 to synthesize and render a specific view of the 3D scene using the decoded views in accordance with the current position and orientation of the headset 550.
Преимущество системы, показанной на фиг. 1, заключается в том, что она выполнена с возможностью использования обычных 2D-видеокодеков для кодирования и декодирования данных о текстуре и глубине. Однако недостатком является необходимость кодирования, передачи и декодирования большого количества данных. Поэтому было бы желательно уменьшить скорость передачи данных как можно с меньшим ущербом для качества реконструированных видов.The advantage of the system shown in Fig. 1 is that it is designed to use conventional 2D video codecs to encode and decode texture and depth data. However, a disadvantage is that a large amount of data must be encoded, transmitted, and decoded. It would therefore be desirable to reduce the data rate as much as possible with the least possible detriment to the quality of the reconstructed views.
На фиг. 2 показан способ кодирования в соответствии с первым вариантом реализации. На фиг. 3 показан видеокодер, который может быть выполнен с возможностью осуществления способа, приведенного на фиг. 2. Видеокодер содержит вход 310, выполненный с возможностью приема видеоданных. С входом соединен видеопроцессор 320, который выполнен с возможностью приема карт глубины, принятых входом. Кодер 330 выполнен с возможностью приема обработанных карт глубины от видеопроцессора 320. Выход 370 выполнен с возможностью вывода двоичного видеопотока, сформированного кодером 330. Видеокодер 300 также содержит декодер 340 глубины, процессор 350 реконструкции и оптимизатор 360. Эти компоненты будут описаны подробнее в связи со вторым вариантом реализации способа кодирования, который описан ниже со ссылкой на фиг. 4.Fig. 2 shows a coding method according to a first embodiment. Fig. 3 shows a video encoder that can be configured to implement the method shown in Fig. 2. The video encoder comprises an input 310 configured to receive video data. A video processor 320 is connected to the input and is configured to receive depth maps received by the input. An encoder 330 is configured to receive processed depth maps from the video processor 320. An output 370 is configured to output a binary video stream generated by the encoder 330. The video encoder 300 also comprises a depth decoder 340, a reconstruction processor 350, and an optimizer 360. These components will be described in more detail in connection with a second embodiment of the coding method, which is described below with reference to Fig. 4.
Со ссылкой на фиг. 2 и 3, способ согласно первому варианту реализации начинается на этапе 110 с приема входом 310 видеоданных, содержащих текстурную карту и карту глубины. На этапах 120 и 130 видеопроцессор 320 обрабатывает карту глубины для формирования обработанной карты глубины. Обработка включает нелинейную фильтрацию карты глубины на этапе 120 и понижающую дискретизацию отфильтрованной карты глубины на этапе 130. На этапе 140 кодер 330 кодирует обработанную карту глубины и текстурную карту для формирования двоичного видеопотока. Затем сформированный двоичный видеопоток выводят через выход 370.With reference to Fig. 2 and 3, the method according to the first embodiment begins at step 110 with receiving at the input 310 video data comprising a texture map and a depth map. At steps 120 and 130, the video processor 320 processes the depth map to form a processed depth map. The processing includes non-linear filtering of the depth map at step 120 and downsampling of the filtered depth map at step 130. At step 140, the encoder 330 encodes the processed depth map and the texture map to form a binary video stream. Then, the formed binary video stream is output through the output 370.
Исходные виды, принятые на входе 310, могут представлять собой виды, захваченные массивом камер 10. Однако это не существенно, и исходные виды необязательно должны быть идентичны видам, захваченным камерой. Некоторые из исходных видов, принимаемых на входе 310, могут быть синтезированными или иным образом обработанными исходными видами. Количество исходных видов, принимаемых на входе 310, может быть больше или меньше, чем количество видов, захваченных массивом камер 10.The original views received at the input 310 may be views captured by the camera array 10. However, this is not essential, and the original views do not necessarily have to be identical to the views captured by the camera. Some of the original views received at the input 310 may be synthesized or otherwise processed original views. The number of original views received at the input 310 may be greater or less than the number of views captured by the camera array 10.
В варианте реализации на фиг. 2 нелинейная фильтрация 120 и понижающая дискретизация 130 объединены в один этап. Используют уменьшающий размер фильтра «подвыборка по максимальному значению 2×2». Это означает, что каждый пиксель в обработанной карте глубины принимает максимальное значение пикселя в окрестности 2×2 из четырех пикселей на первоначальной входной карте глубины. Этот выбор нелинейной фильтрации и понижающей дискретизации вытекает из двух соображений:In the embodiment of Fig. 2, the nonlinear filtering 120 and downsampling 130 are combined into a single step. A 2x2 max-subsampling downsampling filter is used. This means that each pixel in the processed depth map takes the maximum pixel value in a 2x2 neighborhood of four pixels in the original input depth map. This choice of nonlinear filtering and downsampling follows from two considerations:
1. Результат понижающей дискретизации не должен включать промежуточные, т.е. «переходные», уровни глубины. Такие промежуточные уровни глубины получались бы, например, при использовании линейного фильтра. Авторы изобретения поняли, что промежуточные уровни глубины часто дают неверные результаты после синтеза вида на стороне декодера.1. The downsampling result should not include intermediate, i.e. "transitional", depth levels. Such intermediate depth levels would be obtained, for example, when using a linear filter. The inventors realized that intermediate depth levels often give incorrect results after view synthesis on the decoder side.
2. Тонкие объекты переднего плана, представленные на картах глубины, должны быть сохранены. В противном случае, например, относительно тонкий объект исчезнет на заднем плане. Следует отметить, что при этом предполагается, что передний план, т.е. близкие объекты, кодируют как высокие (яркие) уровни, а задний план, т.е. далекие объекты, кодируют как низкие (темные) уровни (соглашение о диспаратности). В альтернативном варианте реализации понижающий дискретизатор «подвыборка по минимальному значению 2×2» будет иметь тот же эффект при условии использования соглашения о кодировании координаты z (координата z увеличивается с увеличением расстояния от объектива).2. Thin foreground objects represented in depth maps should be preserved. Otherwise, for example, a relatively thin object will disappear into the background. Note that this assumes that the foreground, i.e., close objects, are encoded as high (bright) levels, and the background, i.e., far objects, are encoded as low (dark) levels (disparity convention). An alternative implementation would be to use a 2×2 min-subsampling downsampler to achieve the same effect, provided that the z-coordinate encoding convention is used (z-coordinate increases with increasing distance from the lens).
Эта операция обработки по сути увеличивает размер всех локальных объектов переднего плана и, следовательно, сохраняет небольшие и тонкие объекты. Однако декодер предпочтительно должен знать, какую операцию применяли, так как он предпочтительно должен отменить введенное смещение и сжать все объекты, чтобы снова выровнять карту глубины с текстурой.This processing operation essentially increases the size of all local foreground objects and therefore preserves small and thin objects. However, the decoder should preferably know what operation was applied, since it should preferably undo the introduced offset and compress all objects to align the depth map with the texture again.
В соответствии с настоящим вариантом реализации снижаются требования к памяти для видеодекодера. Первоначальная скорость передачи пикселей была следующей: 1Y + 0,5CrCb + 1D, где Y - канал яркости, CrCb - каналы цветности, D - канал глубины. Согласно настоящему примеру, в котором используют понижающую дискретизацию с коэффициентом четыре (2×2), скорость передачи пикселей принимает следующий вид: 1Y + 0,5CrCb + 0,25D. Следовательно, можно достичь уменьшения скорости передачи пикселей на 30%. Наиболее практичные видеодекодеры имеют соотношение 4:2:0 и не включают монохромные режимы. В этом случае достигается уменьшение пикселей на 37,5%.According to the present embodiment, the memory requirements for the video decoder are reduced. The original pixel rate was 1Y + 0.5CrCb + 1D, where Y is the luminance channel, CrCb are the color channels, and D is the depth channel. According to the present example, which uses downsampling by a factor of four (2×2), the pixel rate becomes 1Y + 0.5CrCb + 0.25D. Consequently, a 30% reduction in the pixel rate can be achieved. The most practical video decoders have a 4:2:0 ratio and do not include monochrome modes. In this case, a 37.5% reduction in pixels is achieved.
На фиг. 4 приведена блок-схема, иллюстрирующая способ кодирования в соответствии со вторым вариантом реализации. Этот способ начинается аналогично способу, приведенному на фиг. 2, с приема входом 310 видеокодера исходных изображений на этапе 110. На этапах 120a и 130a видеопроцессор 320 обрабатывает карту глубины в соответствии с множеством наборов параметров обработки для формирования соответствующего множества обработанных карт глубины (каждая карта глубины соответствует набору параметров обработки). В этом варианте реализации система предназначена для опробования каждой из этих карт глубины, чтобы определить, какая из них даст наилучшее качество на стороне декодера. На этапе 140a каждая из обработанных карт глубины кодируется кодером 330. На этапе 154 декодер 340 глубины декодирует каждую кодированную карту глубины. Декодированные карты глубины передают процессору 350 реконструкции. На этапе 156 процессор 350 реконструкции реконструирует карты глубины из декодированных карт глубины. Затем на этапе 158 оптимизатор 360 сравнивает каждую реконструированную карту глубины с первоначальной картой глубины исходного вида, чтобы определить ошибку реконструкции. Ошибка реконструкции количественно определяет разницу между первоначальной картой глубины и реконструированной картой глубины. На основе результата сравнения оптимизатор 360 выбирает набор параметров, которые привели к реконструированной карте глубины, имеющий наименьшую ошибку реконструкции. Этот набор параметров выбирают для использования при формировании двоичного видеопотока. Выход 370 выводит двоичный видеопоток, соответствующий выбранному набору параметров.Fig. 4 is a flow chart illustrating a method for encoding according to a second embodiment. This method begins similarly to the method shown in Fig. 2, with the input 310 of the video encoder receiving source images in step 110. In steps 120a and 130a, the video processor 320 processes the depth map in accordance with a plurality of sets of processing parameters to generate a corresponding plurality of processed depth maps (each depth map corresponds to a set of processing parameters). In this embodiment, the system is designed to try each of these depth maps to determine which of them will give the best quality on the decoder side. In step 140a, each of the processed depth maps is encoded by the encoder 330. In step 154, the depth decoder 340 decodes each encoded depth map. The decoded depth maps are transmitted to the reconstruction processor 350. In step 156, the reconstruction processor 350 reconstructs the depth maps from the decoded depth maps. Then, in step 158, the optimizer 360 compares each reconstructed depth map with the original depth map of the original view to determine a reconstruction error. The reconstruction error quantifies the difference between the original depth map and the reconstructed depth map. Based on the comparison result, the optimizer 360 selects a set of parameters that resulted in a reconstructed depth map that has the smallest reconstruction error. This set of parameters is selected for use in generating a binary video stream. The output 370 outputs a binary video stream corresponding to the selected set of parameters.
Следует отметить, что работа декодера 340 глубины и процессора 350 реконструкции будет описана подробнее ниже со ссылкой на способ декодирования (см. фиг. 5-8).It should be noted that the operation of the depth decoder 340 and the reconstruction processor 350 will be described in more detail below with reference to the decoding method (see Figs. 5-8).
По существу видеокодер 300 реализует декодер в цикле, чтобы он мог прогнозировать, как двоичный поток будет декодирован в декодере на дальнем конце. Видеокодер 300 выбирает набор параметров, который даст наилучшие рабочие характеристики в декодере на дальнем конце (с точки зрения минимизации ошибки реконструкции для данной целевой скорости передачи битов или скорости передачи пикселей). Оптимизация может быть выполнена итеративно, как предполагается блок-схемой на фиг. 4, причем параметры нелинейной фильтрации 120 и/или понижающей дискретизации 130 обновляются в каждой итерации после сравнения 158 оптимизатором 360. В альтернативном варианте реализации видеодекодер может опробовать фиксированное множество наборов параметров, причем это может быть сделано последовательно или параллельно. Например, в реализации с высокой степенью параллелизма в видеокодере 300 может быть N кодеров (и декодеров), каждый из которых выполнен с возможностью опробования набора параметров для кодирования карты глубины. Это может увеличить количество наборов параметров, которые могут быть опробованы в отведенное время, за счет увеличения сложности и/или размера кодера 300.In essence, video encoder 300 implements a decoder in a loop so that it can predict how a bitstream will be decoded at a far-end decoder. Video encoder 300 selects a set of parameters that will give the best performance at the far-end decoder (in terms of minimizing reconstruction error for a given target bit rate or pixel rate). The optimization may be performed iteratively, as suggested by the flow chart of Fig. 4, wherein the parameters of nonlinear filtering 120 and/or downsampling 130 are updated at each iteration after comparison 158 by optimizer 360. In an alternative implementation, video decoder may try a fixed set of parameter sets, wherein this may be done sequentially or in parallel. For example, in a highly parallel implementation, video encoder 300 may have N encoders (and decoders), each of which is configured to try a set of parameters for encoding a depth map. This may increase the number of parameter sets that can be tried in a given time, at the expense of increasing the complexity and/or size of the encoder 300.
В число опробываемых параметров могут входить параметры нелинейной фильтрации 120a, параметры понижающей дискретизации 130a либо и те и другие. Например, система может экспериментировать с понижающей дискретизацией на различные коэффициенты в одном или обоих измерениях. Аналогичным образом система может экспериментировать с различными нелинейными фильтрами. Например, вместо фильтра «максимум» (который назначает каждому пикселю максимальное значение в локальной окрестности) может быть использован основанный на порядковых статистиках фильтр другого типа. Например, нелинейный фильтр может анализировать локальную окрестность вокруг данного пикселя и может назначать пикселю второе наивысшее значение в окрестности. Это может обеспечить эффект, подобный фильтру «максимум», в то же время помогая избежать чувствительности к отдельным выпадающим значениям. Размер ядра нелинейного фильтра является еще одним параметром, который может изменяться.The parameters that may be tested may include the nonlinear filtering parameters 120a, the downsampling parameters 130a, or both. For example, the system may experiment with downsampling by different factors in one or both dimensions. Similarly, the system may experiment with different nonlinear filters. For example, instead of a max filter (which assigns each pixel the maximum value in the local neighborhood), a different type of filter based on ordinal statistics may be used. For example, a nonlinear filter may analyze the local neighborhood around a given pixel and may assign the pixel the second highest value in the neighborhood. This may provide an effect similar to the max filter while helping to avoid sensitivity to individual outliers. The kernel size of the nonlinear filter is another parameter that may be varied.
Следует отметить, что параметры обработки в видеодекодере также могут быть включены в набор параметров (как будет описано подробнее ниже). Таким образом, видеокодер может выбирать набор, параметров как для кодирования, так и для декодирования, который помогает оптимизировать качество в зависимости от скорости передачи битов/скорости передачи пикселей. Оптимизация может быть выполнена для данной сцены или для данной видеопоследовательности либо, в более общем случае, на тренировочном наборе различных сцен и видеопоследовательностей. Таким образом, лучший набор параметров может меняться для каждой последовательности, для каждой скорости передачи битов и/или для каждой допустимой скорости передачи пикселей.It should be noted that the processing parameters in the video decoder can also be included in the parameter set (as will be described in more detail below). Thus, the video encoder can choose a set of parameters for both encoding and decoding that helps optimize quality as a function of the bit rate/pixel rate. The optimization can be performed for a given scene or for a given video sequence, or, more generally, on a training set of different scenes and video sequences. Thus, the best set of parameters can change for each sequence, for each bit rate, and/or for each allowed pixel rate.
Параметры, которые полезны или необходимы для правильного декодирования двоичного видеопотока видеодекодером, могут быт встроены в двоичных поток метаданных, связанный с двоичным видеопотоком. Двоичный поток метаданных может быть передан/транспортирован в видеодекодер вместе с двоичным видеопотоком или отдельно от него.Parameters that are useful or necessary for correct decoding of the video bitstream by the video decoder may be embedded in the metadata bitstream associated with the video bitstream. The metadata bitstream may be transmitted/transported to the video decoder together with the video bitstream or separately from it.
На фиг. 5 приведена блок-схема, показывающая способ декодирования видеоданных в соответствии с вариантом реализации. На Фиг. 6 приведена блок-схема соответствующего видеодекодера 400. Видеодекодер 400 содержит вход 410, декодер 424 текстуры, декодер 426 глубины, процессор 450 реконструкции и выход 470. Вход 410 соединен с декодером 424 текстуры и декодером 426 глубины. Процессор 450 реконструкции выполнен с возможностью приема декодированных текстурных карт от декодера 424 текстуры и приема декодированных карт глубины от декодера 426 глубины. Процессор 450 реконструкции выполнен с возможностью подачи реконструированных карт глубины на выход 470.Fig. 5 shows a block diagram showing a method for decoding video data according to an embodiment. Fig. 6 shows a block diagram of a corresponding video decoder 400. The video decoder 400 comprises an input 410, a texture decoder 424, a depth decoder 426, a reconstruction processor 450 and an output 470. The input 410 is connected to the texture decoder 424 and the depth decoder 426. The reconstruction processor 450 is configured to receive decoded texture maps from the texture decoder 424 and to receive decoded depth maps from the depth decoder 426. The reconstruction processor 450 is configured to supply the reconstructed depth maps to the output 470.
Способ на фиг. 5 начинается на этапе 210 с приема входом 410 двоичного видеопотока и необязательно двоичного потока метаданных. На этапе 224 декодер 424 текстуры декодирует текстурную карту из двоичного видеопотока. На этапе 226 декодер 426 глубины декодирует карту глубины из двоичного видеопотока. На этапах 230 и 240 видеопроцессор 450 обрабатывает декодированную карту глубины для формирования реконструированной карты глубины. Эта обработка включает повышающую дискретизацию 230 и нелинейную фильтрацию 240. Обработка, в частности, нелинейная фильтрация 240, может также зависеть от содержимого декодированной текстурной карты, как будет описано подробнее ниже.The method of Fig. 5 begins at step 210 with the reception by the input 410 of a binary video stream and optionally a binary metadata stream. At step 224, the texture decoder 424 decodes a texture map from the binary video stream. At step 226, the depth decoder 426 decodes a depth map from the binary video stream. At steps 230 and 240, the video processor 450 processes the decoded depth map to generate a reconstructed depth map. This processing includes upsampling 230 and nonlinear filtering 240. The processing, in particular the nonlinear filtering 240, may also depend on the content of the decoded texture map, as will be described in more detail below.
Далее со ссылкой на фиг. 8 будет более подробно описан один пример способа, приведенного на фиг. 5. В этом варианте реализации повышающая дискретизация 230 включает повышающую дискретизацию ближайшей окрестности, при которой каждому пикселю в блоке пикселей 2×2 на карте, подвергнутой повышающей дискретизации, назначают значение одного из пикселей с декодированной карты глубины. Этот повышающий дискретизатор «ближайшая окрестность 2×2» масштабирует карту глубины до ее первоначального размера. Подобно операции подвыборки по максимальному значению в кодере эта процедура в декодере исключает создание промежуточных уровней глубины. Характеристики подвергнутой повышающей дискретизации карты глубины по сравнению с первоначальной картой глубины в кодере могут быть спрогнозированы заранее: уменьшающий масштаб фильтр «подвыборка по максимальному значению» имеет тенденцию к увеличению области объектов переднего плана. Поэтому некоторые пиксели глубины на подвергнутой повышающей дискретизации карте глубины являются пикселями переднего плана, которые вместо этого должны быть задним планом; однако обычно нет пикселей глубины заднего плана, которые вместо этого должны быть передним планом. Другими словами, после повышающей дискретизации объекты иногда слишком большие, но, как правило, не слишком маленькие.An example of the method shown in Fig. 5 will now be described in more detail with reference to Fig. 8. In this embodiment, the upsampling 230 includes a nearest neighbor upsampling, in which each pixel in a 2x2 block of pixels in the upsampled map is assigned the value of one of the pixels from the decoded depth map. This 2x2 nearest neighbor upsampler scales the depth map to its original size. Like the max-pooling operation in the encoder, this procedure in the decoder avoids the creation of intermediate depth levels. The characteristics of the upsampled depth map compared to the original depth map in the encoder can be predicted in advance: the max-pooling downsampling filter tends to increase the area of foreground objects. Therefore, some depth pixels in the upsampled depth map are foreground pixels that should instead be background; However, there are usually no background depth pixels, which should instead be foreground. In other words, after upsampling, objects are sometimes too big, but usually not too small.
В настоящем изобретении, чтобы отменить смещение (объектов переднего плана, которые увеличились в размере), нелинейная фильтрация 240 подвергнутых повышающей дискретизации карт глубины включает цветовой адаптивный условный фильтр «эрозия» (этапы 242, 244 и 240a на фиг. 8). Относящаяся к эрозии часть (оператор минимума) обеспечивает уменьшение размера объекта, в то время как цветовая адаптация обеспечивает правильное пространственное положение края глубины, т.е., переходы на полномасштабной текстурной карте указывают, где должны быть края. Из-за нелинейности, с которой работает фильтр «эрозия» (т.е. пиксели либо эродированные, либо нет), получающиеся в результате края объекта могут быть зашумленными. Соседние с краем пиксели могут при минимально различающемся вводе давать разные результаты классификации «эрозия или не эрозия». Такой шум отрицательно влияет на гладкость края объекта. Авторы изобретения поняли, что такая гладкость является важным требованием для получения результатов синтеза вида с достаточным качеством восприятия. Поэтому нелинейная фильтрация 240 также включает фильтр гладкости контура (этап 250) для сглаживания краев на карте глубины.In the present invention, in order to cancel the displacement (of foreground objects that have increased in size), the non-linear filtering 240 of the upsampled depth maps includes a color adaptive conditional filter "erosion" (steps 242, 244 and 240a in Fig. 8). The erosion-related part (the minimum operator) provides a decrease in the size of the object, while the color adaptation provides the correct spatial position of the depth edge, i.e., the transitions in the full-scale texture map indicate where the edges should be. Due to the non-linearity with which the "erosion" filter operates (i.e., pixels are either eroded or not), the resulting edges of the object can be noisy. Pixels adjacent to the edge can give different results of the classification " erosion or not erosion " with minimally different input. Such noise negatively affects the smoothness of the edge of the object. The inventors realized that such smoothness is an important requirement for obtaining view synthesis results with sufficient perceptual quality. Therefore, the nonlinear filtering 240 also includes a contour smoothness filter (step 250) for smoothing edges in the depth map.
Далее будет более подробно описана нелинейная фильтрация 240 в соответствии с настоящим вариантом реализации. На фиг. 7 показана небольшая увеличенная область подвергнутой повышающей дискретизации карты глубины, представляющая ядро фильтра перед линейной фильтрацией 240. Серые квадратики указывают пиксели переднего плана; черные квадратики указывают пиксели заднего плана. Периферийные пиксели объекта переднего плана помечены знаком X. Это пиксели, которые могут представлять расширенную/увеличенную область объекта переднего плана, вызванную нелинейной фильтрацией в кодере. Другими словами, существует неопределенность в отношении того, являются ли периферийные пиксели X в действительности пикселями переднего плана или заднего плана.The nonlinear filtering 240 according to the present embodiment will now be described in more detail. Fig. 7 shows a small enlarged region of the upsampled depth map representing the filter kernel before the linear filtering 240. The gray squares indicate foreground pixels; the black squares indicate background pixels. The peripheral pixels of the foreground object are marked with an X. These are pixels that may represent an extended/enlarged region of the foreground object caused by the nonlinear filtering in the encoder. In other words, there is uncertainty as to whether the peripheral pixels X are actually foreground or background pixels.
Этапы, предпринимаемые для выполнения адаптивной эрозии, следующие:The steps taken to carry out adaptive erosion are as follows:
1. Поиск локальных краев переднего плана, т.е. периферийных пикселей объектов переднего плана (помеченных знаком X на фиг. 7). Это может быть сделано путем применения локального порогового значения, чтобы отличать пиксели переднего плана от пикселей заднего плана. Затем периферийные пиксели идентифицируют как те пиксели переднего плана, которые смежны с пикселями заднего плана (в данном примере в смысле 4-связности). Это делают с помощью процессора 450 реконструкции на этапе 242. Карта глубины может, для эффективности, содержать упакованные области из множества видов камеры. Края на границах таких областей игнорируют, поскольку они не указывают края объектов.1. Finding local foreground edges, i.e., peripheral pixels of foreground objects (marked with X in Fig. 7). This may be done by applying a local threshold to distinguish foreground pixels from background pixels. The peripheral pixels are then identified as those foreground pixels that are adjacent to background pixels (in this example, in a 4-connectivity sense). This is done by the reconstruction processor 450 at step 242. The depth map may, for efficiency, contain packed regions from multiple camera views. Edges at the boundaries of such regions are ignored since they do not indicate edges of objects.
2. Для идентифицированных краевых пикселей (например, центральный пиксель в ядре 5×5 на фиг. 7) определение среднего цвета текстуры переднего плана и заднего плана в ядре 5×5. Это делают на основе только «доверенных» пикселей (помеченных точкой •), другими словами, из вычисления средней текстуры переднего плана и заднего плана исключают неопределенные краевые пиксели X. Исключают также пиксели из возможно соседних областей-накладок, которые применяют, например, другие виды камеры.2. For the identified edge pixels (e.g. the central pixel in the 5x5 kernel in Fig. 7), determine the average color of the foreground and background texture in the 5x5 kernel. This is done based on only the "trusted" pixels (marked with a dot •), in other words, the undefined edge pixels X are excluded from the calculation of the average foreground and background texture. Pixels from possible neighboring overlay regions, which are used, for example, by other types of camera, are also excluded.
3. Определение сходства с передним планом, т.е. достоверности переднего плана: ,3. Determining the similarity with the foreground, i.e. the reliability of the foreground : ,
где: D указывает (например, евклидово) цветовое расстояние между цветом центрального пикселя и средним цветом пикселей заднего плана или переднего плана. Эта метрика достоверности будет близка к 1, если центральный пиксель сравнительно больше схож со средним цветом переднего плана в окрестности. Она будет близка к нулю, если центральный пиксель сравнительно больше схож со средним цветом заднего плана в окрестности. На этапе 244 процессор 450 реконструкции определяет сходство идентифицированных периферийных пикселей с передним планом.where: D indicates the (e.g., Euclidean) color distance between the color of the central pixel and the average color of the background or foreground pixels. This confidence metric will be close to 1 if the central pixel is relatively more similar to the average foreground color in the neighborhood. It will be close to zero if the central pixel is relatively more similar to the average background color in the neighborhood. At step 244, the reconstruction processor 450 determines the similarity of the identified peripheral pixels to the foreground.
4. Отметка знаком X всех периферийных пикселей, для которых С передний план<порогового значения (например, 0,5).4. Mark with an X all peripheral pixels for which C foreground < threshold value (e.g. 0.5).
5. Эродирование всех отмеченных пикселей, т.е. взятие минимального значения в локальной (например, 3×3) окрестности. На этапе 240a процессор 450 реконструкции применяет эту нелинейную фильтрацию к отмеченным периферийным пикселям (которые более схожи с задним планом, чем с передним планом).5. Eroding all marked pixels, i.e. taking the minimum value in a local (e.g., 3x3) neighborhood. At step 240a, the reconstruction processor 450 applies this nonlinear filtering to the marked peripheral pixels (which are more similar to the background than to the foreground).
Как упомянуто выше, этот процесс может вносить шум и может привести к неровным краям на карте глубины. Этапы, предпринимаемые для сглаживания краев объекта, представленного на карте глубины, следующие:As mentioned above, this process can introduce noise and can result in jagged edges in the depth map. The steps taken to smooth the edges of an object represented in the depth map are as follows:
1. Поиск локальных краев переднего плана, т.е. периферийных пикселей объектов переднего плана (вроде тех, которые помечены знаком X на фиг. 7).1. Finding local foreground edges, i.e. peripheral pixels of foreground objects (like those marked with X in Fig. 7).
2. Для этих краевых пикселей (например, центральный пиксель на фиг. 7) подсчет количества пикселей заднего плана в ядре 3×3 вокруг пикселя, представляющего интерес.2. For these edge pixels (e.g. the center pixel in Fig. 7), count the number of background pixels in a 3x3 kernel around the pixel of interest.
3. Отметка всех краевых пикселей, для которых подсчитанное количество > порогового значения.3. Mark all edge pixels for which the counted number > threshold value.
4. Эродирование всех отмеченных пикселей, т.е. взятие минимального значения в локальной (например, 3×3) окрестности. Этот этап выполняют с помощью процессора 450 реконструкции на этапе 250.4. Eroding all marked pixels, i.e. taking the minimum value in a local (e.g. 3×3) neighborhood. This step is performed by the reconstruction processor 450 at step 250.
Такое сглаживание имеет тенденцию к преобразованию выпадающих или выступающих пикселей переднего плана в пиксели заднего плана.This antialiasing tends to convert outlying or protruding foreground pixels into background pixels.
В вышеприведенном примере в способе для определения того, был ли выпадающий периферийный пиксель выступающим из объекта переднего плана, используют количество пикселей заднего плана в ядре 3×3. Могут быть использованы и другие способы. Например, в качестве альтернативы или дополнительно к подсчету количества пикселей могут быть проанализированы положения пикселей переднего плана и заднего плана в ядре. Если пиксели заднего плана все находятся по одну сторону от рассматриваемого пикселя, то с большей вероятностью это может быть пиксель переднего плана. С другой стороны, если пиксели заднего плана разбросаны повсюду вокруг рассматриваемого пикселя, то этот пиксель может быть выбросом или шумом, и, скорее всего, в действительности является пикселем заднего плана.In the above example, the method for determining whether an outlier peripheral pixel is protruding from a foreground object uses the number of background pixels in a 3x3 kernel. Other methods may be used. For example, as an alternative or in addition to counting the number of pixels, the positions of the foreground and background pixels in the kernel may be analyzed. If the background pixels are all on one side of the pixel in question, then it is more likely to be a foreground pixel. On the other hand, if the background pixels are scattered all around the pixel in question, then that pixel may be an outlier or noise, and is more likely to actually be a background pixel.
Пиксели в ядре могут быть классифицированы двоичным образом как передний план или задний план. Двоичный флаг кодирует это для каждого пикселя, причем логическая «1» указывает задний план, а логический «0» указывает передний план. Тогда окрестность (т.е. пиксели в ядре) может быть описана n-значным двоичным числом, где n является количеством пикселей в ядре, окружающем пиксель, представляющий интерес. Один пример способа построения двоичного числа приведен в следующей таблице:The pixels in the kernel can be classified binary as foreground or background. A binary flag encodes this for each pixel, with a logical "1" indicating background and a logical "0" indicating foreground. The neighborhood (i.e. the pixels in the kernel) can then be described by an n-digit binary number, where n is the number of pixels in the kernel surrounding the pixel of interest. One example of how to construct a binary number is given in the following table:
В этом примере b = b7 b6 b5 b4 b3 b2 b1 b0 = 101001012 = 165 (следует отметить, что алгоритм, описанный выше со ссылкой на фиг. 5, соответствует подсчету количества ненулевых битов в b (= 4)).In this example, b = b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 = 10100101 2 = 165 (it should be noted that the algorithm described above with reference to Fig. 5 corresponds to counting the number of non-zero bits in b (= 4)).
Тренировка включает подсчет для каждого значения b, насколько часто представляющий интерес пиксель (центральный пиксель ядра) является передним планом или задним планом. В предположении одинаковой стоимости ложных распознаваний и пропусков, пиксель определяют как пиксель переднего плана, если он с большей вероятностью (в тренировочном наборе) является пикселем переднего плана, чем пикселем заднего плана, и наоборот.Training involves calculating, for each value of b, how often the pixel of interest (the central pixel of the kernel) is foreground or background. Assuming equal costs for false positives and misses, a pixel is defined as foreground if it is more likely (in the training set) to be a foreground pixel than a background pixel, and vice versa.
Реализация декодера построит b и извлечет ответ (интересующий пиксель является пикселем переднего плана или интересующий пиксель является пикселем заднего плана) из таблицы подстановки (look up table, LUT).The decoder implementation will construct b and extract the answer (the pixel of interest is the foreground pixel or the pixel of interest is the background pixel) from a look up table (LUT).
Подход на основе нелинейно фильтрации карты глубины как в кодере, так и в декодере (например, дилатации и эрозии, соответственно, как описано выше), является парадоксальным, поскольку было бы естественно ожидать, что он удалит информацию из карты глубины. Однако авторы изобретения, к своему удивлению, обнаружили, что чем меньше карты глубины, которые создаются с использованием подхода на основе нелинейной понижающей дискретизации, тем с более высоким качеством они могут быть кодированы (с использованием обычного видеокодека) при данной скорости передачи битов. Этот выигрыш в качестве превышает потери в реконструкции; поэтому суммарный эффект заключается в повышении сквозного качества при снижении скорости передачи пикселей.The approach of nonlinearly filtering the depth map in both the encoder and decoder (e.g., dilation and erosion, respectively, as described above) is counterintuitive, since it would naturally be expected to remove information from the depth map. However, the inventors surprisingly found that the smaller the depth maps produced using the nonlinearly downsampled approach, the higher the quality they can be encoded with (using a conventional video codec) at a given bit rate. This quality gain outweighs the loss in reconstruction; therefore, the net effect is to improve end-to-end quality while reducing the pixel rate.
Как описано выше со ссылкой на фиг. 3 и 4, внутри видеокодера можно реализовать декодер, чтобы оптимизировать параметры нелинейной фильтрации и понижающей дискретизации и тем самым уменьшить ошибку реконструкции. В этом случае декодер 340 глубины в видеокодере 300 по существу идентичен кодеру 426 глубины в видеодекодере 400, а процессор 350 реконструкции в видеокодере 300 по существу идентичен процессору 450 реконструкции в видеодекодере 400. Эти соответствующие компоненты выполняют по существу идентичные процессы.As described above with reference to Fig. 3 and 4, a decoder can be implemented within the video encoder to optimize the parameters of nonlinear filtering and downsampling and thereby reduce the reconstruction error. In this case, the depth decoder 340 in the video encoder 300 is substantially identical to the depth encoder 426 in the video decoder 400, and the reconstruction processor 350 in the video encoder 300 is substantially identical to the reconstruction processor 450 in the video decoder 400. These respective components perform substantially identical processes.
Если параметры нелинейной фильтрации и понижающей дискретизации в видеокодере были выбраны так, чтобы уменьшить ошибку реконструкции, как описано выше, выбранные параметры могут быть сообщены в двоичном потоке метаданных, который является входными данными для видеодекодера. Процессор 450 реконструкции может использовать параметры, сообщенные в двоичном потоке метаданных, в качестве помощи для правильной реконструкции карты глубины. Параметры обработки реконструкции могут включать, без ограничений: коэффициент повышающей дискретизации в одном или обоих измерениях; размер ядра для идентификации периферийных пикселей объектов переднего плана; размер ядра для эрозии; тип нелинейной фильтрации, подлежащей применению (например, использовать ли фильтр «минимум» или фильтр другого типа); размер ядра для идентификации пикселей переднего плана и размер ядра для сглаживания.If the parameters of the nonlinear filtering and downsampling in the video encoder have been selected so as to reduce the reconstruction error, as described above, the selected parameters can be signaled in a binary metadata stream, which is the input to the video decoder. The reconstruction processor 450 can use the parameters signaled in the binary metadata stream as an aid for the correct reconstruction of the depth map. The reconstruction processing parameters can include, but are not limited to: an upsampling factor in one or both dimensions; a kernel size for identifying peripheral pixels of foreground objects; a kernel size for erosion; a type of nonlinear filtering to be applied (for example, whether to use a "minimum" filter or another type of filter); a kernel size for identifying foreground pixels and a kernel size for smoothing.
Далее со ссылкой на фиг. 9 будет описан альтернативный вариант реализации. В этом варианте реализации вместо нелинейных фильтров ручного кодирования для кодера и декодера используют архитектуру нейронной сети. Нейронная сеть разделена для моделирования операции уменьшения масштаба и увеличения масштаба глубины. Эта сеть проходит сквозную тренировку и учится как оптимальному уменьшению масштаба, так и оптимальному увеличению масштаба. Однако во время разработки (т.е. для кодирования и декодирования реальных последовательностей) первую часть используют до видеокодера, а вторую часть используют после видеодекодера. Таким образом, первая часть обеспечивает нелинейную фильтрацию 120 для способа кодирования, а вторая часть обеспечивает нелинейную фильтрацию 240 для способа декодирования.An alternative embodiment will now be described with reference to Fig. 9. In this embodiment, a neural network architecture is used instead of hand-coded nonlinear filters for the encoder and decoder. The neural network is divided to model the depth downscaling operation and the depth upscaling operation. This network is trained end-to-end and learns both the optimal downscaling and the optimal upscaling. However, during development (i.e., for encoding and decoding real sequences), the first part is used before the video encoder, and the second part is used after the video decoder. Thus, the first part provides nonlinear filtering 120 for the encoding method, and the second part provides nonlinear filtering 240 for the decoding method.
Параметры (веса) сети второй части сети могут быть переданы в виде метаданных с помощью двоичного потока. Следует отметить, что могут быть созданы различные наборы сетевых параметров, соответствующих различным конфигурациям кодирования (разные коэффициенты уменьшения масштаба, разные целевые скорости передачи битов и т.д.). Это означает, что увеличивающий масштаб фильтр для карты глубины будет вести себя оптимально для данной скорости передачи битов текстурной карты. Это может повысить производительность, поскольку артефакты кодирования текстуры изменяют характеристики яркости и цветности, и, особенно на границах объекта, это изменение приведет к разным весам нейронной сети увеличения масштаба глубины.The network parameters (weights) of the second part of the network can be transmitted as metadata using a binary stream. It should be noted that different sets of network parameters can be created corresponding to different encoding configurations (different downscaling factors, different target bit rates, etc.). This means that the upscaling filter for the depth map will behave optimally for a given texture map bit rate. This can improve performance, since texture encoding artifacts change the luminance and chroma characteristics, and especially at object boundaries, this change will lead to different weights of the depth upscaling neural network.
На фиг. 9 показан пример архитектуры для данного варианта реализации, в котором нейронная сеть представляет собой сверточную нейронную сеть (CNN). Символы на схеме означают следующее:Fig. 9 shows an example architecture for this embodiment, in which the neural network is a convolutional neural network (CNN). The symbols in the diagram mean the following:
- входная 3-канальная текстурная карта полного разрешения; - full resolution 3-channel input texture map;
- декодированная текстурная карта полного разрешения; - decoded full resolution texture map;
D - входная 1-канальная карта глубины полного разрешения; D - input 1-channel full resolution depth map;
- карта глубины уменьшенного масштаба; - reduced scale depth map;
- декодированная карта глубины уменьшенного масштаба; - decoded scaled depth map;
- свертка с ядром ; - convolution with kernel ;
- коэффициент уменьшения масштаба; - coefficient zoom out;
-коэффициент повышающей дискретизации. -coefficient upsampling.
Каждая вертикальная черная полоса на схеме представляет тензор входных данных или промежуточных данных, другими словами, входные данные для слоя нейронной сети. Размеры каждого тензора описываются тройкой (p, w, h), где w и h - ширина и высота изображения, соответственно, а p - количество плоскостей или каналов данных. Соответственно, входная текстурная карта имеет размеры (3, w, h) - три плоскости, соответствующие трем цветовым каналам. Подвергнутая понижающей дискретизации карта глубины имеет размеры (1, w/2, h/2).Each vertical black bar in the diagram represents a tensor of input or intermediate data, in other words, the input to a neural network layer. The dimensions of each tensor are described by a triple ( p, w, h ), where w and h are the width and height of the image, respectively, and p is the number of planes or channels of data. Accordingly, the input texture map has dimensions (3, w , h ) — three planes corresponding to the three color channels. The downsampled depth map has dimensions (1, w /2, h /2).
Уменьшение масштаба Pk может включать операцию усреднения уменьшения масштаба с коэффициентом k или подвыборки по максимальному значению (или подвыборки по минимальному значению) с размером ядра k. Операция усреднения уменьшения масштаба может вводить некоторые промежуточные значения, но последующие слои нейронной сети могут исправлять это (например, на основе информации о текстуре).The downscaling of P k may involve an averaging downscaling operation with a factor of k or a max-pooling (or min-pooling) operation with a kernel size of k. The averaging downscaling operation may introduce some intermediate values, but subsequent layers of the neural network may correct for this (e.g. based on texture information).
Следует отметить, что на фазе тренировки декодированную карту глубины, , не используют. Вместо этого используют несжатую карту глубины уменьшенного масштаба. Причина этого заключается в том, что на фазе тренировки нейронной сети требуется вычисление производных, что невозможно для нелинейной функции видеокодера. На практике это приближение, скорее всего, будет справедливо, особенно для более высокого качества (более высоких скоростей передачи битов). На фазе логического вывода (т.е. при обработке реальных видеоданных) несжатая карта глубины уменьшенного масштаба, очевидно, недоступна видеодекодеру. Поэтому используют декодированную карту глубины. Следует отметить также, что декодированную текстурную карту полного разрешения используют на фазе тренировки, как и на фазе логического вывода. Вычислять производные нет необходимости, поскольку это вспомогательная информация, а не данные, обрабатываемые нейронной сетью.It should be noted that during the training phase, the decoded depth map, , do not use. Instead, use an uncompressed map downscaled depth. The reason for this is that the neural network training phase requires derivative calculations, which is not possible for a nonlinear video encoder function. In practice, this approximation is likely to be valid, especially for higher quality (higher bit rates). In the inference phase (i.e. when processing real video data), the uncompressed map the reduced scale depth is obviously not available to the video decoder. Therefore, a decoded map is used depth. It should also be noted that the decoded texture map full resolution is used in the training phase as well as in the inference phase. There is no need to calculate derivatives, since this is auxiliary information and not data processed by the neural network.
Вторая часть нейронной сети (после декодирования видео) будет, как правило, содержать только несколько сверточных слоев ввиду сложности ограничений, которые возможны на клиентском устройстве.The second part of the neural network (after video decoding) will typically contain only a few convolutional layers due to the complexity of constraints that are possible on the client device.
Для использования подхода на основе глубокого изучения важно наличие тренировочных данных. В этом случае их легко получить. Несжатое текстурное изображение и карту глубины полного разрешения используют на стороне ввода перед кодированием видео. Вторая часть сети использует декодированную текстуру и карту глубины уменьшенного масштаба (посредством первой половины сети в качестве входных данных для тренировки), и ошибка оценивается по соответствующей действительности карте глубины полного разрешения, которую также использовали в качестве входных данных. Поэтому, по сути, накладки из исходной карты глубины высокого разрешения служат для нейронной сети как входными данными, так и выходными данными. Следовательно, сеть имеет некоторые аспекты как архитектуры автоматического кодера, так и архитектуры UNet. Однако предлагаемая архитектура - это не просто комбинация этих подходов. Например, декодированная текстурная карта поступает во вторую часть сети в качестве вспомогательных данных для оптимальной реконструкции карты глубины высокого разрешения.For the deep learning approach to be used, it is important to have training data. In this case, it is easy to obtain. The uncompressed texture image and the full-resolution depth map are used on the input side before video encoding. The second part of the network uses the decoded texture and the downscaled depth map (via the first half of the network as input for training), and the error is estimated from the ground truth full-resolution depth map, which was also used as input. Therefore, in essence, the overlays from the original high-resolution depth map serve as both input and output for the neural network. Therefore, the network has some aspects of both the autoencoder and UNet architectures. However, the proposed architecture is not just a combination of these approaches. For example, the decoded texture map is fed to the second part of the network as auxiliary data for optimal reconstruction of the high-resolution depth map.
В примере, показанном на фиг. 9, входные данные нейронной сети в видеокодере 300 содержат текстурную карту и карту D глубины. Понижающую дискретизацию P 2 выполняют между двумя слоями нейронной сети. Существуют три слоя нейронной сети до понижающей дискретизации и два слоя после нее. Выходные данные части нейронной сети в видеокодере 300 содержат карту глубины уменьшенного масштаба. Она кодируется кодером 320 на этапе 140.In the example shown in Fig. 9, the input data to the neural network in video encoder 300 comprises a texture map and a depth map D. The downsampling P 2 is performed between the two layers of the neural network. There are three layers of the neural network before the downsampling and two layers after it. The output of the neural network portion of the video encoder 300 contains a map reduced scale depth. It is encoded by the encoder 320 at step 140.
Кодированную карту глубины передают в видеодекодер 400 в двоичном видеопотоке. Ее декодируют с помощью декодера 426 глубины на этапе 226. В результате получают декодированную карту глубины уменьшенного масштаба. К ней применяют повышающую дискретизацию (U2) для использования в части нейронной сети в видеодекодере 400. Другой частью входных данных для этой части нейронной сети является декодированная текстурная карта полного разрешения, которая сформирована декодером 424 текстуры. Вторая часть нейронной сети имеет три слоя. Она создает в качестве выходных данных реконструированную оценку , которую сравнивают с первоначальной картой D глубины для получения итоговой ошибки e.The encoded depth map is transmitted to the video decoder 400 in a binary video stream. It is decoded using the depth decoder 426 in step 226. The result is a decoded map downscaled depth. It is upsampled (U 2 ) for use in the neural network portion of video decoder 400. Another part of the input to this portion of the neural network is the decoded texture map full resolution, which is generated by the 424 texture decoder. The second part of the neural network has three layers. It produces as output a reconstructed estimate , which is compared with the original depth map D to obtain the final error e .
Из вышесказанного понятно, что обработка нейронной сетью может быть реализована в видеокодере 300 с помощью видеопроцессора 320 и в видеодекодере 400 с помощью процессора 450 реконструкции. В показанном примере нелинейную фильтрацию 120 и понижающую дискретизацию 130 выполняют интегрированным образом с помощью части нейронной сети в видеокодере 300. В видеодекодере 400 повышающую дискретизацию 230 выполняют отдельно перед нелинейной фильтрацией 240, которую выполняют с помощью нейронной сети.From the above, it is clear that neural network processing can be implemented in the video encoder 300 using the video processor 320 and in the video decoder 400 using the reconstruction processor 450. In the example shown, nonlinear filtering 120 and downsampling 130 are performed in an integrated manner using a portion of the neural network in the video encoder 300. In the video decoder 400, upsampling 230 is performed separately before the nonlinear filtering 240, which is performed using the neural network.
Понятно, что расположение слоев нейронной сети, показанное на Фиг. 9, не имеет ограничительного характера и может быть изменено в других вариантах реализации. В этом примере сеть создает подвергнутые понижающей дискретизации карты глубины размером 2×Разумеется, могут быть использованы и другие коэффициенты масштабирования.It is understood that the arrangement of the neural network layers shown in Fig. 9 is not restrictive and can be changed in other implementations. In this example, the network produces downsampled depth maps of size 2×Of course, other scaling factors can also be used.
В нескольких вариантах реализации, описанных выше, упоминались фильтрация с выбором максимума, подвыборка по максимальному значению, дилатация или аналогичные операции в кодере. Понятно, что в этих вариантах реализации предполагается, что глубину кодируют как 1/d (или другую подобную обратную зависимость), где d является расстоянием от камеры. При таком предположении более высокие значения на карте глубины указывают объекты переднего плана, а низкие значения на карте глубины обозначают задний план. Таким образом, применяя операцию типа максимума или дилатации, способ стремится увеличить объекты переднего плана. Соответствующий обратный процесс в декодере может заключаться в применении операции типа минимума или эрозии.Several of the implementations described above mentioned maximum filtering, maximum subsampling, dilation, or similar operations in the encoder. It is understood that these implementations assume that depth is encoded as 1/d (or some other similar inverse relationship), where d is the distance from the camera. Under this assumption, higher values in the depth map indicate foreground objects, and lower values in the depth map indicate the background. Thus, by applying a maximum or dilation-type operation, the method tends to increase foreground objects. The corresponding inverse process in the decoder may consist of applying a minimum or erosion-type operation.
Конечно, в других вариантах реализации глубина может быть кодирована как d или log d (или другая переменная, которая находится в прямой корреляционной зависимости с d). Это означает, что объекты переднего плана представлены низкими значениями d, а задний план высокими значениями d. В таких вариантах реализации в кодере может быть выполнена фильтрация с выбором минимума, подвыборка по минимальному значению, эрозия или подобная операция. Опять же, это будет иметь тенденцию к увеличению объектов переднего плана, что и является целью. Соответствующий обратный процесс в декодере может заключаться в применении операции типа максимума или дилатации.Of course, in other implementations, depth may be encoded as d or log d (or some other variable that is positively correlated with d). This means that foreground objects are represented by low d values and background objects by high d values. In such implementations, min-selection filtering, min-pooling, erosion, or some similar operation may be performed in the encoder. Again, this will tend to increase foreground objects, which is the goal. The corresponding inverse process in the decoder may be to apply a max-type operation or a dilation.
Способы кодирования и декодирования на фиг. 2, 4, 5, 8 и 9, и кодер и декодер на фиг. 3 и 6 могут быть реализованы в аппаратных средствах или программном обеспечении или в сочетании того и другого (например, в виде прошивки, запущенной на аппаратном устройстве). В той степени, в которой вариант осуществления частично или полностью реализован в программном обеспечении, функциональные этапы, показанные в блок-схемах процесса, могут быть выполнены с помощью соответствующим образом запрограммированных физических вычислительных устройств, таких как один или более центральных процессоров (ЦП), графических процессоров (ГП) или ускорителей нейронных сетей (УНС). Каждый процесс и его отдельные составляющие этапы, как показано на блок-схемах, может быть выполнен одним и тем же или различными вычислительными устройствами. В соответствии с вариантами реализации, компьютерочитаемый носитель для хранения данных хранит компьютерную программу, содержащую компьютерный программный код, выполненный с возможностью вызова выполнения одними или более физическими вычислительными устройствами способа кодирования или декодирования, как описано выше, при выполнении программы на одном или более физических вычислительных устройств.The encoding and decoding methods of Figs. 2, 4, 5, 8 and 9, and the encoder and decoder of Figs. 3 and 6 may be implemented in hardware or software, or a combination of both (e.g., as firmware running on a hardware device). To the extent that an embodiment is partially or completely implemented in software, the functional steps shown in the process flow charts may be performed by suitably programmed physical computing devices, such as one or more central processing units (CPUs), graphic processing units (GPUs), or neural network accelerators (NNAs). Each process and its individual constituent steps, as shown in the flow charts, may be performed by the same or different computing devices. According to embodiments, a computer-readable data storage medium stores a computer program containing a computer program code configured to cause one or more physical computing devices to perform an encoding or decoding method as described above when the program is executed on one or more physical computing devices.
Носитель данных может содержать энергозависимую и энергонезависимую компьютерную память, такую как ОЗУ, ППЗУ, СППЗУ и ЭСППЗУ. Различные носители данных могут находиться в пределах вычислительного устройства или выполнены с возможностью перемещения, так что одна или более программ, хранящихся на носителях данных, могут быть загружены в процессор.The storage medium may comprise volatile and nonvolatile computer memory, such as RAM, PROM, EPROM, and EEPROM. The various storage media may be located within the computing device or may be movable so that one or more programs stored on the storage media may be loaded into the processor.
Метаданные согласно одному варианту осуществления могут храниться на носителе для хранения данных. Битовый поток согласно одному варианту осуществления может храниться на одном и том же носителе для хранения данных или другом носителе для хранения данных. Метаданные могут быть вложены в битовый поток, но это не существенно. Аналогично, метаданные и/или двоичные потоки (с метаданными в двоичном потоке или отдельно от него) могут быть переданы в виде сигнала, смодулированного на электромагнитной несущей волне. Сигнал может быть определен в соответствии со стандартом цифровой связи. Несущая волна может быть несущей оптического диапазона, волной радиочастоты, миллиметровой волной или волной связи ближнего поля. Она может передаваться проводным или беспроводным способом.According to one embodiment, the metadata may be stored on a data storage medium. According to one embodiment, the bitstream may be stored on the same data storage medium or on a different data storage medium. The metadata may be embedded in the bitstream, but this is not essential. Similarly, the metadata and/or the bitstreams (with or without the metadata in the bitstream) may be transmitted as a signal modulated on an electromagnetic carrier wave. The signal may be defined in accordance with a digital communication standard. The carrier wave may be an optical carrier, a radio frequency wave, a millimeter wave, or a near-field communication wave. It may be transmitted by wire or wirelessly.
В той степени, в которой вариант осуществления частично или полностью реализован в аппаратных средствах, блоки, показанные на блок-схемах на Фиг. 3 и 6, могут быть отдельными физическими компонентами или логическими звеньями отдельных физических компонентов, либо все они могут быть реализованы интегрированным образом в одном физическом компоненте. Функции одного блока, показанного на чертежах, при реализации могут быть разделены между несколькими компонентами, либо функции нескольких блоков, показанных на чертежах, при реализации могут быть объединены в отдельные компоненты. Например, хотя на Фиг. 6 декодер 424 текстуры и декодер 426 глубины показаны как отдельные компоненты, их функции могут быть обеспечены одним унифицированным компонентом декодера.To the extent that the embodiment is partially or completely implemented in hardware, the blocks shown in the block diagrams of Figs. 3 and 6 may be separate physical components or logical units of separate physical components, or they may all be implemented in an integrated manner in a single physical component. The functions of one block shown in the drawings may be divided between several components when implemented, or the functions of several blocks shown in the drawings may be combined into separate components when implemented. For example, although the texture decoder 424 and the depth decoder 426 are shown as separate components in Fig. 6, their functions may be provided by a single unified decoder component.
В целом, примеры способов кодирования и декодирования данных, компьютерная программа, которая реализует эти способы, и видеокодеры и видеодекодеры указаны в нижеприведенных вариантах реализации.In general, examples of methods for encoding and decoding data, a computer program that implements these methods, and video encoders and video decoders are indicated in the following embodiments.
ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯIMPLEMENTATION OPTIONS
1. Способ кодирования видеоданных, содержащих один или более исходных видов, причем каждый исходный вид содержит текстурную карту и карту глубины, при этом способ включает:1. A method for encoding video data containing one or more source views, wherein each source view contains a texture map and a depth map, wherein the method includes:
прием (110) видеоданных;receiving (110) video data;
обработку карты глубины по меньшей мере одного исходного вида для формирования обработанной карты глубины, включающую:processing a depth map of at least one source view to generate a processed depth map, including:
нелинейную фильтрацию (120) иnonlinear filtering (120) and
понижающую дискретизацию (130); иdownsampling (130); and
кодирование (140) обработанной карты глубины и текстурной карты по меньшей мере одного исходного вида для формирования двоичного видеопотока.encoding (140) the processed depth map and the texture map of at least one original view to form a binary video stream.
2. Способ по варианту реализации 1, в котором нелинейная фильтрация включает увеличение области по меньшей мере одного объекта переднего плана на карте глубины.2. The method according to embodiment 1, wherein the nonlinear filtering includes increasing the region of at least one foreground object in the depth map.
3. Способ по варианту реализации 1 или 2, в котором нелинейная фильтрация включает применение фильтра, разработанного с использованием алгоритма машинного обучения.3. The method according to embodiment 1 or 2, wherein the nonlinear filtering includes the use of a filter developed using a machine learning algorithm.
4. Способ по любому из предыдущих вариантов реализации, в котором нелинейную фильтрацию выполняют с помощью нейронной сети, содержащей множество слоев, а понижающую дискретизацию выполняют между двумя из указанных слоев.4. The method according to any of the previous embodiments, in which the nonlinear filtering is performed using a neural network containing multiple layers, and the downsampling is performed between two of the said layers.
5. Способ по любому из предыдущих вариантов реализации, который включает обработку (120a, 130a) карты глубины в соответствии с множеством наборов параметров обработки для формирования соответствующего множества обработанных карт глубины,5. The method according to any of the previous embodiments, which includes processing (120a, 130a) a depth map in accordance with a plurality of sets of processing parameters to generate a corresponding plurality of processed depth maps,
при этом способ также включает:the method also includes:
выбор набора параметров обработки, который уменьшает ошибку реконструкции реконструированной карты глубины после того, как соответствующая обработанная карта глубины была кодирована и декодирована; иselecting a set of processing parameters that reduces the reconstruction error of the reconstructed depth map after the corresponding processed depth map has been encoded and decoded; and
формирование двоичного потока метаданных, идентифицирующего выбранный набор параметров.generating a binary metadata stream identifying the selected set of parameters.
6. Способ декодирования видеоданных, содержащих один или более исходных видов, включающий:6. A method for decoding video data containing one or more source types, comprising:
прием (210) двоичного видеопотока, содержащего кодированную карту глубины и кодированную текстурную карту по меньшей мере для одного исходного вида;receiving (210) a binary video stream containing an encoded depth map and an encoded texture map for at least one source view;
декодирование (226) кодированной карты глубины для получения декодированной карты глубины;decoding (226) the encoded depth map to obtain a decoded depth map;
декодирование (224) кодированной текстурной карты для получения декодированной текстурной карты; иdecoding (224) the encoded texture map to obtain a decoded texture map; and
обработку декодированной карты глубины для формирования реконструированной карты глубины, при этом обработка включает:processing the decoded depth map to form a reconstructed depth map, wherein the processing includes:
повышающую дискретизацию (230) иupsampling (230) and
нелинейную фильтрацию (240).nonlinear filtering (240).
7. Способ по варианту реализации 6, также включающий перед этапом обработки декодированной карты глубины для формирования реконструированной карты глубины обнаружение того, что декодированная карта имеет меньшее разрешение, чем декодированная текстурная карта.7. The method according to embodiment 6, also including, before the step of processing the decoded depth map to form the reconstructed depth map, detecting that the decoded map has a lower resolution than the decoded texture map.
8. Способ по варианту реализации 6 или варианту реализации 7, в котором нелинейная фильтрация включает уменьшение области по меньшей мере одного объекта переднего плана на карте глубины.8. The method according to embodiment 6 or embodiment 7, wherein the nonlinear filtering comprises reducing the area of at least one foreground object in the depth map.
9. Способ по любому из вариантов реализации 6-8, в котором обработка декодированной карты глубины основана по меньшей мере частично на декодированной текстурной карте.9. The method according to any one of embodiments 6-8, wherein the processing of the decoded depth map is based at least in part on the decoded texture map.
10. Способ по любому из вариантов реализации 6-9, включающий:10. A method according to any of embodiments 6-9, comprising:
повышающую дискретизацию (230) декодированной карты глубины;upsampling (230) the decoded depth map;
идентификацию (242) периферийных пикселей по меньшей мере одного объекта переднего плана на подвергнутой повышающей дискретизации карте глубины;identifying (242) peripheral pixels of at least one foreground object in the upsampled depth map;
определение (244) на основе декодированной текстурной карты, похожи ли периферийные пиксели больше на объект переднего плана или на задний план; иdetermining (244) based on the decoded texture map whether the peripheral pixels are more similar to the foreground object or to the background; and
применение (240a) нелинейной фильтрации только к периферийным пикселям, которые определены как более похожие на задний план.applying (240a) nonlinear filtering only to the peripheral pixels that are determined to be more similar to the background.
11. Способ по любому из вариантов реализации, в котором нелинейная фильтрация включает сглаживание (250) краев по меньшей мере одного объекта переднего плана.11. The method according to any of the embodiments, wherein the nonlinear filtering includes smoothing (250) the edges of at least one foreground object.
12. Способ по любому из вариантов реализации 6-11, также включающий прием двоичного потока метаданных, связанного с двоичным видеопотоком, причем двоичный поток метаданных идентифицирует набор параметров,12. The method according to any one of embodiments 6-11, further comprising receiving a binary metadata stream associated with the binary video stream, wherein the binary metadata stream identifies a set of parameters,
а способ также включает обработку декодированной карты глубины в соответствии с идентифицированным набором параметров.and the method also includes processing the decoded depth map in accordance with the identified set of parameters.
13. Компьютерная программа, содержащая компьютерный код для вызова реализации системой обработки любого из вариантов реализации 1-12 при запуске указанной программы в системе обработки.13. A computer program containing computer code for calling the implementation by the processing system of any of the implementation options 1-12 when the specified program is launched in the processing system.
14. Видеокодер (300), выполненный с возможностью кодирования видеоданных, содержащих один или более исходных видов, причем каждый исходный вид содержит текстурную карту и карту глубины, при этом видеокодер содержит:14. A video encoder (300) configured to encode video data comprising one or more source views, wherein each source view comprises a texture map and a depth map, wherein the video encoder comprises:
вход (310), выполненный с возможностью приема видеоданных;an input (310) capable of receiving video data;
видеопроцессор (320), выполненный с возможностью обработки карты глубины по меньшей мере одного исходного вида для формирования обработанной карты глубины, включающей:a video processor (320) configured to process a depth map of at least one source view to generate a processed depth map, including:
нелинейную фильтрацию (120) иnonlinear filtering (120) and
понижающую дискретизацию (130);downsampling (130);
кодер (330), выполненный с возможностью кодирования текстурной карты по меньшей мере одного исходного вида и обработанной карты глубины для формирования двоичного видеопотока; иan encoder (330) configured to encode a texture map of at least one original view and a processed depth map to form a binary video stream; and
выход (360), выполненный с возможностью вывода двоичного видеопотока.output (360) capable of outputting a binary video stream.
15. Видеодекодер (400), выполненный с возможностью декодирования видеоданных, содержащих один или более исходных видов, при этом видеодекодер содержит:15. A video decoder (400) configured to decode video data containing one or more source views, wherein the video decoder comprises:
вход (410) двоичного потока, выполненный с возможностью приема двоичного видеопотока, причем двоичный видеопоток содержит кодированную карту глубины и кодированную текстурную карту по меньшей мере для одного исходного вида;a binary stream input (410) configured to receive a binary video stream, wherein the binary video stream comprises an encoded depth map and an encoded texture map for at least one source view;
первый декодер (426), выполненный с возможностью декодирования из двоичного видеопотока кодированной карты глубины для получения декодированной карты глубины;a first decoder (426) configured to decode from the binary video stream an encoded depth map to obtain a decoded depth map;
второй декодер (424), выполненный с возможностью декодирования из двоичного видеопотока кодированной текстурной карты для получения декодированной текстурной карты;a second decoder (424) configured to decode from the binary video stream an encoded texture map to obtain a decoded texture map;
процессор (450) реконструкции, выполненный с возможностью обработки декодированной карты глубины для формирования реконструированной карты глубины, при этом обработка включает:a reconstruction processor (450) configured to process the decoded depth map to generate a reconstructed depth map, wherein the processing includes:
повышающую дискретизацию (230) иupsampling (230) and
нелинейную фильтрацию (240),nonlinear filtering (240),
и выход (470), выполненный с возможностью вывода реконструированной карты глубины.and an output (470) configured to output the reconstructed depth map.
В число компонентов аппаратных средств для использования в вариантах реализации настоящего изобретения входят, без ограничений, обычные микропроцессоры, специализированные интегральные схемы (ASIC) и программируемые пользователем вентильные матрицы (FPGA). Один или более блоков могут быть реализованы в виде комбинации специализированных аппаратных средств для выполнения некоторых функций и одного или более запрограммированных микропроцессоров и связанных с ними схем для выполнения других функций.Hardware components for use in embodiments of the present invention include, but are not limited to, conventional microprocessors, application-specific integrated circuits (ASICs), and field-programmable gate arrays (FPGAs). One or more units may be implemented as a combination of specialized hardware to perform some functions and one or more programmed microprocessors and associated circuits to perform other functions.
Более конкретно, настоящее изобретение определено прилагаемой формулой изобретения.More specifically, the present invention is defined by the appended claims.
Другие вариации описанных вариантов осуществления могут быть поняты и реализованы специалистом в данной области техники при осуществлении заявленного изобретения на практике после ознакомления с чертежами, описанием и прилагаемой формулой изобретения. В пунктах формулы изобретения слово "содержащий" не исключает другие элементы или этапы, а грамматические средства выражения единственного числа не исключают множества. Отдельный процессор или другой блок может выполнять функции нескольких изделий, указанных в формуле изобретения. Сам факт того, что некоторые меры перечислены во взаимно отличающихся зависимых пунктах формулы изобретения, не указывает на то, что комбинация этих мер не может быть использована для получения преимущества. В случае компьютерной программы, обсужденной выше, она может храниться/распространяться на подходящем носителе, таком как оптический носитель для хранения данных или твердотельный носитель, поставляемый вместе с другими аппаратными средствами или как их часть, но может также распространяться в других формах, например, через сеть Интернет или другие проводные или беспроводные телекоммуникационные системы. Если термин «выполнен таким образом, чтобы» используется в формуле изобретения или описании, следует отметить, что термин «выполнен таким образом, чтобы» следует считать эквивалентным термину «выполнен с возможностью». Никакие ссылочные позиции в формуле изобретения не следует рассматривать как ограничивающие ее объем.Other variations of the described embodiments may be understood and effected by a person skilled in the art in practicing the claimed invention after reading the drawings, description and appended claims. In the claims, the word "comprising" does not exclude other elements or steps, and the grammatical means of expression of the singular does not exclude a plurality. A single processor or other unit may perform the functions of several articles specified in the claims. The mere fact that some measures are listed in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage. In the case of a computer program discussed above, it may be stored/distributed on a suitable medium, such as an optical storage medium or a solid-state medium supplied with or as part of other hardware, but may also be distributed in other forms, for example via the Internet or other wired or wireless telecommunication systems. When the term "made so that" is used in the claims or description, it should be noted that the term "made so that" should be considered equivalent to the term "made with the possibility of". No reference signs in the claims should be considered as limiting their scope.
Claims (54)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP19217418.3 | 2019-12-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2831969C1 true RU2831969C1 (en) | 2024-12-17 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9117277B2 (en) * | 2012-04-04 | 2015-08-25 | Canon Kabushiki Kaisha | Determining a depth map from images of a scene |
RU2583040C2 (en) * | 2011-08-30 | 2016-05-10 | Нокиа Текнолоджиз Ой | Device, method and computer program for encoding and decoding video signals |
US9398313B2 (en) * | 2010-12-29 | 2016-07-19 | Nokia Technologies Oy | Depth map coding |
WO2018218643A1 (en) * | 2017-06-02 | 2018-12-06 | Shanghaitech University | Method and apparatus for estimating depth of field information |
US10417748B2 (en) * | 2009-10-14 | 2019-09-17 | Dolby Laboratories Licensing Corporation | Filtering and edge encoding and decoding for depth maps |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10417748B2 (en) * | 2009-10-14 | 2019-09-17 | Dolby Laboratories Licensing Corporation | Filtering and edge encoding and decoding for depth maps |
US9398313B2 (en) * | 2010-12-29 | 2016-07-19 | Nokia Technologies Oy | Depth map coding |
RU2583040C2 (en) * | 2011-08-30 | 2016-05-10 | Нокиа Текнолоджиз Ой | Device, method and computer program for encoding and decoding video signals |
US9117277B2 (en) * | 2012-04-04 | 2015-08-25 | Canon Kabushiki Kaisha | Determining a depth map from images of a scene |
WO2018218643A1 (en) * | 2017-06-02 | 2018-12-06 | Shanghaitech University | Method and apparatus for estimating depth of field information |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7619365B2 (en) | Video data encoding method | |
US10657689B2 (en) | Method and apparatus for point cloud color processing | |
Kaplanyan et al. | DeepFovea: Neural reconstruction for foveated rendering and video compression using learned statistics of natural videos | |
JP5448912B2 (en) | How to upsample an image | |
US11792453B2 (en) | Coding scheme for immersive video with asymmetric down-sampling and machine learning | |
KR20190117287A (en) | Method and apparatus for processing duplicate point | |
CN115606179A (en) | CNN filter for learning-based downsampling for image and video coding using learned downsampling features | |
JP2010218548A (en) | Method for synthesizing virtual image | |
CN115552905A (en) | Global skip connection based CNN filter for image and video coding | |
JP2024532068A (en) | Method and system for encoding and decoding data - Patents.com | |
RU2831969C1 (en) | Coding scheme for video data using down/up sampling and non-linear filtering of depth map | |
CN116601958A (en) | Virtual viewpoint drawing, rendering and decoding methods and devices, equipment and storage medium | |
US11727536B2 (en) | Method and apparatus for geometric smoothing | |
KR20250002528A (en) | Parallel processing of image regions using neural networks - decoding, post-filtering, and RDOQ | |
EP3912125A1 (en) | Enhancement of three-dimensional facial scans | |
EP4418652A1 (en) | Transmitting image data | |
Ye et al. | Learning multi-granularity semantic interactive representation for joint low-light image enhancement and super-resolution | |
JP7529052B2 (en) | Information processing device, information processing system, information processing method, and program | |
KR20250003846A (en) | Parallel processing of image regions using neural networks - decoding, post-filtering, and RDOQ | |
Cheng | Artistic and semantic progressive image coding | |
CN117974864A (en) | A method, device, equipment and storage medium for synthesizing dynamic new perspective images |