Estou tentando usar uma câmera colorida para rastrear vários objetos no espaço. Cada objeto terá uma cor diferente e, para poder distinguir bem entre cada objeto, estou tentando garantir que cada cor atribuída a um objeto seja tão diferente de qualquer cor quanto possível em qualquer outro objeto.
No espaço RGB, temos três planos, todos com valores entre 0 e 255. Neste cubo , eu gostaria de distribuir as n cores para que haja tanto distância entre si e os outros quanto possível. Uma restrição adicional é que ( 0 , 0 , 0 ) e ( 255 , 255 , 255 ) (ou o mais próximo possível deles) devem ser incluídos no ncores, porque quero ter certeza de que nenhum dos meus objetos use as duas cores porque o plano de fundo provavelmente será uma dessas cores.
Provavelmente, (incluindo preto e preto) não será superior a 14.
Agradecemos antecipadamente por quaisquer dicas sobre como obter essas cores.
Respostas:
Todas as cores estarão na superfície do cubo RGB, a menos que eu esteja enganado, pelo mesmo motivo que toda a carga elétrica aparece na superfície dos condutores elétricos. Isso sugere o seguinte método para determinar as cores:
Depois que as partículas convergem, você tem o arranjo das cores interpretando pontos como cores. Inicialmente, as partículas podem ser dispostas aleatoriamente na superfície do cubo, com um pequeno espaçamento (ajuda a problemas de convergência e estabilidade). Colocar pequenos grupos nas faces do cubo deve funcionar.
Para evitar ficar preso em um mínimo local (em vez de global), você pode "pulsar" algum pequeno campo elétrico aleatório após a convergência e verificar se o sistema volta à mesma configuração ou diferente. É um pouco improvável que partículas colocadas aleatoriamente façam isso neste cenário, mas possível.
EDITAR:
Como apontado nos comentários, a suposição de que soluções ótimas deveriam estar apenas na superfície provavelmente não vale para todas as geometrias no caso discreto.
Felizmente, isso tem pouca influência no restante da técnica descrita acima. Partículas podem ser inicialmente colocadas em qualquer lugar; deixe algum espaço entre pares de partículas para estabilidade e cobertura e, em seguida, itere o sistema para convergência, em seguida, pulsar algumas vezes (possivelmente com intensidade crescente) para ver se você pode fazer com que o sistema converja para uma configuração diferente (possivelmente melhor) .
Observe também que acredito que esse método irá maximizar algo como "(harmônica?) Distância média entre pares de partículas". Se você deseja maximizar a distância mínima entre pares de partículas ou alguma outra média (geométrica?) Entre pares de partículas, isso pode não lhe proporcionar a melhor solução.
De qualquer forma, acho que essa técnica fornecerá uma maneira fácil de criar bons conjuntos de cores aproximadamente ótimos ... obter soluções "ideais" reais provavelmente não é necessário para o seu caso de uso. Naturalmente, se uma solução exata e comprovadamente ótima é desejada, a simulação numérica provavelmente não é o melhor caminho a percorrer.
fonte