¿Qué son la pirámide de imágenes, la pirámide gaussiana y la pirámide laplaciana? Se adjunta el código Python-OpenCV para reconstruir la imagen original utilizando la pirámide laplaciana y la pirámide gaussiana.

La pirámide de imágenes es una estructura eficaz y sencilla para la representación de imágenes en múltiples resoluciones.
Una pirámide de imágenes es una serie de imágenes de resolución progresivamente menor dispuestas en forma de pirámide. La base de la pirámide de imágenes es la representación de alta resolución de la imagen a procesar, mientras que la parte superior es la representación de baja resolución.

¿Qué hace la pirámide de imágenes?
Las pirámides de imágenes se utilizan comúnmente en tecnologías de escalado de imágenes, reconstrucción de imágenes, fusión de imágenes y mejora de imágenes.
Aquí está la aplicación de la pirámide de imágenes en la tecnología de fusión de imágenes: el algoritmo de fusión de imágenes de torre de resolución múltiple es un método de fusión de imágenes más utilizado en la actualidad. En este tipo de algoritmo, la imagen original se filtra y se reduce capa por capa para formar una estructura similar a una torre. En cada capa de la torre, se utiliza un algoritmo de fusión para fusionar los datos de esta capa para obtener una estructura de torre procesada por el algoritmo, y luego la estructura de torre procesada se reconstruye para obtener una imagen compuesta.
Además, la pirámide de imágenes puede descomponer la imagen original en diferentes bandas de frecuencia espacial, de modo que se puedan usar diferentes operadores para lograr una optimización del algoritmo más específica para las características y detalles en diferentes bandas de frecuencia en diferentes capas de descomposición.

La pirámide gaussiana y la pirámide laplaciana son las dos pirámides de imágenes más comunes.

La siguiente es una introducción detallada a la pirámide de Gauss y la pirámide de Laplace.

Pirámide gaussiana La
pirámide gaussiana se refiere a un grupo de imágenes que contienen múltiples resoluciones en la pirámide al reducir continuamente el tamaño de la imagen mediante filtrado de desenfoque gaussiano y reducción de resolución. La forma de la pirámide gaussiana es la que se muestra en la siguiente figura:
Insertar descripción de la imagen aquí
en circunstancias normales, la capa inferior de la pirámide gaussiana es la imagen original, y cada capa superior reducirá el tamaño de la imagen mediante el filtrado de desenfoque gaussiano + reducción de resolución.
Normalmente, el largo y el ancho de la imagen se reducirán a la mitad del original. Dado que el largo y el ancho de la imagen se reducen a la mitad del original cada vez, la imagen se reduce muy rápidamente. Por lo tanto, el número de capas de una La pirámide gaussiana común es 3~6.

La función pyrDown() se proporciona en OpenCV, que se utiliza para generar la capa anterior de la pirámide gaussiana de la imagen.
El prototipo de la función pyrDown() es el siguiente:

void cv::pyrDown(InputArray src,
                 OutputArray dst,
                 const Size & dstsize = Size(),
                 int borderType = BORDER_DEFAULT )

El significado de los parámetros de la función pyrDown() es el siguiente:
src - imagen de entrada
dst - imagen de salida, su ancho y alto son aproximadamente la mitad de src, y el tamaño exacto está determinado por el tercer parámetro dstsize.
dstsize : el tamaño de la imagen de destino. El valor predeterminado es Tamaño ((src.cols+1)/2, (src.rows+1)/2). Cuando lo especifica usted mismo, debe cumplir con las siguientes condiciones.
Insertar descripción de la imagen aquí
bordertype: indicador de expansión de borde al realizar el filtrado gaussiano. Para obtener una introducción detallada a la expansión de límites, consulte la siguiente publicación de blog:
https://www.hhai.cc/thread-178-1-1.html
Usar la función pyrDown() para generar la capa anterior de la pirámide gaussiana implica Dos procesos, a saber, gaussiano. Hay dos procesos: convolución del núcleo (utilizada para implementar el filtrado de desenfoque gaussiano) y reducción de resolución.
Sea G n G_ {n}GRAMOnorteRepresenta la imagen de la enésima capa de la pirámide gaussiana, luego G 0 G_{0}GRAMO0Representa la capa inferior de la pirámide gaussiana, que en realidad es la imagen original. Para obtener G n + 1 G_{n+1}GRAMOnorte + 1, primero necesitamos calcular G n G_ {n}GRAMOnorteRealice una convolución del núcleo gaussiano, es decir, realice un filtrado de paso bajo gaussiano y luego elimine todas las filas y columnas pares (esta es una operación de reducción de resolución), obteniendo así G n + 1 G_{n+1}GRAMOnorte + 1.
El núcleo gaussiano utilizado por la función pyrDown() es el siguiente:
Insertar descripción de la imagen aquí
Pregunta: ¿Por qué la pirámide gaussiana requiere un filtrado gaussiano de paso bajo antes de la operación de reducción de resolución?
Respuesta: Esto no solo puede garantizar las propiedades del procesamiento de paso bajo de la pirámide gaussiana, sino también suavizar la imagen para que la imagen muestreada hacia abajo no tenga espacios en los límites.
Para resumir: la capa superior de la imagen de la pirámide gaussiana se obtiene mediante un filtrado de paso bajo de la siguiente capa y luego muestreándola en filas y columnas alternas. El tamaño de la imagen de la capa superior es aproximadamente 1/4 de la imagen de la capa siguiente.

