Como reconhecer cores da cartela de cores?


9

Estou desenvolvendo um aplicativo de visão que está usando a tabela de cores abaixo e a câmera para extrair a cor de cada patch na tabela. Para fazer isso, primeiro preciso detectar a área do gráfico em uma imagem e combinar a área com o modelo existente que contém os locais dos patches.

Minha pergunta: preciso detectar a área de amostra de cores reconhecendo quatro cantos do gráfico. Você pode ver os cantos que os pequenos retângulos inseridos indicam na imagem abaixo. Eu sei que uma maneira de fazer isso é permitir que o usuário selecione esses cantos clicando nele. Mas existe alguma maneira de detectar automaticamente quatro cantos da imagem.

insira a descrição da imagem aqui


Apenas curioso, onde se pode adquirir uma tabela de referência de cores?
precisa saber é o seguinte

@ hotpaw2 Como quase sempre, o google. Pesquise o termo "it8 target"
Tae-Sung Shin

Respostas:


4

Você pode abrigar linhas de hough para detectar a área de cor

  • Primeiro detecte todas as linhas
  • Linhas com maior comprimento seriam as mais externas
  • Escolha a linha horizontal superior e faça a correspondência de modelos para os quadrados.
  • Depois de encontrar os quadrados, percorra pedágio para baixo e você alcançará o outro conjunto de quadrados.
  • Marque todos os pontos onde os quadrados foram encontrados
  • Agora você tem uma área delimitadora para a cartela de cores.

2

Cada matriz 2D de um componente de cor (RGB, et.al.) é bastante alto contraste e distinto. Portanto, eu poderia tentar usar uma FFT 2D complexa de cada componente de cor para determinar a escala e o deslocamento da imagem da foto versus a de uma imagem de referência. Em seguida, use-os para ajustar as coordenadas medidas / conhecidas dos cantos e / ou manchas na imagem de referência para produzir coordenadas na foto.

Talvez você precise medir em primeira mão algumas coordenadas em uma imagem de referência usando um editor de bitmap.


1

Como primeiro passo - eu removeria toda a bagunça com cinza e texto. Começando pelos quatro lados, pararei até que a maioria dos pixels seja da cor "cinza" exclusivamente conhecida.

Isso deixará você com apenas o tabuleiro de damas composto por cores diferentes. Você espera cerca de 22x12 - cerca de 264 cores.

Um método mais simples seria aplicar um algoritmo de palatalização mais simples. Se você precisar traduzir isso em uma imagem GIF, aplica-se a quantização de cores com cada cluster de cores representado como a cor do centróide.

Isso seria especificamente fácil no seu caso, porque a fonte já é um paladar de algum tipo e você pode adivinhar um bom começo.

Veja isso:

NeuQuant: http://members.ozemail.com.au/~dekker/NEUQUANT.HTML

Quantização de cores Octree: http://www.cubic.org/docs/octree.htm . Veja isso também.

Estas são apenas algumas referências; mas você encontrará código pronto para usar na maioria das bibliotecas que usam esses formatos de imagem. (BMP, PNG e GIF suportam essas representações). Também verifique libpng e libjpeg para algumas implementações rápidas.


0

Por que não procurar os limites do gráfico, em vez de cantos? Você pode tentar usar um detector de borda e encontrar linhas retas usando a Transformação de Hough.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.