ES2928563T3 - Implementación eficiente de un filtro bilateral conjunto - Google Patents

Implementación eficiente de un filtro bilateral conjunto Download PDF

Info

Publication number
ES2928563T3
ES2928563T3 ES18713711T ES18713711T ES2928563T3 ES 2928563 T3 ES2928563 T3 ES 2928563T3 ES 18713711 T ES18713711 T ES 18713711T ES 18713711 T ES18713711 T ES 18713711T ES 2928563 T3 ES2928563 T3 ES 2928563T3
Authority
ES
Spain
Prior art keywords
image
depth
volume
splatting
pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18713711T
Other languages
English (en)
Inventor
Abraham Karel Riemens
Bart Gerard Bernard Barenbrug
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ultra D Cooeperatief U A
Ultra D Cooperatief UA
Original Assignee
Ultra D Cooeperatief U A
Ultra D Cooperatief UA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ultra D Cooeperatief U A, Ultra D Cooperatief UA filed Critical Ultra D Cooeperatief U A
Application granted granted Critical
Publication of ES2928563T3 publication Critical patent/ES2928563T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/261Image signal generators with monoscopic-to-stereoscopic image conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/10Image enhancement or restoration using non-spatial domain filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/248Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/20Image signal generators
    • H04N13/271Image signal generators wherein the generated image signals comprise depth maps or disparity maps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details
    • G06T2207/20028Bilateral filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

