Procesado de Señales Audiovisuales - Tema 4 PDF

Document Details

ChivalrousPlutonium8456

Uploaded by ChivalrousPlutonium8456

Universidad Politécnica de Madrid

Alberto Belmonte Hernández

Tags

procesamiento de señales procesamiento de imagen compresión de video señales audiovisuales

Summary

Este documento, titulado 'Tema 4_Fundamentos_Procesado_Imagen_Video_Compresión.pdf', abarca conceptos de procesamiento de señales, especialmente enfocados en la compresión de imágenes y video. Se describe la imagen como señal bidimensional y se revisan brevemente las señales unidimensionales y los sistemas lineales e invariantes en el tiempo (LTI). La información se centra en el tratamiento de imágenes, el muestreo, la cuantificación, y métodos de compresión para imágenes y videos. Se abordan la transformada de Fourier y sus aplicaciones.

Full Transcript

Procesado de señales audiovisuales Compresión de imagen y video Alberto Belmonte Hernández Temario 1.1 Tratamiento de la imagen como señal. 1.2 Compresión de imágenes. 1.3 Estimación de movimiento. 1.4 Compresión de video. ITU, DCI y HDR. Práctica 2: Análisis de compresión de i...

Procesado de señales audiovisuales Compresión de imagen y video Alberto Belmonte Hernández Temario 1.1 Tratamiento de la imagen como señal. 1.2 Compresión de imágenes. 1.3 Estimación de movimiento. 1.4 Compresión de video. ITU, DCI y HDR. Práctica 2: Análisis de compresión de imagen y video. 2 1.1 Tratamiento de la imagen como señal 3 Breve repaso de señales unidimensionales (1D) Cuando hablamos de imágenes generalmente nos referimos a imágenes digitales y, específicamente, a imágenes de mapa de bits. Una imagen digital es una representación numérica en 2D de una imagen de la realidad. La extensión espacial que puede ser capturada por el dispositivo de imágenes es limitada. La imagen original se muestrea para obtener un número limitado y discreto de valores. Esto está relacionado con la resolución de la imagen. La unidad básica de imagen, que generalmente corresponde a un valor muestreado, se conoce como píxel. El rango de valores que un píxel puede tomar se reduce a un conjunto discreto. Este procedimiento se conoce como cuantificación. La información en imágenes de mapa de bits se almacena en cada píxel. El valor de ese píxel puede corresponder a un valor de intensidad, o puede ser un índice a un mapa de colores, donde se almacenan los valores de intensidad. Si una imagen está codificada usando tres componentes de color (rojo, verde, azul, por ejemplo), un píxel almacena los índices para los tres componentes de color. Puede haber imágenes codificadas con más de tres componentes. 4 Breve repaso de señales unidimensionales (1D) En este capítulo consideraremos las imágenes como señales bidimensionales, por lo que podemos usar toda la teoría de procesamiento de señales sobre ellas. La extensión a imágenes en 3D o multidimensionales es directa. La imagen continua original se denotaría 𝑓𝑓(𝑥𝑥, 𝑦𝑦), donde 𝑥𝑥, 𝑦𝑦 ∈ ℝ son las coordenadas espaciales. La versión muestreada (discreta) de la imagen se define como 𝑓𝑓[𝑚𝑚, 𝑛𝑛], donde 𝑚𝑚, 𝑛𝑛 ∈ ℤ. Finalmente, la imagen digital es la versión cuantizada de la señal muestreada y se puede representar como 𝑓𝑓[𝑚𝑚, ̃ 𝑛𝑛]. Sin embargo, para simplificar, las imágenes digitales suelen representarse simplemente como 𝑓𝑓[𝑚𝑚, 𝑛𝑛], o incluso como 𝑓𝑓(𝑥𝑥, 𝑦𝑦) (en este caso x, 𝑦𝑦 ∈ ℤ). En ese caso, la diferencia entre la imagen continua y digital debe deducirse del contexto. Una señal puede verse como una función de una o más variables que lleva información sobre algún fenómeno físico y puede ser medida, almacenada y procesada. Las señales usualmente presentan un patrón de variación y es precisamente en ese patrón de variación donde se encuentra la información. Las señales se representan como una función de una o más variables. Por ejemplo, una señal temporal se representa como x(t), donde t ∈ R. Se pueden considerar muchas clases diferentes de señales, pero, según la utilidad en el procesamiento de imágenes, podemos considerar lo siguiente: 1. Continuas vs. discretas: según la naturaleza de la variable independiente. 2. Analógicas vs. digitales: una señal analógica es una señal continua que puede tomar cualquier valor. Una señal digital es una señal discreta que solo puede tomar un conjunto discreto de valores. 3. Determinísticas vs. aleatorias: en una señal determinística, todos los valores son conocidos. En una señal aleatoria hay cierta incertidumbre sobre los valores de la señal. 5 Breve repaso de señales unidimensionales (1D) Sistemas lineales e invariantes en el tiempo (LTI): Una clase especial de sistemas son aquellos que cumplen con dos características: linealidad y tiempo invariante. 1. Linealidad: la relación entre las señales de entrada y salida del sistema es un mapeo lineal. 2. Tiempo invariante: si la entrada se retrasa una cantidad de tiempo t0, la salida se retrasa la misma cantidad de tiempo. Los sistemas que cumplen ambas propiedades se llaman Sistemas Lineales y de Tiempo Invariante (LTI) y son la base de muchos procedimientos en el procesamiento de señales e imágenes. La respuesta al impulso caracteriza completamente a un sistema LTI, de modo que la salida para cualquier señal de entrada puede calcularse utilizando la operación de convolución: donde x(t) e y(t) son la entrada y salida del sistema. Es importante señalar que la respuesta al impulso caracteriza completamente el sistema: si h(t) es conocido, la respuesta de salida de cualquier señal de entrada x(t) siempre puede calcularse. Para un sistema discreto, se utiliza en su lugar la suma de convolución (o convolución discreta): La convolución es una operación que satisface las propiedades de asociatividad, conmutatividad y distributividad. 6 Breve repaso de señales unidimensionales (1D) Representación de señales en términos de componentes de frecuencia: En señales unidimensionales, muchas características interesantes no son visibles en el dominio temporal, pero pueden ser fácilmente analizadas utilizando representaciones alternativas. La más común y útil es la representación utilizando los componentes de frecuencia de las señales. Para una señal continua de energía, la representación de frecuencia está dada por la Transformada de Fourier (TF): La representación de una señal en el dominio de la frecuencia presenta ventajas muy interesantes, por ejemplo, el análisis de la señal en términos de anchos de banda y bandas de energía. Para un sistema LTI, hay un valor añadido: la convolución y(t) = x(t) * h(t) se calcula como una multiplicación en el dominio de Fourier: Y(ω) = X(ω)H(ω). La representación de frecuencia de una señal discreta se calcula a través de la Transformada de Fourier de Tiempo Discreto (DT-FT, por sus siglas en inglés), que se define como: Toma nota de que la DT-FT es una señal periódica continua con un periodo de 2π. Para tener una representación discreta de la señal discreta x[n], se utiliza en su lugar la Transformada de Fourier Discreta (DFT, por sus siglas en inglés). La DFT de una secuencia finita x[n], con n = 0,..., N - 1, es una señal discreta X[k], también finita y con el mismo número de muestras. Los valores de la DFT pueden verse como muestras de la DT-FT: 7 Breve repaso de señales unidimensionales (1D) Relación de las diferentes transformadas de Fourier para señales 1D: (a) TF de una señal continua. (b) TF Continua de una representación continua de una señal muestreada. (c) DT-FT, la FT de la señal discreta obtenida al muestrear la señal original x(t) con una tasa de muestreo Ts. Es una expansión periódica de la FT X(ω). (d) DFT, corresponde a muestras de la DT-FT X(ω). La DFT tiene algunas propiedades interesantes que deben tenerse en cuenta, especialmente cuando se trabaja con señales 2D (imágenes). Por ejemplo, el uso de la DFT asume una expansión periódica de la señal y su representación de Fourier: Esta propiedad tiene cierta influencia sobre los límites de la señal, que son solo un pequeño conjunto de puntos. Sin embargo, cuando cambiamos a 2D, influye en todo el borde de una imagen y puede tener algunos efectos en la implementación de los algoritmos. 8 Imágenes como señales bidimensionales (2D) Desde una perspectiva de procesamiento de señales, una imagen puede verse como una señal bidimensional que depende de dos componentes espaciales: ancho y alto. La imagen original ideal (que en realidad no existe) sería una señal 2D continua definida como f(x, y), donde x, y ∈ R y: En realidad, las imágenes con las que normalmente tratamos son versiones modificadas de la señal continua ideal: la imagen se muestrea, cuantifica y limita en espacio (la imagen está limitada por un borde). La versión discreta de la imagen es f[m, n], donde n, m ∈ Z y ̃ Finalmente, la imagen digital 𝑓𝑓[𝑚𝑚, 𝑛𝑛] es la versión cuantizada de la señal discreta. Las imágenes digitales y discretas se basan en una cuadrícula discreta como sistema de coordenadas, la figura (a) muestra un sistema de coordenadas general para una señal 2D f[m, n]. Este sistema puede traducirse directamente a un sistema de coordenadas de imagen, figura (b), donde el origen se establece en el centro de la imagen. Sin embargo, para evitar índices negativos, es útil establecer el origen en una de las esquinas de la imagen, figura (c). 9 Imágenes como señales bidimensionales (2D) Cuando llega una imagen, el sistema puede modificar la imagen de entrada en una imagen de salida o, alternativamente, el sistema puede reaccionar a la entrada produciendo un comportamiento específico. Bajo el concepto de sistema, incluiremos los diversos filtros de procesamiento de imágenes entre otros procesados. Matemáticamente, un sistema es entonces un mapeo T[ ] que opera en una imagen f(x, y) y produce una imagen de salida g(x, y), que se da por g(x, y) = T[f(x, y)]. Entre todas las posibles definiciones para T[ ], una clase especial de sistemas son aquellos que cumplen con dos características: linealidad e invariancia espacial. Estos conceptos se describen a continuación. 1. Linealidad: la relación entre las imágenes de entrada y salida es un mapeo lineal. 2. Invariancia espacial (desplazamiento): si la entrada se desplaza por una cantidad dada [x0, y0], la salida se desplaza por la misma cantidad: g(x - x0; y - y0) = T[f(x - x0; y - y0)]. Es equivalente a decir que la ubicación del origen del sistema de coordenadas es irrelevante. Aquellos sistemas que cumplen ambas propiedades se conocen como sistemas Lineales Espacialmente Invariantes (LSI) y están caracterizados por su respuesta al impulso unitario, h(x, y) = T[δ(x, y)] para sistemas continuos y h[m, n] = T[δ[m, n]] para sistemas discretos, donde δ(x, y) es la función delta de Dirac en 2D y δ[m, n] su contraparte discreta. Las implementaciones prácticas en la actualidad se realizan principalmente usando sistemas discretos (digitales). La salida de un sistema continuo a una imagen de entrada f(x, y) se da por la convolución con la respuesta al impulso del sistema pero desde ahora los representaremos como f[m, n] de manera discreta quedando: 10 Imágenes como señales bidimensionales (2D) Ejemplo de procesamiento de imágenes utilizando sistemas LSI. Se han considerado dos respuestas al impulso diferentes: (1) h1[m, n] corresponde a un filtro paso bajo de 9 × 9 y (2) h2[m, n] es un filtro paso alto. 11 Imágenes como señales bidimensionales (2D) Sistemas LCI: En situaciones prácticas, las imágenes no son infinitas, sino limitadas en espacio. Se sabe que las imágenes digitales tienen un número limitado de filas y columnas. La limitación de una señal discreta M × N es equivalente a multiplicar una imagen sin límites f[m, n] por una función rectangular r[m, n]. Si se utilizan sistemas LSI para procesar la señal fd[m, n], debemos tener en cuenta que fuera de los bordes de la imagen, el valor de la señal es 0. Como efecto de esta área de valor cero, los diferentes procedimientos pueden fallar cerca de los bordes. Además, en el procesamiento de imágenes, uno de los requisitos de los sistemas de procesamiento es que la salida tenga exactamente el mismo tamaño que la entrada. En un sistema LSI, si la entrada f[m, n] es una señal M1 × N1 y la respuesta al impulso es M2 × N2, la salida g[m, n] = f[m, n] * h[m, n] será una señal (M1 + M2 - 1) × (N1 + N2 - 1), que es mayor que el tamaño original. Si solo se tienen en cuenta los valores efectivos de la convolución (aquellos en los que no están involucrados píxeles del área de valores cero), el tamaño sería menor: (M1 - M2 + 1) × (N1 - N2 + 1). Para evitar estos problemas, también se puede asumir una extensión periódica de la imagen. Una expansión periódica de la señal discreta M × N, fd[m; n], se define como fp. 12 Imágenes como señales bidimensionales (2D) vertical edges 1 10 -1 10 10 -1 -1 0 -1 horizontal edges 3 0 1 2 7 4 -5 -4 0 8 1 0 -1 1 10 10 -1 10 -1 0 -1 -1 1 5 8 9 3 1 -10 -2 2 3 2 1 1 7 110 2 110 -1 1100 -1 5 00 -1 -1 1 -1 -1 3 ∗ 1 0 -1 = 0 -2 -4 -7 1 0 -1 1 10 -1 10 10 -1 0 -1 -1 0 1 3 1 7 8 -3 -2 -3 -16 4 2 1 6 2 8 2 4 5 2 3 9 ∗ = Representación en frecuencia de señales bidimensionales(2D) Una herramienta poderosa en el procesamiento de imágenes es usar representaciones alternativas de la señal que permitan una mejor representación de ciertas características de la imagen. Una de las transformaciones más utilizadas es la Transformada de Fourier, que es una representación de las distribuciones de frecuencias dentro de la imagen. Dado que tenemos una señal discreta emplearemos la Transformada de Fourier Discreta (2D FD) de la señal f[m, n] que quedaría como: Llamamos a esta transformación la Transformada de Fourier en Espacio Discreto (DS-FT). Cabe destacar que la DS-FT es una señal continua periódica, con un período de 2π en ambas direcciones de frecuencia. La alternativa computacional a la DS-FT es la DFT en 2D, donde la señal y su transformada son ambas discretas. En este caso para una señal finita de tamaño MxN obtenemos: 14 Representación en frecuencia de señales bidimensionales(2D) Transformada discreta del coseno: Uno de los problemas de la DFT es que la periodicidad que implica crea transiciones no naturales en las imágenes. Para obtener un mejor comportamiento en los bordes, se puede usar alternativamente la transformada discreta del coseno (DCT). La DCT de una imagen N × N, f[m, n], es equivalente a la DFT de una extensión de la imagen en una 2N × 2N, fe[m; n]: La DCT es una transformación lineal separable. Para una señal 2D se define como: 15 Representación en frecuencia de señales bidimensionales(2D) Expansión simétrica de una imagen f[m, n] implícitamente asumida por la DCT. Las discontinuidades en el borde de la imagen se reducen con respecto a la expansión periódica. Expansión simétrica Expansión periódica 16 Imágenes como suma de señales En esencia, un gráfico de coordenadas es una representación visual de la relación entre números o variables. Pero esto también funciona al revés: las fórmulas son una representación matemática de las imágenes que producen cuando se grafican. Esta perspectiva ofrece de repente un montón de nuevas posibilidades, ya que ahora se pueden producir imágenes solo con números, símbolos y software de gráficos. Esto nos lleva a un simple ejemplo de generación de una imagen con un gráfico: la curva de batman. Sirve como un ejemplo atemporal de cómo combinar funciones matemáticas puede crear una imagen estéticamente reconocible e incluso atractiva. El creador original del gráfico fue un profesor de secundaria, J. Matthew Register, quien buscaba inspirar a sus estudiantes acerca de las matemáticas. http://m.wolframalpha.com/input/?i=simba+curve&x=0&y=0 17 Imágenes como suma de señales La Transformada de Fourier se utiliza para escribir cualquier función como una suma de funciones seno y coseno. Es una extensión de la Serie de Fourier, un concepto de cálculo que explica cómo cualquier función periódica puede ser escrita como una suma de senos y cosenos. De hecho, muchas funciones requieren un número infinito de senos y cosenos. Las Series de Fourier aproximan una función, y cada "paso" en el proceso dónde, cada función seno o coseno adicional, acerca más la aproximación a la función que se está replicando. Si se añade otro seno o coseno, se logra una "imagen" más realista. Por eso la serie puede ser infinita. La aproximación mejora cada vez más sin llegar a ser nunca del todo precisa. Todo el proceso se parece a algo así: 18 Imágenes como suma de señales La Transformada de Fourier también se usa en el procesamiento de imágenes basadas en píxeles. Para entender cómo es posible, uno debe volver a lo básico de lo que es una función periódica. La forma genérica se lee como A sin(bx)+c, donde cada coeficiente (A, b y c) describe una característica diferente del gráfico. En este formato, A es la amplitud, b indica el período y c es el desplazamiento de fase. Usando información análoga, los píxeles en una imagen pueden ser "codificados" en una función sinusoidal. Por ejemplo, la "intensidad" de un píxel corresponde a la amplitud (A) de una función seno, mientras que la "ubicación" del píxel es el desplazamiento de fase (c). De esta manera, la Transformada de Fourier crea una representación única de toda la imagen. Hay solo una Transformada de Fourier para cada imagen y, a la inversa, solo una imagen para cada Transformada de Fourier. En esencia, cada imagen digital jamás creada corresponde a una cadena de sinusoides, esta herramienta matemática es tan rica y variada como la fotografía y el arte digital. Las ondas sinusoidales bidimensionales se escriben como z = A sin(hx+ky) + c donde x e y proporcionan las coordenadas para puntos en la "hoja", z es la altura o intensidad de la onda en ese punto, A proporciona la amplitud (la altura máxima) de la onda, y h y k proporcionan el número de veces que la onda se repite en las direcciones x e y respectivamente (son las frecuencias x e y). Ondas bidimensionales sin(x), sin(2y) and sin(x+y) 19 Imágenes como suma de señales Cada píxel en la transformada de Fourier tiene una coordenada (h,k) que representa la contribución de la onda sinusoidal con frecuencia x h y frecuencia y k en la transformada de Fourier. El punto central representa la onda (0,0), un plano plano sin ondulaciones, y su intensidad (su brillo en color en la escala de grises) es el valor promedio de los píxeles en la imagen. Los puntos a la izquierda y a la derecha del centro representan las ondas sinusoidales que varían a lo largo del eje x (es decir, k=0). El brillo de estos puntos representa la intensidad de la onda sinusoidal con esa frecuencia en la transformada de Fourier (la intensidad es la amplitud de la onda sinusoidal, al cuadrado). Aquellos verticalmente por encima y por debajo del punto central representan esas ondas sinusoidales que varían en y, pero permanecen constantes en x (es decir, h=0). Y los otros puntos en la transformada de Fourier representan las contribuciones de las ondas diagonales. Arriba: La onda sin(20x)+sin(10y) y su transformada de Fourier, mostrando dos pares de píxeles brillantes (en las coordenadas (20,0) y (0,10) y sus reflejos) representando las contribuciones de estas dos ondas. Abajo: La onda sin(100x+50y) y su transformada de Fourier, mostrando solo el par de píxeles brillantes en las La onda sin(x) representada como una coordenadas (100,50) y su reflejo. imagen en escala de grises y la transformada de Fourier de esa imagen. 20 Imágenes como suma de señales Esto es muy interesante. Con la transformada de Fourier, podemos cambiar de calcular una convolución a una multiplicación. En el caso de la Transformada de Fourier Discreta en 2D, esto nos ayuda a reducir significativamente la complejidad temporal. 21 1.2 Compresión de imágenes 22 ¿Compresión con pérdidas o sin pérdidas? Cuando se trata de cualquier compresión de imágenes digitales, hay varios formatos diferentes entre los que elegir. A veces estos tendrán otros nombres dependiendo de muchos factores. Sin embargo, a nivel básico, encontrarás dos tipos: Compresión con pérdida: El objetivo aquí es proporcionar el tamaño de archivo más pequeño posible para una imagen. Como tal, la calidad de la imagen a menudo no es una prioridad. Compresión sin pérdida: Aún encontrarás una reducción sustancial en el tamaño del archivo con este formato de compresión, pero la imagen no sufrirá de artefactos y otros problemas. En la mayoría de los casos, tu decisión sobre qué formato usar se reducirá a tu objetivo final: ¿Quieres archivos minúsculos o tu enfoque está en preservar la calidad? La compresión con pérdida eliminará permanentemente los datos que considere innecesarios de la imagen. Utiliza muchas técnicas diferentes para lograr esto, lo que resulta en tamaños de archivo mucho más pequeños. La compresión sin pérdida también elimina datos, pero puede restaurar el original si es necesario. El objetivo es mantener la calidad alta y, al mismo tiempo, reducir el tamaño del archivo. 23 Compresión sin pérdidas La compresión de imagen sin pérdida no reducirá la calidad de la imagen. Esto se debe a que la compresión sin pérdida solo elimina datos adicionales y no esenciales agregados automáticamente por el dispositivo utilizado para tomar la foto. La desventaja es que no verás una reducción significativa en el tamaño del archivo de la imagen. Como resultado, probablemente no te ahorrará mucho espacio de almacenamiento. Los algoritmos estándar de compresión sin pérdida incluyen la codificación de Huffman, la codificación aritmética y la codificación de longitud de ejecución (run length encoding). La técnica de compresión sin pérdida es la mejor para imágenes con mucho texto e imágenes con un fondo transparente. Los tipos de formato que pueden beneficiarse de la compresión de imagen sin pérdida son.RAW,.BMP,.GIF y.PNG. 24 Compresión sin pérdidas - Codificación de Huffman La codificación Huffman es uno de los algoritmos de compresión sin pérdida, cuyo principal objetivo es minimizar la longitud total del código del dato asignando códigos de longitudes variables a cada uno de sus fragmentos de datos basados en sus frecuencias en el dato. Los fragmentos de alta frecuencia se asignan con un código más corto y los de baja frecuencia con un código relativamente más largo, logrando un factor de compresión ≥ 1. En la Teoría de la Información, el teorema de codificación de fuente de Shannon expresa que la tasa de código (longitud de código promedio para símbolos) de una variable aleatoria distribuida de forma independiente e idéntica no puede ser menor que la entropía de Shannon. Se ha demostrado que el Algoritmo de Codificación Huffman proporciona optimalidad siguiendo el teorema de codificación de fuente de Shannon, es decir, después de codificar, proporciona la tasa de bits más baja posible. Los siguientes son los dos pasos en la Codificación Huffman: 1. Construcción del Árbol Huffman 2. Asignación de códigos a los Nodos Hoja Veamos con un ejemplo muy sencillo el funcionamiento. Este ejemplo es extrapolable a una imagen dónde codificaríamos la intensidad de cada pixel (0-255) correspondiente a 8 bits y el tamaño de la imagen para saber la colocación de la información. 25 Compresión sin pérdidas - Codificación de Huffman Supongamos que tenemos la siguiente cadena de ADN: “AGGACTAAAAACG”, dónde sólo tenemos 4 posibilidades (A, G, C, T) y sabemos que cada letra ASCII en un ordenador se codificaría con 8 bits. La distribución de cada letra sería la siguiente y el código de Huffman final se vería así: Entonces con esto podríamos representar otras cadenas: Lo importantes es la reducción conseguida. Nuestra cadena original ocuparía (7+3+2+1)*8 = 104 bits. Pero con esta reducción nos queda 7*(1 bit) + 3*(2 bit) + 2*(3 bit) + 1*(3 bit) = 22 bits. 26 Compresión sin pérdidas - Codificación de Huffman Repetimos este proceso hasta completar todos los nodos. Ordenamos por probabilidad de aparición todos los posibles valores. Comenzamos a combinar los menos probables. Una vez hecho esto asignamos 0 y 1 a los caminos y creamos la codificación para cada elemento. 27 Compresión sin pérdidas - Codificación Aritmética La codificación aritmética (AE) es un algoritmo sin pérdida que utiliza un bajo número de bits para comprimir datos. Es un algoritmo basado en entropía, propuesto por primera vez en un artículo de 1987 (Witten, Ian H., Radford M. Neal, y John G. Cleary. "Codificación aritmética para la compresión de datos." Comunicaciones del ACM 30.6 (1987): 520-540). Una razón por la cual los algoritmos AE reducen el número de bits es que AE codifica el mensaje entero utilizando un único número entre 0.0 y 1.0. Cada símbolo en el mensaje toma un subintervalo en el intervalo 0-1, correspondiente a su probabilidad. Para calcular la probabilidad de cada símbolo, se debe proporcionar una tabla de frecuencias como entrada al algoritmo. Esta tabla asigna cada elemento a su frecuencia. Cuanto más frecuente sea el símbolo, menor número de bits se le asigna. Como resultado, el número total de bits que representan el mensaje entero se reduce. Esto se compara con el uso de un número fijo de bits para todos los símbolos en el mensaje, como en la codificación Huffman. Veamos con un ejemplo como aplicar esta codificación. 28 Compresión sin pérdidas - Codificación Aritmética Para codificar (comprimir) un mensaje usando AE, se necesitan estas entradas: El mensaje que deseas codificar. La tabla de frecuencias de todos los posibles símbolos en el mensaje. La tabla de frecuencias generalmente se calcula analizando diferentes mensajes y concluyendo por el número de veces que se repite cada símbolo. Por ejemplo: supongamos que los mensajes a codificar consisten en solo 3 símbolos a, b y c. Al analizar algunos mensajes anteriores (por ejemplo, babb, cbab y bb), obtenemos las frecuencias de los 3 símbolos (si tuviéramos una imagen podríamos hacerlo con el número de apariciones de cada intensidad): a=2, b=7, c=1 Utilizando la tabla de frecuencias, podemos calcular la probabilidad de ocurrencia de cada símbolo. La probabilidad se calcula de la siguiente manera: Frecuencia de un símbolo / Suma de las frecuencias de todos los símbolos Basándonos en la tabla de frecuencias, aquí están las probabilidades de nuestros 3 símbolos: p(a) = 2/10 = 0.2, p(b) = 7/10 = 0.7, p(c) = 1/10 = 0.1 Dado el mensaje y la tabla de probabilidades, AE puede comenzar el proceso de codificación. 29 Compresión sin pérdidas - Codificación Aritmética La codificación en AE funciona representando las probabilidades acumuladas de todos los símbolos en una línea que varía de 0.0 a 1.0. En esa línea, cada símbolo utiliza un sub-rango. Dado cualquier símbolo C, comienza desde el valor S y termina en el valor calculado usando la siguiente ecuación: S + (P(C)) * R S: La suma acumulada de todas las probabilidades anteriores. P(C): La probabilidad del símbolo C. R: El rango de la línea, que se calcula restando el inicio del final de la línea. Al principio, la línea comienza en 0.0 y termina en 1.0, por lo que R = 1.0. Calculemos los valores de inicio y final de los 3 símbolos a, b y c. Para el primer símbolo, a, va desde 0.0 hasta 0.0 + (0.2) * 1.0 = 0.2. El valor inicial es 0.0 porque es el primer símbolo. El rango es (0.0:0.2). Para el segundo símbolo, b, comienza desde 0.2 hasta 0.2 + (0.7) * 1.0 = 0.9. El rango es (0.2:0.9). El tercer símbolo, c, comienza desde 0.9 hasta 0.9 + (0.1) * 1.0 = 1.0. El rango es (0.9:1.0). Dado los rangos de todos los símbolos, es bueno representarlos gráficamente, como en esta figura: 30 Compresión sin pérdidas - Codificación Aritmética AE funciona restringiendo el intervalo de la línea, que comienza desde 0.0 hasta 1.0, a través de algunas etapas iguales al número de símbolos en el mensaje. En este ejemplo supongamos un mensaje “abc”, hay solo 3 símbolos en el mensaje, por lo que hay solo 3 etapas. En cada etapa, el intervalo de la línea se restringe de acuerdo con el sub-intervalo del símbolo actual. Después de procesar todos los símbolos, AE devuelve un único valor doble que codifica todo el mensaje. El último intervalo alcanzado por AE comienza desde 0.166 hasta 0.18. Dentro de este rango, cualquier valor se puede usar para codificar todo el mensaje. Por ejemplo, el valor final puede ser es el promedio del intervalo que es: (0.166+0.18)/2=0.173 Entonces, según la tabla de frecuencia utilizada, el mensaje abc se codifica como el valor 0.173. Cuando la tabla de frecuencia cambia, entonces el valor que codifica el mensaje también cambia. Esto marca el final del proceso de codificación. Ahora discutamos el proceso de decodificación. 31 Compresión sin pérdidas - Codificación Aritmética Las entradas para la decodificación son: El valor único que codifica el mensaje. La tabla de frecuencia. Debe ser idéntica a la utilizada para la codificación. El número de símbolos en el mensaje original. En nuestro ejemplo, el valor que codifica el mensaje es 0.173. La tabla de frecuencia es [a=2, b=7, c=1]. El número de símbolos en el mensaje es 3. El primer paso de la decodificación es calcular las probabilidades de los símbolos a partir de su frecuencia, de manera similar a lo que hicimos anteriormente. La tabla de probabilidad es [p(a)=0.2, p(b)=0.7, p(c)=0.1]. Basado en la tabla de probabilidad, el proceso de decodificación funciona de manera similar a la codificación construyendo los mismos intervalos. Primero, se crea una línea que comienza en 0.0 y termina en 1.0 de acuerdo con la siguiente figura. Los intervalos de los 3 símbolos se calculan utilizando la misma ecuación utilizada para codificar el mensaje. S+(P(C))*R El valor 0.173 cae dentro del primer intervalo (0.0:0.2). Por lo tanto, el primer símbolo en el mensaje codificado es a. Como resultado, el intervalo de la línea se restringe al intervalo que comienza en 0.0 y termina en 0.2. El valor 0.173 cae dentro del segundo intervalo (0.04:0.18). Por lo tanto, el segundo símbolo en el mensaje codificado es b. En la siguiente figura, el intervalo se restringirá al intervalo de 0.04 a 0.18. El valor 0.173 cae dentro del tercer intervalo (0.166:0.18). Es por eso que el siguiente símbolo en el mensaje es c. 32 Compresión sin pérdidas - LZW El algoritmo LZW es una técnica de compresión muy común. No tiene pérdidas, lo que significa que no se pierden datos al comprimir. El algoritmo es simple de implementar y tiene el potencial de un rendimiento muy alto en las implementaciones de hardware. Es el algoritmo de la utilidad de compresión de archivos Unix ampliamente utilizada compress y se utiliza en el formato de imagen GIF. La Idea se basa en patrones recurrentes para ahorrar espacio de datos. LZW es la técnica más importante para la compresión de datos de propósito general debido a su simplicidad y versatilidad. Es la base de muchas utilidades para PC que pretenden “duplicar la capacidad de tu disco duro”. La compresión LZW funciona leyendo una secuencia de símbolos, agrupando los símbolos en cadenas y convirtiendo las cadenas en códigos. Debido a que los códigos ocupan menos espacio que las cadenas que reemplazan, obtenemos compresión. Las características de LZW incluyen: La compresión LZW utiliza una tabla de códigos, con 4096 como opción común para el número de entradas de la tabla. Los códigos 0-255 en la tabla de códigos siempre se asignan para representar bytes individuales del archivo de entrada. Cuando comienza la codificación, la tabla de códigos contiene solo las primeras 256 entradas, y el resto de la tabla está en blanco. La compresión se logra usando los códigos 256 a 4095 para representar secuencias de bytes. A medida que continúa la codificación, LZW identifica secuencias repetidas en los datos y las agrega a la tabla de códigos. La decodificación se logra tomando cada código del archivo comprimido y traduciéndolo a través de la tabla de códigos para encontrar qué carácter o caracteres representa. Ejemplo: código ASCII. Por lo general, cada carácter se almacena con 8 bits binarios, lo que permite hasta 256 símbolos únicos para los datos. Este algoritmo intenta ampliar la biblioteca de 9 a 12 bits por carácter. Los nuevos símbolos únicos se componen de combinaciones de símbolos que ocurrieron previamente en la cadena. No siempre se comprime bien, especialmente con cadenas cortas y diversas. Pero es bueno para comprimir datos redundantes y no tiene que guardar el nuevo diccionario con los datos: este método puede comprimir y descomprimir datos. 33 Compresión sin pérdidas - LZW Veamos un ejemplo para comprimir la siguiente secuencia: BABAABAAA 34 Compresión sin pérdidas - LZW El descompresor LZW crea la misma tabla de cadenas durante la descompresión. Comienza con las primeras 256 entradas de la tabla inicializadas en caracteres individuales. La tabla de cadenas se actualiza para cada carácter del flujo de entrada, excepto el primero. La decodificación se logra leyendo códigos y traduciéndolos a través de la tabla de códigos que se está construyendo. 35 Compresión sin pérdidas - LZW En el ejemplo, 72 bits se representan con 72 bits de datos. Después de construir una tabla de cadenas razonable, la compresión mejora drásticamente. Este algoritmo comprime muy bien secuencias repetitivas de datos. Dado que las palabras de código son de 12 bits, cualquier carácter codificado único ampliará el tamaño de los datos en lugar de reducirlo. Ventajas de LZW sobre Huffman y AE: LZW no requiere información previa sobre el flujo de datos de entrada. LZW puede comprimir el flujo de entrada en un solo paso. Otra ventaja de LZW es su simplicidad, lo que permite una ejecución rápida. Existen gran cantidad de modificaciones de este algoritmo que proporcionan diferentes ventajas como velocidad o mayor capacidad de compresión. Los demás modifican pasos en la construcción del diccionario. Abraham Lempel y Jacob Ziv publicaron dos modificaciones: LZ77 en 1977 y LZ78 en 1978. Uno de los más famosos es LZSS (usado en RAR), LZMA (usado en 7z), y Deflate (usado en ZIP). 36 Compresión sin pérdidas – Otros algoritmos Existen otra gran cantidad de algoritmos, pero queda fuera de esta asignatura su presentación detallada: Run-Length Encoding (RLE) (Codificación por longitud de secuencias): Especialmente útil para imágenes con áreas de color uniforme. Consiste en codificar una secuencia de símbolos repetidos por un solo dato y el número de veces que se repite. Deflate: Combina el algoritmo LZ77 y Huffman Coding. Es utilizado en el formato PNG y en el programa de compresión ZIP. JPEG 2000 (Modo sin pérdida): Aunque JPEG 2000 es conocido por su compresión con pérdida, también tiene un modo sin pérdida. Utiliza la transformada de ondícula en lugar de la transformada discreta de coseno (DCT) utilizada en el JPEG estándar. Predictive Coding (Codificación predictiva): Esta técnica implica predecir el valor actual de un pixel basado en los valores de los píxeles vecinos y luego codificar el error entre el valor predicho y el valor real. Burrows-Wheeler Transform (BWT): Reordena los caracteres del mensaje original de manera que las secuencias repetidas de caracteres se agrupan juntas. Se utiliza comúnmente junto con otras técnicas como RLE y Codificación de Huffman. Bit-Plane Coding: Se descompone una imagen en varios planos binarios y se codifica cada plano de forma individual. Es especialmente útil para imágenes binarias o imágenes con alta profundidad de bits. Lossless JPEG: Aunque el JPEG estándar es conocido por su compresión con pérdida, también existe una versión sin pérdida que utiliza técnicas predictivas. 37 Compresión con pérdidas La compresión de imagen con pérdida es un proceso que elimina parte de los datos de tu archivo de imagen, reduciendo el tamaño total del archivo. Este proceso es irreversible, lo que significa que la información del archivo se eliminará permanentemente. Algunos de los algoritmos utilizados para la compresión con pérdida se basan en la representación frecuencial de la imagen e incluyen la transformada de Fourier, DCT, ondícula discreta, la compresión fractal y la encriptación transformacional. Estos algoritmos de compresión con pérdida pueden reducir considerablemente el tamaño del archivo, pero generalmente conlleva un compromiso: la calidad de la imagen también se degradará. Es por eso que es mejor tener un archivo de respaldo antes de hacer cualquier cambio. El formato.JPEG es un excelente ejemplo de compresión con pérdida. Los archivos en formato.JPEG son adecuados para imágenes y fotografías sin transparencia. Son ideales para un sitio web que necesita tiempos de carga más rápidos, ya que puedes ajustar las tasas de compresión manteniendo el equilibrio adecuado. 38 Compresión con pérdidas - Cuantización escalar y vectorial Se puede demostrar que el cuantizador óptimo es el uniforme, pero queda fuera del alcance de este curso. Esta técnica es muy simple de aplicar pues cuantizamos los valores de la imagen (0-255) en rangos fijos. Cuantos menos rangos más información perdemos. 39 Compresión con pérdidas - Cuantización escalar y vectorial La Cuantización Vectorial es una técnica de compresión de datos con pérdida. Permite modelar la función de densidad de probabilidad mediante la distribución de los vectores prototipo. Hay algunas modificaciones de datos que hacen que la compresión sea con pérdida. La Cuantización Vectorial funciona dividiendo un gran conjunto de puntos (vectores) en grupos que tienen aproximadamente la misma cantidad de puntos más cercanos a ellos. Cada grupo es representado por su punto centroide, como en el algoritmo k-means y algunos otros algoritmos de agrupación. Imagen original vs imagen con cuantización vectorial bloques de 16x16 40 Compresión con pérdidas - Submuestreo El ojo humano es más sensible a la luminancia que al color en los datos visuales. Esta comprensión es la base de la idea de que podemos reducir la resolución del componente de color sin comprometer la calidad visual percibida de la imagen. Dado que queremos reducir la resolución del componente de color en la imagen, primero tenemos que separar la parte de color de la parte de luminancia de la imagen. Esto se puede lograr transformando la imagen del espacio de color RGB al espacio de color YCbCr. En el espacio de color YCbCr, el componente Y contiene la parte de luminancia, mientras que los componentes Cb y Cr contienen la parte de crominancia de la imagen. Una vez que transformamos la imagen a este formato, podremos reducir la resolución de la parte de color de la imagen. Una imagen se puede convertir de RGB al espacio de color YCbCr con la ayuda del siguiente conjunto de ecuaciones: Si queremos convertir de vuelta al espacio de color RGB, podemos hacerlo utilizando el siguiente conjunto de ecuaciones: 41 Compresión con pérdidas - Submuestreo El término submuestreo significa considerar un número reducido de muestras de las muestras disponibles para la misma cantidad de espacio. Podemos submuestrear Cb y Cr manteniendo solo una de cada cuatro muestras de cada uno con las correspondientes cuatro muestras de Y. De esta manera, podemos representar cuatro píxeles usando seis valores en lugar de doce valores. Esta técnica de submuestreo también se conoce como 4:2:0. Puede haber diferentes métodos para obtener un valor representativo de cada Cb y Cr en lugar de cuatro valores para cada uno. El valor de la muestra representativa puede ser solo uno de los cuatro valores de las muestras existentes, o puede ser el promedio de estos. Utilizando el submuestreo de croma 4:2:0, podemos ahorrar la mitad del espacio necesario para almacenar o transmitir una imagen. En el caso de 4:2:2, la relación de compresión es 1.5, y el espacio ahorrado es 1/3. 42 Compresión con pérdidas – PCM y DPCM La compresión de imagen con pérdida utilizando PCM (Modulación por Código de Pulso) y DPCM (Modulación por Código de Pulso Diferencial) implica reducir el tamaño de las imágenes digitales descartando información menos significativa, a menudo con poca o ninguna pérdida perceptible en la calidad de la imagen. Las tecnologías de compresión con pérdida, como DPCM que es un derivado de PCM, utilizan aproximaciones inexactas para representar el contenido, reduciendo significativamente el tamaño de los archivos antes de que cualquier degradación se haga notable para el usuario final. PCM funciona muestreando la señal imagen original y luego cuantificando los valores de las muestras. DPCM aprovecha el hecho de que muchas señales de imagen están altamente correlacionadas. En lugar de codificar los valores absolutos de las muestras, DPCM codifica la diferencia entre una muestra y su predicción, reduciendo la tasa de bits. 43 Compresión con pérdidas – Fractal Encoding La compresión fractal es un método de compresión con pérdida para imágenes digitales, basado en fractales. El método es más adecuado para texturas e imágenes naturales, basándose en el hecho de que partes de una imagen a menudo se parecen a otras partes de la misma imagen. Los algoritmos fractales convierten estas partes en datos matemáticos llamados "códigos fractales", que se utilizan para recrear la imagen codificada. 44 Compresión con pérdidas - JPEG La compresión JPEG (Joint Photographic Experts Group) es un método comúnmente utilizado de compresión con pérdida para imágenes digitales, particularmente aquellas producidas por fotografía digital. El grado de compresión se puede ajustar, permitiendo un equilibrio seleccionable entre el tamaño de almacenamiento y la calidad de la imagen. JPEG logra típicamente una compresión de 10:1 con poca pérdida perceptible en la calidad de la imagen. La compresión JPEG utiliza un algoritmo complejo que incluye convertir la imagen a un espacio de color que separa el brillo de la información de color, submuestrear la información de color (ya que la visión humana es menos sensible a los detalles de color), aplicar una transformada de coseno discreta (DCT) para descomponer la imagen en componentes de frecuencia, cuantificar los componentes de frecuencia (donde ocurre la compresión con pérdida) y, finalmente, codificar los valores cuantificados utilizando un algoritmo sin pérdida. El proceso está diseñado para aprovechar las limitaciones conocidas del ojo humano, notablemente el hecho de que los pequeños detalles de color no se perciben tan bien como los pequeños detalles de luz y oscuridad. 45 Compresión con pérdidas - JPEG Paso 1: Transformación de Espacio de Color y Submuestreo Los ojos humanos son más sensibles al brillo que al color. Por esta razón, JPEG asigna más espacio para la información de brillo que para la información de color. Pero para hacer esto, primero tenemos que separar estos dos componentes, conocidos como luminancia y crominancia. JPEG utiliza el espacio de color YCbCr. Consiste en tres componentes: luma (Y), croma de diferencia azul (Cb) y croma de diferencia roja (Cr). El componente luma representa el brillo mientras que los otros dos componentes (Cb y Cr) representan la información de color. Después de transformar los valores RGB en valores YCbCr, Cb y Cr se submuestrean por un factor de 2 (o 4). Eso significa que cada 4 píxeles (o 16 píxeles) se promedian en un píxel. Este submuestreo es casi imperceptible para el ojo humano. Esto resulta en bandas de color que tienen solo el 25% (o el 6.25%) del tamaño de las originales. Dado que las bandas de color constituyen dos tercios de los datos brutos originales (datos YCbCr), estaremos reduciendo el tamaño de la imagen en un 50% (o un 62.5%). 46 Compresión con pérdidas - JPEG Paso 2: Transformada Discreta de Coseno (DCT) JPEG también comprime la información de brillo descartando pequeños detalles que son casi imperceptibles para el ojo humano. Esto se hace mediante la Transformada Discreta de Coseno. EN JPEG se seleccionan bloques de 8x8. Para aproximar un cuadrado de 8×8 píxeles (64 píxeles), utilizamos estas 64 funciones base de la imagen a la izquierda. Un bloque de 8×8 píxeles se representa como una suma ponderada de estas funciones base, lo que requiere el uso de 64 coeficientes, generalmente simplificados como una matriz de 8×8. El coeficiente más superior izquierdo se llama coeficiente DC, mientras que los otros son coeficientes AC. 47 Compresión con pérdidas - JPEG Paso 3 – Cuantificación Ahora que hemos separado estos valores en diferentes niveles de detalle, necesitamos "descartar" algunos de estos detalles. Aquí es donde entra en juego la cuantificación. La cuantificación reduce la cantidad de bits necesarios para almacenar un número. En otras palabras, reduce la precisión del número. La base detrás de esto es dividir nuestro número por un cuantum y luego redondear al entero más cercano. Para recuperar el número original, simplemente multiplicamos por el cuantum. En JPEG, cada valor DCT tiene su propio cuantum, esto significa que necesitamos una matriz de 8×8 para representar todos los valores. La matriz de cuantificación es la misma para toda la imagen y no es única para cada bloque. La idea aquí es usar grandes cuantificaciones para las altas frecuencias (alto detalle, o parte inferior derecha de la matriz). La compresión JPEG hace esto tanto para los canales de luminancia como de crominancia. Al cambiar la matriz de cuantificación, podemos crear diferentes niveles de compresión. Bloque DCT 8x8 Matriz de cuantificación Bloque cuantificado Matriz recuperada (decuantificada) Diferencias (error) 48 Compresión con pérdidas - JPEG Paso 4 – Zigzag Scan Después de la cuantificación, hay una gran posibilidad de que la mayoría de los coeficientes de alta frecuencia (parte inferior derecha de la matriz DCT) sean cero. Si ordenamos los coeficientes de las frecuencias más bajas a las más altas, obtendremos, con gran probabilidad, muchos ceros consecutivos. En lugar de almacenar, por ejemplo, “0 0 0 0 0 0 0 0”, podemos almacenar 8×"0". Entonces, ¿cómo podemos ordenar los coeficientes de baja a alta frecuencia? Hacemos esto utilizando un escaneo en zigzag. Después de esto obtenemos un vector de números. Compresión con pérdidas - JPEG Paso 5 – Codificación Run Length (RLE) de los componentes AC La codificación por longitud de ejecución agrupa valores consecutivos juntos para ahorrar espacio. En lugar de almacenar un valor que se repite n veces, almacenamos (n, valor). Paso 6 – Differential Pulse Code Modulation (DPCM) de los componentes DC El coeficiente DC suele ser grande (en relación con los componentes AC) y varía de bloque a bloque, pero no mucho. En lugar de almacenar componentes DC individuales para cada bloque, almacenamos la diferencia entre el bloque actual y el anterior. Dado que la variación no es tan grande, almacenaremos un número menor y así utilizaremos menos espacio. Paso 7 - Codificación de Entropía La base de la codificación de entropía es utilizar menos bits para almacenar "símbolos" que son comunes en nuestros datos y usar más bits para "símbolos" menos comunes. Por ello se utilizan algoritmos de codificación sin pérdidas como Huffman. Compresión con pérdidas - JPEG 1.3 Estimación de movimiento 52 ¿Para qué sirve la estimación de movimiento? La estimación de movimiento se utiliza en el procesamiento de video y las técnicas de compresión para reducir la redundancia temporal entre cuadros consecutivos. Por ejemplo, en lugar de almacenar cada cuadro de un video por completo, la estimación de movimiento permite almacenar solo las diferencias de movimiento de un objeto o escena de un cuadro a otro. Esto se traduce en una reducción significativa del tamaño del archivo y es crucial para formatos de compresión como MPEG y para la transmisión eficiente de video. La estimación de movimiento busca patrones que se mueven de un lugar a otro en imágenes consecutivas y utiliza esa información para predecir y codificar cuadros futuros a partir de cuadros anteriores. 53 Estimación de movimiento – Correlación de fase La correlación de fase es un enfoque para estimar el desplazamiento relativo de traslación entre dos imágenes similares (correlación de imagen digital) u otros conjuntos de datos. Se utiliza comúnmente en el registro de imágenes y se basa en una representación en el dominio de la frecuencia de los datos, generalmente calculada mediante transformadas rápidas de Fourier. El término se aplica en particular a un subconjunto de técnicas de correlación cruzada que aíslan la información de fase de la representación en el espacio de Fourier del correlograma cruzado. La siguiente imagen demuestra el uso de la correlación de fase para determinar el movimiento relativo de traslación entre dos imágenes corrompidas por ruido gaussiano independiente. La imagen se trasladó (30,33) píxeles. En consecuencia, se puede ver claramente un pico en la representación de correlación de fase aproximadamente en (30,33). 54 Estimación de movimiento – Correlación de fase Dadas dos imágenes de entrada 𝑔𝑔𝑎𝑎 y 𝑔𝑔𝑏𝑏 : Aplica una función de ventana (por ejemplo, una ventana de Hamming) en ambas imágenes para reducir los efectos de borde (esto puede ser opcional dependiendo de las características de la imagen). Luego, calcula la transformada de Fourier discreta 2D de ambas imágenes. Calcula el espectro de potencia cruzado tomando el conjugado complejo del segundo resultado, multiplicando las transformadas de Fourier elemento a elemento y normalizando este producto elemento a elemento. Obtén la correlación cruzada normalizada aplicando la transformada de Fourier inversa. Determina la ubicación del pico en r. El método se basa en el teorema de desplazamiento de Fourier. Supongamos que las dos imágenes 𝑔𝑔𝑎𝑎 y 𝑔𝑔𝑏𝑏 son versiones con desplazamiento circular una de la otra: (Dónde M y N son las dimensiones de la imagen) 55 Estimación de movimiento – Correlación de fase Entonces, las transformadas de Fourier discretas de las imágenes estarán desplazadas relativamente en fase: Se puede entonces calcular el espectro de potencia cruzado normalizado para eliminar la diferencia de fase: Ya que la magnitud de una exponencial imaginaria siempre es uno, y la fase de 𝐺𝐺𝐴𝐴 𝐺𝐺𝐴𝐴∗ siempre es cero. La transformada de Fourier inversa de una exponencial compleja es un delta de Kronecker, es decir, un pico único: Ventajas A diferencia de muchos algoritmos del dominio espacial, el método de correlación de fase es resistente al ruido, las oclusiones y otros defectos típicos de imágenes médicas o satelitales. El método se puede extender para determinar diferencias de rotación y escala entre dos imágenes convirtiendo primero las imágenes a coordenadas logarítmico-polares. Debido a las propiedades de la transformada de Fourier, los parámetros de rotación y escala se pueden determinar de manera invariante a la traslación. Limitaciones En la práctica, es más probable que 𝑔𝑔𝑏𝑏 sea un desplazamiento lineal simple de 𝑔𝑔𝑎𝑎 , en lugar de un desplazamiento circular como requiere la explicación anterior. En tales casos, r no será una función delta simple, lo que reducirá el rendimiento del método. 56 Estimación de movimiento – Block Matching Los métodos de coincidencia de bloques han sido desarrollados específicamente en el marco de la codificación de secuencias de imágenes. Todos los estándares de codificación de video hasta la fecha, incluyendo H.264/AVC, HEVC entre otros, se basan en este paradigma. La suposición subyacente detrás de la estimación de movimiento es que los patrones correspondientes a objetos y fondos en un cuadro de una secuencia de video se mueven dentro del cuadro para formar objetos correspondientes en el cuadro subsiguiente. Esto se puede usar para descubrir redundancia temporal en la secuencia de video, aumentando la efectividad de la compresión de video al definir el contenido de un macrobloque en referencia al contenido de un macrobloque conocido que es mínimamente diferente. Un algoritmo de coincidencia de bloques implica dividir el cuadro actual de un video en macrobloques y comparar cada uno de los macrobloques con un bloque correspondiente y sus vecinos adyacentes en un cuadro cercano del video (a veces solo el anterior). Se crea un vector que modela el movimiento de un macrobloque de una ubicación a otra. Este movimiento, calculado para todos los macrobloques que componen un cuadro, constituye el movimiento estimado en un cuadro. 57 Estimación de movimiento – Block Matching Los vectores de movimiento pueden relacionarse con toda la imagen (estimación de movimiento global) o partes específicas, como bloques rectangulares, parches de formas arbitrarias o incluso por píxel. Los vectores de movimiento pueden estar representados por un modelo de traslación o muchos otros modelos que pueden aproximar el movimiento de una cámara de video real, como rotación y traslación en las tres dimensiones y zoom. Aplicar los vectores de movimiento a una imagen para predecir la transformación a otra imagen, debido al movimiento de la cámara o del objeto en la imagen se llama compensación de movimiento. La combinación de la estimación y compensación de movimiento es una parte clave de la compresión de video utilizada por MPEG 1, 2 y 4, así como por muchos otros códecs de video. Una métrica para hacer coincidir un macrobloque con otro bloque se basa en una función de coste. La más popular en términos de gasto computacional es la Diferencia media o Diferencia Absoluta Media (MAD) o el Error Cuadrático Medio (MSE): Donde N es el tamaño del macrobloque, y 𝐶𝐶𝑖𝑖𝑖𝑖 y 𝑅𝑅𝑖𝑖𝑖𝑖 son los píxeles que se comparan en el macrobloque actual y el macrobloque de referencia, respectivamente. La imagen compensada por movimiento que se crea utilizando los vectores de movimiento y macrobloques del cuadro de referencia se caracteriza por la relación señal a ruido pico (PSNR). 58 Estimación de movimiento – Block Matching Algoritmos Exhaustive Search Three Step Search Two Dimensional Logarithmic Search New Three Step Search Simple and Efficient Search Four Step Search Diamond Search Adaptive Rood Pattern Search 59 Estimación de movimiento – Flujo óptico Hay varios descriptores que se basan en el movimiento presente en el fotograma. El movimiento observado puede ser causado por el movimiento de los objetos de la escena, captados con una cámara estática, el movimiento de la cámara, mientras observa objetos estáticos o el movimiento combinado del objeto en la escena y de la propia cámara. Por lo tanto, es necesario disponer de métodos automáticos que puedan estimar el movimiento observado en la imagen. Cuando hay un movimiento relativo entre un objeto y la cámara se producen variaciones de los niveles de gris de las secuencias de imágenes capturadas. Conceptualmente podemos suponer que en el caso de que un objeto se mueva, cada punto de la superficie sigue, en el espacio tridimensional, una trayectoria S(t) que depende del tiempo. La Física Clásica establece que la derivada de esta función temporal es la velocidad 𝑣𝑣(𝑡𝑡) ⃗ de cada uno de los puntos móviles de la superficie en el espacio. Si se realiza una proyección sobre el plano de la imagen de cada una de las posiciones, se obtiene una trayectoria tridimensional s(t), cuya derivada constituye la proyección de la velocidad instantánea 𝑣𝑣(𝑡𝑡) ⃗ en dos dimensiones. Si se realiza la proyección de cada uno de los puntos de la superficie de los objetos móviles, se obtiene el campo de velocidades proyectadas tridimensionalmente comúnmente conocido como “Flow” de la imagen. La información disponible normalmente no permite el cálculo del “flow” de la imagen. Sólo es posible intentar obtener su estimación mediante el estudio de las variaciones espacio-temporales de los niveles de gris de los puntos de la imagen. Esa estimación proporciona lo que se conoce con el nombre de “optical flow” o “vector de movimiento del campo”. 60 Estimación de movimiento – Flujo óptico Ejemplo visual de “optical flow”: La mayoría de los procedimientos existentes que permiten calcular el vector movimiento se basan en el análisis de las variaciones de intensidad de los niveles de gris entre imágenes consecutivas de la secuencia. Para el caso simple de un objeto con superficie lisa y movimiento lento hay varias causas de las variaciones de los niveles de gris en la escena. Es posible determinar, entre otras, las siguientes fuentes de variaciones de los niveles de gris en la escena:  Movimiento del objeto: como consecuencia de la nueva posición de los elementos en la escena.  Variaciones de la iluminación: depende de la intensidad de la fuente luminosa.  Efectos fotométricos: por reflejos de tipo espejo o sombras que impactan ocasionalmente los niveles de intensidad de la zona.  Distorsión geométrica: por deformaciones del bloque óptico al utilizar el zoom.  Distorsiones de la cámara: variaciones espacio-temporales de la intensidad de la imagen pueden producirse simplemente por los defectos del sensor, o por variaciones del control de ganancia de la cámara.  Debido a los hechos ya mencionados, es bastante improbable que un punto de la superficie de un objeto mantenga un valor gris constante con el tiempo, sea estático o en movimiento. Esto ha llevado al desarrollo de técnicas alternativas que describen el movimiento de los objetos basándose en el seguimiento de las características locales en lugar de las basadas en puntos, descritas por las peculiaridades del conjunto de los píxeles circundantes analizado a lo largo del tiempo. 61 Estimación de movimiento – Flujo óptico La hipótesis anterior ha sido utilizada para desarrollar diferentes tipos de técnicas para estimar el flujo óptico:  Técnicas de correspondencia traslacional  Técnicas diferenciales  Técnicas basadas en la correlación  Técnicas de minimización de energía  Técnicas basadas en la fase Nos centramos ahora en las técnicas diferenciales. Los vectores de movimiento se estiman a partir de las derivadas espacio-temporales de la imagen. Los primeros enfoques se basaban en las derivadas de primer orden del nivel de gris de la imagen de nivel gris I(x, y, t), siendo (x, y) las coordenadas espaciales del píxel, y t el instante de tiempo en el que se adquirió la imagen. Suponiendo sólo desplazamientos locales de los objetos en la imagen, y sabiendo que el intervalo de tiempo entre dos fotogramas consecutivos t+δt es lo suficientemente pequeño como para suponer que no habrá cambios relevantes en el nivel de gris del punto (x+δx, y+δy), tenemos: Con δt pequeño, y 𝑣𝑣⃗ =(vx , vy) siendo el vector de flujo óptico en el punto (x, y). Teniendo en cuenta la hipótesis de que el nivel de luminosidad se mantiene constante, se puede se puede escribir lo siguiente: Expandiendo la serie de Taylor, el término izquierdo de la ecuación es: ε representa los términos de orden superior de δx, δy y δt. Eliminando en ambos lados de la ecuación el término I(x, y, t), dividiendo por δt y tomando límites δt → 0: 62 Estimación de movimiento – Flujo óptico La ecuación previa también puede describirse como se presenta a continuación o, en su defecto, en su forma abreviada: Donde Ix , Iy e It son las derivadas parciales de I(x, y, t) con respecto a x, y y t, respectivamente. La ecuación anterior es conocida como la ecuación de restricción de movimiento. El valor del gradiente de la imagen es normalmente calculado mediante máscaras como la de Sobel o Roberts. La derivada temporal It Se puede estimar mediante enfoques numéricos, como las diferencias netas entre píxeles homólogos de fotogramas consecutivos. El objetivo es poder calcular el vector de flujo óptico para cada píxel de la imagen. Como para cada píxel (x, y) sólo tenemos una ecuación y dos incógnitas, podemos buscar los valores de 𝑣𝑣⃗ teniendo en cuenta más píxeles (en la vecindad local), y asumir que la vecindad comparte un valor de gradiente común. Esta hipótesis no es tan irreal, ya que los objetos contenidos en la imagen no son de un solo tamaño, y normalmente son sólidos rígidos con un movimiento. Utilizando N píxeles de la vecindad M, tenemos: En forma de matriz tenemos: Tenemos dos enfoques diferentes para resolver el problema: El sistema lineal exacto, con 2 ecuaciones para las 2 incógnitas, utilizando 2 píxeles. El sistema sobredeterminado, con más de 2 píxeles de una vecindad del píxel en el que se estima el vector de flujo óptico. 63 Estimación de movimiento – Flujo óptico Si consideramos una vecindad M con dos píxeles: Analíticamente, el sistema anterior tiene la siguiente solución: La matriz inversa requerida existe si y sólo si su determinante es distinto de cero, es decir, si: Lo que implica que el sistema es resoluble si: La magnitud de los gradientes en ambos píxeles no es cero, los gradientes apuntan a direcciones diferentes y geométricamente, ambas condiciones se cumplen si M incluye un borde curvo. Los sistemas lineales exactos no permiten obtener una estimación del error. Para permitirlo, es más común utilizar el sistema sobredeterminado. Utilizando la notación matricial, el nuevo sistema es: Para obtener la solución óptima 𝑣𝑣 que minimiza el vector de error ϵ, se utilizan los mínimos cuadrados: 64 Estimación de movimiento – Flujo óptico La solución a este tipo de problemas se obtiene mediante la llamada pseudoinversa 𝐼𝐼𝐺𝐺𝑖𝑖 (debido a que IG no es una matriz cuadrada y, por tanto no tiene inversa): Aplicando esto nos queda: El sistema tiene solución si la matriz cuadrada 𝐼𝐼𝐺𝐺𝑖𝑖 𝐼𝐼𝐺𝐺 (tamaño 2 × 2) tiene una inversa. Esa matriz es: Su matriz inversa se puede obtener si: Lo que implica que debe cumplirse lo siguiente: Las derivadas parciales Ix y Iy no deben ser cero, es decir, la vecindad M no debe tener un nivel de gris constante. Los gradientes no deben apuntar a la misma dirección, ya que esto produce una matriz IG con filas que serían una combinación lineal de cada una de ellas entre sí, y entonces, su determinante sería cero. 65 Estimación de movimiento – Flujo óptico Las expresiones pueden simularse mediante: Donde Ip e Iq significan cualquier derivada de I. Con esto: La solución buscada es: El error puede estimarse a partir de los elementos de la diagonal de (𝐼𝐼𝐺𝐺𝑖𝑖 𝐼𝐼𝐺𝐺 )−1 , ya que incluyen la varianza de la estimación, que depende de un factor constante que es igual a la varianza de los datos de entrada (la estimación de los gradientes y temporales). La varianza de los valores estimados y el valor de 𝜎𝜎 2 : 66 Ejemplos Flujo Óptico Lucas-Kanade Dense Optical Optical Flow Flow 67 Estimación de movimiento – Feature Matching La detección y coincidencia de características es una tarea importante en muchas aplicaciones de visión por computadora, como estructura a partir de movimiento, recuperación de imágenes, detección de objetos y más. Una característica es un fragmento de información que es relevante para resolver la tarea computacional relacionada con una cierta aplicación. Las características pueden ser estructuras específicas en la imagen, como puntos, bordes u objetos. Las características también pueden ser el resultado de una operación general de vecindad o detección de características aplicada a la imagen. Componentes principales de la detección y coincidencia de características: 1. Detección: Identificar el Punto de Interés. 2. Descripción: La apariencia local alrededor de cada punto de característica se describe de alguna manera que es (idealmente) invariante bajo cambios en la iluminación, traslación, escala y rotación en el plano. Típicamente terminamos con un vector descriptor para cada punto de característica. 3. Coincidencia: Los descriptores se comparan entre las imágenes, para identificar características similares. Para dos imágenes podemos obtener un conjunto de pares (Xi, Yi) (Xi, Yi), donde (Xi, Yi) es una característica en una imagen y (Xi, Yi) su característica de coincidencia en la otra imagen. 68 Estimación de movimiento – Feature Matching Propiedades del Punto de Interés Tiene una posición bien definida en el espacio de la imagen o está bien localizado. Es estable bajo perturbaciones locales y globales en el dominio de la imagen, como variaciones de iluminación/brillo, de tal manera que los puntos de interés se pueden calcular de manera fiable con un alto grado de repetibilidad. Debe proporcionar una detección eficiente. Enfoques Posibles Basado en el brillo de una imagen (generalmente por derivada de imagen). Basado en la extracción de bordes (generalmente por detección de bordes y análisis de curvatura). Algoritmos para la Identificación Esquina de Harris SIFT (Transformada de Características Invariantes de Escala) SURF (Característica Robusta Acelerada) FAST (Características de Prueba de Segmento Acelerado) ORB (FAST Orientado y BRIEF Rotado) Descriptor de Características: es un algoritmo que toma una imagen y produce descriptores de características/vectores de características. Los descriptores de características codifican información interesante en una serie de números y actúan como una especie de "huella digital" numérica que se puede usar para diferenciar una característica de otra. Idealmente, esta información sería invariante bajo transformación de imagen, para que podamos encontrar la característica nuevamente incluso si la imagen se transforma de alguna manera. Después de detectar el punto de interés, procedemos a calcular un descriptor para cada uno de ellos. Los descriptores se pueden categorizar en dos clases: Descriptor Local: Es una representación compacta del vecindario local de un punto. Los descriptores locales intentan parecerse a la forma y apariencia solo en un vecindario local alrededor de un punto y, por lo tanto, son muy adecuados para representarlo en términos de coincidencia. Descriptor Global: Un descriptor global describe toda la imagen. Generalmente no son muy robustos, ya que un cambio en parte de la imagen puede causar que fallen, ya que afectará al descriptor resultante. 69 Estimación de movimiento – Feature Matching Algoritmos para descripción de características: SIFT (Transformada de Características Invariantes de Escala) SURF (Característica Robusta Acelerada) BRISK (Puntos Clave Binarios Robustos Invariantes y Escalables) BRIEF (Características Elementales Independientes Robustas Binarias) ORB (FAST Orientado y BRIEF Rotado) Coincidencia de Características: es la tarea de establecer correspondencias entre dos imágenes de la misma escena/objeto. Un enfoque común para la coincidencia de imágenes consiste en detectar un conjunto de puntos de interés, cada uno asociado con descriptores de imagen de los datos de imagen. Una vez extraídas las características y sus descriptores de dos o más imágenes, el siguiente paso es establecer algunas coincidencias preliminares de características entre estas imágenes. Algoritmos para macheo de puntos: Comparador de Fuerza Bruta. FLANN matcher (Biblioteca Rápida para Vecinos Más Cercanos Aproximados). 70 1.4 Compresión de video 71 Contenedores y codificación de video Como ya hemos visto las imágenes componen un gran volumen de información por lo que las técnicas de compresión ayudan a reducir en gran medida este problema mediante algún tipo de procesado para su almacenaje. Pensemos ahora en un video. Supongamos que la resolución del video es de 720x576, esto nos daría para cada imagen sin ningún tipo de compresión que tenemos que almacenar: 720 (W) x 576 (H) x 3 (RGB) x 8 (bits) ≈ 10 Mbit Como sabemos el video es una secuencia de imágenes que suele componerse de tasas de alrededor 25 imágenes/frames por segundo: 10 Mbit * 25 FPS = 250 Mbit por segundo Esto es un problema porque el tamaño de la información es enorme. Podemos aprovechar por tanto que tenemos una gran redundancia entre imágenes consecutivas y hacer uso de las limitaciones perceptuales de la visión humana. Con esto podemos aplicar técnicas ya conocidas y otras nuevas para conseguir comprimir esta información en gran medida pudiendo reducir el tamaño de la información de manera importante. 72 Contenedores y codificación de video Codificador predictivo/transformador Es la base de la mayoría de los estándares de codificación. La predicción es realizada a nivel de imagen (dominio espacial). La transformación es aplicada sobre la predicción de error. Operativa: 1. Cada imagen es dividida en bloques que no solapan de tamaño MxN. 2. Se usan muestras de las imágenes previas reconstruidas: Para cada bloque se calcula una predicción. La unión de todos los bloques predichos forma la imagen predicha. 3. La diferencia entre cada bloque y su predicción (error residual de predicción) es codificado empleando la DCT. La unión de todos los bloques de error predichos conforma la imagen de error. 4. Los coeficientes de la DCT para cada bloque son cuantizados. Cuantificación lineal independiente para cada coeficiente (matrices de cuantización, JPEG, …). 5. Los coeficientes cuantificados se codifican mediante entropía. 73 Contenedores y codificación de video Detalle del codificador Detalle del descodificador 74 Contenedores y codificación de video Codificación empleando sin emplear movimiento Codificación empleando movimiento ¿Se podría mejorar la predicción introduciendo información del movimiento presente en la escena? 75 Contenedores y codificación de video Estimación de movimiento: Proceso de obtención de la información de movimiento percibida a través de la información de la imagen actual y una o varias imágenes de referencia. Compensación de movimiento: Proceso de generación de la imagen predicción a partir de una o varias imágenes de referencia y la información de movimiento obtenida en la estimación. ¿Qué habría que transmitir? El error de predicción y la información necesaria para que el descodificador pueda generar la imagen predicción y la información de movimiento. Para que la imagen predicción sea idéntica en el codificador y en el descodificador, la imagen o imágenes de referencia deben ser imágenes reconstruidas. 76 Contenedores y codificación de video Ejemplo: Codificador MPEG1 77 Contenedores y codificación de video Paso 1 – Compresión inicial de la imagen de entrada. Vamos a emplear conceptos que vimos en el apartado de compresión de imagen con pérdidas. El primer paso y dado que sabemos que podemos “engañar” al sistema visual humano, la imagen de entrada se transforma a otro espacio de color, es decir de RGB a Y, Cb, Cr. Sabemos que podemos comprimir mediante submuestreo la información de crominancias sin perder gran cantidad de información mediante esquemas como el 4:2:2 o 4:2:0. 78 Contenedores y codificación de video Paso 2 – Codificación de la imagen Y, Cb, Cr Ya hemos reducido de manera espacial nuestra imagen de entrada sin perder demasiada información gracias a este otro espacio de color. Ahora emplearemos los conceptos vistos en la codificación JPEG para reducir el tamaño de la imagen. Primero se subdivide la en macrobloques y bloques. Un macrobloque es un conjunto NxM de bloques. Estos bloques se codifican ahora empleando primero la DCT, se aplica una cuantización, normalmente mediante matrices preestablecidas que fijan la calidad (se suele dar más calidad a la luminancia Y que contiene la información más importante). Una vez cuantificados aplicamos el zigzag para recopilar la información más importante al inicio y tener muchos ceros al final. Esto pasa finalmente a un codificador de entropía (sin pérdidas) y se envía la información. 79 Contenedores y codificación de video Paso 3 – Realizamos la predicción para codificar el error en la siguiente imagen. Para esto vamos a introducir un nuevo concepto que es el conocido como grupo de imágenes o GOP del inglés (Group Of Pictures). Un GOP es un conjunto de imágenes seguidas del video a las cuales se les asigna un tipo de cuadro de entre I, P ó B. Intra (I): codificado directamente sin ninguna estimación de error. Predictivo (P): predicho a partir de un cuadro anterior. Bidireccional (B): predicho a partir de un cuadro anterior y un cuadro siguiente. La figura del ejemplo sería un GOP de la forma: IBBPBBPBB. Secuencia de imágenes. Los vectores inferiores indican las referencias predictivas que hay entre ellas. Se ha escogido una ordenación IBBPBBPBBI a modo de ejemplo, ya que permite establecer lazos de predicción bastante usuales. Lo que permite esto es no reducir la información de manera muy basta y ayudar al decodificador a recuperarla adecuadamente. Entonces el cuadro I se codificará directamente, el cuadro P se predecirá a través del cuadro de cuadros tipo I o P que contienen toda o parcialmente toda la información por lo que al final tendrán menos información dado que codificamos la diferencia. Finalmente, los cuadros B, se interpolan entre los cuadros I y los cuadros P lo que permite que tengan aún menos información. 80 Contenedores y codificación de video Paso 3 – Realizamos la predicción para codificar el error en la siguiente imagen. 81 Contenedores y codificación de video Paso 3 – Realizamos la predicción para codificar el error en la siguiente imagen. Estimación y compensación de movimiento ¿Cómo realizamos esas predicciones de manera precisa? Se emplea estimación y compensación de movimiento mediante la técnica de block matching (vista en el apartado anterior). 82 Contenedores y codificación de video 83 Contenedores y codificación de video MPEG-1 Se diseñó con el objetivo de proporcionar calidad de vídeo similar a VHS y calidad de audio similar a la de un CD (a 1.5 Mbit/s) en los dispositivos domésticos de almacenamiento digital. Consta de las siguientes partes: Parte 1 (Sistema) Sincronización y transmisión de audio y vídeo. Parte 2 (Vídeo) Compresión de señales de vídeo. Parte 3 (Audio) Compresión de señales de audio (Layer 3 MP3). Parte 4 (Pruebas de conformidad). Parte 5 (Modelo de referencia). Permite resoluciones de hasta 4095x4095 píxeles a 60 cuadros por segundo. Pero lo más habitual es utilizar un subconjunto de parámetros para los que los algoritmos están optimizados. Este formato se denomina SIF (Source Input Format): Imágenes de 396 macrobloques y una tasa binaria máxima de 1856 Mb/s). Imágenes progresivas y estructura de muestreo 4:2:0. SIF-525 29,97 cuadros por segundo de 240x352 píxeles (EEUU). SIF-625 25 cuadros por segundo de 288x352 píxeles (Europa). MPEG-2 Se diseñó para la transmisión y el almacenamiento de vídeo con calidad de TV. Se puede utilizar en aplicaciones de alta y baja velocidad, con distintos niveles de resolución y con distintas calidades. Para gestionar tantas posibilidades (todas las posibles combinaciones de velocidades, resoluciones y calidades) surgen los conceptos de perfiles (profiles) y niveles (levels). - Perfiles: Definen las funcionalidades incluidas en el codificador. - Niveles: Definen los valores máximos de parámetros como la velocidad binaria, la resolución o la tasa de imágenes por segundo. Sigue un esquema híbrido predictivo-transformacional (al igual que H.261 y MPEG-1). 84 Contenedores y codificación de video 4:2:0 4:2:0 / 4:2:2 HIGH 1920 x 1152 80 Mbps 1920 x 1152 100 Mbps MPEG-2 I/P/B I/P/B 4:2:0 4:2:0 4:2:0 / 4:2:2 HIGH 1440 x 1152 1440 x 1152 1440 x 1152 PERFIL: SubConjunto 60 Mbps 60 Mbps 80 Mbps (1440) I/P/B I/P/B I/P/B de facilidades que pres- ta la norma_MPEG-2 4:2:0 4:2:0 4:2:0 4:2:0 / 4:2:2 (I/P/B,.....) 720 x 576 720 x 576 4:2:2 MAIN 15 Mbps 15 Mbps 720 x 608 720 x 576 720 x 576 50 Mbps 15 Mbps 20 Mbps I/P I/P/B I/P/B I/P/B I/P/B NIVEL: Conjunto de Pa- 4:2:0 352 x 288 4:2:0 352 x 288 rámetros dentro del Per- LOW 4 Mbps 4 Mbps fil (régimen binario, for- I/P/B I/P/B mato de imagen, 4:X:X,....) NIVEL PERFIL SIMPLE MAIN 4:2:2 SNR SPATIAL HIGH PROFILE La división por niveles y perfiles también se realiza en H.264 y H.265, incluyendo también en algunos mayor “profundidad del color” (más bits por pixel). No se incluye por ser más amplia (por ejemplo, ver http://www.itu.int/rec/T-REC-H.265) 85 Contenedores y codificación de video H.264 / Advanced Video Coding (AVC) compresión de video, también conocido como MPEG-4 Parte 10 y es un sucesor de estándares anteriores como MPEG-2 y MPEG-4 parte 2 (xvid). Es el más usado, especialmente para video de alta definición (HD). H.265, también conocido como HEVC (High Efficiency Video Coding) , es el nuevo estándar de compresión de video después de H. 264. que reduce el ancho de banda necesario para la transmisión de vídeo. Requiere aproximadamente la mitad que el que usaría el AVC o H.264, manteniendo la misma calidad, pero a la mitad de la tasa binaria, su uso está orientado a Ultra alta definición (UHD). 86 Contenedores y codificación de video H.264 Es una norma de codificación de vídeo desarrollada conjuntamente por: ITU-T Q.6/SG16, Video Coding Experts Group (VCEG), ISO/IEC JTC1/SC29/WG11, Moving Picture Experts Group (MPEG). Es la una de las partes del estándar MPEG-4. Su objetivo era mejorar la calidad/compresión de los codificadores previos. H.264 es un estándar que ofrece una gran flexibilidad, tanto en opciones de compresión como de transmisión. Es utilizado en numerosas aplicaciones de transporte y almacenamiento: DVDs de alta definición (HD-DVD y Blu-Ray), Televisión de alta definición en Europa (HDTV). Numerosos productos de Apple: itunes, iPod, MacOs…Televisión para móviles. Vídeo por Internet. Videoconferencias. Etc. H.265 HEVC (High Efficiency Video Coding): Nuevo estándar con la capacidad de comprimir mucho más que cualquiera de los anteriores. Creado por el Joint Collaborative Team on Video Coding (JCT-VC). En desarrollo desde enero de 2010. Estándar desde abril de 2013. Nuevas necesidades comerciales y tecnológicas: Resoluciones cada vez mayores Ultra HD (4K) y 8K. Demanda de mayor calidad de imagen (más bits y más imágenes por segundo). Nuevos segmentos del mercado (por ejemplo, healthcare). 87 87 Contenedores y codificación de video 88 Comparación de Resoluciones de Pantalla 1. Definición Estándar (SD - Standard Definition) 480p (640x480): La resolución de Definición Estándar fue el estándar para la televisión analógica y los primeros videos digitales. Esta resolución utiliza una relación de aspecto de 4:3 o 16:9 y tiene una calidad bastante limitada en

Use Quizgecko on...
Browser
Browser