Pergunta

Eu estou tentando encontrar um bom algorihtm que detecta cantos em uma imagem em um telefone celular. Existem vários algoritmos para fazer que eu não tenho certeza qual deles terá melhor desempenho em um ambiente limitado memória e processador.

Especificamente eu estou tentando encontrar uma grade de sudoku em uma fotografia tirada com a câmera do telefone. Eu estou usando C # e não conseguimos encontrar bibliotecas que tem características básicas de processamento de imagem. Implementei um filtro de Sobel para fazer a detecção de bordas e que é onde eu estou.

Para deixar claro a pergunta é alguém tem alguma sugestão para usar um algoritmo específico ou uma biblioteca?

Foi útil?

Solução

Eu não diria "detecção de canto" por si só é uma boa maneira de fazer isso. Dê um passo para trás e pensar sobre uma foto de uma grade sodoku, há provavelmente muitas suposições que você pode fazer para simplificar as coisas.

Por exemplo, uma grade sodoku sempre parece exatamente o mesmo:

  • quadrado branco
  • 9 x 9 grade regular

tratar a imagem no espaço de cor HSV permitirá que você olhar para áreas de luminosidade (cores branco-ish), RGB é um pouco calças para a maioria das técnicas de processamento de imagem.

limiar a imagem deve, então, reduzir o ruído

Ajustar a imagem histograma primeiro pode também dar-lhe melhores resultados, uma vez que provavelmente irá branquear a rede (depende da imagem embora).

Então tudo que você tem a fazer é encontrar um quadrado. Porque você sabe que a grade é regular dentro dela, você pode dividir os pixels se em conformidade e OCR os quadrados com um número dentro.

: D

Outras dicas

Uma vez que você estiver procurando por uma grade 9x9 normal considerar o Hough transformar . É uma maneira de executar um detector de borda em primeiro lugar, encontrar todas as linhas retas usando transformar o Hough original, e em seguida, tentar descobrir qual deles formam uma grade. Ou talvez você pode vir até com uma maneira inteligente de parametrizar toda a grade.

Eu encontrei OpenCV ser muito útil no processamento de imagens, e eu gostaria de me marcar um programador bastante médio.

Aqui está um exemplo (em C ++ , mas você poderia provavelmente porta-lo) que faz a detecção de canto em OpenCV.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top