Seção 1. Capítulo 10
single
Detecçã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
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 (definir1para bordas horizontais);dy: ordem da derivada na direção Y (definir1para 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:
- Aplicação de desfoque Gaussiano para remover ruídos.
- Cálculo dos gradientes de intensidade usando filtros de Sobel.
- Supressão de bordas fracas.
- Uso de dupla limiarização e rastreamento de bordas.
# Apply Canny Edge Detector
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)
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:
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_64Fe tamanho do kernel3) e armazenar emsobel_x,sobel_yrespectivamente; - Combinar as direções filtradas por Sobel em
sobel_img; - Aplicar o filtro de Canny com limiar de
200a300e armazenar emcanny_img.
Solução
Tudo estava claro?
Obrigado pelo seu feedback!
Seção 1. Capítulo 10
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo