Segmentação de material semitransparente, por exemplo, vidro

11

Estou totalmente preso em um problema relacionado à segmentação de objetos vítreos. Eu preciso obter o objeto o mais preciso possível. Minhas abordagens eram diferentes. No começo, tentei remover o fundo, para que restassem apenas alguns contornos nítidos. Mas isso funciona apenas para objetos com arestas / gradientes nítidos. Caso contrário, o próprio objeto também será removido. Eu publiquei duas imagens diferentes.

imagem 1 imagem 2

Tentei remover o fundo por meio de operações morfológicas, como dilatação em escala de cinza e uma divisão nele. mas não ajudou muito. depois, tentei um k-médias com k = 3 para separar o fundo modificado dos valores cinza e preto do vidro. Isso não foi bem-sucedido em alguns casos, mas não no geral / em média. Também tentei fazer uma detecção inteligente de borda com um filtro blured geral, mas isso levou a resultados mais fracos em forma de contornos abertos, muito ruído, etc. pp.

Asny com resultados automáticos do limiar:

testimg = imread('http://i.imgur.com/huQVt.png');  
imshow(testimg)
imedges = edge(testimg,'canny');
imshow(imedges);

O mesmo vale para a segunda imagem.

saída inteligente # 1 saída inteligente # 2

Como você pode ver, há muito ruído dentro e fora e bordas dobradas da borda do vidro. Mesmo existem lacunas nas bordas.

Portanto, preciso de seus conselhos para obter uma abordagem geral para lidar com esse problema de materiais semitransparentes, não apenas para essas duas imagens.

1) Outras idéias para remover o fundo sem danificar o objeto?

2) Outros métodos de segmentação para separar o objeto do plano de fundo?

Se possível, com dicas do Matlab, IPT ou da caixa de ferramentas estatísticas. Quaisquer outras dicas também são bem-vindas!

Agradecemos sua resposta com antecedência. Atenciosamente

mchlfchr
fonte
O plano de fundo é sempre idêntico?
endolith 4/12/12
quase, difere um pouco em mais escuro / brilhante.
Mcllfchr 04/12/12
11
Bem subtraindo o fundo de cada imagem seria um começo, tornando-a mais uniforme: imgur.com/9WhcB
endolith
11
O que você quer dizer? Você tem uma imagem de fundo sem vidro?
endolith 5/12/12
11
@DennisJaheruddin Eu sei que uma borda NÃO é uma linha preta. Uma aresta é definida como uma alteração na intensidade / frequência, o que significa que seus valores de cinza mudam mais ou menos rapidamente. No entanto, como você pode ver fora do contexto, o método Canny não será a arma de escolha aqui, por causa do pano de fundo, receberei muito barulho (com Canny). E não posso prever o limiar / sigma automático. Então, preciso de um método que elimine o plano de fundo, mas não o objeto em si.
Mchlfchr 6/12/12

Respostas:

3

Por que não usar apenas um simples arquivador passa-alto 2D FFT (guassiano)?

Eu fiz isso bem rápido usando o MATLAB

Fragmento # 1 usando FFT de passe alto:

http://i47.tinypic.com/rbjxnd.jpg

A mesma coisa é feita no número 2.

Fragmento 2 usando FFT de passe alto:

http://i45.tinypic.com/209kms0.jpg

Como você pode ver, a área de fundo e de vidro é apagada e apenas as bordas são traçadas. Não gastei muito tempo com isso, mas você pode limitar a saída filtrada da HP para ter bordas mais nítidas ou aumentar o corte da HP.

Esse é mais o resultado que você deseja obter?

Ariel Bentolila
fonte
1

Esta não é uma tentativa de responder a toda a pergunta, mas tenho uma idéia sobre "limpar a imagem" .

Você disse que tentou operações morfológicas , e isso é uma variação da ideia, espero que seja uma atualização.

Este artigo: A. Vichik, R. Keshet, D. Malah: A morfologia auto-dupla em semiláticos e aplicações de árvores propõe uma maneira de aprimorar os operadores morfológicos clássicos de uma maneira que possa adicionar propriedades mais desejáveis ​​a eles.

O artigo sugere escolher uma representação hierárquica de uma imagem de acordo com as propriedades desejáveis ​​e, em seguida, propõe um método para definir operadores como erosão, dilatação, abertura, cartola nessa representação . Em suas próprias palavras:

Apresentamos um estrutura geral para a produção de novos operadores morfológicos (...)

Expliquei essas estruturas hierárquicas em forma de árvore na segunda parte desta resposta ( abordagens semânticas ) , às quais você pode adicionar a árvore da bacia hidrográfica de Extrema mencionada no artigo que eu liguei aqui (e novamente) .

É uma atualização para (citando os autores) "morfologia matemática tradicional em escala de cinza" porque as operações mantêm as propriedades desejáveis ​​das representações . Por exemplo, se sua representação hierárquica for auto-dupla, seus operadores serão realmente auto-duplos (por exemplo, compare com quase fechamento de abertura -próprio-duplo pela reconstrução que não é realmente auto-dual).

O artigo vinculado também apresenta alguns resultados para filtrar o ruído - você pode comparar os resultados do artigo (e da tese mencionada no artigo) com o que você precisa (pelo menos visualmente) e ver se funcionaria para você antes de iniciar codificar.

Portanto, ao escolher a árvore de representação mais simples (max / min-) produzirá exatamente as operações clássicas, a escolha de uma árvore auto-dupla que melhor atenda às suas necessidades poderá fornecer uma abordagem suficientemente robusta.

Penélope
fonte