¿Hay algún algoritmo disponible para analizar la complejidad de una imagen? Básicamente, estoy escribiendo un script Perl que usará la función system() para iniciar MPlayer en segundo plano y generar de 10 a 20 capturas de pantalla para el archivo de video de entrada, y me gustaría que pueda descartar cualquier imagen simple como una toma del cielo, o un fondo negro, y otras imágenes simples y conserva solo 3 de esas imágenes con la mayor complejidad o la mayor cantidad de colores. ¿Hay algún módulo o programa separado que pueda usar para lograr esto? Supongo que quizás Image :: Magick puede encargarse de esto.Análisis de la complejidad de la imagen
Respuesta
ver lo pequeños una copia comprimida-JPEG es. JPEG trabaja duro para eliminar redundancias en la información de la imagen e imágenes "complejas" simplemente no tienen tanta redundancia para eliminar.
Esta es una buena idea: compare el tamaño del mapa de bits de una imagen con el tamaño del archivo jpeg, cuanto mayor sea la diferencia entre los dos, más simple será la imagen. – Kazar
Esto podría funcionar para imágenes fotográficas, pero tengo la sensación de que no funcionaría tan bien en arte de línea, texto u otras cosas que jpeg no maneja bien. Sin embargo, para ese tipo de imágenes, puede usar la misma técnica con un png o gif. – Seth
Esto FUNCIONA sorprendentemente bien, lo he usado para elegir la mejor miniatura de un conjunto de miniaturas anteriores y es genial para deshacerme de las negras. –
Puede considerar hacer un FFT y buscar información de alta frecuencia en las imágenes ... Eso le daría una idea aproximada de la complejidad.
No sé de un método de biblioteca ya hecho, pero hay algunos algoritmos para medir esto ...
Se podría tratar de sumar los valores absolutos de las diferencias de un píxel al siguiente , por separado por canal de color. La imagen de muestra con el resultado más alto ganaría, entonces. Aún así, sería una medida aproximada muy ...
poco de pseudo-código, ya no sé Perl:
complexity = 0
// image coordinates start at [0,0]
for x = 1 to image.max_x:
for y = 1 to image.max_y:
complexity += abs(image[x,y].red - image[x,y-1].red)
complexity += abs(image[x,y].red - image[x-1,y].red)
complexity += abs(image[x,y].blue - image[x,y-1].blue)
complexity += abs(image[x,y].blue - image[x-1,y].blue)
complexity += abs(image[x,y].green - image[x,y-1].green)
complexity += abs(image[x,y].green - image[x-1,y].green)
Preferirá las imágenes "ruidosas" a las imágenes "densas en información". Considere un marco de ruido blanco/nieve. –
Bien, eso es correcto. Pero en casos típicos, esto también funcionaría. La única película de la que recuerdo imágenes ruidosas sería "The Ring", y ese fotograma sería una vista previa bastante típica para la película, creo ;-) Por cierto, también podrías medir lo que este algo vomitaría para una imagen de ruido blanco y no permitir nada por encima de un umbral un poco por debajo de esa medición. Y, para ser justos, este algo solo produciría información valiosa en imágenes que tienen las mismas dimensiones. OTOH, en la aplicación que mencionó el OP, sería inherentemente el caso. – orithena
Mi primera respuesta sería el método JPEG pero alguien ya lo sugirió, por lo que mi siguiente respuesta sería calcular un histograma ($image->Histogram()
). Solo mira la cantidad de colores diferentes en la imagen. Para fotos (cosas como el cielo), cuantos más colores haya en una imagen, más compleja será.
No estoy de acuerdo. Las imágenes en blanco y negro pueden ser muy densas en información http://obeygiant.com/images/2008/10/obey-floral-red-500x490.jpg .... Sin embargo, usted dijo "fotos". –
Joe: Por eso lo califiqué con "Para fotos". Su ejemplo fue "fondo negro" o "cielo", ambos implican fotos en color. De hecho, incluso me preguntó cómo contar los colores, que es la respuesta que di. – Gabe
¡Bueno, esa imagen es una foto de un dibujo! Pero sí, veo tu punto y estoy de acuerdo en que proporcionaste la solución a la pregunta. –
Gran papel here sobre el tema. Considera el problema más estrecho de emparejar imágenes en una aplicación militar, pero estudia la investigación y contiene muchas métricas diferentes de complejidad de imagen que han sido consideradas por varios autores. Es posible que necesite solo uno o dos de los métodos en su tarea particular. Echale un vistazo.
- 1. Análisis de algoritmos (complejidad)
- 2. Herramientas de análisis de complejidad de código más allá de la complejidad ciclomática
- 3. ¿Hay alguna herramienta que pueda determinar realizar análisis de código para la complejidad de Big-O?
- 4. Diferencia entre "complejidad" métrico y "complejidad/método de la" métrica
- 5. Complejidad de la búsqueda de un Lucene
- 6. Complejidad de la sustitución de Regex
- 7. Complejidad algorítmica de la función PHP strlen()
- 8. Complejidad del tiempo de la tabla hash
- 9. ¿Cuál es la complejidad de OrderedDictionary?
- 10. Complejidad del tiempo de la potencia()
- 11. ¿Qué es la Complejidad ciclomática?
- 12. ¿Cuál es la complejidad de la función de registro?
- 13. Reducción de la complejidad de la multiplicación polinómica
- 14. Reducción de la complejidad de la plantilla en C++
- 15. Análisis de la opinión de la entidad
- 16. ¿Cómo calcular la complejidad exacta de un algoritmo?
- 17. Estrategias de complejidad de la contraseña: ¿alguna evidencia para ellas?
- 18. ¿La complejidad de la detección de errores IDE y la autocompletación dependen de la sintaxis del lenguaje?
- 19. Algoritmo para estimar la complejidad de la palabra
- 20. ¿Por qué la complejidad de A * exponencial en la memoria?
- 21. ¿cómo se calcula la complejidad de la contraseña?
- 22. ¿Cuál es la complejidad temporal de la iteración TreeSet?
- 23. Técnicas para reducir la complejidad en la programación de juegos
- 24. ¿Cuál es la complejidad de la expresión regular?
- 25. Establecer el tiempo y la complejidad de la velocidad
- 26. Complejidad de los lenguajes de programación
- 27. Complejidad del tiempo de consulta de la base de datos
- 28. ¿Cómo luchas contra la complejidad del diseño?
- 29. ¿Podemos medir la complejidad del sitio web?
- 30. Analizando algoritmos para la complejidad del tiempo
Está solicitando un algoritmo mucho más complejo de lo que cree ... – RedFilter