En una explicación intuitiva, ¿qué es el escaneo en zig zag y cuál es el propósito de usarlo en el procesamiento de imágenes?

A menudo se usa en la compresión de imágenes basada en DCT, como JPEG y MPEG2 (DVD), H.264 (MPEG4), y la agrupación en sus detalles se denomina “macrobloque” en la compresión de imágenes.

La forma más común de escanear imágenes en formatos pre-DCT era una línea horizontal a la vez. Así también se dibujan las imágenes en las pantallas y cómo los formatos de imagen como PNG y TIFF almacenan imágenes. Para el video HD (1920 x 1080), almacenaría / escanearía píxeles en este orden: 1,2,3 … 1917,1918,1919, para cada una de las 1080 líneas.

La razón para usar el escaneo en zigzag es que es razonable esperar que los píxeles en un bloque tengan más en común que los píxeles que se cruzan en línea recta. Tener más en común significa que se pueden comprimir más. Entonces, si el bloque tiene diferentes tonos de rojo y está almacenando solo la diferencia entre píxeles, muchas de las diferencias serán 0 o números muy pequeños que puede eliminar y hacer 0. También permite una mejor compresión entre cuadros para video, como un bloque es más probable que sea el mismo en dos cuadros consecutivos que una línea completa. Además, es posible que pueda encontrar el mismo bloque si la imagen solo se ha movido entre cuadros, entonces el compresor solo necesita guardar la nueva ubicación, es decir, en la imagen [1] el bloque está almacenado, luego en la imagen [2] ese mismo se encuentra el bloque pero con un desplazamiento de (2,2) píxeles. Para la segunda imagen solo necesita almacenar el número de bloque y el desplazamiento.

Existe una debilidad en el uso de macrobloques en zig-zag para la compresión con pérdida. Puede ver esto cuando el video o una imagen no tenían suficientes bits disponibles para representar los datos con la suficiente precisión. Parece que hay un montón de cuadrados en la imagen. Este artefacto se llama “macrobloqueo”

El escaneo en zigzag se usa en la codificación de imagen y video para reducir el número de coeficientes de transformación cero codificados, típicamente codificados por un codificador sin pérdidas.
Después de una transformación (por ejemplo, DCT) y cuantización, muchos coeficientes cuantificados serán cero. Todos estos coeficientes se codifican a continuación utilizando un codificador sin pérdidas. Digamos que tiene (escaneo de izquierda a derecha) 20 10 0 0 9 6 0 0 3 0 0 0…
Tener que mezclar coeficientes cero y no cero cuesta bits. El escaneo en zigzag le permite encontrar los coeficientes cero mucho más rápido y aumentar la eficiencia de codificación. Por ejemplo, usando un orden de zig-zag (HEVC ahora tiene múltiples alternativas de zig-zag), tal vez solo necesite codificar: 20, 10, 9, 6, 3, luego todos ceros.

Según tengo entendido, es una forma de reducir las dimensiones. Sin embargo, tu imagen no es la que estoy pensando. La razón por la que a veces se usa en CV es para reducir 2d a 1d pero aún así las características locales siguen siendo locales.

Así que imagina que dibujas una Z de 1, 2, 9, 10 -> 3,4,11,12 -> 5,6,13,14 y así sucesivamente. Esto permite que los datos cercanos en el índice permanezcan locales al igual que X, Y y X + 1, Y + 1 están cerca uno del otro.

Así lo entiendo. También podría usarse en otros campos para actualizar el monitor o escanear datos …

Cuando desea escanear una matriz para algo que se extiende radialmente, el escaneo en zigzag se vuelve intuitivo. Imagine un 2-d fft de una imagen de manera que la frecuencia más baja esté en (0,0). y a medida que se aleja de (0,0) la frecuencia aumenta radialmente. Ahora, si desea organizar la matriz de 2-d como matriz de 1-d pero aún así desea que a medida que el índice de la matriz de 1-d aumente, la frecuencia debería aumentar, tal como se comportaría un 1-d fft normal. La aproximación más simple sería entonces escanear la imagen en zigzag. No sería ideal, pero si la velocidad a la que la frecuencia aumenta radialmente fuera lo suficientemente baja, el escaneo en zigzag haría la tarea a un nivel satisfactorio.

Intente imaginar las líneas diagonales como ondas de un círculo enorme cuyo centro está en (0,0).