MX2007000369A - Procesamiento de imagen utilizando valores ligeros y otras mejoras de procesamiento de imagen. - Google Patents

Procesamiento de imagen utilizando valores ligeros y otras mejoras de procesamiento de imagen.

Info

Publication number
MX2007000369A
MX2007000369A MX2007000369A MX2007000369A MX2007000369A MX 2007000369 A MX2007000369 A MX 2007000369A MX 2007000369 A MX2007000369 A MX 2007000369A MX 2007000369 A MX2007000369 A MX 2007000369A MX 2007000369 A MX2007000369 A MX 2007000369A
Authority
MX
Mexico
Prior art keywords
image information
information
processing
image
linear
Prior art date
Application number
MX2007000369A
Other languages
English (en)
Inventor
Donald J Munsil
Glenn F Evans
Stacey L Spears
Original Assignee
Microsoft Corp
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
Priority claimed from US10/902,325 external-priority patent/US7643675B2/en
Priority claimed from US10/987,378 external-priority patent/US7158668B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority claimed from PCT/US2005/026761 external-priority patent/WO2006015107A2/en
Publication of MX2007000369A publication Critical patent/MX2007000369A/es

Links

Landscapes

  • Image Processing (AREA)

Abstract

Se describen estrategias para procesar informacion de imagen en una forma lineal para reducir la cantidad de artefactos (comparado al procesamiento de los datos en forma no lineal). Los tipos ilustrativos de operaciones de procesamiento pueden incluir, clasificacion, composicion, alfa-mezcla, deteccion de borde, y asi sucesivamente. En una implementacion mas especifica, se describen estrategias para procesar informacion de imagen (114) es decir: a) lineal; b) en el espacio de color RGB; c) alta precision (por ejemplo, proporcionado por representacion de punto flotante); d) progresivo; y e) canal lleno. Otras mejoras proporcionan estrategias para: a) procesar informacion de imagen en un espacio seudo-lineal para mejorar la velocidad de procesamiento; b) implementar una tecnica de dispersion de error mejorada; c) calcular y aplicar dinamicamente nucleos de filtro; d) producir codigo de tuberia en una forma optima; y e) implementar varias tareas de procesamiento que utilizan tecnicas de sombreado de pixel novedosas.

Description

