Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Detección de Bordes | Procesamiento de Imágenes con OpenCV
Fundamentos de Visión por Computadora

bookDetección de Bordes

Detección de Bordes

Los bordes representan cambios bruscos en la intensidad de los píxeles, que generalmente corresponden a los límites de los objetos. Detectar bordes ayuda en el reconocimiento de formas y la segmentación.

Detección de Bordes con Sobel

El operador Sobel calcula gradientes (cambios en la intensidad) en las direcciones X y Y, lo que ayuda a detectar bordes horizontales y verticales.

# 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 clave:

  • src: imagen de entrada (debe estar en escala de grises);
  • ddepth: profundidad de la imagen de salida (por ejemplo, cv2.CV_64F);
  • dx: orden de la derivada en la dirección X (establecer en 1 para bordes horizontales);
  • dy: orden de la derivada en la dirección Y (establecer en 1 para bordes verticales);
  • ksize: tamaño del kernel (debe ser impar, por ejemplo, 3, 5, 7).

Detección de Bordes con Canny

El detector de bordes de Canny es un algoritmo de múltiples etapas que proporciona bordes más precisos mediante:

  1. Aplicación de desenfoque Gaussiano para eliminar el ruido.
  2. Cálculo de gradientes de intensidad usando filtros Sobel.
  3. Supresión de bordes débiles.
  4. Uso de doble umbral y seguimiento de bordes.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Nota
  • image: imagen de entrada en escala de grises;
  • threshold1: umbral inferior para la detección de bordes (por ejemplo, 50);
  • threshold2: umbral superior para la detección de bordes (por ejemplo, 150);
  • apertureSize (opcional): tamaño del núcleo Sobel (por defecto: 3, debe ser impar);
  • L2gradient (opcional): uso de cálculo de gradiente L2 más preciso (por defecto: False).

Comparación de métodos de detección de bordes:

comparación de detección de bordes
Tarea

Swipe to start coding

Se proporciona una image:

  • Convertir la imagen a escala de grises y almacenar en gray_image;
  • Aplicar el filtro de Sobel en las direcciones X y Y (profundidad de salida cv2.CV_64F y tamaño de kernel 3) y almacenar en sobel_x, sobel_y respectivamente;
  • Combinar las direcciones filtradas por Sobel en sobel_img;
  • Aplicar un filtro de Canny con un umbral de 200 a 300 y almacenar en canny_img.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 7
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

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

bookDetección de Bordes

Desliza para mostrar el menú

Detección de Bordes

Los bordes representan cambios bruscos en la intensidad de los píxeles, que generalmente corresponden a los límites de los objetos. Detectar bordes ayuda en el reconocimiento de formas y la segmentación.

Detección de Bordes con Sobel

El operador Sobel calcula gradientes (cambios en la intensidad) en las direcciones X y Y, lo que ayuda a detectar bordes horizontales y verticales.

# 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 clave:

  • src: imagen de entrada (debe estar en escala de grises);
  • ddepth: profundidad de la imagen de salida (por ejemplo, cv2.CV_64F);
  • dx: orden de la derivada en la dirección X (establecer en 1 para bordes horizontales);
  • dy: orden de la derivada en la dirección Y (establecer en 1 para bordes verticales);
  • ksize: tamaño del kernel (debe ser impar, por ejemplo, 3, 5, 7).

Detección de Bordes con Canny

El detector de bordes de Canny es un algoritmo de múltiples etapas que proporciona bordes más precisos mediante:

  1. Aplicación de desenfoque Gaussiano para eliminar el ruido.
  2. Cálculo de gradientes de intensidad usando filtros Sobel.
  3. Supresión de bordes débiles.
  4. Uso de doble umbral y seguimiento de bordes.
# Apply Canny Edge Detector 
canny_image = cv2.Canny(image, threshold1, threshold2, apertureSize, L2gradient)  
Note
Nota
  • image: imagen de entrada en escala de grises;
  • threshold1: umbral inferior para la detección de bordes (por ejemplo, 50);
  • threshold2: umbral superior para la detección de bordes (por ejemplo, 150);
  • apertureSize (opcional): tamaño del núcleo Sobel (por defecto: 3, debe ser impar);
  • L2gradient (opcional): uso de cálculo de gradiente L2 más preciso (por defecto: False).

Comparación de métodos de detección de bordes:

comparación de detección de bordes
Tarea

Swipe to start coding

Se proporciona una image:

  • Convertir la imagen a escala de grises y almacenar en gray_image;
  • Aplicar el filtro de Sobel en las direcciones X y Y (profundidad de salida cv2.CV_64F y tamaño de kernel 3) y almacenar en sobel_x, sobel_y respectivamente;
  • Combinar las direcciones filtradas por Sobel en sobel_img;
  • Aplicar un filtro de Canny con un umbral de 200 a 300 y almacenar en canny_img.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 7
single

single

some-alt