Se proporciona un circuito integrado y un método implementado por computadora para estimar un mapa de profundidad a partir de una imagen utilizando un filtro bilateral conjunto con una complejidad computacional reducida. Para ello, se accede a los datos de imagen de una imagen, así como a los datos de profundidad de un mapa de profundidad de plantilla. A continuación, se aplica un filtro bilateral conjunto al mapa de profundidad de la plantilla utilizando los datos de la imagen como un término de rango en el filtro bilateral conjunto, obteniendo así un mapa de profundidad adaptado a la imagen como salida. La aplicación del filtro bilateral conjunto comprende inicializar un volumen de suma de profundidades ponderadas y un volumen de suma de pesos como respectivas estructuras de datos vacías en una memoria, realizar una operación de salpicadura para llenar dichos volúmenes, realizar una operación de corte para obtener un volumen de profundidad adaptado a la imagen y realizando una operación de interpolación para obtener un valor de profundidad adaptado a la imagen del mapa de profundidad adaptado a la imagen para cada píxel de la imagen. Comparado con métodos conocidos para estimar un mapa de profundidad a partir de una imagen utilizando un filtro bilateral conjunto , se obtiene una complejidad computacional reducida. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Implementación eficiente de un filtro bilateral conjunto
Campo de la invención
La invención se refiere a un circuito integrado configurado para estimar un mapa de profundidad a partir de una imagen utilizando un filtro bilateral conjunto. La invención se refiere además a un procedimiento para estimar un mapa de profundidad a partir de una imagen utilizando un filtro bilateral conjunto, y a un medio legible por dispositivo informático que comprende unos datos transitorios o no transitorios que representan instrucciones dispuestas para hacer que un sistema procesador realice el procedimiento.
Técnica anterior
Dispositivos de visualización, tales como televisores, tabletas y teléfonos inteligentes, pueden incluir un visualizador 3D para proporcionar al usuario una percepción de profundidad cuando observa un contenido en dicho dispositivo. Para este fin, estos visualizadores 3D pueden, por sí mismos o junto con unas gafas que lleva el usuario, proporcionar al usuario imágenes diferentes en cada ojo para ofrecerle una percepción de profundidad basada en estereoscopía.
Los visualizadores 3D suelen requerir contenidos que contengan información de profundidad. La información de profundidad se puede proporcionar implícitamente en el contenido 3D. Por ejemplo, en el caso de contenido estereoscópico, también denominado contenido "estéreo", la información de profundidad se proporciona a través de las diferencias entre una imagen izquierda y una imagen derecha. La información de profundidad también se puede proporcionar explícitamente en el contenido 3D. Por ejemplo, en contenidos 3D codificados en el formato denominado imagen profundidad, la información de profundidad se proporciona a través de un mapa de profundidad que puede comprender valores de profundidad, valores de disparidad y/o valores de desplazamiento paraláctico, siendo cada uno de dichos valores indicativo de la distancia que tienen los objetos de la imagen con respecto a la cámara.
Una gran cantidad de contenidos disponibles actualmente, por ejemplo, películas, programas de televisión, imágenes, etc., son contenidos 2D. Dichos contenidos necesitan ser convertidos a 3D para permitir su representación en 3D en un visualizador 3D. La conversión a 3D puede comprender la generación de un mapa de profundidad para una imagen 2D, por ejemplo, para cada imagen 2D de un vídeo 2D. En general, este proceso se denomina "conversión de 2D a 3D", y puede implicar la creación manual del mapa de profundidad. Por ejemplo, una herramienta de software que se ejecuta en una estación de trabajo puede ofrecer a un usuario profesional la posibilidad de añadir profundidad a las imágenes 2D dibujando mapas de profundidad con un lápiz digital. El mapa de profundidad también se puede generar automáticamente. Por ejemplo, un dispositivo puede estimar la distancia que los objetos dentro de la imagen 2D tienen con respecto a la cámara y, en base a la misma, generar un mapa de profundidad para la imagen 2D.
Un ejemplo de generación automática de un mapa de profundidad es conocido en el documento US 8.447.141, que describe un procedimiento de generación de un mapa de profundidad para una imagen utilizando información monocular. El procedimiento comprende la generación de un primer mapa de profundidad para la imagen que proporciona un perfil de profundidad global, y que puede ser una plantilla genérica simple tal como una inclinación. Además, se genera un segundo mapa de profundidad que se basa en valores de profundidad del primer mapa de profundidad y en valores de color y/o luminancia de la imagen. La generación del segundo mapa de profundidad puede implicar la aplicación de un filtro bilateral conjunto al primer mapa de profundidad utilizando la información de rango de la imagen. Se dice que, como resultado, los objetos se distinguirán más con respecto del perfil de profundidad global.
Efectivamente, el documento US 8.447.141 utiliza el filtro bilateral conjunto para adaptar la plantilla genérica proporcionada por el mapa de profundidad al contenido real de la imagen.
Sin embargo, la implementación de un filtro bilateral conjunto es compleja desde el punto de vista de procesamiento. La publicación "A fast approximation of the bilateral filter using a signal processing approach" de Paris et al., International Journal of Computer Vision 81.1, 2009, pp. 24 - 52, describe una aproximación del filtro bilateral conjunto que se dice que es menos compleja desde el punto de vista de procesamiento. La aproximación descrita del filtro bilateral tiene la desventaja de que sigue siendo relativamente compleja desde el punto de vista de procesamiento y, por lo tanto, no es adecuada para una implementación eficiente en cuanto a coste en dispositivos de consumidores, por ejemplo, en un circuito integrado.
Resumen de la invención
Uno de los objetos de la invención es obtener un circuito integrado configurado para estimar un mapa de profundidad a partir de una imagen utilizando un filtro bilateral conjunto, que es menos complejo desde el punto de vista de procesamiento que la aproximación descrita por Paris et al.
Un primer aspecto de la invención proporciona un circuito integrado configurado para estimar un mapa de profundidad a partir de una imagen, en el que el circuito integrado es definido por la reivindicación 1. Otro aspecto de la invención proporciona un procedimiento implementado por dispositivo informático para estimar un mapa de profundidad a partir de una imagen, en el que el procedimiento es definido por la reivindicación 14.
En esencia, el circuito integrado implementa el filtro bilateral conjunto a una resolución más gruesa, pero de una manera diferente a la de Paris et al. Una de las diferencias ventajosas es que Paris et al. realizan primero una interpolación y a continuación una operación de corte (slicing operation), y esta última operación implica una división. La división en Paris et al. se realiza, por lo tanto, sobre datos que han sido interpolados de vuelta a resolución completa. El circuito integrado según se reivindica realiza una operación de corte en los volúmenes sub-muestreados, es decir, con una resolución muy reducida. Por ejemplo, si se utilizan volúmenes de, por ejemplo, 18 x 12 x 18 (altura * anchura * rango), sólo se necesitan 3.888 operaciones de división, que son muchas menos de las que se necesitarían para realizar una división en, por ejemplo, una imagen de 480 * 270 (129.600 operaciones de división). Se ha comprobado que la reducción de la calidad al realizar la operación de división en los volúmenes sub-muestreados es muy limitada. Sin embargo, dado que las operaciones de división son complejas de implementar desde el punto de vista de procesamiento, la carga de procesamiento de realizar el filtro bilateral conjunto se reduce en gran medida. Esto permite que la operación de corte se realice en software, con lo que se aporta aún más flexibilidad con respecto a su implementación.
Se observa que el mapa de profundidad que se utiliza como entrada puede ser un mapa de profundidad de plantilla y, por lo tanto, puede corresponder a un perfil de profundidad genérico predeterminado, tal como una inclinación, o un perfil de profundidad genérico seleccionado de entre una lista de diferentes perfiles de profundidad genéricos como el que mejor corresponde al contenido de la imagen. Sin embargo, en general, el mapa de profundidad puede ser cualquier mapa de profundidad que se beneficie de una mayor adaptación a la imagen.
Se observa además que los volúmenes pueden ser volúmenes tri-dimensionales, por ejemplo, constituidos por versiones de sub-muestreo de las dos dimensiones espaciales de la imagen y una versión de submuestreo de la dimensión de rango de uno de los componentes de la imagen, por ejemplo, el componente de luminancia. Alternativamente, los volúmenes pueden comprender dos o más dimensiones de rango, que pueden corresponder a dos o más de los componentes de la imagen, por ejemplo, la luminancia y uno o más componentes de crominancia de una imagen YUV, o los componentes de color individuales de una imagen RGB, etc.
Opcionalmente, el subsistema de procesamiento comprende un circuito hardware específico de aplicación y un microprocesador configurable por un software, en el que:
- el circuito hardware específico de aplicación está configurado para realizar la operación de splatting (o salpicadura) y la operación de interpolación; y
- el microprocesador es configurado por el software para que, durante el funcionamiento del circuito integrado, realice la operación de corte.
Este aspecto de la invención se basa en la idea de que, mientras que la operación de splatting y la operación de interpolación siguen siendo relativamente complejas desde el punto de vista de procesamiento, la operación de corte se ha reducido significativamente en complejidad en comparación con Paris et al. operando únicamente en los volúmenes sub-muestreados. Por ello, la operación de corte se puede realizar en software, con lo que se aporta flexibilidad, mientras que la operación de splatting y la operación de interpolación se pueden realizar en hardware dada la eficiencia generalmente mayor de una implementación en hardware frente a una implementación en software.
Opcionalmente, el circuito hardware específico de aplicación comprende una tabla de filtrado para almacenar los pesos de splatting utilizados en la operación de splatting y/o los pesos de interpolación utilizados en la operación de interpolación. En el caso de que la operación de splatting y la operación de interpolación sean operaciones en hardware, dichos pesos se pueden almacenar en una tabla de filtrado del circuito hardware, que puede ser una memoria de sólo lectura o una memoria de acceso aleatorio. Esto permite que dichos pesos sean fácilmente accesibles por el hardware de las respectivas operaciones.
Opcionalmente, la tabla de filtrado es cargada con los pesos de splatting utilizados en la operación de splatting y los pesos de interpolación utilizados en la operación de interpolación antes de realizar la respectiva operación. En el caso de que se utilicen pesos diferentes para la operación de splatting que para la operación de interpolación, estos pesos se pueden cargar en la tabla de filtrado antes de realizar la respectiva operación, por ejemplo, por parte del microprocesador. De este modo, se reutiliza el hardware de la tabla de filtrado y no se implementa por separado tanto para el hardware de la operación de splatting como para el hardware de la operación de interpolación. Se observa que además de o alternativamente a la reutilización del hardware de la tabla de filtrado entre la operación de splatting y la operación de interpolación, en general también puede haber reutilización de hardware para determinar la posición relativa de una muestra dentro de un bin (o celda) entre la operación de splatting y la operación de interpolación.
Opcionalmente, los pesos de splatting utilizados en la operación de splatting y los pesos de interpolación utilizados en la operación de interpolación son los mismos. Este aspecto de la invención se basa en la idea de que se pueden utilizar los mismos pesos para realizar la operación de splatting que para realizar la operación de interpolación, ya que ambas son en esencia operaciones similares que, en el presente contexto, también operan, por un lado, sobre la imagen y, por otro lado, sobre un volumen multidimensional que tiene dimensiones sub-muestreadas con respecto a las dos dimensiones espaciales y la dimensión de rango de la imagen. Con la utilización de los mismos pesos, la implementación de ambas operaciones es considerablemente más eficiente.
Opcionalmente, los pesos de splatting utilizados en la operación de splatting y los pesos de interpolación utilizados en la operación de interpolación representan una interpolación lineal con respecto al sistema de coordenadas de la imagen. Los pesos se eligen, por lo tanto, de forma que se aplica una interpolación lineal a los datos de los respectivos volúmenes de la operación de splatting y de la operación de interpolación a lo largo de cada una de las dimensiones de los volúmenes. Por ejemplo, para un volumen tri-dimensional, se puede utilizar una interpolación tri-lineal, mientras que para un volumen cuatri-dimensional, por ejemplo, con dos dimensiones de rango, se puede utilizar una interpolación cuatri-lineal. Se ha determinado que la interpolación lineal está bien adaptada para la operación de splatting y la operación de interpolación. Alternativamente, se puede utilizar una interpolación de orden superior en cada dimensión, que incluye pero no se limita a una interpolación cúbica.
Opcionalmente, el microprocesador es configurado por el software para que, durante el funcionamiento del circuito integrado, aplique un filtrado temporal al volumen de suma de profundidades ponderadas (sum-ofweighted-depths volume) y al volumen de suma de pesos (sum-of-weights volume) antes de realizar la operación de corte. El filtrado temporal se aplica a menudo a mapas de profundidad para garantizar la estabilidad temporal. En lugar de o además de aplicar dicho filtrado temporal al mapa de profundidad, los volúmenes que se utilizan para generar el mapa de profundidad pueden ser filtrados temporalmente. Se ha determinado que esto produce un mapa de profundidad más estable temporalmente, a la vez que es eficiente desde el punto de vista de procesamiento para implementarlo al tamaño relativamente pequeño de los volúmenes en comparación con una imagen. Por ejemplo, un volumen típico de 18x 12x 18 contiene 3.888 valores de datos a filtrar, mientras que una imagen de 480 x 270 contiene 129.600 valores de datos a filtrar. Debido a que el filtrado que se aplica específicamente al volumen o volúmenes, es posible una implementación en software. Se ha determinado que la aplicación de un filtro de Respuesta a Impulso Infinito (IIR: Infinite Impulse Response) al volumen de suma de profundidades ponderadas es ventajosa porque mejora la estabilidad temporal del mapa de profundidad resultante en el caso de los denominados cortes de transiciones de vídeo (shot-cuts), sin necesidad de un procesamiento de corte de transiciones de vídeo dedicado que, por ejemplo, implique detectores de corte de transiciones de vídeo dedicados. El filtrado temporal puede ser, por ejemplo, un filtro de respuesta a impulso infinito de primer orden o de orden superior, y se puede implementar como parte de otras operaciones (no lineales) sobre los datos de volumen.
Opcionalmente, el microprocesador es configurado por el software para que, durante el funcionamiento del circuito integrado, aplique un filtrado temporal al volumen de profundidad adaptado a la imagen. Dicho filtrado temporal ofrece reducciones comparables en complejidad de procesamiento en comparación con el filtrado de una imagen real, según se describe con respecto al filtrado del volumen de suma de profundidades ponderadas o del volumen de suma de pesos. El filtrado temporal puede ser del mismo tipo que el descrito con respecto al filtrado del volumen de suma de profundidades ponderadas o del volumen de suma de pesos.
Opcionalmente, el subsistema de procesamiento está configurado para, después de realizar la operación de splatting, convolucionar el volumen de suma de profundidades ponderadas con un núcleo gaussiano. Se ha determinado que dicha convolución mejora la calidad del mapa de profundidad.
Opcionalmente, el mapa de profundidad de plantilla tiene una resolución espacial reducida con respecto a la imagen, por ejemplo, con dos dimensiones espaciales correspondientes a las dos dimensiones espaciales del volumen de suma de profundidades ponderadas y del volumen de suma de pesos (o ponderaciones). El mapa de profundidad de plantilla puede, a continuación, ser interpolado usando los mismos pesos que se han utilizado en la operación de splatting.
Opcionalmente, el filtro bilateral conjunto se aplica sólo a datos de luminancia de la imagen. Opcionalmente, el filtro bilateral conjunto se aplica a los datos de luminancia y a los datos de crominancia de la imagen. En este último caso, los volúmenes pueden ser volúmenes de cinco dimensiones que tienen tres dimensiones de rango, por ejemplo, una dimensión Y, U y V.
Opcionalmente, el circuito integrado es, o forma parte de, una matriz de puertas programable en campo o de un sistema en un chip. El circuito integrado puede formar parte de un dispositivo tal como un dispositivo de visualización o un decodificador, pero también de otros dispositivos en los que se puede utilizar para convertir vídeo 2D en vídeo 3D estimando el mapa de profundidad.
Otro aspecto de la invención proporciona un medio legible por dispositivo informático que comprende datos transitorios o no transitorios que representan instrucciones dispuestas para hacer que un sistema procesador realice el procedimiento.
Los expertos en la materia apreciarán que dos o más de las formas de realización, implementaciones y/o aspectos de la invención que se han mencionado anteriormente se pueden combinar de cualquier manera que se considere útil.
Modificaciones y variaciones del procedimiento que corresponden a las modificaciones y variaciones descritas del circuito integrado pueden ser realizadas por un experto en la materia en base a la presente descripción.
Breve descripción de los dibujos
Estos y otros aspectos de la invención son evidentes a partir de y se dilucidarán con referencia a las formas de realización que se describen a continuación. En los dibujos,
La Figura 1 muestra de forma esquemática un circuito integrado que está configurado para estimar un mapa de profundidad a partir de una imagen de una manera eficiente desde el punto de vista de procesamiento; La Figura 2 ilustra la relación entre una imagen y un volumen que se puede utilizar para acumular pesos (o ponderaciones) y valores de profundidad ponderados durante una operación de splatting y que puede contener valores de profundidad para una operación de interpolación;
La Figura 3A muestra un ejemplo simplificado de una operación de splatting;
La Figura 3B muestra un ejemplo detallado que ilustra un direccionamiento de bins (o celdas) y pesos asociados tanto para la operación de splatting como para la operación de interpolación;
La Figura 4 ilustra varios aspectos de la operación de splatting;
Las Figuras de la 5 a la 7 ilustran varios aspectos de la operación de interpolación
La Figura 8 muestra un procedimiento para estimar un mapa de profundidad a partir de una imagen; y La Figura 9 muestra un medio legible por dispositivo informático que comprende instrucciones para hacer que un sistema procesador realice el procedimiento.
Se debe tener en cuenta que los elementos que tienen los mismos números de referencia en diferentes Figuras, tienen las mismas características estructurales y las mismas funciones, o son las mismas señales. Cuando se ha explicado la función y/o la estructura de un elemento de este tipo, no es necesario repetir la explicación del mismo en la descripción detallada.
Lista de referencias y abreviaturas
La siguiente lista de referencias y abreviaturas se proporciona para facilitar la interpretación de los dibujos y no se debe interpretar como una limitación de las reivindicaciones.
010 datos de imagen
020 datos de entrada de volumen de profundidad
022 datos de salida de profundidad
024 datos de profundidad de plantilla
026 datos de profundidad de plantilla interpolados
030 suma de datos de volumen de pesos
032 suma de datos de volumen de profundidad ponderados
052 datos de índice de peso y volumen
054 datos de peso
100 subsistema de procesamiento de circuito integrado
110 interfaz de entrada de datos de imagen
120 interfaz de entrada de datos de volumen de profundidad
122 interfaz de salida de datos de profundidad
130-132 interfaz de salida de datos de volumen
140 bloque de splatting
150 bloque de ponderación
160 bloque de interpolación
170 bloque de interpolación 2D
180 lógica de control
200 imagen
210 dimensión horizontal
220 dimensión vertical
250 mapeo de parte de imagen brillante
260 mapeo de fondo de imagen oscuro
300 representación volumétrica de imagen
310 dimensión horizontal
320 dimensión vertical
330 dimensión de rango
400 dimensión (horizontal, vertical o rango)
410 serie de muestras de profundidad
420 intervalo de acumulación de salpicaduras (splats)
430 función de peso o ponderación
440 intervalo de bins (o celdas)
442 bin (o celda) de borde
444 bin que no es de borde
500 procedimiento para estimar un mapa de profundidad a partir de una imagen
510 acceso a datos de imagen
520 acceso a datos de profundidad
530 aplicación de filtro bilateral conjunto
540 inicialización de volúmenes
550 operación de splatting o salpicadura
560 operación de corte
570 operación de interpolación
600 medio legible por dispositivo informático
610 datos no transitorios que representan instrucciones
Descripción detallada de formas de realización
La Figura 1 muestra de forma esquemática un subsistema de procesamiento 100 de un circuito integrado que está configurado para estimar un mapa de profundidad a partir de una imagen de una manera eficiente desde el punto de vista de procesamiento. El subsistema de procesamiento 100 se muestra como un diagrama de bloques funcionales, y puede estar conformado por componentes tales como un microprocesador, un circuito hardware específico de aplicación y una o más memorias locales. El circuito integrado puede comprender otros componentes que no se muestran en la Figura 1, que incluyen pero no se limitan a otros microprocesadores, un sistema de bus, otras memorias, etc. En general, el circuito integrado puede estar implementado como, o como parte de, una matriz de puertas programable en campo (FPGA: field-programmable gate array) o un sistema en un chip (SoC: System-on-Chip) o de cualquier otra manera adecuada.
Se muestra que el subsistema de procesamiento 100 comprende una interfaz de entrada de datos de imagen 110 a través de la cual los datos de imagen 010 se pueden leer de una memoria, por ejemplo, a través de una comunicación de acceso directo a memoria (DMA: Direct Memory Access). Por ejemplo, los datos de imagen pueden ser datos de entrada de luminancia Yin. A este respecto, se observa que la interfaz de entrada de datos de imagen 110 y otras interfaces del subsistema de procesamiento 100 pueden comprender o estar conectadas a una memoria local que actúa como búfer, que está etiquetada como 'Buf' en la Figura 1.
Se muestra que el subsistema de procesamiento 100 comprende además una interfaz de entrada de datos de volumen de profundidad 120 a través de la cual los datos de volumen de profundidad 020 se pueden leer de la memoria, y una interfaz de salida de datos de profundidad 122 a través de la cual los datos de profundidad 022 se pueden escribir en la memoria. Se muestra que el subsistema de procesamiento 100 comprende además unas interfaces de salida de datos de volumen 130, 132 para escribir en la memoria datos de volumen de suma de pesos 030 y datos de volumen de profundidad ponderados 032.
Otros bloques funcionales del subsistema de procesamiento 100 incluyen un bloque de splatting (o salpicadura) 140 que se comunica con las interfaces de salida de datos de volumen 130, 132, un bloque de interpolación 160 que se comunica con las interfaces de datos de profundidad 120, 122, un bloque de ponderación 150 que se comunica con la interfaz de entrada de datos de imagen 110 y proporciona datos de índice de peso y de volumen 052 al bloque de splatting 140 y al bloque de interpolación 160, un bloque de interpolación 2D 170 que recibe datos de profundidad de plantilla 024 procedentes de la lógica de control 180 y datos de peso 054 procedentes del bloque de ponderación 150 y proporciona datos de profundidad de plantilla interpolados 026 al bloque de splatting 140.
En una forma de realización, el subsistema de procesamiento 100, según se muestra en la Figura 1, se puede implementar como un circuito hardware específico de aplicación. Además, se puede proporcionar un microprocesador separado (que no se muestra en la Figura 1) en el circuito integrado que está configurado para realizar una operación de corte, según se comenta también más adelante. Para este fin, el microprocesador puede tener acceso a la memoria, por ejemplo, a través de un acceso DMA. Alternativamente, la operación de corte también puede ser implementada por el circuito hardware específico de aplicación.
El funcionamiento del subsistema de procesamiento 100 y sus bloques funcionales se explicará con más detalle en referencia a las Figuras 2 - 7. A este respecto, se observa que en la Figura 1 el "*" denota un búfer local o una interfaz que está asociada a una representación de datos multidimensional volumétrica, según se explica con referencia a la Figura 2.
La Figura 2 ilustra la relación entre una imagen 200 y un volumen 300, siendo este tipo de volumen utilizado para acumular pesos (o ponderaciones) y valores de profundidad ponderados durante una operación de splatting y mantener el valor de profundidad de píxeles de la imagen 200 para una operación de interpolación. Se muestra que el volumen 300 tiene tres dimensiones. La dimensión X 310 puede corresponder al eje horizontal 210 de la imagen 200. La dimensión Y 320 puede corresponder al eje vertical 220 de la imagen 200. La dimensión I 330 puede corresponder a la dimensión de rango de la imagen, por ejemplo, de un componente de imagen de la imagen 200 tal como, por ejemplo, pero sin limitarse a un componente de luminancia. El volumen 300 puede tener un tamaño sub-muestreado con respecto a las dimensiones espaciales y las dimensiones de rango de la imagen 200. Por ejemplo, mientras que la imagen 200 puede tener unas dimensiones espaciales de 480 píxeles por 270 líneas (X, Y) y una dimensión de rango de 8 bits (I) que define un rango de 256 valores, el volumen 300 puede tener unas dimensiones de 1 8 x 12 x 18 (X, Y, I), es decir, de 18x12 (X, Y) para las dimensiones espaciales 310, 320 y 18 (I) para la dimensión de rango 330.
Las celdas del volumen 300 pueden representar bins. Durante una operación de splatting, dichos bins pueden definir intervalos de acumulación para la acumulación de información de profundidad de la imagen 200. En este caso, los bins utilizados en la acumulación de un peso o valor de profundidad ponderado asociado a un píxel particular se seleccionan como una función de la coordenada espacial del píxel y su valor de rango. Por ejemplo, los valores de luminancia de la imagen 200 pueden determinar la coordenada del bin a lo largo de la dimensión I 330 del volumen 300, de modo que la información de profundidad del contenido oscuro de la imagen se puede acumular en bins "inferiores" del volumen 300, según se ilustra con la flecha 260, mientras que la información de profundidad del contenido brillante de la imagen se puede acumular en bins "superiores" del volumen 300, según se ilustra con la flecha 250. Además, la ubicación espacial del contenido de la imagen puede definir la ubicación del bin a lo largo de las dimensiones espaciales 310, 320 del volumen 300. En consecuencia, la combinación de la coordenada espacial y el valor de rango de un píxel de la imagen 200, es decir, la coordenada del píxel en el (al menos) sistema de coordenadas 3D de la imagen, puede determinar en qué bin o bins del volumen 300 se acumula un peso o un valor de profundidad ponderado durante una operación de splatting, o qué bin o bins contienen el valor de profundidad de un píxel para su interpolación a través de una operación de interpolación.
Esta determinación de bins puede implicar en esencia mapear la coordenada espacial del píxel y el valor de rango con una coordenada en el espacio de coordenadas del volumen y en base a su posición relativa en el volumen que identifica los bins a utilizar durante el splatting (o salpicadura) y la interpolación. En efecto, durante el splatting, se pueden identificar bins adyacentes para determinar en qué bins contribuye el píxel en base a su huella de splatting (siendo la "contribución" la acumulación del peso o valor de profundidad ponderado), mientras que durante la interpolación, se pueden identificar bins adyacentes para determinar entre qué bins se va a realizar la interpolación en base a la posición relativa del píxel dentro de un volumen. Para este fin, se puede utilizar una función de mapeo que mapea la coordenada espacial y el valor de rango del píxel con una coordenada en el espacio de coordenadas del volumen, siendo esta última coordenada directamente indicativa de los bins adyacentes.
Debido al sub-muestreo, múltiples píxeles de la imagen 200 pueden contribuir en un único bin del volumen 300, de modo que sus valores de profundidad se pueden, al menos en parte, acumular en el único bin. A la inversa, un solo píxel puede contribuir en varios bins del volumen 300, ya que sus coordenadas en el sistema de coordenadas del volumen pueden encontrarse entre varias celdas del volumen 300. Por ello, con la acumulación del valor de profundidad del píxel en el volumen 300, el valor de profundidad puede tener que ponderarse para tener en cuenta la contribución en varias celdas del volumen 300. Esto también se denomina "splatting".
La Figura 3A ilustra dicha operación de splatting a lo largo de una sola dimensión K 400. Esta dimensión K puede ser la horizontal (X), la vertical (Y), o la dimensión de luminancia (I). Para esta explicación, se considera que la dimensión K 400 representa la dimensión de luminancia I. En primer lugar, esta dimensión se divide en bins 440, por ejemplo, mediante un sub-muestreo de la dimensión de luminancia I, por ejemplo, desde 256 valores (8 bits, de 0 a 255) descendentemente hasta dieciséis bins de anchura 16. Como se sabe per se, cada bin es un elemento de almacenamiento que puede contener un valor particular o una suma de valores acumulados. Cabe señalar que, a efectos de ilustración y, en particular, para mejorar la visibilidad de las figuras, en la Figura 3A y las siguientes se muestra un grupo de bins que sólo incluye doce bins en total: diez bins "normales" del [1] al [10] y dos que se denominan "bins de borde" el [0] y el [11].
Cabe señalar que el tamaño y finalidad diferentes de los bins de borde [0] y [11] se explicarán con referencia adicional a la Figura 3B.
A continuación se ilustra la operación de splatting con referencia a una operación de histograma. Un histograma convencional se puede obtener de la siguiente manera: para cada píxel de una imagen, se puede determinar en qué bin único cae su valor de luminancia. A continuación, el valor de ese bin puede ser incrementado, por ejemplo, en 1. Como resultado, la posición relativa del valor de luminancia con respecto al intervalo de luminancia asociado con el bin puede ser irrelevante. Por ejemplo, si un bin define un intervalo de luminancia de [0...7] para acumulación, todos los valores de luminancia que caen dentro de este bin pueden provocar un mismo incremento, concretamente en 1, con independencia de si el valor de luminancia cae dentro de un centro del bin (por ejemplo, los valores de luminancia 3 y 4) o en un borde del bin (por ejemplo, los valores de luminancia 0 y 7).
Se pueden utilizar técnicas de splatting o salpicadura para obtener una mejor, por ejemplo, más precisa representación del histograma. En concreto, la posición relativa de un valor de luminancia dentro de un bin se puede tener en cuenta mediante ponderación. En estas técnicas de splatting, la contribución del píxel que está siendo objeto del splatting se puede determinar asignando explícita o implícitamente una huella a la coordenada del píxel a lo largo de la dimensión de luminancia, por ejemplo, al valor de luminancia. Una acumulación por splatting se puede realizar de la siguiente manera: para un valor de luminancia de un píxel, se determina en qué bins adyacentes contribuye el píxel, en el que "contribuir" se refiere a un bin que cae al menos en parte dentro de la huella del píxel. Los valores de los bins adyacentes pueden, a continuación, ser incrementados con los respectivos pesos que dependen de la posición relativa del valor de luminancia con respecto a los dos bins. Por ejemplo, cuando el valor de luminancia cae en el centro de un bin "actual", la contribución en ese bin puede ser "alta", mientras que la contribución en el bin "anterior" (inferior) y en el "siguiente" (superior) puede ser baja. De modo similar, cuando un valor de luminancia cae entre dos bins, la contribución en cada bin puede ser la mitad del valor "alto".
La ponderación dependiente de la posición mencionada anteriormente puede implementar dicha contribución en bins basada en la huella. Cabe señalar que, dado que la ponderación sólo define una contribución en un bin dentro de un intervalo concreto, también se puede considerar que este intervalo representa el "intervalo de acumulación" del bin concreto. Por ejemplo, se puede considerar que el intervalo de acumulación del bin "actual" (o “presente”) incluye el bin actual y, al mismo tiempo, se extiende también hasta la mitad del bin anterior y del siguiente bin. Por lo tanto, a partir de la mitad del bin anterior, la contribución en el bin actual puede aumentar lentamente desde cero hasta un máximo en el centro del bin actual y a continuación disminuir lentamente hasta cero en la mitad del siguiente bin.
Como resultado del uso de la operación de splatting, los valores acumulados en los bins pueden representar una representación más precisa de un histograma.
En una implementación específica y eficiente de la operación de splatting, se considera que la huella contribuye como máximo en dos bins adyacentes, por ejemplo, con un tamaño que corresponde al tamaño de un bin o menor. En este caso, un píxel contribuye como máximo en un bin [n] y un bin [n+1], siendo n un índice de bin o una coordenada en el sistema de coordenadas del volumen. En lo sucesivo, el primer bin se puede denominar bin "actual" y el segundo bin se puede denominar "siguiente" bin.
Una implementación particularmente específica y eficiente define los intervalos de acumulación de los bins de manera que la contribución de un píxel dentro del bin actual es sólo para el bin actual y el siguiente bin. Esta implementación, sin embargo, se puede considerar que tiene un "desplazamiento" de medio bin hasta donde se entendería intuitivamente que se encuentra la contribución de un píxel. Es decir, en esta implementación específica, la contribución máxima en un bin no se obtiene en el centro del bin, sino en su límite inferior. Una razón para definir los bins de esta manera es permitir una mayor reutilización del hardware entre la operación de splatting y la operación de interpolación, por ejemplo, cuando se considera el cálculo y el almacenamiento de pesos y/o el cálculo de posiciones relativas con respecto a un bin.
Como ejemplo, considérese en la Figura 3A el caso de un valor de luminancia p0, que es un valor de luminancia en el lado izquierdo del bin [5]. Esta posición relativa puede contribuir con un peso "alto" en el bin [5] de acuerdo con la función de ponderación 430 (la línea punteada está en o cerca del máximo) y un peso "bajo" en el bin [6] (la línea punteada está en o cerca del cero). A continuación, considérese el caso de un valor de luminancia p1, que se encuentra en el centro del bin [5]. Esta posición relativa puede contribuir con un peso igual (la mitad del peso "alto") en los bins [5] y [6]. Por último, considérese el caso de un valor de luminancia p2 en el lado derecho del bin [5]. Esta posición relativa puede contribuir con un peso "bajo" en el bin [5] y un peso "alto" en el bin [6]. En consecuencia, la posición relativa del valor de luminancia puede determinar el peso con el que se acumula el valor de luminancia en el bin actual y el siguiente bin. El ejemplo de la Figura 3A ilustra, de este modo, una "pérdida" lineal desde una contribución máxima en el bin [5] hasta una contribución máxima en el bin [6] en función del valor de luminancia.
Se apreciará que en esta implementación específica y eficiente en la que un píxel, que tiene un valor de luminancia dentro del bin actual, contribuye sólo en el bin actual y en el siguiente bin, el intervalo de acumulación asociado con el bin [5] puede ser el intervalo que abarca el bin [5] y su bin anterior, por ejemplo, el intervalo correspondiente a la línea de puntos que cubre los bins [4] y [5] en la Figura 3A. Asimismo, el intervalo de acumulación asociado con el bin [6] puede ser el intervalo que abarca el bin [6] y su bin anterior, por ejemplo, el intervalo correspondiente a la línea de puntos que cubre los bins [5] y [6] en la Figura 3A.
La Figura 3B muestra más detalles de una forma de realización similar, pero aplicada a la acumulación de valores de profundidad ponderados y pesos en respectivos volúmenes, en concreto, el volumen de suma de profundidades ponderadas y el volumen de suma de pesos mencionados anteriormente.
En este ejemplo, ambos volúmenes tienen un tamaño máximo fijo de 18 x 12 x 18 bins (X, Y, I) con independencia del tamaño de la imagen, mientras que puede variar el número real de bins que son. En concreto, se puede utilizar un parámetro "sizeBinK" en la operación de splatting para definir el tamaño de un bin que no es de borde 444 y, de este modo, determinar cuántos bins se utilizan. Este tamaño que puede ser una potencia de 2 para reducir la complejidad de la implementación. El tamaño de los dos bins en el borde de una dimensión "edgeBinK" puede variar para permitir cualquier valor del tamaño de la dimensión. La Figura 3B muestra un bin de borde inferior 442. Por ejemplo, si la anchura de la imagen es igual a 480 y se selecciona un sizeBinX igual a 32, puede haber 14 bins que no son de borde y 2 bins de borde, cada uno de los cuales tiene una anchura de (480 - 14*32) / 2 = 16. En otro ejemplo, si la altura de la imagen es igual a 270 y sizeBinY es igual a 32, la anchura de cada uno de los bins de borde puede ser igual a (270 -8*32) / 2 = 7. De este modo, el uso de bins de borde permite que los bins que no son de borde tengan un tamaño igual a una potencia de 2, con lo que se simplifica la complejidad de la implementación. En concreto, se puede realizar una normalización en aritmética de punto fijo a través de una simple operación de desplazamiento. Además, se ha determinado que el uso de dos bins de borde (en el extremo superior e inferior) produce mejores resultados de filtrado, ya que los bins de borde coinciden con los bordes de la imagen. Por lo tanto, puede ser deseable tener bins de borde de un cierto tamaño a propósito. Por ejemplo, se ha determinado que puede ser preferible que los bins de borde tengan la mitad del tamaño de un bin regular que no es de borde, y que tengan como mínimo % del tamaño del bin regular y como máximo % del tamaño del bin regular.
La Figura 3B muestra además un ejemplo del direccionamiento de bins y pesos asociados tanto para el splatting como para la interpolación de profundidad. Para facilitar la comprensión, la Figura 3B muestra una sola dimensión. Esta dimensión puede ser la X, Y de la posición de la imagen, o la dimensión de rango. En concreto, la Figura 3B muestra la posición 410 de unas muestras de profundidad en las posiciones de índice indicadas [0] ... [12] que, por ejemplo, corresponden a las posiciones de muestras a lo largo de una línea en el mapa de profundidad de entrada, por ejemplo, según se obtiene de los datos de profundidad de plantilla 024 de la Figura 1. Para cada posición de índice, se muestran un correspondiente intervalo de acumulación de splats (o salpicaduras) 420, un peso determinado por una función de peso o ponderación 430 para el splatting y la interpolación del perfil de profundidad (indicado con el número de referencia 170 en la Figura 1), y un intervalo de bins 440. La Figura 3B se debe interpretar de la siguiente manera. Para una posición de índice determinada, por ejemplo, la posición de índice [7], se define un intervalo de acumulación que se denota con el mismo numeral [7], así como una correspondiente función de peso 430 que se muestra con el mismo estilo de línea que el intervalo de acumulación [7]. La función de peso 430 representa un peso "f" que transiciona linealmente desde 0 en los bordes del intervalo de acumulación [7] hasta 1 en el centro del intervalo de acumulación [7]. Dentro del mismo intervalo de acumulación [7], también se muestra un peso "1-f" que, en la mitad izquierda del intervalo de acumulación [7], representa un peso para la muestra de profundidad [6] en su intervalo de acumulación superpuesto a la mitad [6], y en la mitad derecha del intervalo de acumulación [7], representa un peso para la muestra de profundidad [8] en su intervalo de acumulación superpuesto a la mitad [8].
Se puede observar que los intervalos de acumulación y los pesos se seleccionan de tal manera que, para una determinada posición p a lo largo de la dimensión mostrada, los bins del volumen de suma de pesos pueden ser acumulados de acuerdo con SW[x] = f y SW[x+1] = (1-f) mientras que los bins del volumen de suma de profundidades ponderadas se pueden acumular de acuerdo con SWD[x] = f*dp y SWD[x+1] = (1 -f)*dp. En este caso, la posición p determina el bin x, que es [6] en este ejemplo, y el valor de profundidad dp se obtiene por interpolación del perfil de profundidad ('170' en la Figura 1) a partir del mapa de profundidad D de acuerdo con dp = (1-f) * D[x] f * D[x+1]. Cabe señalar que esto es sólo para una dimensión; normalmente, el direccionamiento de los bins se basa en las dimensiones espaciales X, Y y una o más dimensiones de rango I de la imagen y, por lo tanto, normalmente depende también de los propios datos de la imagen.
Se observa que los pesos 'f y '(1-f)' se pueden calcular como valores de punto fijo con expresiones normalizadas. Por ejemplo, en el caso de 3 bits después del punto binario, el valor de 8 representa "1" y, por lo tanto, "f' está en el rango [0..8]. En un ejemplo concreto, si se supone que hay que calcular dp = (f-1) * D[x] f * D[x+1], siendo D[x] igual a 24, D[x+1] igual a 8 y f igual a 6, 'dp' se puede calcular como ((8 -6)*24 6*8) / 8 = 96 / 8 = 12. La división por 8 es un paso de normalización. Este ejemplo también se muestra en la tabla de la Figura 5 en la posición Y 10. En esta y otras Figuras y a lo largo del texto, 'wny' y 'wpy' representan los valores de punto fijo de 'f y '(1-f)' antes de esta normalización.
En una forma de realización específica y eficiente, el peso máximo puede corresponder al tamaño de los bins, por ejemplo, 8 para un tamaño de bin igual a 8. En consecuencia, cada paso en el valor de luminancia da lugar a un paso en el peso para cada uno de los dos bins adyacentes. Del mismo modo, cada paso en la posición (x o y) da lugar a un paso en el peso para cada uno de los respectivos dos bins adyacentes.
La Figura 4 ilustra la operación de splatting que rellena la suma de profundidades ponderadas (SWD) y la suma de pesos (SW) a lo largo de una sola dimensión. En este ejemplo, se elige el eje vertical Y, con un tamaño de bins igual a 8 ("sizeBinY") y el primer bin con un tamaño igual a 4 ("edgeBinY"). La "Yposition" es simplemente el número de línea. La tabla de la Figura 4 muestra la interpolación con respecto a las líneas en el binY con índice 1. El "factorY" es la posición relativa de una línea dentro de un bin. En base al valor "factorY", se derivan dos pesos "wpy" y "wny", que se relacionan con los pesos complementarios "f" y "1-f" según se describe para la Figura 3B pero que ahora se expresan como un peso "wny" para el 'siguiente' bin y un peso "wpy" para el bin 'actual', en el que 'siguiente' y 'actual' se refieren a dos bins consecutivos y espacialmente adyacentes. El splatting es en esencia una función de sub-muestreo mediante la cual una entrada de alta resolución es transformada en una salida de baja resolución. En este ejemplo, todas las líneas dentro del binY número 1 tienen un valor de profundidad de entrada igual a "20". En función de la posición de la línea, el peso se desplaza gradualmente desde el bin 1 hasta el bin 2. De este modo, en la línea número 4 (que es la primera línea en el bin 1), se acumula todo el valor en el bin 1 y nada del valor es agregado al bin 2, lo que se ilustra en la Figura 4 con las dos flechas. En la línea número 8 (a la mitad del bin), se agrega el 50% del valor al bin 1 y el 50% al bin 2. De este modo, se consigue una pérdida lineal entre los bins. Con el uso de los pesos, las celdas del volumen SW (suma de pesos) sólo acumulan los pesos aplicados, mientras que las celdas del volumen SWD (suma de profundidades ponderadas) acumulan el valor de profundidad multiplicado por el peso ("profundidad ponderada").
En resumen, la operación de splatting puede implicar, para cada píxel de la imagen, la determinación de una coordenada del píxel en el sistema de coordenadas de la imagen, por ejemplo, en forma de una coordenada (X,Y, I), una coordenada (X,Y, R, G, B) o una coordenada (X, Y, I, U, V). En este último caso, (I, U, V) se refiere a los componentes de una señal YUV, en la que el componente Y (luminancia) se denomina I (intensidad) para distinguirlo de la dimensión espacial Y. A continuación, se puede determinar qué celdas adyacentes en el volumen de suma de pesos representan intervalos de acumulación asociados con el píxel. Se puede obtener un valor de profundidad del píxel a partir del mapa de profundidad, posiblemente utilizando la interpolación si el mapa de profundidad tiene una resolución espacial inferior a la de la imagen. Para cada una de las celdas adyacentes, se puede obtener un peso (o ponderación) para ponderar el valor de profundidad. El peso puede ser (pre-)calculado en base a una posición relativa del píxel con respecto al intervalo de acumulación de una respectiva celda, según indica la coordenada. El valor de profundidad puede, a continuación, ser ponderado mediante el peso y acumulado en la respectiva celda del volumen de suma de profundidades ponderadas, en el que el propio peso es acumulado en una correspondiente celda del volumen de suma de pesos.
Se observa que para una sola dimensión, una interpolación lineal requiere 2 valores. De modo similar, para dos dimensiones, una interpolación bi-lineal requiere 4 valores. Para el volumen de 3 dimensiones, una interpolación tri-lineal utiliza 8 valores. Los pesos pueden ser valores pre-calculados en función de la posición relativa de una muestra dentro de un bin. En el caso de que el mapa de profundidad tenga una resolución espacial reducida con respecto a la imagen, y en particular la misma resolución espacial reducida que el volumen de suma de profundidades ponderadas y el volumen de suma de pesos, el mapa de profundidad puede ser interpolado antes de la operación de splatting a la resolución de la imagen utilizando los mismos pesos que se utilizan en la operación de splatting. Esto se ilustra en la Figura 1 a través del bloque de ponderación 150 que proporciona datos de peso 054 al bloque de interpolación 2D 170 que interpola la plantilla de profundidad a la resolución de la imagen.
Una vez se ha realizado la operación de splatting, se puede realizar una operación de corte para obtener un volumen de profundidad adaptado a la imagen. Esta operación de corte puede ser realizada por un microprocesador configurado por un software, que no se muestra explícitamente en la Figura 1, pero que puede tener acceso a la memoria, por ejemplo, a través de una comunicación DMA. La operación de corte puede comprender, para cada celda del volumen de suma de profundidades ponderadas y correspondiente celda del volumen de suma de pesos, dividir los valores de profundidad ponderados acumulados por los pesos acumulados. Como resultado de esta división, cada bin contiene ahora un valor de profundidad adaptado a la imagen, con lo que el volumen global representa, de este modo, un volumen de profundidad adaptado a la imagen.
Una vez se ha realizado la operación de corte, se puede realizar una operación de interpolación para obtener un valor de profundidad adaptado a la imagen del mapa de profundidad adaptado a la imagen para cada píxel de la imagen. Esta operación de interpolación puede comprender la identificación de celdas adyacentes en el volumen de profundidad adaptado a la imagen en base a dichas celdas que representan intervalos de acumulación para el píxel en el volumen de suma de profundidades ponderadas en base a la coordenada del píxel, y la aplicación de un filtro de interpolación a las celdas adyacentes del volumen de profundidad adaptado a la imagen, en el que el filtro de interpolación comprende, para cada una de las celdas, un peso que se determina en base a la posición relativa del píxel con respecto al intervalo de acumulación de una respectiva celda según lo indicado por la coordenada. En otras palabras, la posición de un píxel, según determina su coordenada espacial y su valor o valores de rango, puede determinar los bins que se utilizarán en la interpolación, mientras que la posición relativa de un píxel en un bin puede determinar los pesos de interpolación. Los pesos pueden ser pre-calculados. En particular, los pesos pueden ser los mismos pesos que se utilizan en la operación de splatting, y/o se puede utilizar un mismo circuito hardware para almacenar o calcular los pesos.
La Figura 5 ilustra la operación de interpolación de manera similar a la Figura 4 para la operación de splatting. En este caso, los pesos se utilizan para interpolar un valor de profundidad de salida a partir del volumen de profundidad adaptado a la imagen. Como se puede ver al comparar la Figura 5 con la Figura 4, se utilizan los mismos pesos para una posición relativa particular dentro de un bin. Esto se ilustra en la Figura 1 por medio del bloque de ponderación 150 que proporciona los mismos datos de peso y de índice de volumen 052 al bloque de interpolación 160 que al bloque de splatting 140. La parte derecha de la tabla muestra cómo se aplican los pesos sobre los valores de profundidad de entrada 24 y 8. Por ejemplo, la interpolación en la posición Y 7 produce ((5*24 3*8)) / 8 = 18.
La Figura 6 muestra gráficamente las dos ponderaciones o pesos utilizados en las Figuras 4 y 5, es decir, el valor de "wpy" y "wpy" en el eje vertical, en función del número de línea Y en el eje horizontal. El peso "wpy" se aplica sobre el valor "actual", mientras que el peso "wny" se aplica sobre el valor "siguiente". La Figura 7 corresponde a la Figura 6, pero además muestra la salida interpolada obtenida entre los valores de profundidad de entrada 24 y 8, según se muestra en la Figura 5; se puede observar que los pesos se calculan de forma que se produce una pérdida lineal entre los valores de profundidad de entrada. Además de la pérdida lineal, también se pueden utilizar funciones de interpolación de orden superior, por ejemplo, interpolaciones cúbicas o de spline.
En general, se observa que el tamaño de los bins en la dimensión X o Y de los volúmenes que se han descrito puede ser siempre una potencia de 2, ya que en este caso la interpolación, que es por ejemplo una interpolación tri-lineal de punto fijo, puede utilizar una operación de desplazamiento para normalización, lo que da lugar a una reducción sustancial del coste en hardware. Esto puede dar lugar a un número variable de bins que se necesitan en función del tamaño de la imagen. Con el cambio del tamaño de los bins, el rendimiento del filtro se puede ver afectado. Sin embargo, los experimentos muestran que esto no afecta significativamente al rendimiento visual. Además, el uso de un número variable de bins en lugar de un número fijo no afecta significativamente al diseño del hardware. El tamaño de un bin, tanto en la dimensión X como en la Y, se puede especificar a través de un parámetro de hardware, mientras que el análisis de qué valor seleccionar se puede dejar en manos, por ejemplo, del software de un microprocesador.
Se apreciará que, en general, el subsistema de procesamiento se puede proporcionar por separado del circuito integrado que se ha descrito, por ejemplo, en otro tipo de SoC.
Los datos se pueden proporcionar en un medio legible por dispositivo informático que define el subsistema de procesamiento en forma de listas de red (netlists) y/o RTL sintetizable. El medio legible por dispositivo informático y, por lo tanto, los datos almacenados en el mismo, pueden ser transitorios o no transitorios. Por ejemplo, el subsistema de procesamiento se puede proporcionar como un núcleo sintetizable, por ejemplo, en un lenguaje de descripción de hardware como Verilog o VHDL, o como listas de red genéricas a nivel de puerta que proporcionan una representación de álgebra booleana de la función lógica de bloque IP RTC implementado como puertas genéricas o celdas estándar específicas de proceso.
El término "mapa" se refiere a datos dispuestos en filas y columnas. Además, el adjetivo 'profundidad' se debe entender como indicativo de la profundidad de partes de una imagen con respecto a la cámara. Por lo tanto, el mapa de profundidad puede estar constituido por valores de profundidad, pero también por, por ejemplo, valores de disparidad o valores de desplazamiento paraláctico. En esencia, el mapa de profundidad puede, por lo tanto, constituir un mapa de disparidad o un mapa de desplazamiento paraláctico. En este caso, el término disparidad se refiere a la diferencia de posición de un objeto cuando se percibe con el ojo izquierdo o el ojo derecho del usuario. El término desplazamiento paraláctico se refiere a un desplazamiento del objeto entre dos vistas para proporcionar dicha disparidad al usuario. La disparidad y el desplazamiento paraláctico están en general correlacionados negativamente con la distancia o la profundidad. Se conocen dispositivos y procedimientos para la conversión entre todos los tipos anteriores de mapas y/o valores.
La Figura 8 muestra un procedimiento 500 implementado por dispositivo informático para estimar un mapa de profundidad a partir de una imagen. El procedimiento 500 se muestra comprendiendo, en una operación titulada "ACCESO A DATOS DE IMAGEN", acceder 510 a datos de imagen de la imagen, en una operación titulada "ACCESO A DATOS DE PROFUNDIDAD", acceder 520 a datos de profundidad de un mapa de profundidad de plantilla, en una operación titulada "APLICACIÓN DE FILTRO BILATERAL CONJUNTO", aplicar 530 un filtro bilateral conjunto al mapa de profundidad de plantilla utilizando los datos de imagen como un término de rango en el filtro bilateral conjunto, obteniendo de este modo un mapa de profundidad adaptado a la imagen como salida, en el que la aplicación del filtro bilateral conjunto comprende, en una operación titulada "INICIALIZAR VOLÚMENES” inicializar 540 un volumen de suma de profundidades ponderadas y un volumen de suma de pesos como respectivas estructuras vacías de datos en una memoria, en una operación titulada "OPERACIÓN DE SPLATTING", realizar 550 una operación de splatting para rellenar dichos volúmenes, en una operación titulada "OPERACIÓN DE CORTE", realizar 560 una operación de corte para obtener un volumen de profundidad adaptado a la imagen, y en una operación titulada "OPERACIÓN DE INTERPOLACIÓN", realizar 570 una operación de interpolación para obtener un valor de profundidad adaptado a la imagen del mapa de profundidad adaptado a la imagen para cada píxel de la imagen. Se apreciará que la operación anterior se puede realizar en cualquier orden adecuado, por ejemplo, consecutivamente, simultáneamente, o una combinación de los mismos, sujeto a, cuando sea aplicable, un orden particular que sea necesario, por ejemplo, por las relaciones de entrada/salida. Por ejemplo, las operaciones 510 y 520 se pueden realizar en paralelo o secuencialmente.
El procedimiento 500 se puede implementar en un sistema procesador, por ejemplo, en un dispositivo informático como procedimiento implementado por dispositivo informático, como hardware dedicado, o como una combinación de ambos. Como también se ilustra en la Figura 9, las instrucciones para el dispositivo informático, por ejemplo, el código ejecutable, se pueden almacenar en un medio legible por dispositivo informático 600, por ejemplo, en forma de una serie 610 de marcas físicas legibles automáticamente y/o como una serie de elementos que tienen diferentes propiedades o valores eléctricos, por ejemplo, magnéticos u ópticos. El código ejecutable se puede almacenar de forma transitoria o no transitoria. Algunos ejemplos de medios legibles por dispositivo informático son los dispositivos de memoria, los dispositivos de almacenamiento óptico, los circuitos integrados, los servidores, el software en línea, etc. La Figura 9 muestra un disco óptico 600.
Cabe señalar que las formas de realización mencionadas anteriormente ilustran más que limitan la invención, y que los expertos en la materia podrán diseñar muchas formas de realización alternativas.
En las reivindicaciones, cualquier signo de referencia colocado entre paréntesis no se interpretará como una limitación de la reivindicación. El uso del verbo "comprender" y sus conjugaciones no excluye la presencia de elementos o pasos distintos de los indicados en una reivindicación. La invención se puede implementar a través de un hardware que comprende varios elementos distintos, y a través de un dispositivo informático programado de forma adecuada. En la reivindicación de dispositivo que enumera diversos medios, varios de estos medios pueden estar implementados por uno y el mismo elemento de hardware.

