Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Detecção de Bordas | Processamento de Imagens com OpenCV
Fundamentos de Visão Computacional

bookDetecção de Bordas

Detecção de Bordas

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

Detecção de Bordas de Sobel

O operador 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últiplas etapas que fornece bordas mais precisas por meio de:

  1. Aplicação de desfoque Gaussiano para remover ruído.
  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 (exemplo: 50);
  • threshold2: limite superior para detecção de bordas (exemplo: 150);
  • apertureSize (opcional): tamanho do kernel Sobel (padrão: 3, deve ser ímpar);
  • L2gradient (opcional): utiliza cálculo de gradiente L2 mais preciso (padrão: False).

Uma comparação de 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 e 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

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 7
single

single

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

Suggested prompts:

What are the main differences between Sobel and Canny edge detection?

Can you explain when to use Sobel versus Canny edge detection?

Can you provide more details on how the Canny edge detector works?

close

Awesome!

Completion rate improved to 3.45

bookDetecção de Bordas

Deslize para mostrar o menu

Detecção de Bordas

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

Detecção de Bordas de Sobel

O operador 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últiplas etapas que fornece bordas mais precisas por meio de:

  1. Aplicação de desfoque Gaussiano para remover ruído.
  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 (exemplo: 50);
  • threshold2: limite superior para detecção de bordas (exemplo: 150);
  • apertureSize (opcional): tamanho do kernel Sobel (padrão: 3, deve ser ímpar);
  • L2gradient (opcional): utiliza cálculo de gradiente L2 mais preciso (padrão: False).

Uma comparação de 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 e 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 2. Capítulo 7
single

single

some-alt