2011-06-02 10 views
5

Supongamos que deseo incluir un algoritmo de escalamiento/reducción de imagen en mi programa. El tiempo de ejecución no es importante, el resultado es "calidad". ¿Cómo se define "calidad" en este caso y cómo se elige el mejor algoritmo entre las opciones disponibles?¿Cómo comparar la "calidad" de dos algoritmos de escalamiento de imagen?


En una nota lateral, si esto es demasiado general, el problema subyacente para el que estoy tratando de encontrar una solución es la siguiente: supongamos que tengo una gran cantidad de imágenes que necesitaré para mejorar la resolución en tiempo de ejecución (un video, en realidad). Puedo preprocesarlos y mejorarlos un poco con un algoritmo lento y de alta calidad, pero no sé la resolución final (bueno, la gente tiene monitores diferentes después de todo), así que no puedo cambiar el tamaño de eso inmediatamente. ¿Sería beneficioso si lo elevara un poco con mi algoritmo de alta calidad y luego dejara que el jugador aumentara la resolución necesaria en el tiempo de ejecución (con un algoritmo rápido pero de baja calidad)? ¿O debería dejar el video tal como está y dejar que todo el escalado se haga de una vez en el tiempo de ejecución?

Respuesta

1

La única forma de juzgar objetivamente la calidad es hacer alguna investigación (semi) científica. Recluta a varios participantes. Muéstreles las imágenes escaladas en orden aleatorio y haga que clasifiquen la calidad subjetiva (puntos de bonificación por hacerlo doble ciego). Luego promedia los puntajes y elige el algoritmo con el puntaje promedio más alto (y tal vez prueba la significancia estadística).

Querrá asegurarse de que las imágenes que prueba proporcionen un muestreo representativo de las imágenes reales que está utilizando. Si lo haces para video, probablemente sería una buena idea usar videoclips cortos como las imágenes de prueba, en lugar de imágenes fijas, ya que sospecharía que las personas percibirían la calidad de escalado de manera diferente para esos dos.

Si no le importa la rigurosidad, puede realizar las pruebas consigo mismo como el único sujeto de prueba.

En cuanto a hacer un prescaling inicial, mi conjetura es que no valdría la pena. Ampliar una imagen más grande no debería ser menos costoso que escalar desde el original más pequeño, y yo esperaría que fuera mucho más caro que escalar por un factor convincente, como 2x. Sin embargo, no confíe en mi palabra ... ¡prueba!