Claims (15)

REIVINDICACIONES
1. Un circuito integrado configurado para estimar un mapa de profundidad a partir de una imagen (200), en el que el circuito integrado comprende o está conectado a una memoria, comprendiendo el circuito integrado:
- una interfaz de datos de imagen configurada para acceder a datos de imagen de la imagen;
- una interfaz de datos de profundidad configurada para acceder a datos de profundidad de un mapa de profundidad de plantilla, en el que el mapa de profundidad de plantilla representa una plantilla que se debe adaptar a los datos de la imagen;
- un subsistema de procesamiento configurado para aplicar un filtro bilateral conjunto al mapa de profundidad de plantilla utilizando los datos de la imagen como un término de rango en el filtro bilateral conjunto, obteniendo de este modo un mapa de profundidad adaptado a la imagen como salida;
en el que el subsistema de procesamiento está configurado para implementar el filtro bilateral conjunto (530) mediante:
- inicialización (540) de un volumen de suma de profundidades ponderadas y un volumen de suma de pesos como respectivas estructuras de datos vacías en una memoria, comprendiendo cada uno de dichos volúmenes (300):
- dos dimensiones espaciales (310, 320) que representan una versión sub-muestreada de las dos dimensiones espaciales de los datos de la imagen, y
- al menos una dimensión de rango (330) que representa una versión sub-muestreada de una dimensión de rango de un componente de imagen de los datos de la imagen;
en el que las celdas de dichos volúmenes definen unos bins en un sistema de coordenadas de la imagen que se define con respecto a las dos dimensiones espaciales de la imagen y la dimensión de rango de los datos de la imagen;
- realización de una operación de splatting (550) para rellenar dichos volúmenes, en el que la operación de splatting comprende, para cada píxel de la imagen:
- identificar bins adyacentes en el volumen de suma de profundidades ponderadas en los que el píxel contribuye en la operación de splatting en base a una coordenada del píxel en el sistema de coordenadas de la imagen, siendo la coordenada indicativa de la posición relativa del píxel con respecto a los bins de cada uno de dichos volúmenes,
- obtener un valor de profundidad del píxel a partir del mapa de profundidad de plantilla;
- para cada uno de los bins adyacentes:
- obtener un peso de splatting para ponderar el valor de profundidad, en el que el peso de splatting determina una contribución del píxel en un bin respectivo y se determina en base a la posición relativa del píxel con respecto al bin respectivo,
- ponderar el valor de profundidad mediante el peso de splatting,
- acumular el valor de profundidad ponderada en el bin respectivo del volumen de suma de profundidades ponderadas, y acumular el peso de splatting en un correspondiente bin del volumen de suma de pesos;
- realizar una operación de corte (560) para obtener un volumen de profundidad adaptado a la imagen, dividiendo, para cada bin del volumen de suma de profundidades ponderadas y correspondiente bin del volumen de suma de pesos, los valores de profundidad ponderados acumulados por los pesos acumulados; - realizar una operación de interpolación (570) para obtener un valor de profundidad adaptado a la imagen del mapa de profundidad adaptado a la imagen para cada píxel de la imagen, en el que la operación de interpolación comprende:
- en base a la coordenada del píxel en el sistema de coordenadas de la imagen, identificar bins adyacentes en el volumen de profundidad adaptado a la imagen en base al píxel que contribuye en los correspondientes bins del volumen de suma de profundidades ponderadas durante la operación de splatting;
- aplicar un filtro de interpolación a los bins adyacentes del volumen de profundidad adaptado a la imagen, en el que el filtro de interpolación comprende, para cada uno de los bins adyacentes, un peso de interpolación que se determina en base a la posición relativa del píxel con respecto al bin respectivo.
2. El circuito integrado según la reivindicación 1, en el que el subsistema de procesamiento comprende un circuito hardware específico de aplicación y un microprocesador configurable por software, en el que: - el circuito hardware específico de aplicación está configurado para realizar la operación de splatting y la operación de interpolación; y
- el microprocesador es configurado por el software para que, durante el funcionamiento del circuito integrado, realice la operación de corte.
3. El circuito integrado según la reivindicación 2, en el que el circuito hardware específico de aplicación comprende una tabla de filtrado para almacenar los pesos de splatting utilizados en la operación de splatting y/o los pesos de interpolación utilizados en la operación de interpolación.
4. El circuito integrado según la reivindicación 3, en el que la tabla de filtrado es cargada con los pesos de splatting utilizados en la operación de splatting y los pesos de interpolación utilizados en la operación de interpolación antes de realizar la respectiva operación.
5. El circuito integrado según una cualquiera de las reivindicaciones 1 a 3, en el que los pesos de splatting utilizados en la operación de splatting y los pesos de interpolación utilizados en la operación de interpolación son los mismos.
6. El circuito integrado según una cualquiera de las reivindicaciones 1 a 5, en el que los pesos de splatting utilizados en la operación de splatting y los pesos de interpolación utilizados en la operación de interpolación representan una interpolación lineal con respecto al sistema de coordenadas de la imagen.
7. El circuito integrado según una cualquiera de las reivindicaciones 2 a 6 que dependen de la reivindicación 2, en el que el microprocesador es configurado por el software para que, durante el funcionamiento del circuito integrado, aplique un filtrado temporal al volumen de suma de profundidades ponderadas y al volumen de suma de pesos antes de realizar la operación de corte.
8. El circuito integrado según la reivindicación 7, en el que el filtrado temporal es un filtro de respuesta a impulso infinito de primer orden o superior.
9. El circuito integrado según una cualquiera de las reivindicaciones 1 a 8, en el que el subsistema de procesamiento está configurado para, después de realizar la operación de splatting, convolucionar el volumen de suma de profundidades ponderadas con un núcleo gaussiano.
10. El circuito integrado según una cualquiera de las reivindicaciones 1 a 9, en el que el circuito integrado es o forma parte de una matriz de puertas programable en campo.
11. El circuito integrado según una cualquiera de las reivindicaciones 1 a 9, en el que el circuito integrado es o forma parte de un sistema en un chip.
12. Un dispositivo que comprende el circuito integrado según una cualquiera de las reivindicaciones 1 a 11.
13. El dispositivo según la reivindicación 12, que es un dispositivo de visualización o un decodificador.
14. Un procedimiento implementado por dispositivo informático para estimar un mapa de profundidad a partir de una imagen (200), comprendiendo el procedimiento:
- acceder a datos de imagen de la imagen;
- acceder a datos de profundidad de un mapa de profundidad de plantilla, en el que el mapa de profundidad de plantilla representa una plantilla que se debe adaptar a los datos de la imagen;
- aplicar un filtro bilateral conjunto al mapa de profundidad de plantilla utilizando los datos de la imagen como un término de rango en el filtro bilateral conjunto, obteniendo de este modo un mapa de profundidad adaptado a la imagen como salida, en el que la aplicación del filtro bilateral conjunto (530) comprende: - inicializar (540) un volumen de suma de profundidades ponderadas y un volumen de suma de pesos como respectivas estructuras de datos vacías en una memoria, comprendiendo cada uno de dichos volúmenes: - dos dimensiones espaciales (310, 320) que representan una versión sub-muestreada de las dos dimensiones espaciales de los datos de la imagen, y
- al menos una dimensión de rango (330) que representa una versión sub-muestreada de una dimensión de rango de un componente de imagen de los datos de la imagen;
en el que las celdas de dichos volúmenes definen unos bins en un sistema de coordenadas de la imagen que se define con respecto a las dos dimensiones espaciales de la imagen y la dimensión de rango de los datos de la imagen;
- realizar una operación de splatting (550) para rellenar dichos volúmenes, en el que la operación de splatting comprende, para cada píxel de la imagen:
- identificar bins adyacentes en el volumen de suma de profundidades ponderadas en los que el píxel contribuye en la operación de splatting en base a una coordenada del píxel en el sistema de coordenadas de la imagen, siendo la coordenada indicativa de la posición relativa del píxel con respecto a los bins de cada uno de dichos volúmenes,
- obtener un valor de profundidad del píxel a partir del mapa de profundidad de plantilla;
- para cada uno de los bins adyacentes:
- obtener un peso de splatting para ponderar el valor de profundidad, en el que el peso de splatting determina una contribución del píxel en un bin respectivo y se determina en base a la posición relativa del píxel con respecto al bin respectivo,
- ponderar el valor de profundidad mediante el peso de splatting,
- acumular el valor de profundidad ponderada en el bin respectivo del volumen de suma de profundidades ponderadas, y acumular el peso de splatting en un correspondiente bin del volumen de suma de pesos;
- realizar una operación de corte (560) para obtener un volumen de profundidad adaptado a la imagen, dividiendo, para cada bin del volumen de suma de profundidades ponderadas y correspondiente bin del volumen de suma de pesos, los valores de profundidad ponderados acumulados por los pesos acumulados; - realizar una operación de interpolación (570) para obtener un valor de profundidad adaptado a la imagen del mapa de profundidad adaptado a la imagen para cada píxel de la imagen, en el que la operación de interpolación comprende:
- en base a la coordenada del píxel en el sistema de coordenadas de la imagen, identificar bins adyacentes en el volumen de profundidad adaptado a la imagen en base al píxel que contribuye en los correspondientes bins del volumen de suma de profundidades ponderadas durante la operación de splatting;
- aplicar un filtro de interpolación a los bins adyacentes del volumen de profundidad adaptado a la imagen, en el que el filtro de interpolación comprende, para cada uno de los bins adyacentes, un peso de interpolación que se determina en base a la posición relativa del píxel con respecto al bin respectivo.
15. Un medio legible por dispositivo informático que comprende datos transitorios o no transitorios que representan instrucciones dispuestas para hacer que un sistema procesador realice el procedimiento según la reivindicación 14.
ES18713711T 2017-04-13 2018-04-04 Implementación eficiente de un filtro bilateral conjunto Active ES2928563T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP17166455.0A EP3389265A1 (en) 2017-04-13 2017-04-13 Efficient implementation of joint bilateral filter
PCT/EP2018/058604 WO2018189010A1 (en) 2017-04-13 2018-04-04 Efficient implementation of joint bilateral filter

