Sobel Operator
El operador de Sobel es un filtro de imagen de 3×3 que mide los gradientes de brillo para detectar bordes, extraer características y segmentar imágenes.
El operador de Sobel es un filtro de imagen fijo que estima con qué rapidez cambia el brillo en una imagen y en qué dirección. Produce gradientes de imagen: las respuestas grandes señalan transiciones pronunciadas, mientras que las pequeñas indican regiones relativamente uniformes. También llamado filtro de Sobel u operador de Sobel-Feldman, es una herramienta fundamental para la detección de bordes y la extracción de características en visión artificial.
Irwin Sobel y Gary Feldman lo presentaron en el Stanford Artificial Intelligence Project en 1968, en una exposición titulada Un operador de gradiente isotrópico de 3x3 para el procesamiento de imágenes, descrita en el relato histórico y la derivación de Sobel.
Cómo funcionan los kernels de Sobel#
El filtrado de Sobel aplica dos pequeñas cuadrículas de pesos, llamadas kernels, a los píxeles vecinos. Este filtrado local suele describirse como convolución; OpenCV aplica los pesos sin invertirlos, mediante correlación. Los kernels estándar de 3 x 3 tienen las siguientes filas:
| Fila | Kernel en la dirección X | Kernel en la dirección Y |
|---|---|---|
| Superior | -1, 0, 1 | -1, -2, -1 |
| Central | -2, 0, 2 | 0, 0, 0 |
| Inferior | -1, 0, 1 | 1, 2, 1 |
La respuesta en la dirección x, Gx, mide los cambios de intensidad de izquierda a derecha y resalta los bordes verticales. Gy mide los cambios de arriba abajo y resalta los bordes horizontales. Cada kernel combina un filtro de diferencias, con pesos -1, 0, 1, en un eje y un suavizado ponderado, con pesos 1, 2, 1, en el otro. Su campo receptivo abarca nueve píxeles.
Al combinar Gx y Gy se obtienen la magnitud del gradiente —la raíz cuadrada de Gx al cuadrado más Gy al cuadrado— y la orientación, calculada con atan2(Gy, Gx). El gradiente apunta a través de un borde, perpendicularmente a su límite local. Estas salidas direccionales son mapas de características: cuadrículas espaciales que describen la respuesta en cada ubicación.
Aplicar Sobel en Python#
OpenCV calcula derivadas con signo mediante cv2.Sobel, tal como se utiliza en su guía de implementación de detección de bordes. La salida en coma flotante conserva las respuestas negativas, que aparecen cuando el brillo disminuye en la dirección seleccionada; la salida sin signo de 8 bits las recorta a cero y pierde esas transiciones de borde.
Instala las dependencias con pip install opencv-python numpy. Este ejemplo descarga una imagen, calcula ambas derivadas y guarda la magnitud combinada:
from urllib.request import urlopen
import cv2
import numpy as np
with urlopen("https://ultralytics.com/images/bus.jpg") as response:
encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_GRAYSCALE)
# Conserva las derivadas con signo antes de combinar sus intensidades.
gx = cv2.Sobel(image, cv2.CV_32F, 1, 0, ksize=3)
gy = cv2.Sobel(image, cv2.CV_32F, 0, 1, ksize=3)
magnitude = cv2.magnitude(gx, gy)
edge_image = cv2.normalize(magnitude, None, 0, 255, cv2.NORM_MINMAX)
cv2.imwrite("sobel_edges.png", edge_image.astype(np.uint8))La imagen guardada muestra las transiciones de brillo pronunciadas como contornos brillantes. Su normalización reescala los valores para mostrarlos; un paso independiente de umbralización convierte la intensidad del gradiente en un mapa binario de bordes.
Aplicaciones de los gradientes de Sobel#
En la segmentación de imágenes, la magnitud de Sobel puede proporcionar información sobre los límites a un algoritmo de watershed, que hace crecer regiones a partir de marcadores iniciales. En el ejemplo de segmentación de monedas de scikit-image, los gradientes pronunciados forman barreras entre las monedas y el fondo. El watershed utiliza esas barreras para separar el primer plano del fondo antes de que los componentes conexos etiqueten las monedas individuales.
Los gradientes de Sobel también guían la detección de objetos en YOLO26-RD, un modelo personalizado basado en YOLO26 de Ultralytics. Su módulo EdgeSPD utiliza una señal de borde fija de Sobel para controlar el submuestreo, resaltando la información de los límites a medida que disminuye la resolución espacial.
Sobel frente a otros filtros de bordes#
Prewitt utiliza pesos de suavizado uniformes; Sobel da más peso a la fila o columna central. Scharr mejora la precisión direccional de las estimaciones de derivadas de 3 x 3. El Laplaciano mide los cambios de intensidad de segundo orden. Canny combina la estimación del gradiente con el adelgazamiento de bordes y la conexión de bordes con dos umbrales, y produce un mapa de contornos más selectivo que la magnitud de Sobel sin procesar.
En el análisis de imágenes médicas, los gradientes inducidos por el ruido pueden fragmentar las regiones de watershed: la segmentación de imágenes de RM con gradientes de Sobel muestra una sobresegmentación y utiliza la reducción de ruido para limitarla. En los bordes de la imagen, la ausencia de píxeles vecinos exige una regla de extensión definida: la implementación de Sobel de SciPy refleja por defecto los píxeles a través del borde del último píxel.










