Detecçã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
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últiplas etapas que fornece bordas mais precisas por meio de:
- Aplicação de desfoque Gaussiano para remover ruído.
- 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)
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:
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_xesobel_y, respectivamente; - Combinar as direções filtradas por Sobel em
sobel_img; - Aplicar o filtro de Canny com limiar de
200a300e armazenar emcanny_img.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.45
Detecçã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
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últiplas etapas que fornece bordas mais precisas por meio de:
- Aplicação de desfoque Gaussiano para remover ruído.
- 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)
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:
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_xesobel_y, respectivamente; - Combinar as direções filtradas por Sobel em
sobel_img; - Aplicar o filtro de Canny com limiar de
200a300e armazenar emcanny_img.
Solução
Obrigado pelo seu feedback!
single