Esta foi a imagem obtida após a filtragem Gabor ... Existe alguma maneira de remover as linhas dentro da imagem, exceto o defeito arredondado em branco brilhante.
Tentei outra orientação do filtro gabor e obtive o seguinte resultado:
Após o limiar: o que é bom o suficiente, mas não ótimo
Após a filtragem mediana:
desde já, obrigado
image-processing
filters
vini
fonte
fonte
Respostas:
Se a saída do seu filtro Gábor for confiável e a variação nos dados da imagem não for tão alta que o resultado pareça completamente diferente, você poderá usar a seguinte abordagem (partes dela já mencionadas):
Binarize sua segunda imagem com qualquer algoritmo de limiar automático. O intervalo de limites que funcionará é grande como você verá.
Use um algoritmo de rotulagem de componentes para rotular cada região conectada de pixel com um valor exclusivo.
Calcule para cada componente de sua imagem uma propriedade que descreva o quão próximo seu objeto está de um círculo preenchido. Para isso, você pode usar, por exemplo, a compacidade . Usei abaixo da fração de pixels dentro do raio equivalente do disco . Esse raio é o raio de um disco com a mesma área que seu objeto teria.
Para ver que uma binarização automática deve funcionar, eis os resultados para um limite muito baixo e muito alto:
Atualizar rotulagem de componentes
A escolha da etiqueta do componente não é crítica para a sua aplicação. Eu sugeriria, se você precisar implementá-lo por conta própria, usar um método muito simples. A versão de uma passagem do site da Wikipedia é muito fácil. Basicamente, você repete sua imagem binária e, quando encontra um pixel branco e ainda não está rotulado, usa um novo rótulo para esse objeto e começa com esse pixel.
O processo de rotular esse objeto com um rótulo é basicamente semelhante a um preenchimento de inundação. Este é o site da Wikipedia, as etapas internas 1-4 do algoritmo. Você começa com esse pixel rotulado e coloca todos os seus vizinhos em uma pilha (eles usaram um vetor ). Para um pixel na pilha, verifique se ele está em primeiro plano e se ainda não está identificado. Se você precisar rotulá-lo, coloque novamente todos os seus vizinhos na pilha. Faça isso até que sua pilha esteja vazia.
Então você continua sua digitalização através da imagem. Diferente da descrição no site Wiki, você não precisa remover um pixel da imagem original, apenas pula quando tem um valor diferente de 0 na imagem da etiqueta.
fonte
Algumas idéias:
EDIT: após sua etapa de filtragem mediana, você está na maior parte do caminho. Bom trabalho! O item 2 que sugeri acima (fechar e depois etiquetar a região) é uma técnica para levá-lo ao resto do caminho.
fonte
Você pode tentar contornos ativos. Embora talvez lento, ele pode lidar com casos complicados como este.
Ou você pode usar algum conhecimento prévio para processar esta imagem. Por exemplo, você sabe que a coisa do blob é 'grande' e 'conectada'. Assim, quando você conta o número de cada região conectada, pode encontrá-lo.
fonte