Como remover o ruído sem destruir a borda principal?

8

Estou trabalhando em um projeto. Quero segmentar um logotipo de um carro e o tamanho da imagem é 3648 * 2432. O logotipo é selecionado pelo retângulo vermelho.

insira a descrição da imagem aqui

Eu extraí essa área e viro para o nível de cinza. O tamanho da área é 249 * 173. Então, eu uso o histograma equalizado para aprimorar a borda. Finalmente, uso o sagacidade adaptável para encontrar vantagens.

insira a descrição da imagem aqui insira a descrição da imagem aqui

No entanto, o resultado não é perfeito. Então, usei o filtro mediano para suavizar a imagem esquerda. O resultado é o seguinte.

insira a descrição da imagem aqui

Eu removo as peças pequenas.

insira a descrição da imagem aqui

O resultado foi aprimorado, mas também não é bom. Além disso, tentei filtro bilateral, filtro médio e filtro gaussiano, mas o resultado também não é bom. Eu sei que depois de passar o histograma equalizar, o ruído pode ser aprimorado. Mas, em alguns casos, com baixo contraste, preciso adaptar esta etapa para melhorar minha imagem. Alguém pode me fornecer algum comentário diferente? Muito obrigado.

Kuo
fonte

Respostas:

7

Use filtro bilateral ou difusão anisotrópica primeiro.

O efeito da difusão anisotrópica é o seguinte:

insira a descrição da imagem aqui. O código MATLAB pode ser encontrado aqui .

Aqui está o efeito na sua imagem: insira a descrição da imagem aqui

Finalmente, meios não locais também são uma boa maneira de se livrar do barulho. Você também pode querer dar uma olhada nisso. Eu aviso, porém, é lento.

Tolga Birdal
fonte
Experimente: github.com/RoyiAvital/… Muito mais avançado que a difusão anisotrópica clássica.
Royi 18/01/2015
11
@birdbird: a difusão anisotrópica parece interessante, se você puder fornecer um conjunto de exemplos de imagens originais e processadas, juntamente com a geração de código matlab, isso seria apreciado.
precisa saber é o seguinte
verifique novamente por favor.
Tolga Birdal
Obrigado pelos exemplos e pelo código. Forneci meu próprio processamento muito simples no link: [IMG] i62.tinypic.com/2w3t6gz.jpg[/IMG] . Seu efeito no Lena é muito melhor, mas não é um detector de borda. Apenas um apontador de imagem redutor de ruído.
precisa saber é o seguinte
Vou ler o artigo sobre difusão anisotrópica. Além disso, @Drazick, o código no github tem erro quando a imagem é maior que cerca de 328 * 228, mas o resultado da imagem pequena é bom. Muito obrigado pela sua resposta entusiasmada.
Kuo
3

Eu não sugeriria uma equalização como o primeiro passo. Vá com redução de ruído.

Fat32
fonte
Então, você acha que eu preciso reduzir o ruído primeiro? Em seguida, implementar a equalização do histograma?
Kuo
sim reduza o ruído primeiro. Uma equalização cega do histograma pode ou não melhorar suas arestas. Então é melhor você melhorar suas arestas de forma adaptável.
precisa saber é o seguinte
Quando a nitidez das bordas reduz o ruído?
precisa saber é o seguinte
Existe algum método que eu possa usar para melhorar minha vantagem? Tentei a filtragem de alto impulso, mas em condições de baixo contraste, a filtragem de alto impulso não pode ter um bom desempenho.
Kuo
O ruído @tbirdal é reduzido antes que a borda seja afiada; na verdade, meu algoritmo é um apontador de imagem adaptável à borda não linear, com variação de espaço. Seu principal objetivo é produzir imagens nítidas de alta qualidade visual, preservando a textura e ainda não amplificando o ruído. No entanto, como ele tenta proteger as texturas contra o desgaste da redução de ruído, pode não produzir o resultado desejado para todos os tipos de ruído.
precisa saber é o seguinte