Técnicas clásicas de visión por computadora

MT3006 - Robótica 2

¿Por qué?

De pixeles a regiones

Thresholding

I
J

imagen binaria

(forma una máscara)

Thresholding

I
J
J(u,v)=\begin{cases} 1 & \text{ si } \ I(u,v) \ge \epsilon \\ 0 & \text{ caso contrario } \end{cases}

threshold

Thresholding

I
J

imagen luego de aplicar la máscara de color

Thresholding

I
J
R_{\min}< R < R_{\max} \\ G_{\min}< G < G_{\max} \\ B_{\min}< B < B_{\max}

imagen luego de aplicar la máscara de color

Thresholding

I
J

o bien (por ejemplo)

d = \sqrt{(R-R_0)^2+(G-G_0)^2+(B-B_0)^2}, \quad d < \epsilon

Thresholding

I
J

o bien (por ejemplo)

d = \sqrt{(R-R_0)^2+(G-G_0)^2+(B-B_0)^2}, \quad d < \epsilon

color de interés

Estadísticas básicas

también aplican a nivel global

Histogramas

Ejemplo: Equalización de histograma

Ejemplo: Equalización de histograma

g(I(u,v))
255
255
\min I
\max I

Ejemplo: Otsu thresholding

original

binarizada

histograma

maximiza la varianza entre dos "clases" de pixeles

Ejemplo: Adaptive thresholding

"Limpiando" el thesholding con Morfología

dos operaciones morfológicas básicas

erosión

dilatación

Más operaciones morfológicas

apertura: erosión \(\to\) dilatación

cerrado: dilatación \(\to\) erosión

perímetro

Análisis de regiones

Análisis de regiones

imagen binaria

regiones

conformadas por conjuntos máximos de pixeles conectados

Conectividad y adyacencia

Conectividad y adyacencia

conjuntos de adyacencia

vecindarios

Conectividad y adyacencia

conjuntos de adyacencia

vecindarios

  1. El número de regiones puede cambiar dependiendo del tipo de conectividad considerada.
  2. La topología de las regiones algunas veces no tiene "sentido" Euclideano.

Conteo según conectividad

Topología "extraña"

Análisis empleando momentos

De vecindarios a contornos

Filtrado LTI \(\equiv\) Convolución

W
J[u,v] = I[u,v] * W = \dfrac{1}{S}\displaystyle \sum_{i=-k}^{+k} \sum_{j=-k}^{+k} w_{ij} I[u-i,v-j]

Filtrado LTI \(\equiv\) Convolución

W
J[u,v] = I[u,v] * W = \dfrac{1}{S}\displaystyle \sum_{i=-k}^{+k} \sum_{j=-k}^{+k} w_{ij} I[u-i,v-j]

kernel de \((2k+1)\times(2k+1)\)

*(a veces) factor de escalamiento tal que \(\displaystyle \sum_i \sum_j |w_{ij}|=S\)

Filtrado LTI \(\equiv\) Convolución

W
J[u,v] = I[u,v] * W = \dfrac{1}{S}\displaystyle \sum_{i=-k}^{+k} \sum_{j=-k}^{+k} w_{ij} I[u-i,v-j]

kernel de \((2k+1)\times(2k+1)\)

*(a veces) factor de escalamiento tal que \(\displaystyle \sum_i \sum_j |w_{ij}|=S\)

si el kernel es simétrico entonces

J[u,v] = I[u,v] * W = I[u,v] \star W \\ = \dfrac{1}{S}\displaystyle \sum_{i=-k}^{+k} \sum_{j=-k}^{+k} w_{ij} I[u+i,y+j]

correlación cruzada en 2D

Procedimiento

Padding (efectos en los bordes)

Convolución vs correlación

Convolución vs correlación

puede emplearse (normalizada) para hacer template matching

Kernels para suavizado (smoothing)

box filter

W = \dfrac{1}{9}\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}

ej: \(3\times 3\)

\(S=9\) en este caso

Kernels para suavizado (smoothing)

Gaussian filter

W[u,v; \sigma] = \dfrac{1}{S} \exp{\left(-\dfrac{u^2+v^2}{2\sigma^2}\right)}

bajo esta perspectiva el box filter corresponde a una distribución uniforme, también pueden emplearse otras distribuciones como la binomial

\sigma=0.5
\sigma=1
\sigma=2
\sigma=4
\sigma=8
\sigma=16

Aplicaciones de suavizado

de-noising

remoción de detalles

\(\Rightarrow\) suavizado \(\equiv\) filtrado pasa-bajas

