Me gustaría ordenar una lista unidimensional de colores para que los colores que un humano típico percibiría como "similares" entre sí se encuentren uno cerca del otro.¿Cómo ordenar una lista de colores en una dimensión?
Obviamente, este es un problema difícil o imposible para obtener "perfectamente", ya que los colores se describen típicamente con tres dimensiones, pero eso no significa que no haya algunos métodos de clasificación que se vean más naturales que otros.
Por ejemplo, la clasificación por RGB no funciona muy bien, ya que va a clasificar en el orden siguiente, por ejemplo:
(1) R = 254 G = 0 B = 0 (2) R = 254 G = 255 B = 0 (3) R = 255 G = 0 B = 0 (4) R = 255 G = 255 B = 0
Eso es, alternará esos colores rojo, amarillo, rojo, amarillo, con los dos "rojos" que son imperceptiblemente diferentes entre sí, y los dos amarillos también son imperceptiblemente diferentes el uno del otro.
Pero clasificar por HLS funciona mucho mejor, en términos generales, y creo que HSL es incluso mejor que eso; con cualquiera, los rojos estarán uno al lado del otro, y los amarillos estarán uno al lado del otro.
Pero HLS/HSL también tiene algunos problemas; las cosas que las personas percibirían como "negras" podrían separarse una de la otra, al igual que las cosas que las personas percibirían como "blancas".
De nuevo, entiendo que tengo que aceptar que habrá algunas divisiones como esta; Me pregunto si alguien ha encontrado una mejor manera que HLS/HSL. Y soy consciente de que "mejor" es algo arbitrario; Me refiero a "más natural para un humano típico".
Por ejemplo, un pensamiento vago que he tenido, pero que aún no he intentado, es quizás "L es lo más importante si es muy alto o muy bajo", pero por lo demás es lo menos importante. ¿Alguien ha probado esto? ¿Ha funcionado bien? ¿Qué específicamente decidiste que significaba "muy bajo" y "muy alto"? Y así. ¿O alguien ha encontrado algo más que mejore en HSL?
También debo tener en cuenta que soy consciente de que puedo definir una curva de relleno de espacio a través del cubo de colores y ordenarlos de forma unidimensional tal como se encontrarían al viajar a lo largo de esa curva. Eso eliminaría las discontinuidades percibidas. Sin embargo, no es realmente lo que quiero; Quiero agrupaciones generales de gran escala decentes más de lo que quiero agrupaciones perfectas a pequeña escala.
Gracias de antemano por cualquier ayuda.
¿Cuántos colores (más o menos) estamos hablando? ¿Y necesita un algoritmo para esto, o bastaría un enfoque basado en tabla o en cubo? –