docechickens!!! sigues vivo jeje. seco, pero vivo.
En otro foto tambien han posteado sobre este asunto. Pego mis impresiones:
Uy que curioso, lo he visto sin audio pero creo que lo he entendido. De lo que se trata es de un algoritmo de reescalado rápido, tanto para disminuir como aumentar el tamaño de las imágenes. Lo que busca no es dar más calidad que una interpolación (que seguro que no la da porque de entrada por su naturaleza va a distorsionar un poquito la imagen), sino ser rápido, pero dando más calidad que por ejemplo la interpolación por selección de pixels (nearest neighbour) que hace Photoshop cuando editando una imagen hacemos zoom en ella.
por lo visto lo que hace es, para alterar el ancho/alto de una imagen, detectar "caminos de píxels" similares en tono y luminosidad, o sea sin transiciones de color en ellos, es decir sin detalles, más o menos verticales/horizontales, que adquieren la forma de rayos.
En un hipotético reescalado para reducir el ancho de la imagen, simplemente eliminaríamos estos rayos desplazando los pixels que queden a la derecha del rayo, lo que es una operación rapidísima.
En un reescalado para aumentar, duplicará estos rayos que al ser "caminos de color" muy similares cantarán menos.
Alguien pensará, "vale, pero por qué es rápido hacer esto?". Imagino que el truco está en que todos los posibles rayos o "caminos de píxels", tanto los verticales (para reescalado en anchura), como los horizontales (para reescalado en altura) se precalculan al principio de todo, y una vez precalculados ir aplicándoselos a la imagen conforme el usuario estira de la imagen para arriba o para abajo es muy rápido.
Como no tengo audio no sé si me queda clara la parte final, en que selecciona personajes y es como si los eliminara. Me da que lo que hace es forzar a que los caminos pasen por dichos personajes, de modo que en cuanto reducimos (aquí sí que solo vale para reducir) el tamaño de la imagen, lo primero que se sacrifican son los personajes. A costa de una distorsión considerable de la imagen eso sí.
Es algo que veo factible probar, es cuestión de diseñar el algoritmo para calcular los rayos. Bastaría con ir comparando pixels en sentido de arriba->abajo, o de izq.->derecha, y detectar con cuales de sus por ejemplo 3 pixels contiguos tiene más similitud cada pixel del rayo calculado. Es un poco como un rayo de verdad, que busca para llegar a la tierra el camino que le ofrece menos resistencia; pues aquí se buscará el camino más homogéneo con los píxels previos del rayo.
Estoy elucubrando, pero imaginad que nuestra imagen tiene 8x4 pixels:
ABCDEFGH
IJKLMNOP
QRSTUVWX
12345678Y empezamos a trazar un rayo vertical partiendo de
D:
- Comparamos el color de D con los de los pixeles contiguos hacia abajo: KLM, y el más parecido es
M.
- Ahora repetimos con los pixels que tiene M por debajo: TUV, y el más parecido es
U.
- Y lo mismo con los que tiene U debajo: 456, y el más parecido es
6.
El rayo final sería: "DMU6"
Y en un reescalado de la imagen para reducir su ancho a 7x4 pixels, nos quedaríamos con:
ABCEFGH
IJKLNOP
QRSTVWX
1234578Que a buen seguro dará un resultado más agradable (con menos aliasing y artefactos), que si simplemente nos hubiéramos cepillado toda la columna de D: "DLT4"
ABCEFGH
IJKMNOP
QRSUVWX
1235678Me ha parecido que muestran distintas estrategias o modelos para determinar cuales son esos rayos.
Asimismo, habrá rayos y rayos, los primeros que debieran "caer" en una reducción de tamaño, o ser duplicados en un aumento de tamaño, serán aquellos que tengan comparativamente una mayor similitud de pixels. Siguiendo el ejemplo de arriba, "DMU6" es el rayo óptimo pasando por D, pero quizá el rayo "BJS3" tiene unos saltos todavía menos abruptos que "DMU6", entonces "BJS3" debería ser elegido en primer lugar para efectuar el reescalado.
Repito que no me parece un algoritmo de reescalado orientado a mejorar la calidad de la interpolación, ni a obtener la mayor velocidad, sino optimizar el compromiso entre ambos: gran velocidad (para poder reescalar en tiempo real a golpe de ratón) y mejor calidad que el típico nearest neighbour.
Lo que me gusta es que puede ser útil para obtener imágenes de gran nitidez para Web, porque no deja de ser un algoritmo de eliminación de pixels (sin interpolación, ni por tanto halos de enfoque), pero mejorado. Esto último lo digo en relación a este
tutorial reescalado gran nitidez donde usaba precisamente el reescalado nearest neighbour de PS para obtener mucha nitidez.
Cómo lo veis?