Está en la página 1de 21

Procesamiento Digital de Imágenes

Dr. Ing. Gabriel Hermosilla Vigneau


Algoritmo Viola/Jones

• El algoritmo Viola-Jones es el primer algoritmo de detección de objetos que


permite proporcionar tasas altas de detección de objetos en tiempo real.

• Propuesto en 2001 por Pablo Viola y Michael Jones. A pesar de que puede ser
entrenado para detectar una variedad de clases de objetos, fue motivada
principalmente por el problema de la detección de rostros.

• El algoritmo de Viola-Jones permite la detección robusto en tiempo real de


rostros. El algoritmo de Viola-Jones supone un gran avance dentro de los
algoritmos de detección por su gran rapidez, y porque la clasificación se realiza
mediante características en vez de píxel a píxel, lo que permite una cierta
abstracción del algoritmo respecto el resultado.
Algoritmo Viola/Jones

Funcionamiento:

1. La imagen es transformada a escala de grises


2. Se recorre la imagen a procesar mediante ventanas de 24×24 pixeles a diferentes
escalas (así el algoritmo es rápido).
3. Para cada una de estas imágenes obtiene una serie de características (ej. Haar
features), que son los resultados de la diferencia de los valores de sus pixeles entre
áreas (imagen integral).
4. Las características de cada una de estas imágenes se procesan en un sistema de varios
clasificadores que están puestos en cascada para rechazar si una imagen no es válida
(no es cara) y pase a la siguiente cascada. Si el ultimo clasificador la valida, será
considerada como cara. En las primeras cascadas permite gran paso de objetos.
Algoritmo Viola/Jones

Funcionamiento:

T T T
IMAGE Classifier 2 Classifier 3
SUB-WINDOW
Classifier 1 FACE
F F F

NON-FACE NON-FACE NON-FACE


Algoritmo Viola/Jones

El algoritmo de detección de Viola y Jones se hace mediante Adaboost

• Adaboost es un algoritmo de clasificación que construye una regla de clasificación final


usando varios clasificadores menores, denominados “débiles” por su sencillez y escasa
precisión.

• En solitario estos clasificadores débiles no constituirían un sistema de clasificación


usable debido a su alta inexactitud, pero al usarlos en conjunto es posible construir un
clasificador muchísimo más preciso.

• Los clasificadores débiles corresponden a reglas de clasificación simples y que entregan


como resultado un valor de confianza, o confidencia, respecto a la predicción que están
haciendo.
Algoritmo Viola/Jones

Entrenamiento AdaBoost:

El peso
Clasificador aumenta
débil1

Segundo
clasificador

Clasificador
débil3

La clasificacion final
Es la combinacion de
Todos los
clasificadores
Algoritmo Viola/Jones

Haar-like features

• La principal razón para usar características en el algoritmo Viola/Jones es que


permite hacer una asociación entre conocimiento aprendido y el análisis de los
datos adquiridos. Además, la clasificación por características es mucho más rápida
que el procesado por análisis basados en píxel.

• Las características usadas son las mismas que fueron usadas por Papageorgiou et al.
(1998).

• Las características de Haar (Haar-like features en inglés) permiten obtener


información de una zona concreta mediante una operación aritmética simple, esto
nos lleva a una gran eficiencia de cálculo.
Algoritmo Viola/Jones

Haar-like features

 t if f t ( xi )   t
ht ( xi ) = 
  t otherwise

 
C ( x ) =    ht ( x ) + b 
 t 
Algoritmo Viola/Jones

Haar-like features

• El wavelet de Haar, analíticamente discrimina si es que la imagen posee la característica señalada,


si esta existe, el valor que entrega será mayor a theta, el cual es nuestro valor de umbral. Esto
quiere decir, que si el valor mínimo para que esa característica se cumpla es menor al umbral, esta
no es considerada.

 t if f t ( xi )   t
ht ( xi ) = 
  t otherwise

• Luego, se puede sumar todos los clasificadores débiles para obtener un conjunto de características
ya validadas y dar la respuesta con un clasificador fuerte.

 
C ( x ) =    ht ( x ) + b 
 t 
Algoritmo Viola/Jones

Ejemplo de clasificadores:
Algoritmo Viola/Jones

Integral Image :

• Para calcular rápidamente cada uno de los rectángulos se usa una representación
de la imagen llamada “Imagen Integral” (Integral Image).

• La imagen integral respecto a un punto (x,y) consiste en la suma de los píxeles por
arriba y a la izquierda de dicho puntos, (x,y) incluidos.

• La imagen integral representa una manera elaborada de obtener valores de forma


eficiente y muy rápidamente.

• Este método permite el uso de programación dinámica, que permite la obtención


de valores dentro de la imagen a través de otros valores calculados previamente.
Algoritmo Viola/Jones

Integral Image :

• La idea, es calcular todos los posibles rectángulos presentes en la imagen.

• Afortunadamente, esto se puede realizar con el formula recursiva.


Algoritmo Viola/Jones

Integral Image :

• Definiremos nuestro pixel sum(x,y) como s(x,y), siendo esta el valor a obtener.

• Vamos a subdividir este rectángulo en 4, las coordenadas están en términos de (x,y), donde (x-1,y)
es la coordenada desfasada hacia la izquierda de nuestro punto s(x,y), y así sucesivamente.
Algoritmo Viola/Jones

Integral Image :

En la siguiente figura están presentes los valores reales de cada pixel (image) y su valor al ser
sumados (summed area table). Se puede inferir que s(x,y) de la siguiente forma:
Algoritmo Viola/Jones

Integral Image :

• Es posible inferir como calcular la Imagen Integral:

• Donde el valor i(x,y) del pixel original, se obtiene mediante la operatoria:

• Donde también se puede ver de la siguiente manera:


Algoritmo Viola/Jones
Integral Image :

• Ejemplo:

• Para calcular el valor del rectángulo D podemos hacerlo mediante los cálculos ya realizados de las
áreas A, B y C.

• Sabiendo que el punto 4 se calcula con la suma de todos los puntos por encima y a la izquierda de
este, podemos deducir que el valor de D es el valor de 4 menos los valores de las áreas A, B y C.

• Por tanto, D= 4 – (1) - (2 -1) – (3 -1) = 4+1-2-3


Algoritmo Viola/Jones

Integral Image :

• Ejemplo numérico:

• Al usar la imagen integral nos permite encontrar suma de regiones rápidamente.

• Observe los pixeles sombreados y calcule la suma de los pixeles en la región, por medio de la
imagen integral el calculo es realizado solo con 4 operaciones.
Algoritmo Viola/Jones
Sliding Window:

• Dado un arreglo con valores de una integral image (con un tamaño X), con un tamaño de ventana
“nxn”.
• El proceso de sliding window permite recorrer una imagen utilizando diferentes tamaños de
ventana para análisis. En cada una de estas ventanas se clasifica si existe el objeto o no. Luego, una
vez que se ha encontrado el objeto, se procede a generar un cuadro de detección que indica que el
elemento está ahí.
• Ver video de ejemplo.
Video
Algoritmo Viola/Jones

Ejemplos de detecciones
Algoritmo Viola/Jones

Ejemplo en Matlab:

• %Create a face detector object.


• faceDetector = vision.CascadeObjectDetector;

• %Read the input image.


• I = imread(‘imagen.jpg');

• %Detect faces.
• bboxes = faceDetector(I);

• %Annotate detected faces.


• IFaces = insertObjectAnnotation(I,'rectangle',bboxes,'Face');
• figure
• imshow(IFaces)
• title('Detected faces');

También podría gustarte