Solucionando um labirinto usando transformação morfológica

julho 12, 2015|Tutoriais|

Neste post vou mostrar como resolver um labirinto usando transformação morfológica, e como bônus você pode aprender o básico de processamento de imagens usando o EmguCV .

O código funciona para “labirintos perfeitos”, são labirintos que tem somente um caminho de um ponto ao outro, sem seções, sem caminhos circulares e sem áreas abertas.

Para gerar os labirintos eu usei essa ferramenta online maze generator. Imagem para os testes:

ImageGenerator

Abrindo a imagem:

Convertendo a imagem para binário

maze-binary

Note que estamos usando um threashold invertido para obter a imagem binária. Isso nos dará uma imagem onde as paredes serão brancas ao invés de pretas.

Encontrando as paredes obtendo os contornos,

Estamos assumindo que este é um labirinto perfeito que tem somente duas paredes. Pegamos a primeira parede,

maze-first-wall

Para aqueles que conhecem pouco de morfologia segue um ótimo texto: Morfologia Matemática para imagens em tons de cinza.

Dilatamos a parede em alguns pixels.

maze-dilate

Erode a mesma quantidade de pixes

maze-erode

Agora temos a imagem “dilatada” e “erodida” conseguimos a solução subtraindo uma da outra.

maze-absdiff

Desenharemos a solução em vermelho na imagem de resultado.

Solução do labirinto

Compartilhar esta publicação::