image - subjetividad - subjetivo ejemplos
Cómo detectar la calidad de imagen subjetiva (6)
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.
Tengo la siguiente idea para darme cuenta de esto heurísticamente:
- Obviamente, incorpore 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 las imágenes grandes, aunque esto podría funcionar en mi escenario (servidor gordo, no hay muchas subidas), y siempre podría construir un "cortocircuito" alrededor de los pasos más caros. si la imagen excede una cierta resolución.
¿Hay algo más que pueda probar o hay una forma de hacerlo de manera más eficiente?
Evaluar la imagen (lo mismo vale para el sonido o el video) la calidad no es una tarea fácil, y existen numerosas publicaciones que abordan el problema.
Mucho depende de la naturaleza de la imagen: un conjunto diferente de criterios es apropiado 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 de la evaluación de la calidad de la imagen .
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 desea profundizar en la evaluación de la calidad de la imagen, la comunidad de aprendizaje automático también realiza muchas investigaciones.
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 alguna, 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 razones 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.
Podría intentar buscar en las etiquetas EXIF de la imagen (usando algo como exiftool), lo que obtenga 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.
La otra cosa que debes verificar es el histograma de la imagen: ten cuidado con las imágenes sesgadas hacia la izquierda, lo que sugiere una baja 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 complicada porque la mayoría de las "reglas" que podría implementar podrían romperse para obtener un efecto artístico.
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 de los parques, 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í?
Este documento de Zhou Wang, Hamid R. Sheikh y Alan C. Bovik podría servir como punto de partida para aquellos que tienen una gran necesidad de dicha función.
También me interesa saber qué tan borrosa es una fotografía.
¿Qué tal esto?
- medir el tamaño de bytes de la imagen cuando se comprime como JPEG
- reducir la escala de la imagen a 1/4
- upscale 4x, usando algún tipo de interpolación básica
- comprimir esa versión usando JPEG
- compare los tamaños de las dos imágenes comprimidas.
Si el tamaño no bajó mucho (más allá de un cierto umbral de porcentaje), la reducción de escala y el aumento de escala no perdieron mucha información, por lo tanto, la imagen original es la misma que la que se amplió.