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

MT3006 - Robótica 2

¿Por qué?

Procesamiento a nivel pixel

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

Histogramas

Equalización de histograma

Equalización de histograma

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

Procesamiento a nivel local

Estadísticas básicas

también aplican a nivel global

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,y-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,y-j]

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

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,y-j]

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

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:

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

Canny edge detection

  1. Estimación del gradiente de la imagen.
  2. Se calcula la magnitud y la fase por pixel.
    • La fase se aproxima | cuantifica a múltiplos de \(\pi/4\).
  3. Se realiza una supresión (local) de no-máximos para la magnitud, en la dirección de la fase.
  4. 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

Análisis de regiones y extracción (simple) de características

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

Detección de líneas y círculos

Transformada de Hough

Transformada de Hough para líneas

Segmentación

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.

Detector de esquinas de Harris