Um contorno é uma região da imagem onde ocorre uma variação abrupta da intensidade dos píxeis.
É onde há transições rápidas de tons, como nas bordas de objetos.
Detecção de contornos é a tarefa de localizar essas transições para:
Delimitar formas
Identificar objetos
Separar regiões
A detecção de contornos é baseada em derivadas aplicadas sobre a função de intensidade da imagem.
Mede a taxa de variação da intensidade entre píxeis vizinhos.
Detecta máximos ou mínimos locais.
Usada para encontrar bordas com transições suaves.
Mede a mudança da variação (curvatura).
Detecta pontos de inflexão ou passagens por zero.
Útil para detectar contornos mais definidos, mas mais sensível a ruído.
Degrau: mudança brusca e clara (ex: preto para branco)
Rampa: transição gradual (ex: sombra)
Telhado: pico pontual (ex: linha fina escura em fundo claro)
É um vetor que aponta para a direção de maior variação de intensidade.
Calcula-se o gradiente em duas direções: horizontal (x) e vertical (y).
Quanto maior o módulo do vetor gradiente, mais provável que o pixel pertença a um contorno.
O mais simples.
Usa máscaras diagonais.
Indicado para imagens binárias.
Marca presença de contorno, sem indicar direção.
Utiliza máscaras para calcular o gradiente nas direções x e y.
Suave e menos sensível ao ruído.
Boa escolha para imagens de média qualidade.
Similar ao Prewitt, mas dá mais peso ao centro da máscara.
Mais sensível a mudanças locais de intensidade.
Melhor desempenho em imagens com bordas mais suaves.
Calcula a soma das segundas derivadas nas direções x e y.
Detecta pontos onde o gradiente muda de direção (máximo ou mínimo).
Exige suavização prévia (redução de ruído), pois é sensível a flutuações leves.
Antes de aplicar os detectores de contorno:
É comum aplicar filtros de suavização (ex: média, gaussiano)
Filtros com kernels maiores reduzem ruído, mas atenuam bordas finas
Filtros pequenos mantêm detalhes, mas deixam passar ruído
Aplicar o operador em x (máscara de derivada horizontal)
Aplicar o operador em y (máscara de derivada vertical)
Calcular a magnitude do gradiente
Calcular a direção do gradiente
Aplicar limiarização (threshold):
Apenas píxeis com magnitude maior que o limiar são considerados contornos
Threshold baixo: detecta mais contornos (inclui ruído)
Threshold alto: detecta só contornos fortes (pode perder detalhes)
Operador | Derivada | Direção | Ruído | Indicação |
---|---|---|---|---|
Roberts | 1ª | Não | Sensível | Simples, rápido |
Prewitt | 1ª | Sim | Robusto | Bordas médias |
Sobel | 1ª | Sim | Menos sensível | Bordas suaves |
Laplaciano | 2ª | Não | Muito sensível | Bordas fortes, com suavização |
1ª derivada detecta mudança rápida de intensidade
2ª derivada detecta inversão de tendência
Gradiente é a melhor forma de detectar contornos direcionais
Operadores Prewitt e Sobel são os mais usados em imagens reais
Suavização (ex: filtro gaussiano) antes da detecção melhora a robustez