Publications (1)

Publication Number Publication Date
ES2928563T3 true ES2928563T3 (es) 2022-11-21

Family

ID=58632767

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18713711T Active ES2928563T3 (es) 2017-04-13 2018-04-04 Implementación eficiente de un filtro bilateral conjunto

Country Status (12)

Country Link
US (1) US11216962B2 (es)
EP (2) EP3389265A1 (es)
JP (1) JP7094299B2 (es)
KR (1) KR102464876B1 (es)
CN (1) CN110506418B (es)
BR (1) BR112019019379A2 (es)
CA (1) CA3056371C (es)
ES (1) ES2928563T3 (es)
IL (1) IL269868B (es)
RU (1) RU2767512C2 (es)
TW (1) TWI762617B (es)
WO (1) WO2018189010A1 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11501413B2 (en) * 2020-11-17 2022-11-15 Adobe Inc. Kernel reshaping-powered splatting-based efficient image space lens blur

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2317336A1 (en) * 2000-09-06 2002-03-06 David Cowperthwaite Occlusion resolution operators for three-dimensional detail-in-context
RU2215326C2 (ru) * 2001-06-29 2003-10-27 Самсунг Электроникс Ко., Лтд. Иерархическое основанное на изображениях представление неподвижного и анимированного трехмерного объекта, способ и устройство для использования этого представления для визуализации объекта
KR100574974B1 (ko) * 2004-02-26 2006-05-02 삼성전자주식회사 암호화된 방송 데이터를 위한 제한수신기능과복제방지기능을 구비하는 장치 및 방법
KR20080114324A (ko) * 2007-06-27 2008-12-31 엘지이노텍 주식회사 카메라 모듈, 이의 검사 장치 및 검사 방법
EP2184713A1 (en) * 2008-11-04 2010-05-12 Koninklijke Philips Electronics N.V. Method and device for generating a depth map
WO2010084460A1 (en) 2009-01-20 2010-07-29 Nxp B.V. Image processing using a bilateral grid
WO2010134890A1 (en) 2009-05-21 2010-11-25 Esa Group Pte Ltd System and method for testing and managing camera modules
US8988461B1 (en) * 2011-01-18 2015-03-24 Disney Enterprises, Inc. 3D drawing and painting system with a 3D scalar field
CN102055996B (zh) 2011-02-23 2013-01-23 南京航空航天大学 基于空间逐层扫描的真三维立体显示系统及其显示方法
US8754829B2 (en) * 2012-08-04 2014-06-17 Paul Lapstun Scanning light field camera and display
TW201432622A (zh) 2012-11-07 2014-08-16 Koninkl Philips Nv 產生一關於一影像之深度圖
CN103927717B (zh) 2014-03-28 2017-03-15 上海交通大学 基于改进型双边滤波的深度图像恢复方法
US8988317B1 (en) * 2014-06-12 2015-03-24 Lytro, Inc. Depth determination for light field images
US9838679B2 (en) 2015-07-28 2017-12-05 Viavi Solutions Inc. Distance to fault measurements in cable TV networks
CN106210713A (zh) 2016-08-30 2016-12-07 昆山软龙格自动化技术有限公司 一种手机摄像头模组多模组同时测试装置

