2009-02-18 26 views
17

Para una herramienta de carga de imágenes, quiero detectar la calidad (subjetiva) de una imagen automáticamente, lo que da como resultado una calificación de la calidad.Cómo detectar la calidad de imagen subjetiva

que tienen la siguiente idea de realizar esta heurística:

  • incorporan Es evidente que la resolución en la calificación.
  • Comprimirlo a JPG (75%), descomprimirlo y comparar el tamaño jpg contra el tamaño descomprimido para obtener una proporción. Mientras más borrosa sea la imagen, mayor será la proporción.

Obviamente, mi enfoque consumiría muchos ciclos y memoria si se clasifican imágenes grandes, aunque esto sería útil en mi escenario (servidor gordo, no muchas cargas) y siempre podría construir en un "cortocircuito" "alrededor de los pasos más costosos si la imagen excede una cierta resolución.

¿Hay algo más que pueda probar, o hay alguna manera de hacerlo de manera más eficiente?

+0

Quité la etiqueta de Python porque no parecía relevante –

+0

Parece que están midiendo la resolución, el contraste y la nitidez de la imagen, que es "objetiva" y muy diferente de "calidad subjetiva". La calidad subjetiva es la que siente el espectador y no puede determinarse programáticamente, ya que incluso 2 humanos no estarían de acuerdo con eso. – Galghamon

+0

Aquí es donde entran en juego los métodos de aprendizaje automático. Pero actualmente los resultados no son asombrosos y generalmente requieren mucha potencia informática. – Anonymous

Respuesta

9

Assesing the image (lo mismo vale para sonido o video) la calidad no es una tarea fácil, y hay numerosas publicaciones que abordan el problema.

Mucho depende de la naturaleza de la imagen: diferentes conjuntos de criterios son apropiados para imágenes creadas artificialmente (es decir, diagramas) o imágenes naturales (es decir, fotografías). Hay efectos sutiles que deben tenerse en cuenta, como enmascaramiento de color, enmascaramiento de luminancia, percepción de contraste. Para algunas imágenes, una relación de compresión dada es perfectamente adecuada, mientras que para otras dará como resultado una pérdida significativa de calidad.

Aquí hay una publicación de acceso libre que brinda una breve introducción al tema image quality evaluation.

El método que mencionaste, comprimir la imagen y comparar el resultado con el original está lejos de ser perfecto. ¿Cuál será la métrica que planea usar? MSE? MSE por bloque? Por supuesto, no es demasiado difícil de implementar, pero los resultados serán difíciles de interpretar (considere las imágenes con componentes de alta frecuencia y sin ellas).

Y si quiere profundizar más en la evaluación de la calidad de imagen, también hay mucha investigación realizada por la comunidad de aprendizaje automático.

5

Puedes intentar buscar en las etiquetas EXIF ​​de la imagen (usando algo como exiftool), lo que obtienes variará mucho. En mi SLR, por ejemplo, incluso puede ver cuál de los puntos de enfoque estaba activo cuando se tomó la imagen. También puede haber algo sobre la calidad de la compresión.

El otro aspecto a verificar es el histograma de la imagen: tenga cuidado con las imágenes sesgadas hacia la izquierda, lo que sugiere una sub-exposición o muchos píxeles saturados.

Para el desenfoque de la imagen puede ver los componentes de alta frecuencia de la transformada de Fourier, esto es, probablemente, acceder a los parámetros relacionados con la compresión JPG de todos modos.

Esta es un área un poco difícil porque la mayoría de las "reglas" que podría implementar podrían romperse por un efecto artístico.

4

Me gustaría derribar la idea de "incorporar obviamente la resolución". La resolución no te dice nada. Puedo escalar una imagen por un factor de 2, cuadruplicando la cantidad de píxeles. Esto no agrega información en absoluto, ni mejora la calidad.

No estoy seguro acerca de la idea de "comprimir a JPG". JPG es un algoritmo orientado a la fotografía. No todas las imágenes son fotos. Además, un cielo azul se comprime bastante bien. Uniformemente gris incluso mejor. ¿Crees que los tipos de nubes exactos determinan la calidad de la imagen?

La nitidez es una mala idea, por motivos similares. La profundidad de campo no está relacionada trivialmente con la calidad de la imagen. Los elementos fotografiados sobre un fondo negro tendrán una gran cantidad de píxeles con una intensidad bastante baja, intencionalmente. Nuevamente, esto no indica subexposición, por lo que el histograma tampoco es un indicador de buena calidad.

2

Pero, ¿y si las fotos son "comerciales"? ¿Funciona el valor de la tecnología existente si las fotos son de objetos de todos los días y deliberadamente no artísticas?

Si contrato a cientos de personas para que tomen fotos de los bancos del parque, quiero saber rápidamente qué imágenes son de mejor calidad (enfocadas, bien iluminadas) y cuáles no. No quiero imágenes de gatitos, personas, puestas de sol, etc.

¿O qué pasa si se supone que las imágenes son elementos para un catálogo? No hay modelos, solo prendas. ¿El procesamiento de calidad de imagen ayudaría allí?

0

También estoy realmente interesado determinar la forma borrosa es una fotografía.

Qué tal esto:

  1. medir el tamaño en bytes de la imagen cuando se comprime como JPEG
  2. descendente de la escala de la imagen a 1/4 °
  3. exclusivo que 4x, utilizando algún tipo de interpolación básica
  4. comprimir esa versión usando JPEG
  5. comparar los tamaños de las dos imágenes comprimidas.

Si el tamaño no bajó demasiado (más allá de un cierto umbral de porcentaje), la reducción de escala y la ampliación no perdieron demasiada información, por lo tanto, la imagen original es igual a algo que se amplió.

Cuestiones relacionadas