tutorial net from examples emgu image opencv interpolation emgucv

image - net - emgucv git



¿Cómo elijo un método de interpolación de imágenes?(Emgu/OpenCV) (4)

El método de interpolación a utilizar depende de lo que está tratando de lograr:

CV_INTER_LINEAR o CV_INTER_CUBIC aplican un filtro de paso bajo (promedio) para lograr un equilibrio entre la calidad visual y la eliminación de bordes (los filtros de paso bajo tienden a eliminar los bordes para reducir el alias en las imágenes). Entre estos dos, te recomendaría CV_INTER_CUBIC .

El método CV_INTER_NN en realidad es el vecino más cercano, es el método más básico y obtendrá bordes más nítidos (no se aplicará ningún filtro de paso bajo). Sin embargo, este método simplemente es como "hacer zoom" en la imagen, sin mejoras visuales.

La función de cambio de tamaño de la imagen proporcionada por Emgu (un envoltorio .net para OpenCV) puede usar cualquiera de los cuatro métodos de interpolación :

  1. CV_INTER_NN (predeterminado)
  2. CV_INTER_LINEAR
  3. CV_INTER_CUBIC
  4. CV_INTER_AREA

Casi entiendo la interpolación lineal, pero solo puedo adivinar qué hace el área cúbica. Sospecho que NN significa vecino más cercano, pero podría estar equivocado.

La razón por la que estoy cambiando el tamaño de una imagen es para reducir la cantidad de píxeles (se repetirán en algún momento) mientras los mantengo representativos. Menciono esto porque me parece que la interpolación es fundamental para este propósito; por lo tanto, obtener el tipo correcto debería ser bastante importante.

Entonces, mi pregunta es: ¿cuáles son las ventajas y desventajas de cada método de interpolación? ¿En qué se diferencian y cuál debo usar?


El vecino más cercano será lo más rápido posible, pero perderá información importante al cambiar el tamaño.

La interpolación lineal es menos rápida, pero no dará lugar a la pérdida de información a menos que esté reduciendo la imagen (lo que es).

La interpolación cúbica (probablemente en realidad "Bicúbica") utiliza una de las muchas fórmulas posibles que incorporan varios píxeles vecinos. Esto es mucho mejor para reducir imágenes, pero aún está limitado en cuanto a la cantidad de reducción que puede hacer sin pérdida de información. Dependiendo del algoritmo, es probable que pueda reducir sus imágenes en un 50% o 75%. La desventaja principal de este enfoque es que es mucho más lento.

No estoy seguro de qué es "área"; en realidad puede ser "Bicúbico". Con toda probabilidad, esta configuración le dará su mejor resultado (en términos de pérdida / apariencia de la información), pero a costa del tiempo de procesamiento más largo.

Actualización: este enlace proporciona más detalles (incluido un quinto tipo no incluido en su lista):

http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html?highlight=resize#resize


Los algoritmos son: (las descripciones son de la documentación de OpenCV)

  • INTER_NEAREST - una interpolación del vecino más cercano
  • INTER_LINEAR: una interpolación bilineal (utilizada por defecto)
  • INTER_AREA - remuestreo usando una relación de área de píxeles. Puede ser un método preferido para la decimación de imágenes, ya que da resultados libres de muaré. Pero cuando la imagen se amplía, es similar al método INTER_NEAREST.
  • INTER_CUBIC: una interpolación bicúbica sobre un vecindario de 4x4 píxeles
  • INTER_LANCZOS4: una interpolación de Lanczos en un vecindario de 8x8 píxeles

Si quieres más velocidad usa el método Vecino más cercano.

Si desea preservar la calidad de la imagen después de reducir el muestreo, puede considerar el uso de interpolación basada en INTER_AREA, pero nuevamente depende del contenido de la imagen.

Puedes encontrar un análisis detallado de la comparación de velocidad here

A continuación se muestra la comparación de velocidad en una imagen de 400 * 400 px tomada del enlace anterior


Todos ellos pierden información, que usted utiliza depende de la velocidad que necesita, de cuánta información puede permitirse perder y de la naturaleza de su imagen.

Lo siento, no hay una respuesta correcta, por eso hay una opción