Also Published As

Publication number Publication date
JP7094299B2 (ja) 2022-07-01
TW201837863A (zh) 2018-10-16
WO2018189010A1 (en) 2018-10-18
RU2019136258A3 (es) 2021-05-13
EP3610645B1 (en) 2022-07-13
TWI762617B (zh) 2022-05-01
EP3610645A1 (en) 2020-02-19
BR112019019379A2 (pt) 2020-05-05
CN110506418A (zh) 2019-11-26
KR20190135527A (ko) 2019-12-06
US20210192760A1 (en) 2021-06-24
EP3389265A1 (en) 2018-10-17
CA3056371C (en) 2024-04-02
CA3056371A1 (en) 2018-10-18
RU2019136258A (ru) 2021-05-13
US11216962B2 (en) 2022-01-04
KR102464876B1 (ko) 2022-11-07
JP2020518892A (ja) 2020-06-25
CN110506418B (zh) 2021-05-25
IL269868B (en) 2022-03-01
RU2767512C2 (ru) 2022-03-17

Similar Documents

Publication Publication Date Title
US11676253B2 (en) Systems, methods, and media for hierarchical progressive point cloud rendering
US20180197304A1 (en) Motion based adaptive rendering
ES2313035T3 (es) Procedimiento y unidad de ajuste a escala para ajustar a escala un modelo tridimensional.
CN107967707B (zh) 用于处理图像的设备和方法
US11257275B2 (en) Dual distance field color palette
ES2928563T3 (es) Implementación eficiente de un filtro bilateral conjunto
ES2865384T3 (es) Estimador de profundidad de doble modo
US8243095B2 (en) Rendering apparatus and method
ES2533051T3 (es) Procedimiento y dispositivo para determinar una imagen de profundidad
US9508193B2 (en) Apparatus, method, and non-transitory tangible computer readable medium thereof for creating 3D scene
US20220108420A1 (en) Method and system of efficient image rendering for near-eye light field displays
CN111683238B (zh) 基于观察跟踪的3d图像融合方法及装置
CN105793896A (zh) 图像输出装置和渲染图像的方法
EP2677496B1 (en) Method and device for determining a depth image
KR20220160197A (ko) 기준 이미지를 이용한 텍스처 매핑 방법 및 그 방법을 수행하는 컴퓨팅 장치
Vogelgsang et al. Adaptive lumigraph rendering with depth maps
Summers-Stay Graphcut Texture Synthesis for Single-Image Superresolution
CN115268805A (zh) 地图显示方法和装置
Killpack Visualization of three-dimensional models from multiple texel images created from fused ladar/digital imagery