Quero poder encontrar pontos em imagens que são o centro de um gradiente radial, como o mostrado na imagem à esquerda abaixo. Alguma idéia de como eu poderia usar uma transformação de Hough ou algum outro método de visão por computador?
obrigado
imagem de pesquisa de exemplo:
image-processing
computer-vision
gradient
waspinator
fonte
fonte
Respostas:
Eu estava trabalhando no opencv e tentando encontrar o pico de um gradiente gerado pela transformação à distância. Percebi que o uso de operações morfológicas (erosão / dilatação) em imagens em escala de cinza era muito útil nesse caso. Se você corroer uma imagem em escala de cinza dilatada, qualquer pixel assumirá o valor do vizinho mais baixo / mais alto. Portanto, é possível encontrar picos de intensidade em gradientes subtraindo a imagem em escala de cinza da mesma imagem dilatada / corroída. Aqui está o meu resultado:
E uma maneira de fazer isso no OpenCV / Cpp:
fonte
Aqui está o que eu tenho até agora. A maneira como estou preenchendo meu espaço Hough está longe de ser ótima. Tenho certeza de que há alguma vetorização que posso fazer para torná-lo mais rápido. Estou usando o Matlab R2011a. Imagem original
Sugestões são apreciadas, obrigado.
Modifiquei uma função de linha de desenho que encontrei no matlab central para aumentar um pixel por um valor em vez de definir um pixel para um valor
fonte
Execute um histograma de gradientes orientados sobre os trechos da imagem - o pico em cada um desses histogramas fornecerá a direção dominante desse trecho (como as setas que você mostra).
Descubra onde todas essas setas se cruzam - se esse ponto estiver dentro do objeto, poderá ser o centro de um gradiente radial.
fonte