Afilado (sharpening)

operación contraria al suavizado

\(\equiv\) filtrado pasa-altas \(\approx\) resaltado de detalles

W = \begin{bmatrix} 0 & -1 & 0 \\ -1 & 5 & -1 \\ 0 & -1 & 0 \end{bmatrix}

sharpen filter (ejemplo)

puede emplearse suavizado para obtener afilado mediante unsharp masking

J[u,v]=I[u,v]+\lambda R[u,v]=(1+\lambda)I[u,v]-\lambda S[u,v]
R[u,v]=I[u,v]-S[u,v]

factor de escalamiento

versión suavizada de \(I\)

residual:

¿Filtrado no lineal?

De detalles a bordes

perfiles de intensidad

De detalles a bordes

perfiles de intensidad

discontinuidades \(\Rightarrow\) bordes

entonces pueden emplearse derivadas para detectarlos

\nabla I(u,v)=\displaystyle \begin{bmatrix} \dfrac{\partial I(u,v)}{\partial u} & \dfrac{\partial I(u,v)}{\partial v} \end{bmatrix}^\top
\nabla^2 I=\displaystyle \dfrac{\partial^2 I}{\partial u^2} + \dfrac{\partial^2 I}{\partial v^2}

gradiente

Laplaciano

Kernels para calcular derivadas

\dfrac{\partial I(u,v)}{\partial u}=\lim_{\delta\to 0} \dfrac{I(u+\delta,v)-I(u,v)}{\delta}

en imágenes el \(\delta\) más pequeño es 1, es decir, un pixel

\dfrac{\partial I(u,v)}{\partial u}\approx \dfrac{I(u+1,v)-I(u,v)}{1}

Kernels para calcular derivadas

\dfrac{\partial I(u,v)}{\partial u}=\lim_{\delta\to 0} \dfrac{I(u+\delta,v)-I(u,v)}{\delta}

en imágenes el \(\delta\) más pequeño es 1, es decir, un pixel

\dfrac{\partial I(u,v)}{\partial u}\approx \dfrac{I(u+1,v)-I(u,v)}{1}
\dfrac{\partial I}{\partial u}\approx \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix}
\dfrac{\partial I}{\partial v}\approx \begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix}

kernels de Roberts

Derivadas y ruido

Roberts

Suavizado + Roberts

\(\Rightarrow\) Sobel

Kernels para calcular derivadas

W_x = \dfrac{1}{2} \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}
W_y = \dfrac{1}{2} \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix}

kernels de Sobel

= derivada con \(\delta=2\) + suavizado con binomial

S_x = I*W_x \\ S_y = I*W_y
\nabla I(u,v) = \begin{bmatrix} S_x(u,v) \\ S_y(u,v) \end{bmatrix}
I
S_x
S_y
S_{45°}
|\nabla I|^2
\angle \nabla I
I
S_x
S_y
S_{45°}
|\nabla I|^2
\angle \nabla I

simple y decente, pero con bordes "de más" con diferente intensidad

¿Ideal? Imagen binaria sólo con los bordes más fuertes y con un grosor uniforme \(\Rightarrow\) detector de bordes de Canny

Canny edge detection

Canny edge detection

  1. Suavizado Gaussiano.
  2. Estimación del gradiente de la imagen.
  3. Se calcula la magnitud y la orientación por pixel.
    • La orientación se aproxima | cuantifica a múltiplos de \(\pi/4\).
  4. Se realiza una supresión (local) de no-máximos para la magnitud, en la dirección de la fase.
  5. Se realiza una etapa de seguimiento de borde mediante thresholding e histéresis.

Canny edge detection

  1. Suavizado Gaussiano.
  2. Estimación del gradiente de la imagen.
  3. Se calcula la magnitud y la orientación por pixel.
    • La orientación se aproxima | cuantifica a múltiplos de \(\pi/4\).
  4. Se realiza una supresión (local) de no-máximos para la magnitud, en la dirección de la fase.
  5. Se realiza una etapa de seguimiento de borde mediante thresholding e histéresis.

a pesar de haber detectores de bordes más modernos, el de Canny continúa siendo de los más útlies

Detección de líneas y círculos

Transformada de Hough

Transformada de Hough para líneas

Referencias

  1. A. Torralba et al., Foundations of Computer Vision, bloques IV y V.
  2. R. Klette, Concise Computer Vision, capítulos 2, 3 y 5.

MT3006 - Lecture 2 (2026)

By Miguel Enrique Zea Arenales

MT3006 - Lecture 2 (2026)

  • 174