Pirámide Laplaciana
La Pirámide Laplaciana existe en realidad para realizar la reconstrucción de la imagen de la Pirámide Gaussiana. Se genera sobre la base de la pirámide gaussiana. La pirámide laplaciana es la imagen diferencial entre la pirámide gaussiana y la capa superior expandida mediante muestreo ascendente, que aquí generalmente se realiza mediante interpolación.

Hao Hongjun encontró un diagrama esquemático en Internet que explica de manera vívida y concreta qué es la pirámide de Laplace. Visite
el texto original de esta publicación de blog para ver este diagrama esquemático.
El enlace del texto original de esta publicación de blog:

https://www. hhai.cc/thread-198-1-1.html

En el diagrama esquemático encontrado arriba por Hao Hongjun, podemos ver claramente que la imagen laplaciana de la capa n es en realidad la diferencia sobremuestreada entre la imagen gaussiana de la capa n y la imagen gaussiana de la capa n + 1. Desde El filtro gaussiano es un filtro de paso bajo, por lo que podemos decir que una pirámide laplaciana en un cierto nivel puede reflejar los componentes de alta frecuencia de la pirámide gaussiana en el mismo nivel. Alguna literatura se refiere a la propiedad de que la pirámide laplaciana refleja los componentes de alta frecuencia de su hermana pirámide gaussiana como el efecto residual de predicción de la pirámide laplaciana.

Del proceso de generación anterior de la imagen laplaciana, podemos ver que en el proceso de usar la pirámide gaussiana para generar la pirámide laplaciana, suponiendo que la pirámide gaussiana tiene N capas, luego, al calcular la enésima capa de la pirámide laplaciana, es Es necesario calcular la pirámide gaussiana de la capa N+1 para poder calcular la pirámide laplaciana de la capa N.

OpenCV proporciona la función pyrUp() para ayudar a calcular la pirámide laplaciana. A través de él, se puede aumentar el muestreo de la imagen de la pirámide gaussiana de la enésima capa y luego se puede realizar la operación de filtrado de desenfoque de convolución gaussiana.
La documentación oficial de OpenCV describe su función de la siguiente manera:
" La función realiza el paso de muestreo superior de la construcción de la pirámide gaussiana, aunque en realidad se puede usar para construir la pirámide laplaciana. Primero, aumenta el muestreo de la imagen de origen inyectando incluso cero filas y columnas y luego convoluciona el resultado con el mismo núcleo que en pyrDown multiplicado por 4 "
De la descripción anterior, podemos saber que la operación de muestreo superior de la función pyrUp () es agregar valores 0 de manera uniforme para alternar filas y columnas. Una vez completado el muestreo ascendente, se utiliza el siguiente núcleo de convolución para realizar la operación de filtrado de desenfoque de convolución gaussiano.
Insertar descripción de la imagen aquí
Tenga en cuenta: el núcleo de convolución anterior es diferente del núcleo de convolución de la función pyrDown(). Específicamente, el núcleo de convolución gaussiano de la función pyrDown() debe multiplicarse por cuatro para obtener el núcleo de convolución de la función pyrUp(). En cuanto a por qué Esto es así Sí, el blogger Hao Hongjun aún no lo ha descubierto. Se supone que está relacionado con la interpolación de valores 0 en filas y columnas alternas durante el muestreo ascendente. Los amigos que sepan el motivo pueden decírselo a Hao Hongjun. Gracias de antemano.

El prototipo de la función pyrDown() es el siguiente:

void cv::pyrUp(InputArray src,
               OutputArray dst,
               const Size & dstsize = Size(),
               int borderType = BORDER_DEFAULT )

El significado de cada parámetro es el mismo que el de la función pyrDown(), por lo que no entraré en detalles aquí.

Aquí se debe prestar especial atención: lo que se obtiene en el parámetro dst de la función pyrDown() no es la imagen de la pirámide laplaciana.
Si desea obtener la imagen de la pirámide laplaciana, debe realizar el cálculo de acuerdo con la siguiente fórmula.
Sea L n L_ {n}lnorteRepresenta la enésima capa de la pirámide laplaciana, G n G_{n}GRAMOnorteRepresentando la enésima capa de la pirámide gaussiana, está:

L n = G n − P yrup ( G n + 1 ) L_{n}=G_{n}-Pyrup(G_{n+1})lnorte=GRAMOnorteP año arriba p ( GRAMOnorte + 1)

Obviamente podemos usar la siguiente fórmula para reconstruir la imagen de la pirámide gaussiana de la enésima capa:
G n ′ = L n + P yrup ( G n + 1 ) G_{n}^{'} =L_{n}+Pyrup(G_{n) +1})GRAMOnorte=lnorte+P año arriba p ( GRAMOnorte + 1)

A continuación, el código de muestra basado en Python-OpenCV
es un uso integral de las funciones pyrDown () y pyrUp ().
El código de muestra primero realiza una reducción de resolución de pirámide gaussiana en la imagen y
luego usa Laplan de una determinada capa. Pirámide común y gaussiana pirámide restaurar la imagen de la capa anterior.
El código tiene comentarios detallados, por lo que todos deberían poder entenderlo fácilmente.

Para obtener el código específico, visite el texto original de esta publicación de blog y
el enlace del texto original de esta publicación de blog:

https://www.hhai.cc/thread-198-1-1.html

El resultado de ejecutar el código se muestra en la siguiente figura:
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
De los resultados anteriores, podemos ver que la imagen reconstruida usando una determinada capa de pirámide gaussiana y pirámide laplaciana tiene mejores detalles (componentes de alta frecuencia) que la imagen original. falta mucho.

Supongo que te gusta

Origin blog.csdn.net/wenhao_ir/article/details/124386034
Recomendado
Clasificación