Encontre uma linha específica em uma imagem


9

Quero encontrar a linha entre a cor azul e a cinza na figura a seguir:

insira a descrição da imagem aqui

Mais exatamente, os pontos finais dessa linha.

A transformação Hough é uma escolha? Se sim, como devo configurar a imagem antes de usar o Hough?

Qualquer maneira de resolver isso seria útil.


Faça uma detecção de aresta antes da transformação Hough. Ele vai transformar essa transição para uma linha brilhante com preto em ambos os lados
endolith

Respostas:


10

Em geral, você deseja um detector de borda, como o detector de borda Canny, para esse tipo de problema. A transformação Hough é útil para extrair linhas em vez de arestas.

No entanto, nesse caso específico, é melhor fazer algo como:

imdata = imread('grayblue.jpg');
colidx = find(diff(imdata(1,:) ~= 0);

já que é uma imagem tão simples.


0

Para uma imagem tão simples, um kernel de convolução como o seguinte encontrará as bordas muito bem:

[-1 2 - 1]

Isso gera um único pixel de borda em cada ponto de borda. Sem confusão, sem confusão. Canny está muito envolvido para esse problema. Se você deseja encontrar pontos de aresta para linhas em qualquer ângulo, use um Laplaciano simples, um Laplaciano de Gaussiano (LoG) ou Diferença de Gaussiano (DoG). Sobel e Prewitt também são simples, mas inadequados, pois produzem uma linha de "espessura dupla".

Há uma implementação rápida e maliciosa de Hough descrita aqui: http://www.ic.uff.br/~laffernandes/projects/kht/index.html

Existem também algoritmos "Hough sem parâmetros" que são muito rápidos, mas um pouco complicados de implementar e depurar.

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.