stringtranslate.com

Algoritmo de coincidencia de bloques

Un algoritmo de coincidencia de bloques es una forma de localizar macrobloques coincidentes en una secuencia de fotogramas de vídeo digital con el fin de estimar el movimiento . La suposición subyacente detrás de la estimación del movimiento es que los patrones correspondientes a los objetos y al fondo en un fotograma de una secuencia de vídeo se mueven dentro del fotograma para formar objetos correspondientes en el fotograma siguiente. Esto se puede utilizar para descubrir redundancia temporal en la secuencia de vídeo, lo que aumenta la eficacia de la compresión de vídeo entre fotogramas al definir el contenido de un macrobloque por referencia al contenido de un macrobloque conocido que es mínimamente diferente.

Un algoritmo de coincidencia de bloques implica dividir el fotograma actual de un vídeo en macrobloques y comparar cada uno de los macrobloques con un bloque correspondiente y sus vecinos adyacentes en un fotograma cercano del vídeo (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 fotograma, constituye el movimiento estimado en un fotograma.

El área de búsqueda para una buena coincidencia de macrobloque se decide mediante el "parámetro de búsqueda", p, donde p es el número de píxeles en los cuatro lados del macrobloque correspondiente en el cuadro anterior. El parámetro de búsqueda es una medida de movimiento. Cuanto mayor sea el valor de p, mayor será el movimiento potencial y la posibilidad de encontrar una buena coincidencia. Sin embargo, una búsqueda completa de todos los bloques potenciales es una tarea computacionalmente costosa. Las entradas típicas son un macrobloque de tamaño 16 píxeles y un área de búsqueda de p = 7 píxeles.

La coincidencia de bloques y el filtrado 3D utilizan este enfoque para resolver diversos problemas inversos de restauración de imágenes , como la reducción de ruido [1] y el desenfoque [2] tanto en imágenes fijas como en vídeo digital .

Motivación

La estimación de movimiento es el proceso de determinar vectores de movimiento que describen la transformación de una imagen 2D a otra; generalmente a partir de fotogramas adyacentes en una secuencia de vídeo. Los vectores de movimiento pueden estar relacionados con toda la imagen (estimación de movimiento global) o con partes específicas, como bloques rectangulares, parches de forma arbitraria o incluso por píxel. Los vectores de movimiento pueden representarse mediante un modelo de traslación o muchos otros modelos que pueden aproximarse al movimiento de una cámara de vídeo real, como la rotación y la traslación en las tres dimensiones y el zoom.

La aplicación de vectores de movimiento a una imagen para predecir la transformación en otra imagen, debido al movimiento de la cámara o de un objeto en la imagen, se denomina compensación de movimiento . La combinación de estimación de movimiento y compensación de movimiento es una parte clave de la compresión de vídeo , tal como la utilizan MPEG 1, 2 y 4, así como muchos otros códecs de vídeo .

La compresión de vídeo basada en la estimación de movimiento ayuda a ahorrar bits al enviar imágenes diferenciales codificadas que tienen inherentemente menos entropía en comparación con el envío de un fotograma totalmente codificado. Sin embargo, la operación más costosa en términos computacionales y que requiere más recursos en todo el proceso de compresión es la estimación de movimiento. Por lo tanto, los algoritmos rápidos y de bajo costo computacional para la estimación de movimiento son una necesidad para la compresión de vídeo.

Métricas de evaluación

Una métrica para hacer coincidir un macrobloque con otro bloque se basa en una función de costo. La más popular en términos de gasto computacional es:

Diferencia media o diferencia absoluta media (DMA) =

Error cuadrático medio (MSE) =

donde N es el tamaño del macrobloque, 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 los macrobloques del marco de referencia se caracteriza por la relación señal-ruido máxima (PSNR),

Algoritmos

Los algoritmos de coincidencia de bloques se han investigado desde mediados de la década de 1980. Se han desarrollado muchos algoritmos, pero a continuación solo se describen algunos de los más básicos o de uso común.

Búsqueda exhaustiva

Este algoritmo calcula la función de costo en cada ubicación posible en la ventana de búsqueda. Esto conduce a la mejor coincidencia posible del macrobloque en el marco de referencia con un bloque en otro marco. La imagen compensada por movimiento resultante tiene la relación señal-ruido máxima más alta en comparación con cualquier otro algoritmo de coincidencia de bloques. Sin embargo, este es el algoritmo de coincidencia de bloques más extenso desde el punto de vista computacional de todos. Una ventana de búsqueda más grande requiere una mayor cantidad de cálculos.

Coincidencia de bloques jerárquica optimizada (OHBM)

El algoritmo de coincidencia de bloques jerárquicos optimizados (OHBM) acelera la búsqueda exhaustiva basada en las pirámides de imágenes optimizadas. [3]

Búsqueda en tres pasos

Es uno de los primeros algoritmos de coincidencia rápida de bloques. Funciona de la siguiente manera:

  1. Comience con la ubicación de búsqueda en el centro
  2. Establezca el tamaño del paso S = 4 y el parámetro de búsqueda p = 7
  3. Busca 8 ubicaciones +/- S píxeles alrededor de la ubicación (0,0) y la ubicación (0,0)
  4. Elige entre las 9 ubicaciones buscadas, la que tenga la función de mínimo costo
  5. Establezca el nuevo origen de búsqueda en la ubicación seleccionada anteriormente
  6. Establezca el nuevo tamaño de paso como S = S/2
  7. Repita el procedimiento de búsqueda hasta que S = 1

La ubicación resultante para S=1 es la que tiene la función de costo mínima y el bloque macro en esta ubicación es la que mejor coincide.

En este algoritmo, el cálculo se reduce en un factor de 9. Para p=7, mientras que ES evalúa el costo para 225 macrobloques, TSS evalúa solo para 25 macrobloques.

Búsqueda logarítmica bidimensional

El TDLS está estrechamente relacionado con el TSS, pero es más preciso para estimar vectores de movimiento para una ventana de búsqueda de gran tamaño. El algoritmo se puede describir de la siguiente manera:

  1. Comience con la ubicación de búsqueda en el centro
  2. Seleccione un tamaño de paso inicial, digamos, S = 8
  3. Busque 4 ubicaciones a una distancia de S desde el centro en los ejes X e Y
  4. Encuentra la ubicación del punto con la función de menor costo
  5. Si un punto distinto del centro es el mejor punto de coincidencia,
    1. Seleccione este punto como el nuevo centro
  6. Si el mejor punto de coincidencia está en el centro, establezca S = S/2
  7. Repita los pasos 2 y 3
  8. Si S = 1, se buscan las 8 ubicaciones alrededor del centro a una distancia S
  9. Establezca el vector de movimiento como el punto con la función de menor costo

Nueva búsqueda en tres pasos

El TSS utiliza un patrón de verificación asignado de manera uniforme y es propenso a perder pequeños movimientos. El NTSS [4] es una mejora con respecto al TSS, ya que proporciona un esquema de búsqueda centrado y tiene disposiciones para detenerse a mitad de camino para reducir el costo computacional. Fue uno de los primeros algoritmos rápidos ampliamente aceptados y se utilizó con frecuencia para implementar estándares anteriores como MPEG 1 y H.261.

El algoritmo funciona de la siguiente manera:

  1. Comience con la ubicación de búsqueda en el centro
  2. Buscar 8 ubicaciones +/- S píxeles con S = 4 y 8 ubicaciones +/- S píxeles con S = 1 alrededor de la ubicación (0,0)
  3. Elige entre las 16 ubicaciones buscadas, la que tenga la función de costo mínimo
  4. Si la función de costo mínimo ocurre en el origen, detenga la búsqueda y establezca el vector de movimiento en (0,0)
  5. Si la función de costo mínimo ocurre en una de las 8 ubicaciones en S = 1, establezca el nuevo origen de búsqueda en esta ubicación
    1. Verifique los pesos adyacentes para esta ubicación, según la ubicación, puede verificar 3 o 5 puntos
  6. El que da menor peso es el que más se acerca, establece el vector de movimiento en esa ubicación
  7. Si el peso más bajo después del primer paso fue una de las 8 ubicaciones en S = 4, se sigue el procedimiento TSS normal
    1. Elige entre las 9 ubicaciones buscadas, la que tenga la función de mínimo costo
    2. Establezca el nuevo origen de búsqueda en la ubicación seleccionada anteriormente
    3. Establezca el nuevo tamaño de paso como S = S/2
    4. Repita el procedimiento de búsqueda hasta que S = 1

Por lo tanto, este algoritmo verifica 17 puntos para cada macrobloque y, en el peor de los casos, implica verificar 33 ubicaciones, lo que sigue siendo mucho más rápido que TSS.

Búsqueda sencilla y eficiente

La idea detrás de TSS es que la superficie de error debido al movimiento en cada macrobloque es unimodal . Una superficie unimodal es una superficie con forma de cuenco tal que los pesos generados por la función de costo aumentan monótonamente a partir del mínimo global. Sin embargo, una superficie unimodal no puede tener dos mínimos en direcciones opuestas y, por lo tanto, la búsqueda de patrón fijo de 8 puntos de TSS se puede modificar aún más para incorporar esto y ahorrar cálculos. SES [5] es la extensión de TSS que incorpora este supuesto.

El algoritmo SES mejora el algoritmo TSS ya que cada paso de búsqueda en SES se divide en dos fases:

• Primera fase:

 • Dividir el área de búsqueda en cuatro cuadrantes • Iniciar la búsqueda con tres ubicaciones, una en el centro (A) y otras (B y C), S=4 ubicaciones alejadas de A en direcciones ortogonales • Encuentre puntos en el cuadrante de búsqueda para la segunda fase utilizando la distribución de peso para A, B, C: • Si (MAD(A)>=MAD(B) y MAD(A)>=MAD(C)), seleccione puntos en el cuadrante IV de la segunda fase • Si (MAD(A)>=MAD(B) y MAD(A)<=MAD(C)), seleccione puntos en el cuadrante I de la segunda fase • Si (MAD(A)<MAD(B) y MAD(A)<MAD(C)), seleccione puntos en el cuadrante II de la segunda fase • Si (MAD(A)<MAD(B) y MAD(A)>=MAD(C)), seleccione puntos en el cuadrante III de la segunda fase

• Segunda Fase:

 • Encuentra la ubicación con menor peso • Establezca el nuevo origen de búsqueda como el punto encontrado anteriormente

• Establezca el nuevo tamaño de paso como S = S/2

• Repita el procedimiento de búsqueda SES hasta que S=1

• Seleccione la ubicación con el peso más bajo como vector de movimiento. SES es computacionalmente muy eficiente en comparación con TSS. Sin embargo, la relación señal-ruido máxima lograda es deficiente en comparación con TSS, ya que las superficies de error no son estrictamente unimodales en la realidad.

Búsqueda en cuatro pasos

La búsqueda en cuatro pasos es una mejora con respecto a TSS en términos de menor costo computacional y mejor relación señal-ruido pico. De manera similar a NTSS, FSS [6] también emplea búsqueda con polarización central y tiene una disposición de parada a mitad de camino.

El algoritmo funciona de la siguiente manera:

  1. Comience con la ubicación de búsqueda en el centro
  2. Establezca el tamaño del paso S = 2 (independientemente del parámetro de búsqueda p)
  3. Buscar 8 ubicaciones +/- S píxeles alrededor de la ubicación (0,0)
  4. Elige entre las 9 ubicaciones buscadas, la que tenga la función de mínimo costo
  5. Si el peso mínimo se encuentra en el centro de la ventana de búsqueda:
    1. Establezca el nuevo tamaño de paso como S = S/2 (es decir, S = 1)
    2. Repita el procedimiento de búsqueda de los pasos 3 a 4
    3. Seleccione la ubicación con el menor peso como vector de movimiento
  6. Si el peso mínimo se encuentra en una de las 8 ubicaciones distintas al centro:
    1. Establezca el nuevo origen en esta ubicación
    2. Fije el tamaño del paso como S = 2
    3. Repita el procedimiento de búsqueda de los pasos 3 y 4. Dependiendo de la ubicación del nuevo origen, busque en 5 ubicaciones o 3 ubicaciones.
    4. Seleccione la ubicación con menor peso
    5. Si la ubicación de menor peso está en el centro de la nueva ventana, vaya al paso 5; de lo contrario, vaya al paso 6.

Búsqueda de diamantes

El algoritmo Diamond Search (DS) [7] utiliza un patrón de puntos de búsqueda en forma de diamante y funciona exactamente igual que 4SS. Sin embargo, no hay límite en la cantidad de pasos que puede realizar el algoritmo.

Se utilizan dos tipos diferentes de patrones fijos para la búsqueda,

El algoritmo funciona de la siguiente manera:

    1. Comience con la ubicación de búsqueda en el centro
    2. Establecer tamaño de paso S = 2
    3. Busca 8 ubicaciones de píxeles (X,Y) tales que (|X|+|Y|=S) alrededor de la ubicación (0,0) utilizando un patrón de puntos de búsqueda de diamante
    4. Elige entre las 9 ubicaciones buscadas, la que tenga la función de mínimo costo
    5. Si el peso mínimo se encuentra en el centro de la ventana de búsqueda, vaya al paso SDSP
    6. Si el peso mínimo se encuentra en una de las 8 ubicaciones distintas del centro, establezca el nuevo origen en esta ubicación
    7. Repetir LDSP
    1. Establecer el nuevo origen de búsqueda
    2. Establezca el nuevo tamaño de paso como S = S/2 (es decir, S = 1)
    3. Repita el procedimiento de búsqueda para encontrar la ubicación con menor peso.
    4. Seleccione la ubicación con el menor peso como vector de movimiento

Este algoritmo encuentra el mínimo global con mucha precisión, ya que el patrón de búsqueda no es ni demasiado grande ni demasiado pequeño. El algoritmo de búsqueda Diamond tiene una relación señal-ruido máxima cercana a la de la búsqueda exhaustiva con un gasto computacional significativamente menor.

Búsqueda de patrones de Rood adaptables

El algoritmo de búsqueda de patrones de rood adaptativo (ARPS) [8] aprovecha el hecho de que el movimiento general en un marco suele ser coherente , es decir, si los macrobloques alrededor del macrobloque actual se movieron en una dirección particular, entonces existe una alta probabilidad de que el macrobloque actual también tenga un vector de movimiento similar . Este algoritmo utiliza el vector de movimiento del macrobloque a su izquierda inmediata para predecir su propio vector de movimiento.

La búsqueda de patrones de ruta adaptativos se ejecuta de la siguiente manera:

  1. Comience con la ubicación de búsqueda en el centro (origen)
  2. Encuentra el vector de movimiento previsto para el bloque
  3. Establezca el tamaño del paso S = máximo (|X|,|Y|), donde (X,Y) es la coordenada del vector de movimiento previsto
  4. Búsqueda de puntos distribuidos en el patrón de la cruz alrededor del origen en un tamaño de paso S
  5. Establezca el punto con menor peso como origen
  6. Búsqueda utilizando el patrón de búsqueda de diamante pequeño (SDSP) alrededor del nuevo origen
  7. Repita la búsqueda SDSP hasta que el punto menos ponderado esté en el centro de SDSP

La búsqueda de patrones de Rood ubica directamente la búsqueda en un área donde hay una alta probabilidad de encontrar un buen bloque coincidente. La principal ventaja de ARPS sobre DS es que si el vector de movimiento predicho es (0, 0), no pierde tiempo computacional al hacer LDSP, sino que comienza directamente a usar SDSP. Además, si el vector de movimiento predicho está lejos del centro, ARPS nuevamente ahorra cálculos al saltar directamente a esa vecindad y usar SDSP, mientras que DS se toma su tiempo para hacer LDSP.

Referencias

  1. ^ Dabov, Kostadin; Foi, Alessandro; Katkovnik, Vladimir; Egiazarian, Karen (16 de julio de 2007). "Eliminación de ruido de imágenes mediante filtrado colaborativo de dominio de transformación 3D disperso". IEEE Transactions on Image Processing . 16 (8): 2080–2095. Bibcode :2007ITIP...16.2080D. CiteSeerX  10.1.1.219.5398 . doi :10.1109/TIP.2007.901238. PMID  17688213. S2CID  1475121.
  2. ^ Danielyan, Aram; Katkovnik, Vladimir; Egiazarian, Karen (30 de junio de 2011). "BM3D Frames and Variational Image Deblurring". IEEE Transactions on Image Processing . 21 (4): 1715–28. arXiv : 1106.6180 . Bibcode :2012ITIP...21.1715D. doi :10.1109/TIP.2011.2176954. PMID  22128008. S2CID  11204616.
  3. ^ Je, Changsoo; Park, Hyung-Min (2013). "Coincidencia de bloques jerárquica optimizada para un registro de imágenes rápido y preciso". Procesamiento de señales: comunicación de imágenes . 28 (7): 779–791. doi :10.1016/j.image.2013.04.002.
  4. ^ Li, Renxiang; Zeng, Bing; Liou, Ming (agosto de 1994). "Un nuevo algoritmo de búsqueda de tres pasos para la estimación del movimiento de bloques". IEEE Transactions on Circuits and Systems for Video Technology . 4 (4): 438–442. doi :10.1109/76.313138.
  5. ^ Lu, Jianhua; Liou, Ming (abril de 1997). "Un algoritmo de búsqueda simple y eficiente para la estimación del movimiento por coincidencia de bloques". IEEE Transactions on Circuits and Systems for Video Technology . 7 (2): 429–433. doi :10.1109/76.564122.
  6. ^ Po, Lai-Man; Ma, Wing-Chung (junio de 1996). "Un nuevo algoritmo de búsqueda de cuatro pasos para la estimación rápida del movimiento de bloques". IEEE Transactions on Circuits and Systems for Video Technology . 6 (3): 313–317. doi :10.1109/76.499840.
  7. ^ Zhu, Shan; Ma, Kai-Kuang (febrero de 2000). "Un nuevo algoritmo de búsqueda de diamantes para la estimación rápida del movimiento por coincidencia de bloques". IEEE Transactions on Image Processing . 9 (12): 287–290. Bibcode :2000ITIP....9..287Z. doi :10.1109/83.821744. PMID  18255398.
  8. ^ Nie, Yao; Ma, Kai-Kuang (diciembre de 2002). "Búsqueda de patrones de Rood adaptativa para estimación rápida de movimiento por coincidencia de bloques" (PDF) . IEEE Transactions on Image Processing . 11 (12): 1442–1448. Bibcode :2002ITIP...11.1442N. doi :10.1109/TIP.2002.806251. PMID  18249712.

Enlaces externos

1. http://www.mathworks.com/matlabcentral/fileexchange/8761-block-matching-algorithms-for-motion-estimation

2. https://www.ece.cmu.edu/~ee899/project/deepak_mid.htm