Dado que algunas personas en los comentarios de las preguntas me dijeron repetidamente que era bastante trivial, en realidad lo hice: una aplicación que clasifica las imágenes en el directorio actual al dejar la comparación directa frente al usuario . 1
Escrito en C # para .NET 2. También funciona en Mono (probado en Linux hasta ahora). Requiere dcraw en la RUTA (el ejecutable compilado para Windows u OS X se puede descargar aquí ).
Actualmente la interacción del usuario es muy rudimentaria. Esto probablemente está sujeto a cambios. Además, el código es un desastre maligno como de costumbre con un trabajo de pirateo.
La aplicación debe iniciarse en un directorio que contenga las imágenes para ordenar. Luego procede a cargar todas las imágenes que puede encontrar y manejar (JPEG, GIF, PNG, BMP son compatibles de forma nativa, todos los demás formatos son compatibles con dcraw o se omiten si no). Mantenga la cantidad de imágenes razonable, ya que cada imagen está precargada en la memoria para acelerar la visualización. Intenté iniciarla en una carpeta con alrededor de 600 imágenes y la terminé con alrededor de 2 GiB de uso de memoria.
Después de eso, obtienes una vista de dos paneles con una imagen a la izquierda y a la derecha. Haz clic en el que consideres el mejor de los dos. Entonces obtendrás dos nuevas imágenes. Continuar hasta que esté hecho. Puede cerrar el programa si lo desea, se reanudará donde lo dejó.
Después de haber hecho todas las comparaciones necesarias 2, se puede ver el resultado:
Tiene la lista ordenada de imágenes a la izquierda con la clasificación más alta en la parte superior y la clasificación más baja en la parte inferior.
Lista de quehaceres:
- Permitir seleccionar las imágenes para ordenar.
- Resuelva el problema de que las imágenes de retratos siempre se muestran en orientación horizontal (al menos para imágenes en bruto. Dcraw permite la rotación pero no puede hacerlo automáticamente y no veo una manera fácil de descubrirlo externamente).
- Reduzca el uso de memoria para grandes cantidades de imágenes.
- Mezcle las imágenes de antemano para que las ráfagas de imágenes casi idénticas sean menos propensas a compararse directamente entre sí.
- Cambie la sincronización entre el subproceso de clasificación y la interfaz de usuario para que ya no dependa de las
Thread.Sleep
encuestas, sino que utilice métodos de sincronización adecuados.
- Agregue una vista previa 1: 1 (o al menos una más grande). Actualmente, esto no se puede usar para juzgar las cosas en el nivel de píxeles.
Son las 5:26 aquí, así que dejo de hackear eso ahora.
El código fuente se puede encontrar en mi repositorio SVN y se publica bajo la licencia MIT. Doy la bienvenida a los parches ;-)
Las imágenes en las capturas de pantalla anteriores son mías.
1 Por supuesto, no fue tan trivial como otros querrían hacerme creer. Después de una larga lucha con Libraw, simplemente tomé la ruta dcraw. No es bonito, pero funciona con una cantidad mínima de código.
2 Esto está en el orden de n log 2 n donde n es el número de imágenes comparadas, por lo tanto, para 20 imágenes puede esperar algo alrededor de 20 × 4.3 ≈ 85 comparaciones: lo sé, no es un número pequeño. Para las 300 imágenes que mencionó, obtendría alrededor de 2400. El número real que debe realizarse manualmente es (a) diferente (ya que las complejidades omiten el factor lineal) y (b), según lo observado hasta ahora, más pequeño. Para evitar inconsistencias, al usuario nunca se le preguntará dos veces en las mismas dos imágenes (en cualquier orden) y nunca se le preguntará con la misma imagen en ambos lados.