como detectar o centro de um círculo embaçado com opencv

10

Eu tenho a seguinte imagem:

insira a descrição da imagem aqui

Existem curvas na imagem. eu gostaria de encontrar o centro dos círculos contendo curvas.

Eu tentei transformar opencv e hough circle, mas não obtive resultados.

JingKe
fonte
todas as curvas são concêntricas? o espaçamento entre eles é variável?
Endolith 19/07
sim, eles são concêntricos. e nenhum espaçamento é constante.
Jingke

Respostas:

3

Você precisará melhorar o contraste da imagem primeiro e depois filtrá-la fortemente para remover o ruído. Como os círculos são "grossos" (embaçados), é possível filtrar um pouco sem destruir a estrutura dos círculos.

Eu aplicaria então algum algoritmo de detecção de borda para obter uma imagem de borda binária que possa ser processada pela Transformação de Hough Circular.

Recebo a seguinte imagem de borda da sua imagem: insira a descrição da imagem aqui

Usando os seguintes comandos do MATLAB:

 % x is the input grayscale image. First we adaptively improve the contrast over the image
 y= adapthisteq(x);

 % next we use the Canny edge detector with a strong Gaussian lowpass filter
 ee=edge(y, 'canny', [], 5);
nimrodm
fonte