Parámetros de filtro de paso bajo para disminución de imagen


11

Necesito reducir la escala de una imagen en un factor de horizontalmente y s y verticalmente ( s x , s y < 1 ).sXsysXsy1

Quiero usar un filtro de paso bajo finito antes de reducir la resolución.norte×metro

¿Cómo debo determinar los parámetros del filtro de paso bajo ( y el gaussiano σ ) para obtenerlo en función de s x y s y ?norte,metroσsXsy

Específicamente, soy interesante en el caso donde .sX=sy=1/ /2


pregunta relacionada con [la pregunta aquí] [1] [1]: stackoverflow.com/questions/3149279/…
isrish

1
Gracias, pero esta pregunta no se trata de cómo determinar los parámetros del filtro en función del factor de reducción de escala.
Ben-Uri

¿Cuánto quieres filtrar? ¿Cual es tu meta?

1
Quiero usar un filtro de paso bajo antes del muestreo descendente para evitar el alias. Quiero preservar la mayor cantidad de información posible sin alias.
Ben-Uri

1
Debe observar la transformación de Fourier del filtro para saber qué tan bien cortará las frecuencias de alias mientras mantiene las frecuencias por debajo del límite de Nyquist del resultado muestreado. La transformación de una gaussiana es otra gaussiana, lo que significa que no hay un corte brusco. Casi siempre hay una mejor opción.
Mark Ransom

Respuestas:


4

Tienes que pensar en el cambio en la frecuencia de Nyquist entre ambas imágenes. Si la frecuencia de Nyquist de la imagen original es N, la imagen con muestreo inferior tendrá una frecuencia de Nyquist más baja, xN, donde x está relacionada con la relación de tamaños entre la imagen final y la inicial. Debería eliminar esas frecuencias espaciales que son más altas que xN en la imagen original antes de reducirla.

El espectro de potencia de un gaussiano en el espacio de la imagen, también es un gaussiano en el espacio de frecuencia. Si ignoramos por un momento la segunda dimensión, el gaussiano en el espacio de la imagen se define como exp (-x ^ 2 / s ^ 2), donde x representa sus píxeles. Esto se asigna al espacio de frecuencia como exp (-w ^ 2 * s ^ 2), donde w es la frecuencia. Los parámetros sigma muestran que un Gaussiano amplio en el espacio de la imagen corresponde a un Gaussiano estrecho en el espacio de frecuencia.

Desea elegir un parámetro sigma que produzca un valor muy bajo en el espacio de frecuencia a la frecuencia que corresponde a la frecuencia de Nyquist de la imagen muestreada hacia abajo.


Bien, pero ¿cómo traduzco esto a un núcleo de convolución discreta? (esta era la pregunta)
Ben-Uri

ver la edición por favor ...
NoNameNo

Gracias, pero ¿hay alguna fórmula para encontrar la sigma en función de la frecuencia máxima que debería estar en el resultado de salida?
Ben-Uri

No conozco ninguna fórmula.
NoNameNo

1

Ya se ha señalado que y m deben elegirse en base a σ .nortemetroσ

He pasado algún tiempo pensando en cómo elegir mejor. Aquí están mis consideraciones. tl; dr: Tal vez cometí algún error, pero σ 23.37 parece una buena opción para el muestreo descendente por el factor 2.σσ23,37


0

Si estaba haciendo una reducción de tamaño grande (digamos 2x, 3x, 4x), puede hacer un promedio de píxeles para lograr un buen suavizado. En realidad, es por eso que el suavizado utiliza una gran cantidad de CPU / GPU adicional para que los videojuegos se vean más nítidos.

Dado que va de una imagen de 1000x1000 a una de 707x707 (solo un ejemplo para el factor de escala), está en lo cierto de que el alias puede ser un problema.

Afortunadamente, este es un problema con el que muchas personas ya se han encontrado y han trabajado bastante para resolverlo. En muchos casos, una interpolación bicúbica es el camino a seguir. Aquí hay algunos ejemplos de cómo se ven los diferentes métodos de interpolación:

http://www.compuphase.com/graphic/scale.htm

El cambio de tamaño de OpenCV tiene varios de esos métodos incorporados:

http://opencv.willowgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize

Si ya ha jugado con varios de esos métodos de interpolación y no funcionan bien, publique algún tipo de imagen de origen de muestra e imagen de resultado de muestra que muestre el déficit. Lo necesitaremos para diagnosticar el problema e intentar encontrar una buena solución.


Tenga en cuenta que, si bien es rápido, el promedio de píxeles no es la solución ideal para la calidad. el promedio de píxeles aplica efectivamente un filtro rect. en el espacio de frecuencia, esto es equivalente a multiplicar por una función sinc que oscila con cruces por cero en los armónicos de Nyquist. esto tiene dos problemas: 1. atenúa la frecuencia alta pero no tanto 2. invierte la fase en el lóbulo lateral. Ambos (1) y (2) pueden contribuir al aliasing.
thang

0

Realmente no tengo una buena respuesta para ti, pero aquí hay 2 opciones que puedes probar:

  • en Computer Vision, este factor de reescalado generalmente se maneja aplicando un filtro gaussiano de ancho (en píxeles) entre 5 y 9. Puede encontrar el correspondiente del gaussiano porque el ancho del píxel es clásicamente igual a 3σ3σ
  • Si está dispuesto a hacer buenos cálculos de muestreo de señal, ¿por qué no usar la transformada de Fourier? Tome la FFT de su imagen, conserve solo la subparte que corresponde a su tamaño objetivo e invierta la transformación. Esto aplicará un filtro anti-aliasing en su espectro. Si hay demasiados artefactos (ondas, zumbidos) para usted, aplique en su espectro de filtro gaussiano cuyo ancho corresponde al tamaño de su objetivo.

0

s=1/ /2

[1,2,1]T[1,2,1]

Está usted equivocado. ¿Olvidó un factor de escala de 0.25? ... y si es así, esta es una opción común para s = 1/2 no 1 / sqrt (0.5).
Ben-Uri

¿Algún comentario sobre la toma de @ Ben-Uri? El sistema está marcando esta publicación como de baja calidad debido a la longitud. Considere revisarlo o eliminarlo.
Peter K.

1
ss2

ssσσsX,sy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.