Hola.
En este vídeo vamos a empezar a trabajar en la
detección de objetos usando un esquema muy sencillo.
Partiremos del descriptor más simple,
un descriptor que solo utiliza características propias del pixel.
En este caso, las características de color.
Para poder trabajar con este descriptor usaremos también un clasificador muy
básico.
Y lo aplicaremos a la detección de manos.
Veremos sus problemas y algunas soluciones.
La selección del descriptor que vamos a usar para representar el
objeto que buscamos en cualquier sistema es una decisión clave para el buen
funcionamiento del sistema detector.
Dentro del esquema que vamos siguiendo en el curso,
el descriptor está ligado al módulo de extracción de características.
Y hemos dicho que empezaremos con un descriptor muy sencillo,
usaremos directamente el color del pixel para detectar manos en imágenes,
sin tener en cuenta ninguna característica de forma del objeto.
Dada una imagen de entrada, el objetivo es detectar estos cuatro objetos, las manos.
Para hacerlo usaremos simplemente el color de la piel.
Supondremos que una mano es una región conectada de pixeles de color de piel,
que es una simplificación pero que será útil para empezar a trabajar.
Con este descriptor tan simple tendremos que trabajar con una simplificación del
esquema general que hemos definido para este curso.
Nos centraremos solo en los módulos de extracción de características y en el
módulo de clasificación de candidatos.
En este nuevo esquema simplificado tendremos solamente tres fases,
en el módulo de extracción de características simplemente
tomaremos el valor RGB de cada pixel como descriptor.
En el módulo de clasificación se establecerán los límites
de cada característica de color para determinar los márgenes de la clase piel.
Y en el módulo de generación de ventanas se extraerán las regiones conectadas
de pixeles de clase piel y a partir de aquí se extraerán los objetos detectados.
En este vídeo nos centraremos en los dos primeros módulos, en este y
en este y dejaremos la generación de ventanas para el siguiente vídeo.
Veamos con más detalle estos dos pasos.
Dada la imagen de entrada,
podemos observar el espacio del descriptor de color.
Dentro de este espacio en que hemos indicado cada pixel con su color,
podemos identificar los diferentes objetos.
Esta nube de puntos corresponde a los pixeles de la roca,
esta segunda corresponde a los pixeles de las manos, es decir los de la piel y esta
última más gris corresponde a los pixeles que forman parte del fondo de la imagen.
A partir de aquí podemos adaptar el paso de la clasificación para esta imagen,
las fronteras de la clase piel vendrán dadas por los parámetros S1,
S2 y S3 y podremos también identificar su centro.
Los resultados de aplicar los pasos del esquema visto sobre una
imagen serán los siguientes, la clasificación de la piel usando el
clasificador que hemos definido antes se puede ver en esta imagen.
Se ha calculado un centro y un tamaño para cada uno de los lados.
En blanco aparecen los pixeles dentro de la clase piel y en negro los
pixeles que han quedado fuera de la clase piel.
Finalmente quedará el paso de generar ventanas pero como you hemos dicho,
lo veremos en un vídeo siguiente.
En definitiva, tenemos un resultado bastante bueno para esta
imagen considerando que hemos utilizado un procedimiento muy similar.
Vamos a ver ahora qué pasa si se producen cambios de intensidad,
esto es si la imagen es adquirida con una luz más tenue.
Las imágenes de entrada al sistema podrían ser las siguientes.
Su representación en el espacio de color por supuesto será diferente para
cada imagen.
Ahora los colores aparecen mucho más agrupados en la imagen de menor intensidad
y por tanto la posición de los pixeles de color de piel variará para cada imagen.
Si tomamos el clasificador que nos ha funcionado para la primera imagen y
sin cambiar sus parámetros y lo usamos para el resto de las imágenes,
veremos que el clasificador está desplazado con respecto
a lo que es el centro de la clase piel y por tanto puntos de piel quedarán fuera y
dentro captará puntos que no son exactamente de piel y que pueden
corresponder perfectamente al fondo o a la ropa.
Así pues, los resultados de esta clasificación sobre las
imágenes serán estos, donde podemos ver que el clasificador
que funciona para la imagen inicial deja de funcionar para las
imágenes que se han capturado con una luz más tenue,
es decir imágenes que han sufrido un cambio de intensidad,
done nos aparecen regiones del fondo que no están correctamente segmentadas.
Para introducir invariancia a la intensidad,
a estos cambios de intensidad en un descriptor de color,
una solución posible es pasar al espacio de coordenadas cromáticas.
Las coordenadas cromáticas de un color de RGB se calculan dividiendo por
la intensidad de cada punto, es decir se divide el valor del pixel en
cada canal por la suma R más G más B de los tres canales.
Si tenemos en cuenta que los cambios de intensidad en una imagen se pueden
representar como producto de un escalar que indicamos con la letra s,
y que es aplicado a todos los puntos de la imagen y a todos sus canales,
tendremos que, si suponemos un punto en una imagen que ha sido modificada
por un cambio de intensidad, le aplicamos un paso a coordenadas cromáticas,
veremos que el escalar puede ser agrupado y por tanto puede ser cancelado
entre el numerador y el denominador.
Así pues, obtenemos un descriptor que es completamente invariante a la intensidad.
Un punto importante de este descriptor es
que ha perdido una dimensión y pasa a ser de dimensión dos.
Puesto que el paso a coordenadas cromáticas se puede entender como una
proyección sobre el plano R más G más B igual a uno y en este, y
tendríamos toda la información de color en este plano, por tanto en dos dimensiones.
Los resultados de aplicar estos pasos sobre las imágenes anteriores
serán los siguientes.
El paso a coordenadas cromáticas nos lleva a tres imágenes prácticamente idénticas,
puesto que se ha cancelado el parámetro introducido por la diferencia de
intensidad.
Sobre este resultado aplicamos clasificador inicial o una adaptación
de este, obtenemos una clasificación de piel prácticamente
perfecta en las tres imágenes.
Vamos a ver ahora qué pasa si se presentan cambios en el color
global de la imagen que pueden ser debidos bien a un cambio de luz en la escena o
a un cambio en el tipo de cámara usado para la adquisición.
Las imágenes de entrada al sistema podrían ser las siguientes.
Su representación en el espacio de color será por supuesto diferente para cada
una de estas imágenes, La posición de los pixeles de color de piel variará para cada
imagen, incluso es difícil segmentarla en esta vista del espacio.
Si tomamos la posición del clasificador que nos ha funcionado para la
primera imagen, y sin cambiar los parámetros lo intentamos usar para el
resto de las imágenes, veremos que estos clasificadores están captando en su
interior puntos que no son de color piel y otros que forman parte del fondo,
no hay una alineación perfecta entre el clasificador y la clase piel.
Así pues,
los resultados de este clasificador sobre todas las imágenes serán estos.
donde podemos ver que el clasificador que funciona para la imagen inicial,
esta, deja de funcionar para el resto de las imágenes que son
las que han sufrido un cambio de color.
Y además, para estas imágenes será muy difícil
adoptar un nuevo clasificador para que funciona bien para todas ellas.
Estos problemas son muy comunes para imágenes que han sido adquiridas en
condiciones no controladas.
Para evitar pues estos efectos de desviaciones globales
de color debido tanto a la nominación como a la cámara, una posible solución
es aplicar un procesamiento previo a todas las imágenes que permiten eliminar o como
mínimo reducir esto efectos y convertir la imagen en una imagen canónica,
esto es una imagen que simula haber sido adquirida bajo una luz controlada.
Este paso no siempre es posible pero hay algunos algoritmos que
intentar solucionarlo.
Aquí veremos el algoritmo de white-patch,
uno de los más sencillos pero que puede funcionar en muchos casos.
El algoritmo de white-patch intenta eliminar el efecto global del color en una
imagen asumiendo que los valores máximos de RGB que aparecen
en esa imagen corresponden al color de una superficie blanca y
por tanto al color de la luz de esa escena que se proyecta en esa superficie blanca.
Así pues, para estimar el color de la luz se calcula el valor máximo de cada canal.
Una vez si estimado la luz de la escena con este máximo de cada canal,
el algoritmo intenta eliminar su efecto introduciendo una luz blanca canónica.
Supondremos pues, que el color de la luz blanca es el 255, 255, 255.
Para eliminar la luz de color se divide por la luz estimada
en el paso anterior y se multiplica por la luz blanca que acabamos de ver.
Esto es, se multiplica cada canal
por el cociente entre 255 y el máximo de ese canal.
Así pues, dadas las imágenes de partida y podemos analizar los resultados.
La aplicación del algoritmo de white-patch nos lleva a cuatro imágenes muy similares,
en la que el patrón de blanco perfecto está presente en todas ellas.
La similitud entre todas estas imágenes nos introduce una mayor estabilidad del
color y por tanto permitirá obtener una mejor clasificación.
Si apocamos el clasificador inicial, el que habíamos calculado con esta imagen
obtenemos una clasificación mejor que sin el white-patch pero todavía no es buena.
Aquí, aquí y aquí nos van apareciendo regiones mal clasificadas.
Sin embargo, gracias a la estabilidad de las imágenes obtenidas es fácil encontrar
unas nuevas condiciones que se adapten a todas las imágenes del patrón blanco.
Y por tanto podemos obtener una clasificación que es buena para todas
ellas, como es el caso de esta que acabamos de ver.
you para acabar y como resumen de esta clase podemos decir que
en este vídeo hemos empezado a trabajar con la detección de objetos con un esquema
simplificado para ir entrando en el tema.
Hemos usado un descriptor de objetos que simplemente ha usado
características de pixel, las características mínimas, las del color,
sin considerar para nada la forma de los objetos.
Y hemos visto también un ejemplo simple de clasificador.
A partir de este esquema hemos analizado el problema del cambio de intensidad
y hemos propuesto una solución cambiando al descriptor a una versión que fuera
invariante a la intensidad, son las coordenadas cromáticas.
Después hemos visto también el problema del cambio global del color de la escena,
que puede ser también debido bien a luz o bien a la cámara y se ha propuesto una
solución basada en el algoritmo white-patch.
Por supuesto podemos encontrar muchos más problemas,
podemos tener imágenes que no contengan ninguna superficie más o menos blanca y
por tanto sea imposible normalizarlas con el white-patch, que por tanto requieran
otro tipo de algoritmos para la estimación del color global.
De todas maneras, la principal debilidad de la propuesta de hoy es que hemos
partido de la suposición de que una mano es una región de color de piel
y evidentemente es una simplificación que no funcionará en imágenes generales
en las que pueden aparecer otros objetos de color piel que no sean manos.
Y hasta aquí este vídeo en el que hemos trabajado con un sistema muy básico de
detección.
Esto es todo.