PROCESAMIENTO DE IMAGEN UTILIZANDO VALORES LIGEROS Y OTRAS MEJORAS DE PROCESAMIENTO DE IMAGEN REFERENCIA A SOLICITUDES CO-PEN DIENTES Esta solicitud es una continuación en parte de la Solicitud No-Provisional de E.U.A. co-pendiente en Serie No. 10/902,325 (la Solicitud '325), presentada el 29 de julio, 2004, titulada "Estrategias para Procesar Información de Imagen que Utiliza una Estructura de Datos de Información de Color", nombrando a Glenn F. Evans y Stephen J. Estrop como los inventores. La Solicitud '325, a su vez, reclama el beneficio de la Solicitud Provisional de E.U.A. No. 60/492,029 (la Solicitud '029) presentada el 1 agosto, 2003. Las Solicitudes '325 y '029 se incorporan aquí por referencia en sus totalidades respectivas.
CAMPO TÉCNICO La materia objeto pertenece a estrategias para procesar información de imagen, y, en una implementación más particular, a estrategias para procesar información de imagen de video que utiliza una tubería de procesamiento de video.
ANTECEDENTES DE LA INVENCIÓN Problemas Ilustrativos en las Técnicas de Procesamiento de Video La tecnología de procesamiento de video en uso actual se entiende mejor al trazar la evolución de tal tecnología con los años. Se agregaron características en varias etapas en la evolución para dirigir problemas que enfrenta la industria en estos momentos. Para mantener la compatibilidad y consistencia, la tecnología anterior puede retener algunas de estas características, incluso aunque los problemas para los que se diseñaron las características con el fin de resolverlos ya se hubieran desvanecido. Como resultado, la tecnología actual puede observarse como una aglomeración de tales características con base histórica, que reflejan una serie de problemas anteriores que enfrenta la industria en diferentes tiempos, compromisos entre grupos estándares, coacciones con base tecnológica cambiante y oportunidades, y así sucesivamente. Una consecuencia del origen antes descrito de la tecnología de procesamiento de video es que aquellos que trabajan en el campo desarrollaron pensamientos arraigados con respecto a ciertos aspectos de la tecnología de procesamiento de video. Existen nociones fijas con respecto a como interpretar cierta información de video y nociones fijas con respecto a como procesar "correctamente" tal información de video. Como se aprecia por los actuales inventores, muchas de estas nociones establecidas no se fundaron bien y necesitan reconsiderarse. Lo principal entre las nociones fijas es que la información de video generalmente debe procesarse en la forma en la que se recibió, ya sea de una fuente de transmisión, un medio de almacenamiento (por ejemplo, un disco de DVD), u otra fuente. Sin embargo, muchos estándares de video no se designaron con la expectación que la información de video debe procesarse antes de presentación. Por ejemplo, las televisiones convencionales no acomodan funcionalidad de procesamiento compleja; estos dispositivos simplemente reciben y presentan información de video. Como tal, la forma en la que se recibe la información de video puede no acomodar fácilmente el procesamiento eficiente de tal información. Como un resultado, la aplicación directa de algoritmos de procesamiento estándar en muchas formas aceptadas de información de video produce varios artefactos. Aquellos expertos en la técnica tomaron nota de estos artefactos en algunas ocasiones. Sin embargo, más que cuestionar las premisas básicas de las técnicas que se emplean, estos practicantes frecuentemente se reclasifican a grupos locales para remediar los problemas. Estas soluciones pueden disfrazar los problemas en ciertas situaciones específicas de aplicación, pero no resuelven los problemas en general. Por ejemplo, la información de video frecuentemente se recibe por una tubería de procesamiento de video en una forma que no es lineal, entrelazada, submuestreada de croma, y expresada en alguna variante de un espacio de color relacionado con luma (por ejemplo, información Y'U'V) (El término "no lineal" significa que existe una relación no lineal entre una señal entrante y brillantez de salida resultante producida de esta señal, otros términos en la oración precedente se explicarán completamente más adelante) Los practicantes pueden intentar aplicar varios algoritmos de procesamiento de tipo lineal a esta información para modificarla en una forma prescrita, tal como a reajustar la información de video, combinar la información de video con otra información (por ejemplo, composición), y así sucesivamente Como se aprecia por los presentes inventores, muchos de estos algoritmos no proporcionan resultados óptimos o incluso correctos cuando se procesa información de video no lineal de esta naturaleza Trabajar sólo con información 42 2 o 42 0 de croma entrelazado submuestreado (para definirse mas adelante) compone estos pobres resultados Por ejemplo, la información de procesamiento en 4-2-2 ó 4,2,0 puede resultar en la propagación de errores a través de diferentes etapas de la tubería de procesamiento de video Las deficiencias en los resultados procesados se manifiestan en varios artefactos, que pueden o no ser evidentes a simple vista De nuevo, aquellos expertos en la técnica pueden notar los pobres resultados, pero no identificaron las causas En algunos casos, esto puede ser debido a la falla de los practicantes para entender completamente la compleja naturaleza de muchos estándares de codificación de video En otros casos, los practicantes pueden no estar conscientes que están usando algoritmos lineales para procesar información no lineal, de hecho, en algunos casos los practicantes pueden creer incorrectamente que tratan con información lineal También, el enfoque general en la técnica de procesamiento de video se dirige en la producción de información de imagen, no necesariamente el procesamiento intermediario y corrección de tal información La aplicación de algoritmos de tipo lineal para información no lineal es sólo un ejemplo del pensamiento arraigado antes descrito en la técnica de procesamiento de video Como se describirá más adelante, muchas otras técnicas se fijaron y no producen resultados óptimos, tal como en el caso de temblor Por ejemplo, los practicantes pueden intentar remediar artefactos causados por algunos algoritmos de cuantificación de temblor al agregar una pequeña cantidad de ruido aleatorio para ingresar información de imagen y después cuantificar la imagen ruidosa resultante Estas técnicas valoran el error de cuantificación al calcular después la diferencia entre la imagen ruidos y el resultado cuantificado. Esto puede tener el efecto de curación en artefactos de temblor, pero al precio de hacer la imagen de salida más ruidosa en proporción a la cantidad de ruido aleatorio agregada a la información de imagen original Pueden existir otros casos de ideas establecidas en la técnica de procesamiento de video que continúan aplicándose, debido a costumbre y familiaridad, sin reconocimiento de sus desventajas significantes pero sutiles. El tema general de las mejoras aquí descritas involucra la reconsideración de estas ideas rígidas, acopladas con el diseño de soluciones alternativas. El campo de procesamiento de video es rico en terminología. Por consiguiente, como un asunto preeliminar, se mencionará más adelante una breve introducción a ciertos temas en el campo de procesamiento de video para ayudar al lector. Por ejemplo, varios términos utilizados anteriormente al pasar (submuestreado lineal, entrelazado, luma, croma, etc.) se definen más adelante. Como un asunto general de terminología, el término "información de imagen" se utilizará a través de este documento para representar una amplia clase de información que puede presentarse como cualquier tipo de salida visual, que incluye, pero no se limita a, información de video de movimiento.
Conceptos de Antecedente • Espacio de Color y Consideraciones Relacionadas Los colores pueden especificarse utilizando tres componentes. Una corriente de imagen que confía en la transmisión de contenido de color que utiliza componentes de color separados se denomina como un video de componente. Una especificación común define color que utiliza componentes rojo, verde y azul (RGB). Más formalmente, los componentes RGB describen las intensidades proporcionales de las lámparas de referencia que crean un color equivalente en percepción para un espectro dado. En general, un espacio de color RGB puede especificarse por los valores cromáticos asociados con sus primarios de color y su punto blanco. El punto blanco se refiere a la cromaticidad asociada con un color blanco de referencia. Los aparatos electrónicos que reproducen imágenes de color complementan la naturaleza tricromática de visión humana al proporcionar tres tipos de fuentes de luz. Los tres tipos de fuentes de luz producen diferentes respuestas de espectro que se perciben como colores diferentes a un observador humano. Por ejemplo, un tubo de rayo de cátodo (CRT) proporciona fósforos rojo, verde y azul para crear diferentes colores, de esa forma complementa alguna variante del espacio de color RGB discutido anteriormente. Otras tecnologías no utilizan fósforos, pero de otra forma reproducen color al utilizar fuentes de luz que emiten al menos tres tipos de luz. Sin embargo, el modelo de codificación RGB no es una elección eficiente para la transmisión de información de imagen, y no se conforma bien con algunos estándares más antiguos. Por consiguiente, la información de imagen comúnmente se transmite a un aparato objetivo que utiliza algún modelo de codificación diferente a RGB. Con el recibo, la información de ¡magen puede transformarse internamente por un aparato de presentación en un espacio de color relacionado con RGB para presentación. Como se describirá más adelante, bajo el encabezado "Consideraciones Gama", cada dato de componente R, G, B puede expresarse en términos de su forma corregida pre-gama, denominada como valores R' G' y B'.
(Generalmente, como por convención, la prima denota información no lineal en su descripción) Una táctica común con respecto a esto es definir color por referencia a un componente relacionado con luminancia (Y) y componentes relacionados con croma La lummancia generalmente se refiere a la intensidad percibida (brillantez) de luz La luminancia puede expresarse en una forma corregida pre-gama (en la forma descrita más adelante bajo "Consideraciones Gama") para generar su contraparte no lineal, denominada como "luma" (Y') Los componentes croma definen el contenido de color de la información de imagen relativa a la luma. Por ejemplo, en el dominio digital, el símbolo "Cb" corresponde a una representación clasificada de entero de n bits de la diferencia B'-Y' (típicamente del rango de -127 ..128 en valores de 8 bits), y el símbolo "Cr" corresponde a una representación clasificada de entero de n bits de la diferencia R'-Y' El símbolo "Pb" se refiere a la contraparte análoga de Cb, y el símbolo "Pr" se refiere a la contraparte análoga de Cr. Los símbolos Pb y Pr también pueden referirse a la forma normalizada digital de Cb o Cr con un rango nominal de [-0 5 0 5] La información de imagen de componente definida por CICR y PbPr puede llenarse formalmente (por ejemplo, Cb'Cr' y Pb'Pr') mientras representan información no lineal Sin embargo, ya que Pb, Pr, Cb, o Cr siempre se refieren a datos no lineales, la anotación llena frecuentemente se cae como un asunto de conveniencia y convención (por ejemplo, la anotación Y'PbPr se utiliza en vez de Y'PB'Pr').
El contenido de color también puede comunicarse como video de material compuesto (mas que el video de componente antes descrito) Las señales compuestas combinan información luma y croma en una señal Por ejemplo, en el sistema de codificación Y'UV, U representa una versión clasificada de B-Y y V representa una versión clasificada de R-Y Estos componentes de luma y croma después se procesan para proporcionar una señal individual El sistema de codificación Y'IQ define otro sistema de codificación compuesto formado al transformar los componentes U y V en una forma prescrita Una razón por la que la industria promovió históricamente el uso de espacios de color relacionados Y (Y'CbCr, Y'PbPr, YUV, YIQ, etc ) es debido a que reducir información de imagen de color en estos espacios de color puede realizarse más fácilmente comparado a la información de imagen expresada en el espacio de color RGB Estos espacios de color también son compatibles de regreso con estándares más antiguos desarrollados para información de imagen blanca y negra El término "información relacionada con luma" generalmente se refiere a cualquier espacio de color que tiene un componente relacionado con brillantez y componentes relacionados con croma, y abarca al menos todos los espacios de color antes mencionados Generalmente es posible transformar contenido de color de un espacio de color a otro espacio de color que utiliza una o más transformaciones afines de matriz Más formalmente, la propiedad de metamepsmo hace posible expresar un grupo de coeficientes de espacio de color en términos de otro grupo de funciones de acoplamiento (en donde "metameros" se refiere a dos espectros que delinean el mismo grupo de coeficientes de espacio de color, y a partir de allí parecen ser idénticos en percepción, es decir, que parecen del mismo color). • Consideraciones Gama Los tubos de rayos catódicos (CRTs) no tienen una función de transferencia de respuesta lineal. En otras palabras, la relación de voltaje aplicada a un CRT y la luminancia resultante producida por el CRT no define una función lineal. Más específicamente, la respuesta teórica prevista de un CRT tiene una respuesta proporcional a ley de energía 5/2; es decir, para un voltaje de entrada dado "V", la luminancia "L" resultante de CRT puede calcularse como L = V2 5. La función de transferencia también se denomina aquí como una función de respuesta gama", y el exponente de la señal de voltaje se denomina como "gama". Por otro lado, cuando la información de imagen se captura por una cámara o se genera por un sistema de presentación 3-D, la información de imagen se expresa en un espacio de color RGB lineal, que significa que es una relación lineal entre la señal entrante y la brillantez de salida. Para dirigir la disparidad entre la linealidad de la cámara y la no linealidad de la presentación, las cámaras convencionalmente pre-compensan la señal que produjo al aplicar la inversa de la gama. En otras palabras, la función de transferencia de la cámara (algunas veces denominada como la función de transferencia de codificación) es aproximadamente la función inversa de la respuesta de luminancia CRT. El resultado de la aplicación de la función de transferencia de codificación (o la gama reversa) es para producir información de imagen "corregida por gama" que no es lineal en forma. Cuando la señal no lineal se pasa a través del dispositivo de presentación, se produce una luminancia cera de lineal. Una vez más, de acuerdo con la anotación descrita anteriormente, la información de imagen no lineal (o precompensada) se denota al llenar sus componentes, por ejemplo, R'G'B' o Y'CbCr (en donde los primos en los componentes Cb y Cr se implican). De esa forma se ha vuelto común y estándar almacenar y transmitir información de imagen e su forma no lineal de luma-croma (compensada). Para mantener compatibilidad, cualquier fuente que produce una señal para presentarse en un CRT también debe aplicar primero la función inversa a la señal. Como una consideración especial, la codificación de la información de imagen que utiliza una función de transferencia comúnmente aplica una función de aproximación especial para la porción de bajo voltaje de la función. Principalmente, las técnicas de codificación comúnmente proporcionan un segmento lineal en esta porción para reducir los efectos de ruido en el sensor de imagen, Este segmento se denomina como una "parte trasera lineal", que tiene una "inclinación de talón". Este segmento mejora la calidad de información de imagen presentada en CRTs reales, mientras estos dispositivos tienen respuestas de voltaje de luminancia cerca de 0 debido a la construcción física de estos dispositivos. • Muestreo y alineación de Información Croma Relativa a Información Luma La visión humana es más en respuesta a cambios en intensidad de luz que los componentes cromáticos de luz. Los sistemas de codificación toman ventaja de este hecho para reducir la cantidad de información croma (CICR) que se codifica relativa a la cantidad de información luma (Y'). Esta técnica se denomina como un sub-muestreo croma. Una anotación numérica representada generalmente como L:M:N puede utilizarse para expresar esta estrategia de muestreo, en donde "L" representa el factor de referencia de muestreo del componente de luma (Y'), y "M" y "N" se refieren al muestreo croma (por ejemplo, Cb y Cr, respectivamente) relativo al muestreo luma (Y'). Por ejemplo la anotación 4:4:4 puede denotar datos Y'CbCr en los cuales hay una muestra de croma para toda muestra luma. La anotación 4:2:2 puede denotar datos Y'CbCr en los cuales hay una muestra de croma para cada dos muestras luma (horizontalmente). La anotación 4:2:0 puede denotar datos Y'CbCr en los cuales hay una muestra de croma para cada grupo de dos por dos de muestras luma. La anotación 4:1:1 puede denotar datos Y'CbCr en los cuales hay una muestra de croma para cada cuatro muestras luma (horizontalmente). En esas circunstancias en donde la estrategia de codificación proporciona más información luma que la información croma, un decodificador puede reconstruir la información croma "faltante" al realizar interpolación basada en la información croma que se suministra. Más generalmente, el muestreo hacia abajo se refiere a cualquier técnica que produce menos muestras de imagen en comparación con un grupo inicial de muestras de imagen. El muestreo hacia arriba se refiere a cualquier técnica que produce más muestras de imagen en comparación con el grupo inicial de muestras de imagen. De esa forma, la interpolación antes descrita define un tipo de muestreo hacia arriba. Las estrategias de codificación también especifican la forma en la cual las muestras de croma se "alinean" espacialmente para las muestras luma correspondientes. Las estrategias de codificación difieren con respecto a esto. Algunos alinean las muestras de croma con las muestras de luma, para que las muestras de croma se coloquen directamente "sobre" las muestras de luma. Esto se denomina como coseno. Otras muestras de croma de posición de estrategias en espacios intersticiales dentro del arreglo d¡-dimensional de muestras luma. • Consideraciones de Cuantificación La cuantificación se refiere a la metodología con la cual los valores numéricos separados se asignan a las amplitudes de señal de componentes de color (o información negra y blanca). En el dominio digital, los valores numéricos separan un rango prescrito (gama) de valores de espacio de color en un número prescrito de pasos. Es común, por ejemplo, utilizar 255 pasos para describir cada valor de componente, para que cada componente pueda asumir un valor de 0 a 255. Es común expresar cada valor de color utilizandod bits. Convertir de un número de alta precisión a un número de precisión inferior algunas veces puede producir varios artefactos. Varios algoritmos de dispersión de error se aconsejaron para dirigir este problema, tal como el algoritmo de Floyd Steinberg. Los algoritmos de dispersión de error pueden distribuir los errores producidos por los efectos completos de cuantificación para acercar ubicaciones de píxel. Otra información de antecedente con respecto al algoritmo de Floyd-Steinberg se presenta dentro del cuerpo de la siguiente Descripción Detallada. • Consideraciones de Representación entrelazada Contra Progresiva Originalmente, las televisiones sólo presentaban información de imagen sólo negra y blanca en la forma de barrido progresivo de arriba abajo. Hoy en día, las señales de televisión convencionales se escanean en forma entrelazada. Al entrelazar, un primer campo de un marco de video se captura, siguen justo después de eso, por un segundo campo del marco de video (por ejemplo, 1/50 o 1/60 segundos después de eso). El segundo campo es verticalmente equivalente relativo al primer campo por una ligera cantidad, para que el segundo campo capture información en los espacios intersticiales entre las líneas de escaneo del primer campo. La información de video se presenta por la presentación del primer y segundo campos en sucesión rápida para que la información de video generalmente se perciba por un observador humano como un flujo contiguo individual de información. Sin embargo, los monitores de computadora y otra información de imagen de presentación de equipo de presentación en forma progresiva, sin intervalos. De esa forma, con el fin de que un aparato presente información entrelazada en un monitor de computadora, debe presentar marcos progresivos en la velocidad de campo entrelazada al interpolar los datos para el campo opuesto (un procedimiento denominado como "des-entrelazar"). Por ejemplo, para presentar un campo entrelazado, debe interpolar los datos "faltantes" para la ubicación espacial entre las líneas al examinar los campos en cualquier lado. El término "formato progresivo" se refiere generalmente a cualquier formato de imagen no entrelazado. La información de imagen (por ejemplo, de una cámara de video) típicamente se almacena en una forma entrelazada, por ejemplo, en donde el primer campo se almacena de forma separada (semánticamente) del segundo campo. Si la información de imagen simplemente se va a presentar en una presentación de TV entrelazada, su información entrelazada Y'UV puede pasarse directamente al CRT. El CRT internamente convierte la información Y'UV a información R'G'B' y conduce las armas de salida que utilizan esta señal. El entrelazamiento es ventajoso debido a que duplica la resolución vertical efectiva de información de imagen. Sin embargo, el entrelazamiento también puede introducir artefactos. Esto es debido a que los objetos pueden moverse a 60hz, pero, en la presentación entrelazada, sólo la mitad de la información se muestra cada 30hz. El artefacto resultante producido por este fenómeno algunas veces se denomina como "emplumado". El artefacto se manifiesta particularmente en la presentación del video de alto movimiento, en donde los objetos parecen separarse en líneas pares e impares. Información adicional con respecto a cada uno de los temas de punto de bala pueden encontrarse en un número de textos de introducción, tal como Video Digital y HDTV bien considerado de Charles Poyton (Morgan Kaufmann Publishers, 2003).
BREVE DESCRIPCIÓN DE LA INVENCIÓN Se describen estrategias para procesar información de imagen en una forma lineal para reducir la cantidad de artefactos (comparado con procesamiento de datos en una forma no lineal). Los tipos ilustrativos de operaciones de procesamiento pueden incluir, clasificación, composición, alfa-mezcla, detección de borde, y así sucesivamente. En una ¡mplementación más específica, las estrategias se describen para procesar información de imagen que en: a) lineal; b) en el espacio de color RGB; c) alta precisión (por ejemplo, proporcionado por la representación de punto flotante); d) progresivo; y e) canal lleno. Otras mejoras proporcionan estrategias para: a) procesar información de imagen en un espacio seudo-lineal para mejorar la velocidad de procesamiento; b) ¡mplementar una técnica de dispersión de error mejorada; c) calcular y aplicar dinámicamente núcleos de filtro; d) producir código de tubería en una forma óptima; y e) implementar varias tareas de procesamiento que utilizan técnicas de sombra de píxel novedosas.
BREVE DESCRIPCIÓN DE LOS DIBUJOS La Figura 1 muestra una tubería de procesamiento de imagen ilustrativa que involucra el procesamiento de información de imagen en un formato lineal. La Figura 2 muestra un procedimiento ilustrativo para procesar información de imagen en un formato lineal que utiliza la tubería de procesamiento de imagen de la Figura 1. La Figura 3 ilustra una muestra de información de imagen 4:2:0 como un vehículo para discutir algunos de los retos en el procesamiento de esta información sin incurrir en artefactos. La Figura 4 muestra una porción ilustrativa de una tubería de procesamiento de imagen que acomoda el procesamiento de información de imagen en una forma seudo-lineal. La Figura 5 muestra un procedimiento ilustrativo para procesar información de imagen en una forma seudo-lineal que utiliza la porción de tubería de procesamiento de imagen en la Figura 4. Las Figuras 6 y 7 juntas explican acercamientos conocidos para realizar temblor y dispersión de error.
La Figura 8 muestra un sistema ilustrativo para proporcionar temblor y dispersión de error que genera resultados superiores a los modelos descritos en conexión con las Figuras 6 y 7. La Figura 9 muestra un procedimiento ilustrativo para realizar temblor y dispersión de error que utiliza el sistema de la Figura 8. La Figura 10 muestra un sistema ilustrativo para proporcionar filtro cuando se realiza clasificación, que involucra el cálculo dinámico de núcleos de filtro. La Figura 11 muestra un procedimiento ilustrativo para realizar filtrado que utiliza el sistema de la Figura 10. La Figura 12 muestra una tubería de procesamiento de imagen ilustrativa que puede incorporar cualquiera de las mejoras aquí descritas. La Figura 13 muestra un sistema ilustrativo para producir código eficiente utilizado para implementar la tubería de procesamiento de imagen de la Figura 12, por ejemplo, al eliminar módulos de código que no se requieren para una aplicación de procesamiento de imagen particular. La Figura 14 muestra un procedimiento ilustrativo para aplicar el sistema de optimización de código mostrado en la Figura 13. La Figura 15 muestra un sistema ilustrativo para implementar la tubería de procesamiento de imagen de la Figura 12 al utilizar una unidad de procesamiento de gráficos (GPU) que contiene funcionalidad de sombra de píxel. La Figura 16 muestra un diseño de sombra de píxel conocido.
La Figura 17 muestra principios generales relacionados con la aplicación de información de textura para polígonos en el contexto de aplicaciones de gráficos típicas. La Figura 18 muestra una implementación ilustrativa de un filtro de 4 tomas que utiliza una sombra de píxel. La Figura 19 muestra un procedimiento ilustrativo que explica la operación del filtro de la Figura 19. La Figura 20 muestra una implementación más general de aspectos de la tubería de procesamiento de imagen de la Figura 1 que utiliza una sombra de pixel. La Figura 21 muestra un ambiente de computadora ilustrativo para implementar aspectos de varias características mostradas en las figuras precedentes. Se utilizan los mismos números a través de la descripción y figuras para referenciar componentes y características similares. Las series de 10 números se refieren a características originalmente encontradas en la Figura 1, las series de 200 números se refieren a características originalmente encontradas en la Figura 2, las series de 300 números hacen referencia a características originalmente encontradas en la Figura 3, y así sucesivamente.
DESCRIPCIÓN DETALLADA DE LA MODALIDAD PREFERIDA La siguiente descripción menciona varias estrategias para mejorar una tubería de procesamiento de imagen. Las estrategias proponen nuevas formas de procesar información de imagen basada en una reconsideración de conceptos arraigados en la técnica Una primera clase de mejoras (descritas en la Sección A) pueden aplicar abstractamente a cualquier tubería de procesamiento de imagen Una segunda clase de mejoras (descritas en la sección B) aplican más específicamente a ciertas aplicaciones específicas de tecnología o específicas de implementación de tuberías de procesamiento de imagen. De acuerdo con una estrategia ilustrativa, la información de imagen recibida por una tubería de procesamiento de imagen se convierte en una forma lineal y después se procesa en esa forma. En una implementación ilustrativa, por ejemplo, la información de imagen relacionada con luma recibida (por ejemplo Y'CbCr) se convierte en una forma RGB lineal y se procesa en esa forma Las tareas de procesamiento ilustrativas pueden incluir des-entrelazamiento, reajuste (clasificación), composición, alfa-mezcla, detección de borde, forma, y así sucesivamente La información de imagen de procesamiento en espacio lineal (como opuesto a espacio no lineal) tiene ventajas marcadas, mientras generalmente produce resultados que tienen artefactos reducidos De acuerdo con otra estrategia ilustrativa, la información de imagen se convierte en un canal lleno (444) y formato de alta precisión y procesado en ese formato, seguido por cuantificación subsecuente de la información a una precisión inferior La información de precisión superior puede expresarse en formato de punto flotante. El procesamiento de canal lleno e información de alta precisión es ventajoso debido a que produce resultados de salida que tienen artefactos reducidos, y puede reducir degradación de resolución croma mientras la información se procesa en la tubería. De acuerdo con otra estrategia ilustrativa, se proporcionan provisiones especiales para la información de imagen entrelazada del procesamiento 4:2:0. Estas provisiones especiales proporcionan formas de integrar una operación de muestreo hacia arriba con una operación de des-entrelazamiento. Esta estrategia es benéfica por un número de razones. Por ejemplo, esta estrategia asegura mejor que la información 4:2:0 se procesará correctamente, por ejemplo, sin producir el artefacto de procesamiento así llamado "falla de croma".
De acuerdo con otra estrategia ilustrativa, pueden aplicarse funciones de transferencia especiales para convertir la información de imagen en espacio seudo-lineal, más que espacio lineal teóricamente correcto. Esto es seguido al realizar el procesamiento en la información de imagen en su espacio seudo-lineal que utilizan algoritmos de tipo lineal (sin tener que modificar estos algoritmos para contar su aplicación a señales no lineales). Esta estrategia es benéfica debido a que involucra operaciones matemáticas que pueden realizarse más rápidamente utilizando hardware de procesamiento disponible. Esta estrategia también elimina la necesidad de alterar algoritmos de procesamiento de imagen al incorporar mecanismos de corrección de error en estos algoritmos. El propósito de los mecanismos de corrección de error fue minimizar los efectos negativos de utilizar algoritmos lineales para trabajar en datos no lineales. Sin embargo, el diseño y aplicación de estos mecanismos de error frecuentemente se hacen más complejos que los algoritmos de procesamiento originales. De acuerdo con otra estrategia ilustrativa, se aplica un algoritmo de dispersión de error único. Para cada píxel en información de imagen original, el algoritmo cuantifica una suma definida por una imagen original, información de ruido, y un término de error. Esto genera un valor cuantificado para ese píxel particular. El algoritmo después calcula un término de error para un píxel subsecuente para procesarse al calcular la diferencia entre el valor cuantificado y el valor original. Esta estrategia es superior a estrategias conocidas en la técnica que esencialmente agregan ruido * a la información de imagen original, y cuantifican la información ruidosa; estas técnicas conocidas después calculan el término de error con referencia a la información de ¡magen ruidosa, más que la información de imagen original. De esa forma, diferente a la estrategia descrita aquí, las técnicas conocidas degradan la información de imagen original en proporción a la información de ruido agregada al mismo. Como otra mejora, las estrategias aquí descritas utilizan un generador de ruido que tiene un periodo de repetición suficientemente largo y características seudo aleatorias suficientemente "ruidosas" para que el mismo generador de ruido no produce artefactos en la información de imagen de destino. De acuerdo con otra estrategia, se utiliza una variación de un filtro de Catmull-Rom para realizar operaciones de clasificación. La estrategia involucra calcular el número de núcleos de filtro requeridos para reajustar la información de ¡magen y el número de tomas requeridas por cada núcleo, y después pre-calcular los núcleos de filtro. Estos núcleos de filtro después se aplican a la información de imagen. Más específicamente, los núcleos pueden aplicarse cíclicamente a filas y columnas de la información de imagen. Esta estrategia es ventajosa por un número de razones. Por ejemplo, el uso de núcleos de filtro dinámicamente calculados reduce algunos de los artefactos encontrados en aplicaciones conocidas. El pre-cálculo de núcleos de filtro es ventajoso debido a que expide la aplicación real del filtro. El uso juicioso de un grupo mínimo de núcleos cíclicamente aplicados tiene ventajas relacionadas con eficiencia adicional. De acuerdo con otra estrategia, la funcionalidad se describe para generar código para implementar la tubería de procesamiento de imagen. La funcionalidad recibe requerimientos que especifican qué tipos de operaciones se supone que la tubería realiza, y después ensambla selectivamente módulos de código de una biblioteca de tales módulos para implementar esas funciones. La funcionalidad no incorpora módulos de la biblioteca que no se requieren. Esta estrategia es benéfica por muchas razones; por ejemplo, ayuda a producir código que es más eficiente, y de esa forma que potencialmente corre más rápido. Finalmente, otra estrategia utiliza una unidad de procesamiento de gráficos (GPU) para implementar ciertos aspectos de la tubería de procesamiento de imagen o todas las funciones en la tubería de procesamiento de imagen Las implementaciones particulares aplican una sombra de pixel (un procesador de señal digital (DSP) dentro del GPU) para realizar filtrado de imagen En un caso, una o mas unidades de textura de la sombra de píxel pueden asignarse a los pesos de núcleos de filtro, y una o más unidades de textura pueden asignarse a diferentes versiones cambiadas por delta de la misma información de imagen de entrada (asociada con las tomas del núcleo) Esta estrategia es benéfica debido a que potencialmente ofrece mayor velocidad y capacidad de procesamiento comparada a una implementacion CPU, debido a las capacidades de procesamiento de vector de sombras de píxel Las características adicionales y beneficios respectivos de las estrategias se mencionaran en esta descripción Como para la terminología, el término "información de imagen" pretende abarcar cualquier clase de información que puede consumirse por un usuario en cualquier forma visual. La información de imagen puede representar información expresada en cualquier formato, tal como formato análogo, formato digital, o una combinación de formatos digitales y análogos La información de imagen puede representar información de imagen fija (por ejemplo, fotografías digitales) y/o información en movimiento (por ejemplo, información de video en movimiento) Incluso otras variaciones se contemplan por el uso de la información de imagen de término.
El término "tubería de procesamiento de imagen" se refiere a cualquier funcionalidad para procesar información de imagen. Una tubería incluye al menos dos componentes funcionales que operan en información de imagen en forma de series, es decir, una después de otra. El término "alineación" se refiere a la conversión de información de imagen de su forma pre-compensada no lineal a una forma lineal. El término "no alienación" se refiere a la operación inversa de alienación. El término "información de imagen relacionada con luma" se refiere a información de imagen que tiene un componente relacionado con brillantez (por ejemplo, Y') y componentes croma. El término "espacio de color relacionado con luma" se refiere a cualquiera de estándares plurales para formar información de imagen relacionada con luma (por ejemplo, Y'CbCr, etc.). Generalmente, como para los aspectos estructurales del asunto sujeto descrito, cualquiera de las funciones mencionadas aquí pueden implementarse utilizando software, firmware (por ejemplo, circuito de lógica fijo), procesamiento manual, o una combinación de estas implementaciones. Los términos "módulo", "funcionalidad", y "lógica" como se utiliza aquí generalmente representa software, firmware, o una combinación de software y firmware. En el caso de una ¡mplementación de software, el término módulo, funcionalidad, o lógica representa código de programa que realiza tareas específicas cuando se ejecutan en un dispositivo o dispositivos de procesamiento (por ejemplo, CPU o CPUs). El código de programa puede almacenarse en uno o más dispositivos de memoria legibles por computadora fijos y/o removibles. Como para los aspectos de procedimiento de este asunto sujeto, se describen ciertas operaciones como constituyendo diferentes pasos realizados en un cierto orden. Tales implementaciones son ilustrativas y no limitantes. Ciertos pasos aquí descritos pueden agruparse y realizarse en una operación individual, y ciertos pasos pueden realizarse en un orden que difiere del orden empleado en los ejemplos mencionados en esta descripción. Esta descripción incluye los siguientes contenidos: A. Mejoras Generales ilustrativas para una Tubería de Procesamiento de Video A.1. Procesamiento de Información de Imagen en Espacio de color RGB (Lineal) A.2. Uso de Información de Imagen de Canal Lleno de Punto Flotante dentro de la Tubería A.3. Provisiones Especiales para Información de Imagen 4:2:0 A.4. Información de Imagen de Procesamiento en Espacio Seudo-Lineal A.5. Mejoras a los Algoritmos de Dispersión de Error A.6. Cálculo Dinámico de Núcleos de Filtro B. Mejoras Relacionadas con Implementación Ilustrativa a la Tubería de Procesamiento de Video B.1. Generación Óptima de Código de Procesamiento de Tubería B.2. Uso General de GPU para Realizar Procesamiento de Imagen B.3. Mejoras Relacionadas con Sombra de Píxel C. Ambiente de Computadora Ilustrativo A. Mejoras Generales Ilustrativas a una Tubería de Procesamiento de Video A.1 Procesamiento de Información de Imagen en Espacio de Color RGB (Lineal) La Figura 1 muestra una tubería de procesamiento de imagen ilustrativa 100 para procesar información de imagen (por ejemplo, información de video). A manera de revisión, la fila superior de módulos recibe información de imagen de cualquiera de varias fuentes (una cámara, escáner, disco, medios de almacenamiento, red digital, y así sucesivamente) y después convierten la información de imagen en una forma para procesar. El gran módulo a la mitad de la figura representa tal procesamiento, que genera información de imagen procesada. La fila inferior de módulos convierte la información de imagen procesada en cualquier forma que es apropiada para sacar un sitio de destino (por ejemplo, una televisión, monitor de computadora, medios de almacenamiento, red digital, y así sucesivamente). Existen varios aspectos únicos y ventajosos para la tubería de procesamiento de imagen 100, identificado en subsecciones separadas de esta descripción Esta subseccion se enfocará en el procesamiento de información de imagen en una forma lineal Otras mejoras resultan del procesamiento adicional de la información de imagen en una forma progresiva (des-entrelazada) dentro del espacio de color RGB En contraste, un acercamiento típico en la técnica es para realizar procesamiento de información Y'UV entrelazada de 444 ó 422 Como se apreciara por la presente invención, el procesamiento de la información de imagen en espacios de color no lineal genera vanos artefactos El acercamiento representado en la tubería 100 de la Figura 1 supera estos problemas Cada uno de los módulos mostrados en la Figura 1 se describirá en su lugar Como para la fila superior de los módulos, un módulo de no temblor 102 convierte información de imagen Y'CbCr recibida que tiene una primera precisión en información de imagen que tiene una segunda precisión, en donde la segunda precisión es superior a la primera precisión El módulo 102 realiza esta tarea al realizar un procesamiento de tiempo de no temblor Principalmente, una operación de temblor (no mostrada) puede utilizarse para cuantificar la información de imagen de entrada que se alimenta a la tubería 100 en la primera precisión El módulo 102 efectivamente aplica la inversa de estas operaciones de cuantificación para generar la segunda precisión superior El módulo de muestreo hacia arriba 104 transforma la información de imagen de entrada que tiene un primer número de muestras en la información de imagen de entrada que tiene un segundo número de muestras, en donde el segundo número de muestras es mayor que el primer número de muestras. En una aplicación típica, la información de imagen se recibió por la tubería en una forma en la cual hay más muestras de información luma (Y') comparada con información croma (cb o Cr); esto es debido a que el ojo es mas perceptivo a información luma, al hacer posible reducir la cantidad de información croma relativa a información luma sin sufrir degradación notable. El módulo de muestreo hacia arriba 104 típicamente trabaja para aumentar el número de muestras croma para que las muestras croma estén en par con las muestras luma. Por ejemplo, el módulo de muestreo hacia arriba 104 puede convertir información de imagen Y'CbCr 4:20 ó 4:2:2 a información Y'PbPr 4:4:4. La operación de muestreo hacia arriba por el módulo 104 aumenta el número de muestras al interpolar las muestras existentes (de esa forma realizan efectivamente una operación de clasificación). Tales técnicas de interpolación frecuentemente deben tener una cuenta específica para cómo los diferentes estándares colocan la información croma relativa a la información luma con el fin de proporcionar resultados exactos. El módulo 106 aplica una transformación de matriz a la información de imagen Y'CbCr 4:4:4 para transformarla en otro espacio de color, principalmente el espacio de color R'G'B'. El módulo 108 después transforma la información de imagen R'G'B no lineal en una forma lineal al aplicar una función de transferencia a la misma Soporta repetir que los símbolos primos (') asociados con la información de imagen R'G'B indican que está en forma no lineal, la ausencia de los primos (por ejemplo, RGB) usualmente denota datos lineales (excepto que también es común remover los primos en donde se entiende convenientemente que las señales se denominan para representar información no lineal, como se describió anteriormente) La función de transferencia de modelo mostrada en la Figura 1 bajo el modulo 108 en la Figura 1 ilustra la forma general de la función de transferencia que se emplea, que también es de la forma general de la función de transferencia inherente del CRT (no mostrado) Esta función de transferencia de modelo también indica que puede emplear una parte trasera lineal cerca de la porción V = 0 de su curva para contar las consideraciones especiales que aplican en esa región de "talón" El módulo 110 opcionalmente realiza una operación de des-entrelazamiento en la información de imagen para convertirla de una forma entrelazada a un formato progresivo Al realizar esta tarea, el modulo 110 puede guiarse al utilizar ya sea la información de imagen RGB, o la información de imagen de Y'CbCr original (para el caso especial, por ejemplo, de información 4.2 0). Sin embargo, las operaciones de des-entrelazamiento preferiblemente deben realizarse en el espacio RGB lineal Esto es debido a que el des-entrelazamiento realmente es una forma de procesamiento de imagen (que involucra, por ejemplo interpolación de muestras existentes), por lo tanto, realizar este procedimiento en espacio lineal generará resultados más exactos El módulo 112 opcionalmente transforma los primarios de color de la información RGB lineal para expresar la información en otro espacio de color Esta conversión puede comprender aplicar una transformación de matriz a la información RGB para cambiar sus primarios de color para corresponder a cualquiera de los primarios como se desea para procesamiento realizado en componentes corriente abajo en la tubería de procesamiento de video En un ejemplo, el módulo 112 puede convertir vanos tipos diferentes de información de imagen en un espacio de color común, que facilita mezclar esta información junta en una operación posterior El módulo 114 generalmente representa cualquier clase de procesamiento de la información de imagen que tiene el espacio de color transformado Como este punto, el procesamiento actúa en una información de imagen es decir, en este ejemplo específico' a) en forma lineal, b) en el espacio de color RGB, c) en forma 44:4 (canal lleno, y d) en forma progresiva. Mientras se prefiere que el procesamiento tome lugar en un espacio de color lineal para reducir artefactos, todos los aspectos enumerados en esta lista necesitan no estar presentes para la tubería de procesamiento de imagen para proporcionar beneficios En cualquier caso, el módulo 114 realiza cualquier clase de procesamiento de la información de imagen Básicamente el procesamiento abarca cualquier transformación de la información de imagen, por ejemplo, imagen de salida = Algunafunción(imagen de entrada), que incluye cualquier clase de operación de filtrado de ¡magen. Una lista representativa y no limitante de tales operaciones de procesamiento incluye: a) composición; b) alfa-mezcla (por ejemplo, varios desvanecimientos o disoluciones); c) detección de borde; d) forma; e) reajuste (clasificar a tamaños de ¡magen más grandes o más pequeños); f) des-entrelazamiento (si todavía no se realiza), y así sucesivamente. La composición involucra mezclar un tipo de información de imagen con otro tipo de información de imagen. Por ejemplo, el módulo 114 puede emplearse para combinar gráficos (por ejemplo, información de texto) en la parte superior de información de imagen de video atraída de un disco de DVD. La alfa-mezcla involucra mezclar colores basándose en un factor alfa (que determina el grado al cual un color se mezcla en otro). Por ejemplo, la operación de mezcla se rige por la siguiente ecuación: Color Final = color de fuente * factor de mezcla de fuente + color de destino * factor de mezcla de destino. En esta ecuación, el color de píxel de destino representa el nuevo color de píxel que el motor de mezcla intenta agregar al píxel de destino. Los factores de mezcla varían de 0 a 1 y se utilizan para controlar cuánta contribución tiene la fuente u los colores de píxel de destino en el valor de color final. Para repetir, solamente son ejemplos representativos de un número mayor de aplicaciones de procesamiento potencial. Generalmente, muchas de las aplicaciones de procesamiento de video antes descritas aplican a un peso afín para traducción entre la fuente y la información de imagen objetivo. En estos tipos de aplicaciones, el uso de peso no lineal puede causar la brillantez total de la información de imagen para disminuir demasiado rápido. Esto solamente es un ejemplo de un artefacto que la presente solución puede eliminar o reducir en virtud de su procesamiento de información de imagen lineal. La fila superior de módulos en la Figura 1 generalmente reserva las operaciones antes descritas en la fila superior. Principalmente, después del procesamiento en el módulo 114, el módulo 116 opcionalmente convierte la información de imagen en otro espacio de color, tal como de regreso al espacio de color RGB. El módulo 118 aplica un re-entrelazamiento opcional de la información de imagen si necesita almacenarse o presentarse en una forma entrelazada. El módulo 120 aplica una función de transferencia para transformar de nuevo la información de imagen RGB en una forma no lineal (R'G'B') (si es apropiado). El módulo 122 cambia el espacio de color de la información de imagen R'G'B' de regreso en un formato que separa su componente luma (Y') de sus componentes croma (por ejemplo, PbPr). El módulo 124 opcionalmente sub-muestrea la información de imagen Y'PbPr para reducir la cantidad de muestras croma (PbPr) relativas a la cantidad de las muestras luma (Y'). Es decir, este módulo 124 puede transformar la información de imagen 4:4:4 Y'PbPr (en donde hay una muestra croma para cada muestra luma) en información de imagen 4:2:2 ó 4:2:0 Y'PbPr (en donde existen menos muestras de croma relativas a muestras luma). Finalmente, el módulo 126 aplica una operación de cuantificación a la información de imagen La operación de cuantificación tiene el efecto de convertir la información de imagen a una precisión inferior para facilitar transferencia eficiente sobre una red, almacenamiento, presentación, y así sucesivamente La operación de cuantificación puede acoplarse con una operación de temblor con el fin de reducir artefactos que de otra forma pueden causarse al eliminar efectos producidos por la cuantificación. Como se explicó en más detalle en una subsección posterior, la operación de temblor tiene el efecto de expandir estos errores a píxeles vecinos como la información de imagen que se procesa, por lo tanto mitigan los efectos de los artefactos La Figura 2 muestra un procedimiento 200 que resume las operaciones antes mencionadas en forma de cuadro de flujo El paso 202 involucra convertir la información de imagen de entrada en un espacio de color lineal, tal como RGB La información también está preferiblemente des-entrelazada en forma progresiva, y se muestrea hacia arriba a formato de 44 4 (canal lleno) El paso 202 de esa forma corresponde a la fila superior de los módulos en la Figura 1. El paso 204 menciona realizar cualquier tipo (y combinación) de tareas de procesamiento en la información de imagen en su forma lineal. El paso 206 representa convertir la información de imagen lineal en cualquier formato de salida se demanda por una aplicación particular Esto puede involucrar convertir la información de imagen lineal procesada en un espacio de color no lineal, re-entrelazarlo, muestrearlo hacia abajo, cuantificarlo, y así sucesivamente. El paso 206 corresponde a la fila inferior de los módulos en la Figura 1.
A.2. Uso de Información de Canal Lleno de Punto Flotante Dentro de la Tubería Regresando a la Figura 1, la tubería 100 también proporciona resultados superiores para conocer estrategias debido a que utiliza (a) información de ¡magen de canal lleno (es decir, 4:4:4) que tiene (b) procesión relativamente alta con (c) semánticas opcionalmente lineales. Más específicamente, como se describió anteriormente, la tubería 100 convierte la información de imagen que recibí a una precisión superior que su forma original. La tubería 100 también convierte la información de imagen a forma de canal lleno (4:4:4) al aumentar la cantidad de muestras croma en la información relativas a las muestras luma. Después se realizan varias tareas de procesamiento en la información de alta precisión y de imagen de canal lleno. Después que se realizó el procesamiento, la tubería 100 puede convertir opcionalmente la información de imagen procesada en una precisión inferior sub-muestreada otra vez. Generalmente, la conversión de información de imagen en una forma de alta precisión y canal lleno efectivamente amplifica el componente de señal de la información relativa al componente de ruido de la información, de esa forma permite el procesamiento que se realiza en esta información para generar resultados más exactos. En contraste, las estrategias conocidas que fallan al utilizar información de imagen de alta precisión y/o canal lleno en varias uniones intermedias en la tubería pueden propagar errores a lo largo de la tubería y pueden reducir la resolución de la información de imagen (al perder esencialmente el contenido de color). La Figura 1 generalmente denota el procesamiento de la información de imagen de alta precisión y canal lleno por el bloque de información etiquetado 128 que se alimenta en el módulo de procesamiento 128 (aunque otros módulos es esta figura también pueden beneficiarse del procesamiento de información en la forma de alta precisión y canal lleno, tal como el módulo de des-entrelazamiento 110). Un ejemplo presentará la discusión más concreta. Se considera la ventaja de trabajar en información de imagen RGB lineal de alta precisión, comparado con información de imagen Y'UV de precisión normal 4:2:0 ó 4:2:2. El Recordatorio que la información de imagen 4:2:0 y 4:2:2 proporciona una mitad y un cuarto (respectivamente) de la cantidad de información croma relativa a la cantidad de información luma. Típicamente la información de imagen de alta definición (HD) (en particular 1920x1080i, 2.07 mpíxeles) se clasifica descendiente a resoluciones de 1280x720p (0.92 mpíxeles) ó 720x480p (0.35mpíxel). Si una tubería realiza una operación de clasificación descendiente en este contexto en un formato de submuestreo 4:2:0 (por ejemplo, 1920x1080 a 1280x720), después la tubería se clasifica descendiente a 2.07 mpíxeles de información luma y 0.52 mpíxeles de información croma a 0.92 mpíxeles de información luma y 0.23 mpíxeles de información croma. Sin embargo, si la tubería primero muestrea hacia arriba a 4:4:4, después convierte a RGB de alta precisión (por ejemplo, flotador), después lo clasifica descendiente, y después convierte a YUV 4:4:4, la tubería efectivamente retendrá 0.92 mpíxeles de información luma y 0.52 mpíxeles de información croma. En otras palabras, el uso de procesamiento de alta precisión en este contexto permite que la tubería retenga casi toda la información croma original. Una forma de lograr la información de imagen intermedia de alta precisión es para utilizar el formato de punto flotante para representar la información. Los números de punto flotante tienen componentes mantisa y componentes exponentes. El componente exponente define cómo se van a cambiar el componente mantisa. Con este formato, la información de punto flotante puede expresar valores muy bajos a valores muy altos al cambiar la representación de la información por consiguiente (por ejemplo, al cambiar el componente de exponente). Cualquier clase de la representación de punto flotante puede utilizarse al tener cualquier número de bits, que incluye una representación de punto flotante de 16 bits, una representación de punto flotante de 32 bits, y así sucesivamente. Una forma particularmente apta de punto flotante para uso en la tubería de procesamiento de imagen 100 es el formato de punto flotante FP16 así llamado, aunque pueden utilizarse otros tipos de representaciones de punto flotante.
A 3 Provisiones Especiales para Información de Imagen 420 Para revisar, como se explico en la sección de Antecedente, la información de imagen 444 incluye cuatro muestras de Cb y Cr para cada cuatro muestras de Y' La información de imagen 4 2 2 incluye dos muestras de Cb y dos muestras de Cr para cada cuatro muestras de Y' La información de imagen 42 0 incluye la mitad de muchas muestras de Cb y Cr en cada linea de revisión, y la mitad tantas líneas de revisión de Cb y Cr como las hay de Y' En otras palabras, la resolución para información croma es la mitad de la información luma tanto en direcciones horizontales como verticales Por ejemplo, si la resolución de imagen llena es 720x480, después la información de croma sólo se almacena en 360x240 En 42 0, no sólo las muestras faltantes deben interpolarse en cada línea de revisión, sino las líneas de revisión completas de información croma deben interpolarse de las lineas de revisión anterior y posteriormente La Figura 3 muestra un ejemplo de información de imagen 4-2 0 de MPEG2 entrelazado Además la información con respecto al procesamiento de información de imagen 42 0 puede encontrarse en Don Munsil y Stacey Spears, "El Error de Muestreo Hacia Arriba de Croma y el Problema de Croma Entrelazado 42 0", DVD Benchmark, abril 2001 (Diciembre, 2002, enero actualizado, 2003) La escasez y alineación de posición de información croma en información de imagen 42 0 introduce un número de retos en el procesamiento de esta información Generalmente hablando, los problemas pueden surgir debido a que una etapa en la tubería de procesamiento 100 requiere el análisis de otra etapa en la tubería de procesamiento 100 con el fin de interpretar la información de imagen 42 0 correctamente Se considera el ejemplo del módulo de muestreo hacia arriba 104 y el modulo de transformación de matriz 106 de la Figura 1 Con el fin de interpretar la información de imagen 42 0 correctamente, el módulo de muestreo hacia arriba 104 óptimamente requiere reconocimiento con respecto a cómo se expresa la información de color en la información de imagen, que es información que se proporciona por el modulo de des-entrelazamiento 110 Pero ya que el módulo de des-entrelazamiento 110 se localiza corriente abajo relativo al modulo de muestreo hacia arriba 104, este reconocimiento no esta disponible para el modulo muestreo hacia arriba 104 Si los módulos 104 y 106 procesa la información 42 0 sin los beneficios de análisis de des-entrelazamiento, pueden producir errores en la información de imagen que puede ser difícil o imposible de corregir Esta dificultad finalmente persigue el hecho que las lineas de revisión en 42 0 no pueden tratarse independientemente una de otra en análisis de des-entrelazamiento (diferente, por ejemplo, información de imagen 4 2-2) Para dirigir este reto, la tubería 100 de la Figura 1 puede incorporar provisiones especiales para controlar la información de imagen 4 2 0 Como una provisión general, la tubería 100 puede notificarse para que el análisis realizado en diferentes etapas (y la información disponible en diferentes etapas) se comparte más ampliamente para otras etapas en la tubería, más que requerir que cada etapa analice atómicamente sólo si la información se alimenta por una etapa precedente. Con respecto específico al problema causado por la posición del módulo de des-entrelazamiento 110 en la tubería 100, la tubería 100 puede modificarse para que el análisis de des-entrelazamiento (realizado por el módulo 110) se realiza antes, por ejemplo, en conjunto con el análisis de muestreo hacia arriba (realizado por el módulo 104). La Figura 1 ilustra esta táctica por la línea punteada 130. Alternativamente, el módulo de des-entrelazamiento 110 puede realizar el análisis de des-entrelazamiento al examinar también la información de imagen de entrada original que se alimento al módulo de muestreo hacia arriba 104. Principalmente, el módulo de desentrelazamiento 110 puede realizar análisis en la salida de módulo 108 en combinación con la información de imagen original para obtener un entendimiento mayor de cómo la información de imagen debe des-entrelazarse. Incluso pueden proveerse otras provisiones de integración de módulo para compartir el análisis realizado de forma separada por módulos individuales dentro de la tubería 100, para con ello dirigir más efectivamente la escasez de información croma en información de imagen 4:2:0.
A.4 Información de imagen de Procesamiento en Espacio Seudo-Lineal Las secciones precedentes dirigidas a la meta de diseñar una tubería de procesamiento de imagen que genera algunos artefactos. Sin embargo, las tuberías de procesamiento de imagen también deben proporcionar resultados de salida en una forma eficiente. Una tubería de procesamiento de imagen produce resultados en una forma efectiva cuando lo hace con suficiente velocidad y con un número aceptable de recursos de procesamiento. Hasta este punto, estas esta subsección propone varias aproximaciones que pueden aplicarse a la tubería 100 mostrada en la Figura 1 para reducir la complejidad de la tubería 100. Principalmente, esta subsección propone modificaciones a la tubería 100 mostrada en la Figura 1 para que proporcione información de imagen que es casi lineal, peri no completamente lineal. Como resultado, estas transformaciones se dice que transforman la información de imagen en un espacio "seudo-lineal", más que un espacio lineal teóricamente correcto. La ventaja es que la ¡mplementación de hardware de las operaciones matemáticas requeridas por las funciones de transferencia (en módulos 108 y 120) puede simplificarse ampliamente, lo que resulta en procesamiento mucho más rápido y más eficiente de la información de imagen. Más específicamente, las operaciones elegidas típicamente ejecutan una orden de magnitud más rápida que sus funciones de contraparte original (que son más precisos matemáticamente). El impacto negativo de la imagen de procesamiento en espacio seudo-lineai es mínimo debido a la información de ¡magen seudo-lineales casi lineal. De esa forma, cualquier algoritmo de una naturaleza lineal puede aplicarse a esta información sin modificación para proporcionar resultados de salida satisfactorios para la mayoría de las aplicaciones. La Figura 4 proporciona más información con respecto a la aproximación antes descrita. Más específicamente, la Figura 4 representa una modificación de sólo ciertos módulos de la tubería de procesamiento 100 de la Figura 1, y por lo tanto sólo contiene una ilustración abreviada de la tubería de procesamiento completa 100 mostrada en la Figura 1. El resumen de tubería 400 mostrado en la Figura 4 incluye un módulo de función de transferencia 402 que reemplaza el módulo de función de transferencia 108 de la Figura 8. En vez de aplicar una transformación matemáticamente precisa de la información de imagen para convertirla en espacio lineal (como lo hace el módulo 108), el módulo 402 aplica una función de transferencia de aproximación (g_aprox(x)) que convierte la información de imagen en el espacio seudo-lineal antes descrito. Este módulo 402 reclasifica la función de transferencia g_aprox(x) debido a que es "más barato" que la función de transferencia más precisa requerida por el módulo 108 de la Figura 1. El módulo 404 representa la contraparte del módulo de procesamiento 114 de la Figura 1. El módulo 404 realiza cualquier número de tareas de procesamiento en la información de imagen seudo-lineal en el espacio de procesamiento seudo-lineal. Los módulos 406, 408 y 410 después realizan la tarea de convertir la información de imagen procesada en un formato adecuado para salida (por ejemplo, para una presentación, dispositivo de almacenamiento, sitio objetivo de red, y así sucesivamente). El módulo 406 específicamente se cumple con la responsabilidad de remover los efectos de módulo 402 al aplicar la inversa de esta operación, principalmente g_aprox'(x). El módulo 408 después alinea la salida del módulo 406 al aplicar una función de transferencia g_dentro(x); esta operación se realiza debido a que la siguiente etapa 410 se diseña para aceptar entrada lineal. Después, el módulo 410 aplica la función de transferencia inversa (g_fuera'(x)) para generar la información de imagen de salida corregida por gama final para adaptarse en cualquier momento que se requiera el formato de salida. En una implementación real, los módulos 406, 408 y 410 pueden integrarse en una transformación individual, representada por F(x), realizado por el módulo 412. De forma importante, los algoritmos que se aplican en el espacio de color seudo-lineal por el módulo 404 son los mismos que los algoritmos que se aplican al espacio de color lineal "correcto" en el módulo 114 de la Figura 1; en otras palabras, la estrategia de procesamiento representada por la Figura 4 no requiere configuración especial de los mismos algoritmos de procesamiento de imagen. En contraste, el acercamiento tomado por las estrategias anteriores conocidas es para realizar el procesamiento en cualquier espacio no lineal que se recibe en la información de imagen y después aplica varios factores de corrección ad hoc y específicos de aplicación a los algoritmos para intentar agrupar cualquiera de los artefactos. Sin embargo, estos factores de correcciones frecuentemente fueron inexactos, y, en cualquier caso, típicamente complejos. Más generalmente, las técnicas anteriores no aplican un acercamiento comprensivo y generalmente aplicable para convertir información en forma seudo-lineal, y después remover esta forma seudo lineal en la forma descrita anteriormente. La discusión restante en esta subsección menciona aproximaciones ilustrativas que pueden utilizarse para implementar los módulos antes descritos en la Figura 4. Para comenzar, se nota que las funciones de transferencia utilizadas para realizar el procesamiento gama típicamente son funciones de energía 8por ejemplo, ?0 45 o la inversa de ?1/0-45=?2 222), o una combinación de varias funciones. Las funciones de energía típicamente son muy costosas para calcular en una base por píxel que utiliza hardware disponible. Sin embargo, se nota que x° 45 es aproximadamente igual a la raíz cuadrada de x, o en otras palabras, x° 45 « x° 50. Y x1/0 45 es aproximadamente igual a x2, o en otras palabras, ?1 0 45 = ?*?. El hardware optimizado existe para calcular x1 2 que es más rápido que las operaciones requeridas por una función de energía general (frecuentemente por un orden de magnitud). Y el hardware puede realizar el cuadrado x2 muy rápidamente, mientras esto es simplemente una operación de multiplicación Por lo tanto, estas aproximaciones pueden cortar marcadamente los costos de procesamiento asociados con implementar las funciones de transferencia Más formalmente, la función g_aprox(x) realizada por el modulo 402 puede tomar la forma de x2*marca(x), y la función de transferencia inversa realizada por el modulo 406 puede tomar la forma de (abs(x))1/2*marca(x) (Se nota que como una consideración especial, las funciones de transferencia y funciones de transferencia inversa pueden aplicar a un segmento trasero lineal cerca de cero) El acercamiento anterior puede generalizarse para diferentes gamas de entrada y salida, representadas por las funciones g_dentro(x), y g_fuera(x), que utilizan las siguientes senes ilustrativas de operaciones 1) Aplicar la aproximación lineal inversa g_aprox(x) = x2 = x*x para la información de imagen El módulo 402 puede realizar este paso 2) Procesar los datos en el espacio seudo-hneal El modulo 404 puede realizar este paso 3) Aplicar el g_aprox'(x) de aproximación lineal El módulo 406 puede realizar esta operación 4) Aplicar g_dentro(x) de función de transferencia para alinear la salida de modulo 406 El modulo 408 puede realizar esta operación 5) Aplicar la función de transferencia inversa g_fuera'(x) a la salida del módulo 408 para producir información en el espacio g_fuera deseado. Los pasos (3)-(5) pueden fusionarse en una función individual, F(x), principalmente: F(x) = g_fuera'(g_dentro(g_aprox'(x))). Si la tubería convierte entre un gama de 2.222 a un gama de 2.4, entonces la función F(x) puede expresarse como: El costo del algoritmo anterior involucra una conversación muy "barata" requerida por la función de g_aprox(x), seguida por el procesamiento de la información en el espacio seudo-lineal, seguido por una conversación potencialmente costosa requerida por la función F(x). Pero ya que la ecuación F(x) simplemente demanda la multiplicación de exponentes, el costo de esta función no es peor que la función inversa original. Por lo tanto, la solución mostrada en la Figura 4 tiene efecto neto de reducir potencialmente el costo del ciclo de alineación/no alineación lleno por aproximadamente la mitad. Y como se mencionó anteriormente, esta solución es ventajosa en el mismo sentido que no requiere adaptación especial de los algoritmos realizados por el módulo 404. La Figura 5 muestra un procedimiento 500 que resume las operaciones descritas anteriormente, y es una contraparte para el procedimiento de alineación 200 mostrado en la Figura 2. El paso 502 menciona la conversión de la información de ¡magen de entrada en el espacio seudo-lineal. El paso 504 menciona realizar el procesamiento en la información de imagen en el espacio seudo-lineal que utiliza el módulo 404. Y el paso 506 menciona la conversión de la información procesada en un espacio de color no lineal apropiado para salida.
A.5 Mejoras a algoritmos de Dispersión de Error La cuantificación de información de alta precisión en un formato de precisión inferior puede introducir errores, como las aproximaciones requeridas por la cuantificación que puede llevar a artefactos si no se controla correctamente. Varios algoritmos de dispersión de error actúan para dispersar los errores causados por cuantificación, y por lo tanto minimizan los artefactos. Tal dispersión de error es una forma de temblor. La Figura 6 muestra la aplicación conocida de un algoritmo de Floyd-Steinberg para dispersar errores causados por cuantificación. Se considera el punto X en una imagen, que representa un píxel (o más generalmente, un elemento particular) en la imagen. La cuantificación de ese elemento de ¡magen X producirá una diferencia de error, calculada como la diferencia entre la representación de alta precisión del elemento de imagen y el valor que se cuantifica. El algoritmo de Floyd-Steinberg divide esta diferencia en diferentes componentes, y después distribuye estos componentes a los elementos de imagen que acercan el elemento X (y que todavía no se procesan por el algoritmo). Cuando el procesamiento avanza a tal elemento de imagen cercano, los componentes de error previamente dispersos para este elemento de imagen que se agregarán al mismo, y este elemento de ¡magen después se procesará en la forma descrita anteriormente, por ejemplo, al cuantificarlo, calcular otra diferencia de error, y dispersar este error para acercar elementos de imagen. El procesamiento de la imagen completa puede proceder en varias formas, tal como de izquierda a derecha y de abajo hacia arriba. El algoritmo de Floyd-Steinberg asigna diferentes pesos a los componentes de error que dispersa a elementos de imagen cercanos. La Figura 6 muestra pesos de 7, 1, 5 y 3 asignados a los elementos de imagen que acerca el elemento X (en orden de sentido de las manecillas de reloj). Más precisamente, los factores de peso aplicados a los componentes de error son 7/16, 1/16, 5/15 y 3/16, en donde el dominador de "16" refleja el total de los pesos asignados a los elementos de imagen cercanos. Sin embargo, los algoritmos de dispersión de error, tal como Floyd-Steinberg, algunas veces producen imágenes de destino que tienen varios artefactos. Tales artefactos pueden manifestarse en patrones visualmente discernibles que particularmente son notables con cierto contenido de imagen. Las estrategias conocidas dirigieron este problema al agregar ruido aleatorio a la imagen original para ofuscar los patrones causados por los algoritmos de dispersión de error. Pero este remedio por sí mismo puede tener varias deficiencias. Primero, las técnicas conocidas agregan el ruido a la imagen original, y después cuantifica la ¡magen original ruidosa como la línea de base (en la forma más cuidadosamente descrita más adelante). Mientras esta técnica tiene el efecto de obscurecer los artefactos causados por el algoritmo de dispersión de error, también degrada la imagen de destino final. Principalmente, el ruido en la imagen de destino aumenta en proporción al ruido agregado a la ¡magen original. Segundo, las estrategias conocidas pueden agregar ruido que utiliza generadores de ruido que tienen un periodo de repetición relativamente corto. A partir de allí, los generadores de ruido pueden reproducir sus propios artefactos de tipo de patrón que pueden ser visualmente discernibles en la imagen de destino (junto con, posiblemente, algún vestigio de los artefactos de dispersión de error que el generador de ruido estaba designado a cubrir). La Figura 7 muestra un procedimiento 700 que más específicamente explica el pasado de los problemas antes identificados. El objeto del procedimiento 700 es para cuantificar la información de imagen original ("Original") para producir información de imagen de destino ("Final") que utiliza un algoritmo de distribución de error. El paso 702 menciona la producción de información de imagen de "Temp." al agregar la información de ruido a la información de imagen original para un elemento de imagen i (por ejemplo, un píxel). El paso 704 menciona la producción de la información de imagen Final al cuantificar una suma definida por la información de imagen de Temp Y la información de imagen de "Error_Térm?no(?)" El Error_Term?no representa el componente de error agregado al elemento de imagen i basado en una cuantificación previa de un elemento o elementos de imagen antes procesados El paso 706 menciona la definición del siguiente componente de Error_térm?no (para aplicarse a un elemento de imagen futuro para procesarse) como la información de imagen Final de esa forma calculada menos la información de imagen de Temp La aplicación del algoritmo tiene el efecto neto de cuantificar esencialmente una imagen ruidosa, con las desventajas consecuentes mencionadas anteriormente La Figura 8 muestra un sistema 800 que supera los problemas antes notados en la técnica Un módulo de temblor 802 transforma información de imagen original 804 en la información de imagen de destino 806 que utiliza un algoritmo de dispersión de error El algoritmo de dispersión de error comprende el algoritmo de Floyd-Steinberg discutido anteriormente, pero no se limita a este algoritmo Un generador de ruido 808 intervenir ruido aleatorio en el procesamiento de cuantificacion para ayudar a obscurecer algunos de los artefactos producidos por el algoritmo de dispersión de error El sistema 800 difiere de estrategias conocidas al menos en dos aspectos Primero, el sistema 800 esencialmente agrega la información de ruido al procedimiento de cuantificación, no la información de imagen original 804 En otras palabras, la información de imagen original 804 permanece en la linea de base de la cual se miden los términos de error, más que, en técnicas anteriores, la imagen original mas la información de ruido De esa forma, aumentar la cantidad de ruido en el sistema de 800 no necesariamente tendrá en efecto de hacer progresivamente la información de imagen de destino 806 más ruidosa al ojo, esto es debido a que los términos de error se propagan para acercar elementos de imagen retienen una medida de la desviación de la información de imagen de destino 806 con respecto a la información de imagen original 804, y de esa forma el algoritmo de dispersión de error continuamente intenta corregir los efectos del ruido aleatorio agregado al procedimiento de cuantificación La Figura 9 muestra un procedimiento 900 que explica el procedimiento anterior El paso 902 involucra producir información de imagen final para un elemento de imagen i al cuantificar una suma de la información de imagen original, la información de ruido, y el término de error para el elemento de imagen i El paso 904 menciona calcular el termino de error para dispersarse a un elemento (o elementos) de imagen cercano al calcular la diferencia entre la información de imagen final y la información de imagen original para elemento de imagen i Un ejemplo presentará la discusión más concreta Se asume que la tarea es para cuantificar un elemento de imagen que tiene el valor 23 3 al entero más cercano Se asume, en la estrategia conocida mostrada en la Figura 7, que la cantidad +04 de información de ruido se agrega al valor, que lo hace 23 7 El valor de imagen final para este elemento de imagen sería 24, y el término de error que se propaga sería -0 3 (la diferencia entre el valor de imagen de salida final y el valor de imagen ruidosa, 23 7) En la estrategia mejorada de la Figura 9, en contraste, el término de error que se propaga sería -0 7 (la diferencia entre el valor de imagen de salida final y el valor de imagen original) Una descripción más formal de la técnica anterior se menciona más adelante, basada en una aplicación del algoritmo de dispersión de error de Floyd-Stemberg Para cada píxel en una imagen, la tarea del algoritmo es para cuantificar un valor de alta precisión V y almacenarlo en una posición de píxel P(x, y) de un arreglo de píxel P, en donde P(x, y)t?ene precisión inferior a V Los términos de error producidos por el algoritmo se almacenan en un arreglo de error de alta precisión E que tiene el mismo tamaño que el arreglo de píxel P El término de error para un píxel P(x, y) se almacena en una ubicación correspondiente en E(x,y) La función "redonda()" en el algoritmo rodea un número de alta precisión al número de baja precisión más cercano, La función "AleatopaO" en el algoritmo regresa un número de alta precisión aleatorio en el rango de {-0 5 0 5} Los valores temporales "Deseados" y "Error" son valores de alta precisión Los coeficientes de propagación de error real son del algoritmo de propagación de error de Floyd-Steinberg Algoritmo 1: Dispersión de Error Mejorada Para cada píxel x. y Deseado = V + E (x, y) P(x y)= redondo (Deseado + aleatopo()) Error=Deseado + P(x, y) E(x+1, y) = Error * 7/16 E(x-1, y+1) = Error * 1/16 E(x, y+1) = Error * 5/16 E(x+1, y+1) = Error * 3/16 Fin Como una segunda mejora, el generador de ruido 808 emplea un patrón de repetición relativamente largo, diferente a los acercamientos conocidos La frase "relativamente largo" puede interpretarse en términos relativos al mandar que el generador de ruido 808 no repita sus números cuando se procesa una marco completo de información de imagen, o al menos no se repite a sí mismo hasta la extensión que genere artefactos notables en la información de imagen de destino 806 Un generador de número aleatorio particular que satisfará este requerimiento es el generador de ruido aleatorio así llamado R250 A 6 Cálculo Dinámico de Núcleos de Filtro Los filtros de clasificación pueden utilizarse en vanas uniones en la tubería 100 mostrada en la Figura 1 cuando la información de imagen se reajusta de un tamaño de fuente a un tamaño de destino Por ejemplo, el procesamiento realizado en el módulo 114 puede involucrar la clasificación de la información de imagen ya sea hacia arriba o hacia abajo, dependiendo de la aplicación, y/o dependiendo de las señales de control ingresadas por un usuario. La clasificación también puede realizarse en otras uniones en la tubería 100 tal como en los módulos de muestreo 104 y 124. Un número de algoritmos de filtro pueden utilizarse en conjunto con algoritmos de clasificación. Un tipo conocido particular de filtro es así llamado filtro de Catmull-Rom. La aplicación de este tipo de filtro para la tarea de reajuste de información de imagen resultará en la forma de bordes en la información de imagen hasta algún punto. Esta subsección describe un filtro utilizado para clasificar (tal como un filtro de tipo de Catmull-Rom, pero no se limita a este tipo de filtro) que puede calcularse y aplicarse en una base de píxel por píxel para información de imagen. Esto puede conceptualizarse como el cálculo dinámico y aplicación de un filtro separado de cada píxel en la información de ¡magen. Cada filtro puede incluir uno o más núcleos, y cada núcleo puede tener una o más tomas. El núcleo define pesos que se aplican a píxeles en la información de imagen. Las tomas definen muestras de información de ¡magen en las que actúa el núcleo. La falla para calcular y aplicar los núcleos de filtro de esta forma puede resultar en varios artefactos en la imagen de destino, tal como patrones de latido. Sin embargo, el cálculo de núcleos de filtro separados para cada píxel puede ser prohibitivamente costoso en términos de la cantidad de tiempo involucrada para calcular los núcleos. Esto puede evitar la presentación en tiempo real de la información de ¡magen en algún hardware. Para dirigir este problema, esta subsección define estrategias eficientes para calcular dinámicamente núcleos de fase de filtro para filas o columnas completas de información de imagen de entrada, y después aplicar tales núcleos. A manera de revisión, las estrategias involucran calcular el número de núcleos requerid para una fila (o columna) de la información de imagen original, calcular el número de tomar requeridas por los núcleos, distribuir un arreglo de almacenamiento para almacenar los núcleos, y calcular y almacenar el número requerido de núcleos en el arreglo. Estos pasos siguen al aplicar los núcleos de filtro almacenados en el arreglo para la información de imagen. El algoritmo es eficiente debido a que los núcleos se calculan antes de su aplicación. También, los ahorros computacionales se logran debido, en ciertos casos, a un número relativamente pequeño de núcleos calculados que pueden aplicarse cilindricamente a una fila o columna mucho más grande de la información de ¡magen. Y los mismos núcleos aplicados a una fila o columna particular pueden aplicarse a otras filas y columnas (respectivamente) en la información de imagen. En otras palabras, dependiendo de los requerimientos de reajuste de una aplicación particular, no es necesario calcular un filtro separado para cada píxel individual en la información de imagen. La Figura 10 muestra una revisión de un sistema 1000 para implementar un módulo de filtro 1002 del diseño antes descrito. El módulo de filtro 1002 incluye un módulo de pre-cálculo de núcleo dinámico 1004 El propósito de este módulo 1004 es primero para calcular el número de núcleos requerido para una operación de clasificación particular y el número de tomar requerido para los núcleos El número de núcleos y tomas dependerá de la forma en la que la información de imagen se reajusta (en la forma descrita más adelante) Después el módulo de pre-cálculo 1004 pre-calcula el número deseado de núcleos y almacena los núcleos en un módulo de almacenamiento 1006 Un módulo de aplicación de núcleo 100 después aplica los núcleos en el módulo de almacenamiento de núcleo 1006 a la información de imagen para lograr el comportamiento de filtro deseado Como se mencionó anteriormente, el cálculo de los núcleos antes de su aplicación ayuda a hacer que el procedimiento de filtro corra más rápido Además, la complejidad del cálculo de filtro se reduce a una extensión muy grande para aquellas operaciones de clasificación que sólo requieren el pre-cálculo de algunos núcleos La porción derecha de la Figura 10 muestra cómo los núcleos 101 pueden aplicarse iterativamente a una fila particular 1012 de información de imagen 1014 Los núcleos 1010 se aplican en sene y en forma cilindrica (en donde, en un caso ilustrativo, cada núcleo se aplica a un píxel de salida) Por ejemplo, si existe un número pequeño de núcleos para una fila relativamente larga de información de imagen, después estos núcleos se aplican en sucesión y se repiten una y otra vez mientras se procesa la fila de información de fila. Es decir, los núcleos pre-almacenados forman una lista; se aplican una después de otra a la fila, y cuando se encuentra el último núcleo en la lista, el procesamiento continúa al enredarse y de nuevo trazar de la parte superior de la lista. El comportamiento iterativo de la técnica de aplicación se representa por el giro 1016 mostrado en la Figura 10. Los núcleos 1010 pueden aplicarse a las otras filas en una forma similar. Además puede repetirse el procesamiento similar con respecto a los núcleos que aplican a las columnas de la información de imagen 1014. Un algoritmo ilustrativo que puede utilizarse por el módulo 1004 para calcular el número de núcleos y tomas se menciona más adelante. El módulo 1004 aplica el algoritmo de forma separada para clasificar en las dimensiones x y en y de la información de imagen 1014. De esa forma, aunque el algoritmo se configura para clasificarse en la dimensión x, el algoritmo también es aplicable a la dimensión y , por ejemplo, al cambiar referencias al grosor a la altura, y así sucesivamente. En la dimensión x, la "Relación de Clasificación" utilizada en el algoritmo define la relación del grosor de imagen original al grosor de imagen final (objetivo) deseado. La función de "techo" utilizada en el algoritmo rodea un número real para el siguiente entero superior. La función "gcd" en el algoritmo calcula el denominador mayor común de dos enteros.
Algoritmo 2: Cálculo del Número de Núcleos y Tomas Relación de Clasificación = Grosor de Fuente / Grosor de Destino Si Relación de Clasificación < 1.0 Relación de Clasificación = 1.0 Tomas = techo (Relación de Clasificación * 4) Si las tomas son parejas Tomas = Tomas + 1 Núcleos = Grosor de Destino / gcd (Grosor de Fuente, Grosor de Destino) Como un ejemplo, se considera la clasificación vertical de la información de imagen de fuente que tiene una altura de 720 píxeles para la información de imagen de destino que tiene una altura de 480 píxeles. La aplicación del algoritmo anterior para este escenario genera: Relación de Clasificación = 720/480=1.5 Tomas = techo(Relación de Clasificación * 4) = 6 Núcleos = 480 / gcd(720,480) = 480/240 = 2 De esa forma, el módulo 1004 necesita pre-calcular y pre-distribuir 2 núcleos de 6 tomas cada uno. La operación de reajuste alternará en forma de ping-pong entre los dos núcleos mientras se mueve a lo largo de una fila de píxeles. Como otro ejemplo, se considera la clasificación vertical de información de imagen de fuente que tiene una altura de 721 píxeles para una información de imagen de destino que tiene una altura de 480 píxeles. La aplicación del algoritmo anterior para este escenario genera: Relación de Clasificación = 721 /480=1.5021 Tomas = techo(Relación de Clasificación * 4) = 7 Tomas par, así que agregamos una, que genera 8 Núcleos = 480 / gcd(721 ,480) = 480/1 =480 De esa forma, el módulo 1004 necesita pre-calcular y pre-distribuir 480 núcleos de 8 tomas cada uno. La operación de reajuste utilizará un núcleo único para cada uno de los 480 píxeles de salida. Sin embargo, los ahorros significantes todavía se realizarán debido al mismo grupo de 480 núcleos que pueden utilizarse en cada columna vertical de píxeles. También, en casos prácticos del mundo real, la relación entre el destino y los tamaños de fuente tiende a ser una relación justamente simple, que hace el número resultante de núcleos requerido de un número manejable. Las Restricciones espaciales también pueden imponerse y prevendrá a los usuarios de ingresar solicitudes de reajuste que demandan un número particularmente grande de núcleos de filtro (por ejemplo, en exceso de un umbral prescrito). La Figura 11 muestra un procedimiento 1100 que resume las operaciones antes descritas. El paso 1102 involucra determinar el número de núcleos (y tomas por núcleo) requerido para lograr un reajuste deseado de una imagen en las dimensiones horizontal y/o vertical. El módulo de pre-cálculo 1004 puede realizar esta tarea que utiliza el algoritmo proporcionado anteriormente. El paso 1104 involucra distribuir espacio en el módulo de almacenamiento de núcleo 1006 para almacenar el número de núcleos calculado en el paso 1004. El paso 1106 involucra aplicar los núcleos pre-calculados almacenados en el módulo de almacenamiento 1006 para información de ¡magen. La aplicación procede por secuencia cíclica a través de los núcleos mientras se procesa cualquier fila o columna dada.
B. Mejoras Relacionadas Con Implementación Ilustrativa para la tubería de Procesamiento de Video B.1. Generación Óptima del Código de Procesamiento de Tubería La siguiente sección proporciona un número de implementaciones de la tubería de procesamiento de video 100 de la Figura 1 de una naturaleza específica de más tecnología comparada con la Sección A. Para comenzar, la Figura 12 muestra una revisión de nivel superior de una tubería de procesamiento de imagen 1200 que servirá como un fundamento para discutir las mejoras de esta sección. La tubería 1200 mostrada en la Figura 12 incluye etapas de procesamiento definidas por una etapa de entrada 1202, una etapa de procesamiento 1204 y una etapa de salida 1206. Como con la etapa de entrada 1202, la fuente de entrada 1208 representa cualquier fuente de información de ¡magen. La fuente 1208 generalmente puede comprender información de ¡magen recientemente capturada (por ejemplo, creada por una cámara o escáner), o información de ¡magen previamente capturada que se presenta a la etapa de entrada 1202 a través de algún canal (por ejemplo, recibido de un disco, en una red IP, etc.). En el caso anterior, capturar la funcionalidad de procesamiento 1210 puede realizar cualquier clase de procesamiento preliminar en la información de imagen recibida de la fuente 1208. En el último caso, la funcionalidad de decodificador 1212 realiza cualquier clase de extracción de información a base de corriente y descompresión para producir datos de imagen. Generalmente, tal procesamiento puede incluir separar información de imagen de información de audio en la información recibida, descomprimir la información, y así sucesivamente. Como con la etapa de procesamiento 1204, la funcionalidad de procesamiento 1214 realiza cualquier clase de procesamiento en la información de imagen resultante, tal como mezclar múltiples corriente de información de imagen juntas en una señal compuesta. Como con la etapa de salida, la funcionalidad de procesamiento de salida 1216 representa cualquier clase de procesamiento realizado en la información de imagen procesada en preparación para esta salida para un dispositivo de salida 1218. El dispositivo de salida 1218 puede representar una televisión, un monitor de computadora, y así sucesivamente. Los dispositivos de salida también pueden representar dispositivos de almacenamiento. Además, un "dispositivo" de salida (o funcionalidad de salida 1216) puede proporcionar funcionalidad de compresión y formateo (tal como multiplicadores) que preparan la información para almacenamiento en un dispositivo, o para distribución en una red. Generalmente, las operaciones de procesamiento mencionadas en la Figura 1 pueden distribuirse a través de estas etapas (1202, 1204, 1206) de cualquier forma. Por ejemplo, la etapa de procesamiento 1204 generalmente ¡mplementa el módulo de procesamiento 114 mostrado en la Figura 1. Cada una de las etapas (1202, 1204, 1206) puede implementarse físicamente como un aparato individual para realizar tareas mencionadas, o múltiples aparatos acoplados juntos en serie o forma paralela. Las funciones pueden implementarse por cualquier combinación de software y hardware. La Figura 13 muestra un sistema ilustrativo 1300 para configurar la tubería de procesamiento de imagen 1200 mostrada en la Figura 12. Más específicamente, el sistema ilustrativo 1300 puede comprender funcionalidad ara generar automáticamente código de computadora para implementar la tubería 1200 para que lleve a cabo cualquier combinación de operaciones de procesamiento de imagen mostradas en la Figura 1. Para funcionar en la forma antes descrita, el sistema 1300 incluye un módulo de configuración 1302. El módulo de configuración 1302 recibe información de requerimiento de tubería 1304 que define los requerimientos que debe satisfacer la tubería configurada. La información de requerimiento 1304 puede tener múltiples componentes. Un componente de requerimientos de entrada 1306 define las características de información de imagen que la tubería estera recibir. El componente de requerimientos de entrada 1306 puede definir una clase individual de información de imagen que puede procesarse, o puede definir un grupo de clases permisibles plurales de información de imagen que puede procesarse. Una forma de especificar convenientemente múltiples características de información de entrada permisible es para especificar el estándar(es) de codificación de video que se utilizan que puede implicar un alojamiento completo de características que posee la información de imagen, tal como espacios de color permisibles, esquemas de sub-muestreo de croma, funciones de transferencia gama, y así sucesivamente. Por ejemplo, la Recomendación ITU-R BT.601 es un estándar internacional que define codificación de estudio de información de video de alta definición. El contenido de alta definición (HD) representa contenido de video que es superior que la definición estándar (SD). Típicamente 1920 x 1080, 1280 x 720, y así sucesivamente. Estos sólo son dos de muchos estándares de codificación de video que puede procesar una tubería de procesamiento de imagen. Un componente de requerimientos de salida 1308 define las características de información de imagen que la tubería espera sacar. Es decir, el componente de requerimientos de salida 1308 puede definir una clase singular de información de imagen que puede generarse para adaptarse a un dispositivo de salida particular, o puede definir un grupo de clases permisibles plurales de información de imagen que puede generarse para adaptar clases diferentes de dispositivos de salida. De nuevo, una forma de especificar convenientemente múltiples características de la información de salida permisible es para especificar el estándar(es) de codificación de video que se utiliza. Un componente de requerimientos de procesamiento intermediario 1310 define la naturaleza de las tareas de procesamiento que la tubería debe realizar en la información de ¡magen de entrada. Cualquier número de tareas de procesamiento puede especificarse, que incluye, pero no se limita a, reajustar (clasificar), componer, alfa-mezclar, detección de borde, y así sucesivamente. En general, un operador humano puede seleccionar manualmente los requerimientos de tubería 1304. Alternativamente, uno o más requerimientos 1304 pueden inferirse automáticamente del ambiente en el cual se va a emplear la tubería. Dado los requerimientos de tubería de entrad 1304, el módulo de configuración 1302 realiza la tarea de utilizar análisis estático para interactuar con una biblioteca de módulos de código 1312 para ensamblar una agregación de costumbre de módulos de código que satisface los requerimientos de tubería 1304. Una forma de hacer esto es para generar una ecuación maestra que delinea cualquier clase de información de entrada para cualquier clase de información de salida que involucra cualquier clase de procesamiento intermediario. Esta ecuación maestra incluirá un número de componentes. Los componentes están asociados con módulos de código respectivos almacenados en la biblioteca 1312. En esta implementación, el módulo de configuración 1302 realiza la tarea de recopilar una agregación de costumbre de módulos de código al eliminar todos los componentes que no necesariamente están a la vista de los requerimientos de tubería de entrada 1304. Esto tiene el efecto de elegir ciertos módulos de código de la biblioteca 1312 y omitir otros módulos. El resultado del procesamiento realizado por el módulo de configuración 1302 es código de tubería optimizada 1314, que después puede aplicarse para procesar información de imagen. Este código 1314 se dirige para realizar solo en las funciones que se requieren para eso. Como resultado, una construcción de tubería basada en este código tiene el potencial de ejecutar sus operaciones en una forma más rápida que, digamos, un programa de atrapar todos más grande que tiene varias subrutinas enlazadas para controlar muchas tareas diferentes que pudieron nunca haberse empleado en una aplicación particular. Para nombrar solo un ejemplo, se asume que la tarea de la tubería de video en una aplicación particular es para convertir información de imagen Y' CbCr 4:2:2 entrelazado a un espacio de color RGB 4:4:4 progresivo lineal intermediario, que realiza composición en el espacio de color RGB, y después saca la información procesada a un aparato de televisión. Estas series de operaciones invocan algunas operaciones (por ejemplo, muestreo hacia arriba, conversión de matriz de transferencia, aplicación de función de transferencia, composición, y así sucesivamente), pero ninguna otra de las operaciones. Por consiguiente, el módulo de configuración 1302 producirá solo el código necesario para realizar los cálculos que se requieren, y nada más. La operación de configuración se describió anteriormente en el contexto de inclusión u omisión de módulos. Sin embargo, la funcionalidad de configuración más avanzada puede realizar otras operaciones de optimización, tal como combinar los módulos de código seleccionados en una forma particularmente eficiente, que eliminan el código redundante que es común para los módulos de códigos seleccionados, y así sucesivamente. Existe un número de formas para implementar el módulo de configuración 1302. Una forma de implementar está funcionalidad es elevar herramientas de configuración existentes (por ejemplo, un recopilador C + + convencional) que fácilmente coloca alguna capacidad para analizar código de fuente y eliminar código redundante, y aplicar tal funcionalidad a la tarea a la mano de optimizar el código de tubería al levantar y elegir módulos apropiados. La Figura 14 muestra un procedimiento 1400 que resume la discusión anterior en forma de cuadro de flujo. El paso 1402 causa entrada a los requerimientos de tubería de video. El paso 1404 causa determinación del código óptimo que satisface los requerimientos de entrada. El paso 1406 causa la salida y ejecución del código óptimo.
B.2. Uso General De Gpu Para Realizar Procesamiento De Imagen La Figura 15 muestra una revisión de un sistema ilustrativo 1500 que puede utilizarse para implementar aspectos de la tubería de imagen mostrada en La Figura 12 (y, más abstractamente, las operaciones de procesamiento de video 100 ¡lustradas en la Figura 1). El sistema 1500 puede representar una computadora (tal como una computadora personal) que contiene una ó más CPUs. El sistema 1500 distribuye ciertas tareas de procesamiento de imagen (o todas las tareas de procesamiento de imagen) mostradas en La Figura 1 para funcionalidad de módulo de gráficos. La funcionalidad de procesamiento de gráficos puede comprender una ó más unidades de procesamiento de gráficos (denominadas en la técnica como GPUs). Generalmente, La Figura 15 incluye una línea punteada para demarcar funciones que pueden realizarse por el CPU del sistema 1500 de funciones que pueden realizarse por la funcionalidad de módulos de gráficos del sistema 1500 (aunque esta demarcación solamente es ilustrativa; son posibles otras distribuciones CPU/GPU). A manera de antecedente, un GPU generalmente es un dispositivo de procesamiento como el CPU, pero generalmente con menos capacidad de realizar decisiones de tipo de ramificación. Los sistemas típicamente utilizan GPUs para realizar tareas de presentación de información intensiva que se realizan repetitivamente, tal como la presentación e información que utilizan una tubería de procesamiento tridimensional (que involucra sombras de vértice, sombras de pixeles, y asi sucesivamente) Un soporte de uso de GPU por lo tanto es tecnología de juego y simulación, que utiliza los GPUs para presentar vanas escenas, caracteres, efectos especiales y así sucesivamente Distribuir tareas repetitivas o intensivas de información para el GPU libera un CPU de sistema para realizar otras tareas de administración de extremo superior, y de esa forma mejora el desempeño de tal sistema En el caso actual, más que la generación de información de un juego, el sistema 1500 emplea la funcionalidad de módulo de gráficos para modificar información de imagen recibida (por ejemplo, información de videos) antes de la salida de cualquier tipo de dispositivo de salida Por ejemplo, una aplicación del sistema 1500 es para recibir información de video de un de un DVD, realizar composición en información de video dentro de la funcionalidad de gráficos (por ejemplo, al combinar letras de texto en la información de video), y después sacra la señal resultante a una unidad de televisión Con la revisión anterior, cada uno de los componentes ilustrativos de la Figura 15 se describirá a su vez más adelante Una sub sección posterior (B 3) proporciona información más especifica con respecto a como puede emplearse la funcionalidad de módulo de gráficos para implementar aspectos de la tubería 100 mostrados en la Figura 1 Para comenzar, el sistema 1500 acepta la información de imagen de cualquiera de un número de fuentes Por ejemplo, el sistema 1500 puede aceptar información de imagen de una red 1502 (tal como una fuente remota acoplada a Internet), cualquier tipo de base de datos 1504, cualquier tipo de medios de disco legibles por computadora 1506 (tal como un disco óptico DVD, etc ), o cualquier otra fuente 1508 En cualquier caso, la información recibida puede contener una combinación de información de imagen e información de audio Una unidad de demux 1510 se para la información de audio de la información de imagen La funcionalidad de procesamiento de audio 1512 procesa la información de audio Un decodificador de imagen 1514 procesa la información de imagen El decodificador de imagen 1514 puede convertir la información de imagen comprimida de su formato recibido a algún otro formato, y así sucesivamente La salida del decodificador de imagen 1514 puede incluir la asi llamada información de imagen pura asi como una información de sub corriente de imagen La información de imagen pura constituye la corriente de imagen principal para presentarse en el dispositivo de presentación, La información de sub corriente de imagen puede constituir cualquier información suplementaria con la información de imagen pura, tal como información de toma cercana, cualquier tipo de información de traslape gráfico (tal como vanos controles de edición gráficos), vanos tipos de sub imágenes presentadas por los reproductores de DVD, y así sucesivamente) (En otra implementación, ciertos aspectos del decodificador de video pueden distribuirse a la funcionalidad en modulo de gráfico) En una implementación ilustrativa, un módulo de presentador de mezcla de video (VMR) 1516 realiza un papel central en el procesamiento de la información de ¡magen de esa forma recibida. A manera de revisión, el módulo VMR 1516 interactúa con una interfase de gráficos 1518 y un controlador de presentación 1520, que, a su vez, controla un módulo de gráficos 1522. Esta interacción puede involucrar sondear las capacidades del módulo de gráficos 1522. Esta interacción también involucra coordinar el procesamiento de la información de imagen por la interfase de gráficos 1518, controlador de presentación 1520, y módulo de gráficos 1522. En una implementación, la ¡nterfase de gráficos 1318 puede implementarse utilizando funcionalidad de DirectDraw proporcionada por DirectX de Microsoft® Corporation. DirectDraw sirve en el contexto como un conducto de mensaje para acoplarse comunicativamente al módulo VMR 1516 al módulo de gráficos 1522. El módulo de gráficos 1522 por sí mismo puede constituir un módulo fijo dentro de una computadora o dispositivo similar, o puede constituir una unidad unible, tal como una tarjeta de gráficos. (Generalmente, las aplicaciones comúnmente asignadas mencionadas en la primera sección de esta descripción proporcionan detalles con respecto a estructuras de datos ilustrativas que el módulo VMR 1516 puede utilizar para interactuar con el módulo de gráficos 1522; mientras esta interacción no sea el enfoque de la presente descripción, los detalles de tal interacción pueden no repetirse aquí). El módulo de gráficos 1522 por si mismo incluye una unidad de procesamiento de gráficos (GPUs) 1524. Como se mencionó anteriormente aquí, el sistema puede distribuir cualquier combinación de operaciones de procesamiento mostradas en la Figura 1 al GPU 1524. El GPU 1524 realiza estas tareas utilizando una sombra de píxel 1526. Una sombra de píxel se refiere a la funcionalidad que puede realizar varios tipos de operaciones en la información de imagen en una base de píxel por píxel. La sub sección B.3 proporciona información adicional con respecto a la arquitectura de una sombra de píxel típica, y como puede emplearse tal tecnología para realizar las operaciones mostradas en la Figura 1. El GPU 1524 puede interactuar con una memoria local 1528 asociada con el modulo de gráficos 1522. Esta memoria local 1528 puede servir cualquier número de propósitos relacionados con almacenamiento. Por ejemplo, esta memoria 1528 puede almacenar una superficie de imagen final que después se dirige a un dispositivo de salida 1530 (tal como un monitor de presentación, una unidad de televisión, un dispositivo de almacenamiento, un objetivo de red, y así sucesivamente).
B.3. Mejoras Relacionadas Con Sombra De Píxel A manera de antecedentes, la Figura 16 muestra una arquitectura conocida para una sombra de píxel 1600 que comúnmente se utiliza en tuberías de procesamiento 3D. Cada píxel en una aplicación de sombra de píxel típica puede representarse por un vector de cuatro valores de punto flotante, por ejemplo, RGBA (rojo, verde, azul, alpha), en donde cada valor corresponde a un canal separado. La arquitectura de sombra de píxel 1600 incluye una serie de registros de entrada/salida (1602, 1604, 1606, 1608), y una unidad lógica aritmética (ALU) 1610 para realizar operaciones en los datos de entrada. Más específicamente, los registros incluyen registros de color 1602. Esto registros 1602 dirigen los datos de color de vértice valorados de una sombra de vértice (no mostrada) a la sombra de píxel 1600. Los registros constantes 1604 proporcionan constantes definidos por usuario a las sombras de píxel 1600. Los registros de salida/temporales 1606 proporcionan almacenamiento temporal para cálculos intermedio. Dentro de este grupo de registro, el registro rO también recibe una salida de la sombra de píxel 1600. Los registros s de textura 1608 proporcionan datos de textura ALU de sombra de píxel 1610. El ALU de sombra de píxel 1610 ejecuta instrucciones de dirección aritmética y de textura basada en un programa. El programa incluye una colección e instrucciones seleccionadas de un grupo de comandos de sombra de píxel permisibles. La discusión perseguida particularmente se enfoca en el uso de los registros de textura 1608 (a partir de ahí denominados más genéricamente como "unidades") para alimentar información de imagen y pesos de filtro al ALU de sombra de píxel 1610. Por lo tanto, la información introductoria adicional se proporcionara con respecto a los conceptos de texturas en el contexto de la Figura 17.
Perdidamente mencionado, en las aplicaciones de juego, una textura define una imagen que se "pega" en superficies polígonas que definen caracteres, escenas, y así sucesivamente La Figura 17 muestra una operación de aplicación de textura 1700 en la cual una textura 1702 se aplica a un polígono 1704 El polígono 1704 está compuesto de dos primitivos de triangulo ensamblados para formar un rectángulo El polígamo 1704 incluye cuatro vértices, V1, V2, V3, y V4. Cada vértice incluye coordenadas de textura. Las coordenadas de textura se especifican con respecto a un sistema de referencia U y V convencional En este sistema de referencia, la coordenada U generalmente corresponde a un eje X, y la coordenada V generalmente corresponde a un eje Y Los valores en el eje U se agrupan para variar de 0 0 a 1 0, y los valores en el eje V de otra forma se agrupan para variar de 0 0 a 1 0 Las coordenadas de textura asociadas con los vértices se especifican como la textura 1702 se va a colocar en el polígono 1704 En el caso ilustrativo de la Figura 17, el vértice, V1 tiene coordenadas de textura de 00, 00, que corresponde a la esquina izquierda superior de la textura 1702 El vértice V2 tiene coordenadas de textura 1 0, 0 0, que corresponde a la esquina derecha superior de la superficie 1702 El vértice V3 tiene coordenadas de textura 0 0, 0 5 que corresponde a la mitad del borde izquierdo de la textura 1702 Y el vértice V4 tiene coordenadas de textura 1 0, 005, que corresponde a la mitad del borde derecho de la textura 1702 Por consiguiente, cuando la textura 1702 se delinea en el polígono 1704 de acuerdo con las coordenadas de textura, solo la mitad superior de la textura 1702 se aplicará al polígono 1704. El resultado de la aplicación de textura 1702 al polígono 1704 se muestra en la superficie de textura 1706. Las tuberías de procesamiento 3D típicamente permiten un número de operaciones de procesamiento de textura especiales, desarrolladas en el contexto de la generación de información de juegos. Una operación especial se denomina como el modo de envoltura. En el modo de envoltura, la tubería de procesamiento 3D repetirá una textura un número de veces, por ejemplo, en un caso, para producir una fila o matriz de texturas que tienen el mismo contenido. Un modo de espejo también duplica una textura adyacente, pero desliza (refleja) la textura como si fuera un espejo.
Otra información con especto a cualquiera de los temas de sobra de píxel de una naturaleza general pueden encontrarse en un número de textos comercialmente disponibles, tal como Wolfgang F. Engel, sombraX directa 3D: consejos y trucos de sombra de vértice y píxel, Wordware Publishing, Inc., 2002. Con la introducción anterior, la discusión restante menciona técnicas novedosas ilustrativas para utilizar una sombra de píxel para implementar aspectos de la tubería de procesamiento e imagen mostrada en la Figura 1. Para comenzar como en la Figura 18 muestra una aplicación ilustrativa 1800 de la sombra de píxel 1526 (de la Figura 15) para implementar un filtro de procesamiento de imagen que tiene un núcleo con cuatro tomas. Ya que el tipo de procesamiento mostrado en la Figura 18 también es fundamental para muchas otras operaciones realizadas por al tubería 100 de la Figura 1, los principios mencionados con respecto a la Figura 18 aplican a otros tipos de procesamiento que pueden realizarse por la sombra de píxel 1526. El caso de un núcleo de filtro de 4 tomas es, por supuesto, solamente ilustrativo; los ejemplos posteriores explican como este modelo puede expenderse para diferentes diseños de filtro. Generalmente, el GPU 1524 puede configurarse para escanearse a través de una ó más imágenes de entrada, extraer los valores de píxel de cada uno, aplicar un cálculo basado en las entradas, y sacar un píxel individual. Esta operación puede expresarse como: salida (x, y) = función(entrada?(x,y), entrada2(x,y),...entradap(x,y), constantes de arreglo [m]). En otras palabras, esta expresión general dice que el resultado (salida (x,y)) matemáticamente depende de alguna función de varias señales de entrada (entrada^x.y), entrada2(x,y),... entradap(x.y), y, opcionalmente, varias constantes definidas (constantes de arreglo [m]). , En el contexto particular de procesamiento de ¡magen que utiliza filtros, la sombra de píxel 1526 requiere la entrada de una ó más imágenes de entrada, junto con pesos de filtro asociados para aplicarse a las imágenes. Más formalmente, un filtro que genera una salida (fuera [x]) asociado con un píxel de salida puede definirse como sigue: Salida[x] = suma(dentro[x-tomas/2 + i]*núcleo[¡], i = 0...tomas-1). En otras palabras, la salida para un pixel (fuera[x])representa la suma pesada de diferentes términos de entrada. El núcleo representa información de peso para aplicarse a los términos de entrada. Los diferentes términos de entrada, a su vez, pueden representar versiones cambiadas de la misma excepción de la información de imagen entrada. La Figura 18 muestra como la sombra de píxel 1526 puede implementar la ecuación anterior. El ejemplo de cuatro tomas 1800 muestra una serie de unidades de textura 1802 que proporcionan entrada a un ALU de sombra de píxel 1804. El acercamiento mostrado es para asignar los pesos de filtro a la primera unidad de textura, y cuatro versiones cambiadas de delta diferentes asignadas de la misma información de imagen a las siguientes cuatro unidades de textura (que representan las cuatro tomas del núcleo). El ALU de sombra de píxel 1804 lee la información almacenada en las unidades de textura ( en una operación de lectura individual), y proporciona una salida individual para un píxel particular (en una operación de escritura individual). Este procedimiento se repite una pluralidad de veces para procesar una imagen completa. Este acercamiento define un filtro de convulsión 1-D con una ventana de soporte de tomas de filtro de "Tomas". La operación del ejemplo 1800 mostrada en la Figura 18 puede expresarse más formalmente como sigue. En núcleo 1-D ilustrativo en uso tiene un grosor de píxeles de ancho "w", y pesos de núcleo de w[-1], w[0], w[2], y w[3]. La textura de peso se calcula al calcular los cuatro pesos del núcleo de filtro para cada píxel. El núcleo 1-D también incluye cuatro entradas definidas como dentro[-1], dentro[0], dentro[1], y dentro[2]. El símbolo ? se define como 1/w. Dado esto, la siguiente información se distribuye para las unidades de textura 1-5: Textura 1: la "textura de peso", con coordenadas de 0...1; Textura 2: dentro[-1], imagen de entrada con coordenadas de (0...1 + (-1)* ? (es decir, de 0-? a 1-?); Textura 3: dentro[0], imagen de entrada con coordenadas de (0...1) + (0)* ?; Textura 4: dentro[1], imagen de entrada con coordenadas de (O...1 ) + (1 )* ?; Textura 5: dentro [2], imagen de entrada con coordenadas de (0...1) + (2)* ?; ( es decir, de 0 + 2*? a 1+2*?). Si tn representa el píxel buscado de la unidad de textura "n", después los cálculos realizados por el ALU de sombra de píxel 1804 pueden expresarse por el siguiente programa: Algoritmo 3: Implementación De Filtro Que Utiliza Una Sombra De Píxel Permitir w[0] = 11. roj o Permitir w[1] = t1. verde Permitir w[2] = t1.azul Permitir w[3] = t1.alpha Fuera. rgba = t2.rgba*w[0] + t3.rgba*w[1] + t4.rgba*w[2] + td.rgba *w[3] En otras palabras el arreglo w primero se asigna a los valores de la información de peso que se almacena en la primera unidad de textura (t1). Después el resultado de salida (fuera. rgba) se forma al modificar la información de imagen contenida en las unidades de textura t2-t5 por los pesos w. Los sub fijos unidos a la información de registradora definen información de canal. Por consiguiente, fuera. rgba de salida representa un vector de cuatro flotantes almacenados en los canales rojo, verde, azul y alpha. De puede observar que el algoritmo anterior requerirá "tomas" una unidad de textura de entrada, por ejemplo debido a que una unidad se distribuye para almacenar información de peso. Generalmente, en donde la información de imagen de entrada se expresa en el formato RGB, después las unidades de textura pueden almacenar cantidades iguales de componentes rojo, verde y azul. Sin embargo, en donde la sombra de píxel se aplica a la información de imagen relacionada con luma de procesamiento (tal como YUV), después las unidades de textura pueden almacenar más información luma relativa a la información croma (U, V). Esta provisión toma ventaja del hecho que el ojo humano es más perceptible a la información de luma que la información croma, para que no sea necesario almacenar y procesar tanta información croma relativa a la información luma para lograr resultados de salida aceptables.
Un número de variaciones y optimizaciones del acercamiento descritos se contemplan De acuerdo con una variación, el modo de cobertura antes descrito puede utilizarse para tratar cualquier textura con un mosaico infinito de información de imagen Al utilizar este modo, un acercamiento es para establecer las coordenadas de textura de peso de entrada de 0 a 1 0/gcd (grosor de fuente, grosor de destino), más que 0.. 1. Al aplicar esta textura, una unidad de prebúsqueda de textura automáticamente se "cubrirá" a la siguiente copia de la información de peso almacenada en la textura Esta provisión permite a un diseñador reducir los requerimientos de almacenamiento de un núcleo, incluso todavía para asegurar que está información se aplicara duplicada en cualquier momento que se necesite De acuerdo con otra variación, el núcleo puede tener más de cuatro tomas Para dirigir esta situación, una implementación puede dividir los grupos de información de peso de núcleo en grupos de cuatro válvulas y asignar cada una a una textura de "peso" de entrada adicional. Considere el caso en donde existen dos tomas. En este caso, una implementación puede utilizar dos texturas de peso (la primera textura con cuatro válvulas, y la segunda textura con las dos válvulas restantes, que dejan dos ranuras sin utilizarse). Esta implementación también requiere seis texturas de imagen de entrada De esa forma, para implementar este diseño, puede utilizarse un GPU de ocho texturas para realizar el filtro con seis tomas en un paso individual De acuerdo con otra variación, el número de tomas puede exceder el numero de unidades de textura Se nota que el cálculo de la información de imagen infalible representa una suma de términos de "toma" A partir de ahí, el número mayor de tomas puede calcularse al dividir el consumo de la suma en múltiples pasos de procesamiento Por ejemplo, si el núcleo de filtro tiene doce 12 tomas, después puede calcularse una implementacion Fuera[x] = suma(dentro[x + ?]*w[?], ? = 0. 11)como Sumal [x] = suma(dentro[x + ?]*w[?], i = 0 3) Suma2 [x] = suma(dentro[x + ?]*w[?], i = 4 8) Suma3 [x] = suma(dentro[x + ?]*w[?], i = 9 11) La implementación después puede combinar los resultados que utilizan un paso final Fuerafx] = suma1[x] + suma2[x] + suma3[x] (tres lecturas, una escritura) Otra implementación posible puede formar el resultado fuera[x] agregado a través de las siguientes senes de operaciones Fuera[x] = suma1[x] (escritura) Fuera[x] = fuera[x] + suma2[x] (lectura, lectura, escritura) Fuera[x] = fuera[x] + suma3[x] (lectura, lectura, escritura) Lo último de los acercamientos requiere substancialmente menos memoria que el antiguo acercamiento, pero también requiere el doble de acceso de memoria comparado con el antiguo acercamiento (por ejemplo, cuatro lectura y tres escrituras) Está característica de la última estrategia puede presentar su falta de confiabilidad, mientras los ciclos de lectura-modificación-escritura en GPUs son muy costosos, o posiblemente prohibidos. De acuerdo con otra variación una implementación puede proporcionar un modo especial ("matar píxel") que trata de todos los píxeles fuera de la información de imagen definida como negros (o algún otro valor predeterminado). Esta provisión puede aplicarse a las condiciones de borde automáticamente "escondida" en información que no debe presentarse. De acuerdo con otra variación, una implementación puede aplicar el modo de espejo antes mencionado en la información de imagen de procesamiento. Este modo refleja la información de imagen ya sea horizontal o verticalmente cuando hace referencia a la información de imagen fuera de los límites de la información de imagen. La Figura 19 muestra un procedimiento 1900 que resume mucha de las características antes descritas. El paso 1902 menciona el asignar varios tipos de información a las varias unidades de entrada de la sombra de píxel. Tal información puede comprender información de imagen e información de peso aplicada a varias unidades de textura, constantes aplicadas a varias unidades constante y así sucesivamente. El paso 1904 menciona información de imagen de salida de cálculo en una base de píxel por píxel basada en las instrucciones de programación suministradas al ALU de sombra de píxel 1804. El paso 1906 determina si los pasos adicionales se requieren. Si es así, el procedimiento 1900 repite una ó más de las operaciones mostradas en la Figura 19 en una ó más veces. El paso 1908 genera el resultado de salida final. Como un tema final, la Figura 20 muestra una aplicación de la sombra de píxel 1526 que realiza varias de las operaciones introducidas en el contexto de la Figura 1. La Figura 20 particularmente dirige una aplicación ilustrativa en la cual la tubería recibe información de imagen YUV 4:2:2, la muestrea hacia arriba, la convierte a la forma RGB lineal, y realiza la clasificación en la información lineal resultante. El procesamiento mostrado en la Figura 20 se basa en los conceptos desarrollados anteriormente con respecto a las Figuras 18 y 19. Se debe notar que la información de ¡magen 4:2:0 expresada en un formato plano híbrido (tal como NV12) puede tratarse como comprendiendo un plano luma y un plano croma. Por lo tanto esto es posible para realizar ciertas operaciones en esta información en paralelo. Un acercamiento es para dividir las unidades de textura en dos grupo, un grupo para utilizarse al interpolar el componente de croma. Esta operación de muestreo hacia arriba invoca una operación de alargamiento de clasificación que puede utilizarse para generar información de croma 4:4:4. La sombra de píxel 1526 después puede utilizar los componentes de luma y croma interpolados para calcular, en una base de píxel por píxel, la información R' G' V correspondientes que utilizan la matriz de transferencia. Después la sombra de píxel 1526 puede aplicar la función de transferencia para alinear la información de imagen. Después, la sombra de píxel 1526 puede utilizarse para realizar otra clasificación en el espacio RGB que utiliza el segundo grupo de unidades de textura. Más formalmente, lo siguiente identifica una secuencia ilustrativa de pasos que puede utilizarse para transformar la información de imagen en la forma antes identificada. 1) Configurar texturas 1-5 en la forma antes descritas (mostrada en la figura 18) para realizar la primera operación de clasificación. 2) Utilizar la operación de clasificación antes descrita para calcular información CbCr dos veces a la velocidad de muestra como la información de luma. 3) Cargar la matriz de conversión de espacio de color Y'CbCr y R'G'B' en un arreglo de 16 constantes como una matriz M. 4) Calcular la información R'G'B' en la siguiente forma: Calcular R' = puntoProd4 ( M[0], aY'CbCr) Calcular G' = puntoProd4 ( M[1], aY'CbCr) Calcular B' = puntoProd4 ( M[2], aY'CbCr) Calcular A = puntoProd4 ( M[3], aY'CbCr) 5) Calcular RGB de R'G'B' que utiliza la función de transferencia. 6) Realizar la segunda operación de clasificación al calcular los datos RGB lineales clasificados al utilizar los algoritmos mencionados anteriormente (con referencia a la Figura 18), pero con texturas 6-12. 7) Después de que se realiza la clasificación horizontal, aplicar la clasificación vertical a la información RGB La Figura 20 muestra un procedimiento 2000 que explica el algoritmo antes descrito en la forma de cuadro de flujo El paso 2002 involucra asignar información a las unidades de textura apropiadas (por ejemplo, un primer grupo de unidades de textura) El paso 2004 menciona el uso de un primer grupo de unidades de textura para muestrear hacia arriba la información de coma El paso 2006 menciona las constantes de carga para utilizarse al realizar la conversión de espacio de color en la sombra de pixel 1526 El paso 2008 menciona el uso de las constantes para convertir la información de imagen en forma R'G'B' no lineal El paso 2010 menciona el convertir la información R'G'B' en forma RGB lineal Y el paso 2012 menciona la clasificación de la información RGB C. Ambiente De Computadora Ilustrativo En una implementación ilustrativa, vanos aspectos de procesamiento mostrados en las Figuras precedentes pueden realizarse por el equipo de computo En este caso, la Figura 21 proporciona información con respecto a un ambiente de computadora ilustrativo 2100 que puede utilizarse para implementar aspectos del procesamiento mostrado en las Figuras precedentes Pro ejemplo, una computadora puede utilizarse para implementar parte o toda la tubería de procesamiento de imagen 100 mostrada en la Figura 1 El ambiente de computo 2100 incluye una computadora de tipo de prepósito general 2102 y un dispositivo de presentación 2104. Sin embargo, el ambiente de computo 2100 puede incluir otros tipos de equipo de computo. Por ejemplo, aunque no se muestra el ambiente de computadora 2100 puede incluir dispositivos portátiles móviles, cajas de TV. Por cable, consolas de juego funcionalidad de procesamiento integrada en dispositivos de procesamiento/presentación de video (por ejemplo, televisiones, DVRs, etc.), macrocomputadoras, y así sucesivamente. Además, la Figura 21 muestra elementos del ambiente de computadora 2100 agrupados para facilitar la discusión. Sin embargo, el ambiente de computo 2100 puede emplear una configuración de procesamiento distribuida. En un ambiente de cómputo distribuido, los recursos de cómputo pueden dispersarse físicamente a través del ambiente. La computadora ilustrativa 2102 incluye uno ó más procesadores o unidades de procesamiento 2106, una memoria de sistema 2108, y un conductor común 2110. El conductor común 2110 conecta a varios componentes de sistemas. Por ejemplo, el conductor común 2110 conecta el procesador 2106 a la memoria de sistema 2108. El conductor común 2110 puede implementarse utilizando cualquier tipo de estructura de conductor común o combinación de estructuras de conductor común, que incluyen un conductor común de memoria a controlador de memoria, a un conductor común periférico, un puerto de gráficos acelerado y un procesador o conductor común local que utiliza cualquiera de una variedad de arquitectura de un conductor común. La computadora 2102 puede también acoplarse a una ó más unidades GPU (no mostradas) en la forma descrita anteriormente. La computadora 2102 también puede incluir una variedad de medios legibles por computadora, que incluyen una variedad de tipos de medios volátiles y no volátiles, cada uno que puede ser removible o no removible. Por ejemplo, la memoria de sistema 2108 incluye medios legibles por computadora en la forma de memoria volátil, tal como memoria de acceso aleatorio (RAM) 2112, y memoria no volátil, tal como memoria solo de lectura (ROM) 2114. La ROM 2114 incluye un sistema de entrada/salida (BIOS) 2116 que contiene las rutinas básicas que ayudan a transferir información entre elementos dentro de la computadora 2102, tal como durante el arranque. La RAM 2112 típicamente contiene datos y/o módulos de programa en una forma que puede accederse rápidamente por la unidad de procesamiento 2106. Otros tipos de medios de almacenamiento de computadora incluyen una unidad de disco duro 2118 para leer y escribir a un medio magnético no removible, no volátil, una unidad de disco magnético 2120 para leer y escribir a un disco magnético removible, no volátil 2122 (por ejemplo, un "disco flexible"), y una unidad de disco óptico 2124 para leer de y/o escribir a un disco óptico removible, no volátil 2126 tal como un CD-ROM, DVD-ROM, u otro medio óptico. La unidad de disco duro 2118, unidad de disco magnético 2120, y unidad de disco óptico 2124 cada una están conectados a un conductor común de sistemas 2110 por uno ó más interfases de medios de datos 2128. Alternativamente, la unidad de disco duro 2118, unidad de disco magnético 2120, y unidad de disco óptico 2124 pueden conectarse al conductor común de sistemas 2110 por una interfase SCSI (no mostradas) u otro mecanismo de acoplamiento. Aunque no se muestra, la computadora 2102 puede incluir otros tipos de medios legibles por computadora, tal como cassettes magnéticos u otros dispositivos de almacenamiento magnético, tarjetas de memoria instantánea, CD-ROM, discos versátiles digitales (DVD) u otro almacenamiento óptico, memoria solo de lectura eléctricamente borrable programable (EEPROM), etc.
Generalmente, los medios legibles por computadora antes identificados proporcionan el almacenamiento no volátil de instrucciones legibles por computadora, estructuras de datos, módulos de programa, y otros datos para utilizarse por la computadora 2102. Por ejemplo, los medios legibles pueden almacenar el sistema operativo 2130, los módulos de aplicación 2132, otros módulos de programa 2134, y datos de programa 2136. El medio de computadora 2100 puede incluir una variedad de dispositivos de entrada. Por ejemplo, el ambiente de computadora 2100 incluye el teclado 2138 y un dispositivo de señalamiento 2140 (por ejemplo, un "ratón") para ingresar comandos de información en la computadora 2102. El ambiente de computadora 2100 puede incluir otros dispositivos de entrada (no ¡lustrados, tal como un micrófono, palanca de mandos, almohadilla de juegos, antena parabólica, puerto en serie, escáner, dispositivos de lectura de tarjeta, cámara digital o de video, etc. las interfases de entrada/salida 2142 se acoplan los dispositivos de entrada a la unidad de procesamiento 2106. Más generalmente, los dispositivos de entrada pueden acoplarse a la computadora 2102 a través de cualquier tipo de interfase y estructuras de conductor común, tal como un puerto paralelo, puerto en serie, puerto de juegos, puerto de conductor común en serie universal (USB) etc. El ambiente de computadora 2100 también incluye el dispositivo de presentación 2104. Un adaptador de video 2144 acopla el dispositivo de presentación 2104 al conductor común 2110. Además del dispositivo de presentación 2104, el ambiente de computadora 2100 de computadora puede incluir otros dispositivos periféricos de salida, tal como bocinas (no mostradas), una impresora (no mostrada), etc. La computadora 2102 opera en un ambiente en red que utiliza conexiones lógicas a una ó más computadoras remotas, tal como un dispositivo de cómputo remoto 2146. El dispositivo de computo remoto 2146 puede comprender cualquier tipo de equipo de computadora que incluye una computadora personal de propósito general computadora portátil, un servidor, una consola de juegos, un dispositivo de extensión de red, y así sucesivamente. El dispositivo de computo remoto 2146 puede incluir todas las características discutidas con respecto a la computadora 2102, o algún subgrupo del mismo. Cualquier tipo de red 2148 puede utilizarse para acoplar la computadora 2102 con el dispositivo de computo remoto 2146, tal como una WAN, una LAN, etc. La computadora 2102 se acopla a la red 2148 a través de la interfase de red 2150, que puede utilizar una conectividad de banda ancha, conectividad de modem, Conectividad DSL u otra estrategia de conexión. Aunque no se ilustra, el ambiente de computo 2100 puede proporcionar funcionalidad de comunicación inalámbrica para conectar la computadora 2102 con el dispositivo de computo remoto 2146 (por ejemplo, a través de señales de radio moduladas, señales infrarrojas moduladas, etc.). En resumen, un número de ejemplos se presentaron en esta descripción en la alternativa (por ejemplo, caso A o caso B). Además, esta descripción abarca a aquellos casos que combinan alternativas en una implementación individual (por ejemplo, caso A y caso B), incluso aunque esa descripción puede no tener mención expresamente de estos casos conjuntivos en cada caso. Además, un número de características se describió aquí al identificar primero problemas ilustrativos que estas características pueden dirigir. Esta forma de explicación no constituye una admisión que otros han apreciados y/o articulado los problemas en la forma específica aquí. La apreciación y articulación de los problemas 'presentes en la técnica de procesamiento de video se entiende como parte de la presente invención. Aunque la invención se describió en lenguaje específico de características estructurales y/o actos metodológicos, se debe entender que la invención definida en las reivindicaciones anexas no están invitadas necesariamente a las características especificas o actos descritos. Más que eso, las características específicas y actos se describen como formas ilustrativas de implementar la invención reclamada.

Claims (9)

REIVINDICACIONES
1 - Un método para procesar información de imagen en una forma lineal, que comprende recibir información de imagen en una forma no lineal entrelazada, convertir la información de imagen en una forma lineal al aplicar una función de transferencia a la información de imagen, convertir la información de imagen en una forma progresiva al desentrelazar la información de imagen, y realizar el procesamiento en la información de imagen en la forma lineal progresiva
2 - El método de acuerdo con la reivindicación 1, en donde la información de imagen recibida está en un espacio de color relacionado con luma
3 - El método de acuerdo con la rei indicación 2, que además comprende, antes de convertir la información de imagen a la forma lineal, convertir la información de imagen en un espacio de color R'G'B' no lineal al aplicar una matriz de conversión a la información de imagen
4 - El método de acuerdo con la reivindicación 3, en donde convertir la información de imagen en forma lineal comprende aplicar la función de transferencia para convertir la información de imagen del espacio de color R'G'B' a un espacio de color RGB lineal
5 - El método de acuerdo con la reivindicación 1, en donde el procesamiento comprende reajustar la información de imagen. 6.- El método de acuerdo con la reivindicación 1, en donde el procesamiento comprende realizar una operación de composición en la información de imagen. 7.- El método de acuerdo con la reivindicación 1, en donde el procesamiento comprende realizar alfa-mezcla en la información de imagen. 8.- El método de acuerdo con la reivindicación 1, en donde el procesamiento comprende realizar detección de borde en la información de imagen. 9.- El método de acuerdo con la reivindicación 1, en donde la información de imagen recibida está en un espacio de color relacionado con luma, y en donde la información de imagen recibida tiene menos muestras de croma relativas a muestras luma. 10.- El método de acuerdo con la reivindicación 9, que además comprende muestrear hacia arriba la información de ¡magen recibida para aumentar el número de muestras de croma relativas al número de muestras de luma. 11.- El método de acuerdo con la reivindicación 10, en donde el muestreo hacia arriba produce información de imagen 4:4:4 de canal lleno. 12.- El método de acuerdo con la reivindicación 10, en donde la información de imagen recibida está en el formato 4:2:0, y en donde el análisis realizado por el desentrelazamiento y el muestreo hacia arriba se integran juntos. 13.- El método de acuerdo con la reivindicación 1, en donde la información de imagen recibida se convierte a un formato de alta precisión. 14.- El método de acuerdo con la reivindicación 13, en donde el formato de alta precisión comprende un formato de punto flotante. 15.- El método de acuerdo con la reivindicación 14, en donde el formato de punto flotante comprende un formato de punto flotante de 16 bits. 16.- El método de acuerdo con la reivindicación 1, que además comprende cuantificar y hacer temblar la información de ¡magen después de que se procesó para reducir su precisión, para con ello proporcionar información de imagen cuantificada. 17.- El método de acuerdo con la reivindicación 16, en donde la cuantificación y temblor aplican un algoritmo de dispersión de error para reducir la cantidad de artefactos en la información de imagen cuantificada, en donde el algoritmo de dispersión de error distribuye un término de error para asociar elementos de imagen con respecto a un elemento de imagen que se somete al procesamiento. 18.- El método de acuerdo con la reivindicación 17, en donde el algoritmo de dispersión de error está basado en un algoritmo de Floyd-Steinberg. 19.- El método de acuerdo con la reivindicación 17, en donde el ruido se agrega a la cuantificación realizada por el algoritmo de dispersión de error, para que un valor que se cuantifica esté basado en un valor de imagen original, un valor de término de error, y un valor de ruido, para generar un valor cuantificado. 20.- El método de acuerdo con la reivindicación 19, en donde un término de error para una operación de cuantificación subsecuente se calcula al encontrar la diferencia entre el valor de ¡magen original y el valor cuantificado. 21.- El método de acuerdo con la reivindicación 19, en donde el ruido que se agrega a la cuantificación se genera por un generador de ruido que tiene un periodo de repetición que es lo suficientemente largo para que los artefactos no aparezcan en la información de imagen cuantificada. 22.- El método de acuerdo con la reivindicación 1, en donde la forma lineal comprende una forma seudo-lineal. 23.- El método de acuerdo con la reivindicación 22, en donde la función de transferencia que produce la forma seudo-lineal aplica una operación de multiplicar. 24.- El método de acuerdo con la reivindicación 22, en donde la función de transferencia que produce la forma seudo-lineal tiene una porción lineal en una región de valores de entrada cerca de cero. 25.- El método de acuerdo con la reivindicación 22, en donde el procesamiento involucra aplicar algoritmos de tipo lineal a la información de imagen en la forma seudo-lineal. 26.- El método de acuerdo con la reivindicación 22, que además comprende realizar una operación para remover la forma seudo-lineal de la información de ¡magen subsecuente al procesamiento. 27.- El método de acuerdo con la reivindicación 26, que además comprende, subsecuente a la remoción de la forma seudo-lineal, convertir la información de imagen a una forma no lineal que es apropiada para requerimientos de salida prescritos. 28.- El método de acuerdo con la reivindicación 27, en donde la remoción de la forma de imagen seudo-lineal y la conversión a una forma no lineal apropiada para sacar requerimientos se combina en una operación individual. 29.- El método de acuerdo con la reivindicación 1, en donde el método involucra al menos una operación de clasificación. 30.- El método de acuerdo con la reivindicación 29, en donde la operación de clasificación emplea un filtro Catmull-Rom. 31.- El método de acuerdo con la reivindicación 29, en donde la operación de clasificación involucra pre-calcular un número de núcleos de filtro, y después aplicar los núcleos de filtro pre-calculados para procesar la información de imagen. 32.- El método de acuerdo con la reivindicación 31, en donde el pre-cálculo también involucra calcular un número de núcleos de filtro que se requieren, y determinar cuántas cubiertas debe tener cada núcleo. 33.- El método de acuerdo con la reivindicación 31, en donde aplicar los núcleos de filtro involucra repetir cíclicamente una serie de los núcleos de filtro pre-calculados cuando se procesa una fila o columna de la información de imagen. 34.- El método de acuerdo con la reivindicación 1, en donde el método define una tubería de procesamiento de imagen, y en donde se utiliza un programa de código optimizado para implementar la tubería de procesamiento de imagen. 35.- El método de acuerdo con la reivindicación 34, en donde el código optimizado se produce al: ingresar requerimientos de la tubería de procesamiento de imagen; y ensamblar módulos de código de una biblioteca de módulos de código que pueden utilizarse para implementar los requerimientos, en donde los módulos de código que no se requieren no se utilizan en el código optimizado. 36.- El método de acuerdo con la reivindicación 1, en donde al menos una operación en el método se realiza utilizando una unidad de procesamiento gráfico. 37.- El método de acuerdo con la reivindicación 36, en donde todas las operaciones en el método se realizan utilizando la unidad de procesamiento gráfico. 38.- El método de acuerdo con la reivindicación 36, en donde la unidad de procesamiento gráfico incluye una sombra de píxel. 39.- El método de acuerdo con la reivindicación 38, que además comprende realizar una operación de clasificación que utiliza sombra de píxel al: asignar información de peso al menos a una unidad de textura; asignar versiones con cambio delta de información de imagen de entrada para pluralizar otras unidades de textura; y realizar una operación que utiliza la sombra de píxel basada en información recibida de las unidades de textura, para proporcionar un resultado de salida. 40.- El método de acuerdo con la reivindicación 39, que además comprende realizar operaciones plurales que utilizan la sombra de píxel para generar un resultado de salida final en la base de resultados de salida parcial plural. 41.- El método de acuerdo con la reivindicación 40, en donde la realización de operaciones plurales se aplica a un caso en el cual la operación de clasificación utiliza un filtro que tiene un número de cubiertas que excede un número de unidades de textura disponibles. 42.- Una tubería de procesamiento de ¡magen configurada para implementar el método de acuerdo con la reivindicación 1. 43.- Uno o más medios legibles por computadora que almacenan instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 1. 44.- Un método para procesar información de imagen en una forma lineal, que comprende: recibir información de imagen en una forma no lineal; convertir la información de imagen a un formato RGB lineal de alta precisión; y realizar el procesamiento en la información de imagen en el formato RGB lineal de alta precisión. 45.- Una tubería de procesamiento de imagen configurada para implementar el método de acuerdo con la reivindicación 44. 4
6 - Uno o más medios legibles por computadora que almacenan instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 44 4
7 - Un método para cuantificar y hacer temblar información de imagen original para producir información de imagen cuantificada, que comprende cuantificar una suma que combina un valor original tomado de la información de imagen, un valor de ruido, y un término de error, para producir un valor cuantificado, y calcular un término de error para una operación de cuantificación subsecuente al calcular una diferencia entre el valor cuantificado y el valor original 4
8 - Una tubería de procesamiento de imagen configurada para implementar el método de acuerdo con la reivindicación 47 4
9 - Uno o más medios legibles por computadora que almacena instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 47 50 - Un método para procesar información de imagen en forma seudo-hneal, que comprende- recibir información de imagen en una forma no lineal, convertir la información de imagen en una forma seudo-lineal que utiliza una función de transferencia, y realizar el procesamiento en la información de imagen en la forma seudo-hneal que utiliza al menos un algoritmo que se configura para procesar información lineal. 51.- Una tubería de procesamiento de imagen configurada para ímplementar el método de acuerdo con la reivindicación 50. 52.- Uno o más medios legibles por computadora que almacenan instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 50. 53.- Un método para realizar una operación de clasificación en información de imagen que utiliza un filtro al: calcular, basado en la clasificación para realizarse, un número de núcleos de filtro requeridos para implementar el filtro, y el número de cubiertas requerido para cada núcleo de filtro; pre-calcular y almacenar el número de núcleos de filtro; aplicar los núcleos de filtro a una fila o columna de la información de imagen al secuenciar repetidamente a través de los núcleos de filtro si hay más elementos de píxel en la fila o columna que los que hay en núcleos de filtro pre-calculados. 54.- Una tubería de procesamiento de imagen configurado para implementar el método de acuerdo con la reivindicación 53. 55.- Uno o más medios legibles por computadora que almacenan instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 53. 56.- Un método para generar un código utilizado para implementar una tubería de procesamiento de imagen, que comprende: ingresar requerimientos de la tubería de procesamiento de imagen; y ensamblar módulos de código de una biblioteca de módulos de código que pueden utilizarse para implementar los requerimientos, en donde los módulos de código no se requieren y no se utilizan en el código generado. 57.- Un método de acuerdo con la reivindicación 56, en donde el ensamble de módulos de código utiliza análisis estático para generar el código utilizado para implementar la tubería de procesamiento de imagen, antes de la aplicación de la tubería de procesamiento de imagen. 58.- Un aparato configurado para implementar el método de acuerdo con la reivindicación 56. 59.- Uno o más medios legibles por computadora que almacenan instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 56. 60.- Un método para realizar al menos una tarea de procesamiento en una tubería de procesamiento de imagen que utiliza una sombra de píxel de una unidad de procesamiento de gráfico, que comprende: asignar información de peso al menos a una unidad de textura de la sombra de píxel; asignar versiones con cambio delta de información de ¡magen de entrada para pluralizar otras unidades de textura de la sombra de píxel; y realizar una operación que utiliza la sombra de píxel basada en información recibida de las unidades de textura, para con ello proporcionar un resultado de salida. 61.- Una tubería de procesamiento de ¡magen configurada para implementar el método de acuerdo con la reivindicación 60. 62.- Uno o más medios legibles por computadora que almacenan instrucciones legibles por máquina configuradas para implementar el método de acuerdo con la reivindicación 60.
MX2007000369A 2004-07-29 2005-07-28 Procesamiento de imagen utilizando valores ligeros y otras mejoras de procesamiento de imagen. MX2007000369A (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US10/902,325 US7643675B2 (en) 2003-08-01 2004-07-29 Strategies for processing image information using a color information data structure
PCT/US2004/024707 WO2005013087A2 (en) 2003-08-01 2004-07-30 Strategies for processing image information using a color information data structure
US10/987,378 US7158668B2 (en) 2003-08-01 2004-11-12 Image processing using linear light values and other image processing improvements
PCT/US2005/026761 WO2006015107A2 (en) 2004-07-29 2005-07-28 Image processing using linear light values and other image processing improvements

Publications (1)

Publication Number Publication Date
MX2007000369A true MX2007000369A (es) 2007-03-12

Family

ID=38131604

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2007000369A MX2007000369A (es) 2004-07-29 2005-07-28 Procesamiento de imagen utilizando valores ligeros y otras mejoras de procesamiento de imagen.

Country Status (3)

Country Link
CN (1) CN101977329B (es)
MX (1) MX2007000369A (es)
RU (1) RU2402811C2 (es)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK2512136T3 (en) 2007-04-12 2016-08-22 Thomson Licensing Tiling in video coding and decoding
BRPI1007163A2 (pt) 2009-01-26 2018-09-25 Thomson Licensing compactação de quadro para codificação de vídeo
EP2529557A1 (en) 2010-01-29 2012-12-05 Thomson Licensing Block-based interleaving
JP6004375B2 (ja) * 2011-06-03 2016-10-05 サン パテント トラスト 画像符号化方法および画像復号化方法
RU2581553C2 (ru) 2011-06-28 2016-04-20 Самсунг Электроникс Ко., Лтд. Способ кодирования видео с использованием регулирований смещения согласно классификации пикселов и устройство для этого, способ и устройство декодирования видео для этого
WO2016087242A1 (en) * 2014-12-03 2016-06-09 Koninklijke Philips N.V. Device and method for signal compensation in medical x-ray images
EP3257042B1 (en) * 2015-02-13 2022-06-22 Telefonaktiebolaget LM Ericsson (publ) Pixel pre-processing and encoding
JP6320440B2 (ja) 2015-08-04 2018-05-09 ドルビー ラボラトリーズ ライセンシング コーポレイション ハイダイナミックレンジ信号のための信号再構成
RU171906U1 (ru) * 2017-01-23 2017-06-20 федеральное государственное бюджетное образовательное учреждение высшего образования "Ижевский государственный технический университет имени М.Т. Калашникова" Устройство для моделирования параметров композитных материалов
RU2697627C1 (ru) 2018-08-01 2019-08-15 Самсунг Электроникс Ко., Лтд. Способ корректировки освещенности объекта на изображении в последовательности изображений и вычислительное устройство пользователя, реализующее упомянутый способ

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526051A (en) * 1993-10-27 1996-06-11 Texas Instruments Incorporated Digital television system
US6370198B1 (en) * 1997-04-07 2002-04-09 Kinya Washino Wide-band multi-format audio/video production system with frame-rate conversion

Also Published As

Publication number Publication date
RU2007103160A (ru) 2008-08-10
CN101977329B (zh) 2012-10-03
RU2402811C2 (ru) 2010-10-27
CN101977329A (zh) 2011-02-16

Similar Documents

Publication Publication Date Title
US7317827B2 (en) Strategies for optimally generating pipeline processing code
AU2005269370B2 (en) Image processing using linear light values and other image processing improvements
MX2007000369A (es) Procesamiento de imagen utilizando valores ligeros y otras mejoras de procesamiento de imagen.
US7929754B2 (en) Strategies for processing image information using a color information data structure
US8570441B2 (en) One pass video processing and composition for high-definition video
US20050248590A1 (en) Method and system for scaling, filtering, scan conversion, panoramic scaling, YC adjustment, and color conversion in a display controller
US20020191701A1 (en) Correction system and method for enhancing digital video
US20090268086A1 (en) Method and system for scaling, filtering, scan conversion, panoramic scaling, yc adjustment, and color conversion in a display controller
US20140192207A1 (en) Method and apparatus to measure video characteristics locally or remotely
CN101252658A (zh) 在保持锐度不变的同时增强视频数据的对比度
CN101729759A (zh) 图像处理设备、图像处理方法和程序
EP2169616A2 (en) Video scaling techniques

Legal Events

Date Code Title Description
FG Grant or registration