Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Detecção de Bordas | Seção
/
Visão Computacional Aplicada
Seção 1. Capítulo 10
single

single

bookDetecção de Bordas

Deslize para mostrar o menu

Bordas representam mudanças súbitas na intensidade dos pixels, que geralmente correspondem aos limites dos objetos. A detecção de bordas auxilia no reconhecimento de formas e na segmentação.

Detecção de Bordas de Sobel

O operador de Sobel calcula gradientes (mudanças de intensidade) nas direções X e Y, auxiliando na detecção de bordas horizontais e verticais.

# Convert to grayscale
image = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

# Apply Sobel filter
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)  # Detects vertical edges
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)  # Detects horizontal edges
sobel_combined = cv2.magnitude(sobel_x, sobel_y)  # Combines both directions
Note
Nota

Parâmetros principais:

  • src: imagem de entrada (deve estar em escala de cinza);
  • ddepth: profundidade da imagem de saída (por exemplo, cv2.CV_64F);
  • dx: ordem da derivada na direção X (definir 1 para bordas horizontais);
  • dy: ordem da derivada na direção Y (definir 1 para bordas verticais);
  • ksize: tamanho do kernel (deve ser ímpar, por exemplo, 3, 5, 7).

Detecção de Bordas de Canny

O Detector de Bordas de Canny é um algoritmo de múltiplos estágios que fornece bordas mais precisas por meio de:

  1. Aplicação de desfoque Gaussiano para remover ruídos.
  2. Cálculo dos gradientes de intensidade usando filtros de Sobel.
  3. Supressão de bordas fracas.
  4. Uso de dupla limiarização e rastreamento de bordas.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Nota
  • image: imagem de entrada em tons de cinza;
  • threshold1: limite inferior para detecção de bordas (ex.: 50);
  • threshold2: limite superior para detecção de bordas (ex.: 150);
  • apertureSize (opcional): tamanho do kernel de Sobel (padrão: 3, deve ser ímpar);
  • L2gradient (opcional): utiliza cálculo de gradiente L2 mais preciso (padrão: False).

Uma comparação dos métodos de detecção de bordas:

comparação de detecção de bordas
Tarefa

Swipe to start coding

Você recebe uma image:

  • Converter a imagem para escala de cinza e armazenar em gray_image;
  • Aplicar o filtro de Sobel nas direções X e Y (profundidade de saída cv2.CV_64F e tamanho do kernel 3) e armazenar em sobel_x, sobel_y respectivamente;
  • Combinar as direções filtradas por Sobel em sobel_img;
  • Aplicar o filtro de Canny com limiar de 200 a 300 e armazenar em canny_img.

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 10
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt