Trabalho Prático IIDetecção e reconexão
de Contornos
MC920 - Introdução ao processamento de imagens
Bruno Malveira - RA070299 Carolina Michelassi - RA070408
Prof. Neucimar20/05/2010
Imagens utilizadas nos testes
Imagens utilizadas nos testes
Detecção de contornos com Sobel 3X3
Funciona bem para imagens com ruído, pois faz uma pré-filtragem (máscara de convolução gaussiana) Fizemos quando necessário uma soma de constante para realçar os contornos ou uma limiarização na imagem
Sobel – imagem com ruído gaussiano
Limiarizado
Sobel – imagem com ruídos diferentes
Gaussiano – Sobel ajustado Sal e pimenta
Detecção de contornos com Laplace 5X5
•Detecta contornos muito bem definidos quando a imagem não tem ruído•É muito sucetível a ruído, até imagem jpg (aparentemente sem ruído) é distorcida
Lena jpg – sharpen no Laplace Tabuleiro de xadrez png
Laplace em imagem com ruído
Ruído gaussiano Ruído sal e pimenta
O contorno ainda é completamente detectado, porém o ruído é acentuado, então é difícil reconhecer a figura.
Imagens sem ruído – Sobel X LaplaceNa ausência de ruído, o Laplace apresenta resultado muito superior
ao Sobel, já que o Sobel embassa o contorno ao fazer seu filtro “da média”
Laplace
Sobel ajustado
Imagens sem ruído – Sobel X LaplaceNa ausência de ruído, o Laplace apresenta resultado muito superior ao Sobel, já que o Sobel embassa o contorno ao fazer seu filtro “da
média”
Sobel ajustadoLaplace
Imagens sem ruído – Sobel X LaplaceNa ausência de ruído, o Laplace apresenta resultado muito superior ao Sobel, já que o Sobel embassa o contorno ao fazer seu filtro “da
média”
Laplace Sobel ajustado
Detector de contornos de Canny•Tendo um limiar alto e um baixo, detecta contornos e já faz uma reconexão dos pontos desconsiderados inicialmente•Problema: para cada imagem é preciso ajustar os limiares
Sem ruído (jpg): 5.9 - 6Sem ruído: 0.1 – 0.3 Sem ruído: 0.5 – 1.0
Canny: variações nos limiares (ruído gaussiano)
Quando os limiares são muito baixos, pega mais do que só o contorno. Quando é muito alto, começa a perder contorno. Intervalo grande pega muitos vizinhos não-contorno.
0.1 – 0.2
4.9 – 5.0
7.9 – 8.0
Canny: variações nos limiares (sem ruído – contorno suave)
0.1 – 0.3
0.4 – 0.7
1.0 – 1.5
Conforme aumenta o limiar superior, menos pontos são selecionados.
Canny e ruídos diferentesSem ruído: 1.9 – 2.0
Ruído gaussiano: 1.9 – 2.0
Ruído sal e pimenta: 1.9 – 2.0
Histereses
•Trabalha em cima de uma imagem com os contornos já detectados
•Limites inferior e superior são passados como parâmetros
•Dados os pontos que já estão no contorno e acima do limite superior, seus vizinhos também entram para o contorno se estiverem acima do limite inferior
Histereses com Laplace
Mesmo aumentando muito os limiares não é possível tirar o ruído, mas perde-se pouco contorno.
histereses_laplace_2.0_2.5histereses_laplace_0.1_0.2
Histereses com Laplace
laplace histereses_laplace_0.2_0.3
O contorno já está bem definido, não há o que ser reconectado nele. A histeresis reconecta os ruídos, acentuando-os.
Histereses com Sobel limiarizadoárvore – ruído sal e pimenta
0.65 – 2.01.0 – 1.51.3 – 1.5
Histereses com Sobel limiarizadoCasa – ruído gaussiano
0.59 – 1.0 0.39 – 1.0
Histereses com Sobel AjustadoLena ruído gaussiano
histereses_sobel_0.65_0.8histereses_sobel_0.21_0.3
Para tirar o ruido gaussiano, precisa subir um pouco só o limiar superior para desviar do ruído e pegar o contorno quase todo, e deixar o intervalo bem pequeno para o ruído não ser puxado pelo contorno para reconexão.
Histereses com Sobel AjustadoLena ruído sal e pimenta
0.2 - 1.20.21 - 0.3
Para tirar o ruído sal e pimenta, aumentar bastante o limiar superior para não capturar o ruído e deixar um intervalo grande, para que os poucos pontos do contorno detectados "puxem" os demais para reconexão (se diminui o intervalo não sobra quase nada de contorno). Ainda assim se perde muito contorno.
Histereses com Sobel Ajustado
• Análise da diferença entre os limiares para remoção dos ruídos:
• Quando o Sobel calcula a diferença entre os vizinhos para detectar o contorno, no sal e pimenta há uma resposta mais forte e mais esparsa, tal como o próprio ruído
• Já no gaussiano a vizinhança é mais homogênea, então a detecção de contornos sai mais fraca embora mais frequente.
Lena sem ruído: 0.2 – 0.3
Histereses com SobelLatinha
Perda de contornos conforme aumenta o limiar superior, porém com diminuição do ruído
histereses_sobel_0.8_1.5 histereses_sobel_1.5_2.0
Canny X Detecção (Sobel/Laplace) com histereses
Canny: 9.9 - 10
Ruído sal e pimenta
Sobel com histereses: 1.0 – 1.5 Laplace com histereses: 2.0 – 2.5
Reconexão pelo gradiente
• Testamos a abordagem primeiro só com o detector de contornos (Sobel/Laplace)
• Depois testamos combinar a detecção de contornos, a histereses e a reconexão.
• Testamos o cálculo do delta para o gradiente usando apenas um vizinho ou usando vizinhança 3X3 com máscaras de Sobel: este último apresentou melhor resultado, portanto usamos em todas as imagens a seguir
• Também é muito difícil encontrar os limiares bons para cada imagem
Reconexão pelo gradiente com Laplace
ang10.0_magn180ang10.0_magn20
• Laplace quase não tem falhas de contorno (mas acentua o “ruído” jpg)• Reconexão pelo gradiente se perde• Resultados parecidos, mesmo com grandes variações de parâmetros
Reconexão pelo gradiente com Sobel
ang10.0_magn3 ang0.05_magn4
Reconexão pelo gradiente com Sobel
ang1.0_magn7
Reconexão pelo gradiente com Sobel Moinho – luminosidade senoidal
ang2.0_magn10.0Sobel
Reconexão pelo gradiente com Sobel e Histereses
ang1.0_magn10_histereses_0.59_1.0
ang1.0_magn20_histereses_0.59_1.0
ang1.0_magn50_histereses_0.59_1.0 ang1.0_magn100_histereses_0.59_1.0
Reconexão pelo gradiente com Sobel e Histereses
ang2.0_magn1_histereses_0.4_0.8 ang2.0_magn20_histereses_0.4_1.0
ang2.0_magn120_histereses_0.4_1.0 ang2.0_magn120_histereses_0.6_1.0
Reconexão pelo gradiente com Sobel e Histereses
ang10.0_magn35_histeresis_0.65_1.8ang10.0_magn35_histeresis_1.0_1.5
•Não conseguimos encontrar um limiar para restringir a magnitude do gradiente que fizesse alguma diferença nos cálculos
• Os valores dos parâmetros a e b da equação da reta tinham uma variação muito grande, e valores muito elevados
•Os valores de máximo da matriz sempre ficavam na primeira linha da matriz, talvez pelo corte no tamanho da matriz, para que coubesse na memória
•Buscamos outros métodos para fazer a transformada, mas não conseguimos integrar ao projeto.
Transformada de HoughDificuldades encontradas
Conclusões•Não existe um método único muito bom
•É preciso ajustar parâmetros para conseguir uma imagem com contornos bem definidos e pouco ruído
•Esses parâmetros variam de acordo com a dinâmica da imagem, e encontrá-los é trabalhoso
•De forma geral a detecção é boa, mas a reconexão é difícil.
•A detecção e reconexão de contornos de Canny funciona bem mesmo em imagens com ruído e é mais fácil achar parâmetros para ele.
•A Reconexão pelo gradiente se deixa influenciar pelas diferenças de coloração da imagem, levando a resultados insatisfatórios (reconecta mas polui a imagem)