Extensión de Algoritmos de
Sustracción de Fondo para
Cámaras PTZ
Facultad de Ciencias Exactas
U niversidad N acional del Centro de la Provincia de Buenos Aires
Leonardo A. Fernández Esteberena
D irector
Dr. Juan Pablo D’Amato
Trabajo Final de la Carrera
Ingeniería de Sistemas
2
Resumen
En la última década los sistemas de video-vigilancia digital se han extendido a casi todo el mundo. Gracias a una reducción de costos de equipamiento y a la maduración de tecnologías de hardware y software, se ha allanado el camino para la implementación de sistemas de vigilancia de manera masiva. Estos sistemas son controlados por video operadores, los cuales observan durante horas un conjunto limitado de cámaras. Para facilitar esta tarea y aumentar su productividad se desarrollan técnicas automatizadas basadas en detección de movimiento, llamadas técnicas de sustracción de fondo, a fin de encontrar posibles sucesos de interés.
En general, los algoritmos existentes de sustracción de fondo (BGS) trabajan sobre cámaras fijas (un único punto de vista), aplicando análisis estadístico para determinar cuáles píxeles pertenecen al entorno y cuáles a los objetos en movimiento. Cuando se desea trabajar en cámaras móviles tipo domo (también denominadas PTZ), los algoritmos clásicos fallan. En este trabajo, se propone una solución para extender el uso de estos algoritmos a cámaras giratorias y evalúa la factibilidad de su aplicación en casos reales.
Para evitar que estos algoritmos detecten toda la imagen como primer plano al girar la cámara, se definió un modelo que permite incluir a todo el espacio de visión que puede grabarse dentro de una sola imagen rectangular, que luego el algoritmo de sustracción trata como si proviniese de una cámara estática, con solo modificaciones menores en su funcionamiento interno. Para ello se idealizó a la cámara como un objeto puntual y al espacio que puede observar como la superficie de una esfera con centro en ese punto. La imagen plana final es generada proyectando cada uno de sus píxeles sobre la esfera en base a las coordenadas de rotación actuales – la función de proyección puede elegirse para dar preponderancia a las regiones de interés en cada escena en particular. Luego la sección de la esfera es proyectada sobre el cuadro de video grabado, y finalmente se corrige la distorsión causada por la lente. Como el algoritmo de sustracción ha de procesar sólo la sección del espacio observada actualmente, debió reimplementarse para funcionar con una máscara de selección de píxeles que es calculada por el algoritmo de proyección. También debieron realizarse múltiples optimizaciones para que el algoritmo de proyección procesara suficientes cuadros por segundo como para permitir su uso en tiempo real.
3
4
Índice
Capítulo 1. Introducción ... 6
1.1. Motivación ... 7
1.2. Objetivos ... 8
1.3. Organización de este Informe ...10
Capítulo 2. Estado del Arte ...11
2.1. Sustracción de Fondo ...11
2.1.1. Aplicaciones ... 13
2.1.2. Algoritmos de Densidad Probabilística...15
2.1.3. ViBe ...18
2.2. Seguimiento de Objetos ... 22
2.2.1. Tipos de Tracking ... 23
2.2.2. Relación con la Sustracción de Fondo ... 25
2.3. Stitching ... 26
Capítulo 3. Solución Propuesta ... 29
3.1. Vista General ... 29
3.2. Control de la Cámara ... 31
3.3. Construcción del Modelo de Visión ... 33
3.3.1. Proyección de la Imagen Bidimensional a la Esfera de Visión ...34
3.3.2. Proyección del Espacio Esférico a la Imagen Grabada ... 37
3.3.3. Distorsión de la Lente ...41
3.3.4. Optimizaciones ...43
3.3.5. Otras Implementaciones del Algortimo ...47
3.4. Cambios en la Sustracción de Fondo ...49
3.4.1. Modificaciones para Cámaras Giratorias ...49
5
Capítulo 4. Problemáticas de Operación en Casos Reales ... 52
4.1. Latencia en la comunicación ... 52
4.1.1. Tratamiento en el Software Implementado ... 53
4.1.2. Soluciones Alternativas ...54
4.1.3. Impacto de la Configuración de la Cámara ...54
4.2. Ruido ...55
4.3. Iluminación ...55
4.3.1. Tipo y origen de las variaciones ...56
4.3.2. Soluciones exploradas ...58
Capítulo 5. Análisis de Resultados ...61
5.1. Imágenes Proyectadas ...61
5.2. Máscaras de Primer Plano ...67
5.3. Evaluación del Algoritmo ViBe Extendido ...70
5.3.1. Metodología ...70
5.3.2. Caso de Test ...71
5.3.3. Selección de la Máscara de Detección ...74
5.4. Medición del Desempeño ...75
5.4.1. Iteraciones del Algoritmo de Proyección ...76
5.4.2. Tiempos según Posición ...78
Capítulo 6. Conclusiones ...81
6.1. Trabajo Futuro ... 82
6
Capítulo 1. Introducción
En la última década los sistemas de seguridad por video se han extendido a casi todo el mundo, y se espera que esta tendencia se profundice. Se estima que, motivados por el incremento de la inseguridad, la reducción de costos y la maduración de tecnologías de hardware y software, el mercado global de equipos para la videovigilancia crecerá alrededor del 50% entre 2014 y 2018 [1] [2]. Al mismo tiempo esto acentúa enormemente uno de los problemas centrales en este ámbito: la cantidad de cámaras excede por mucho la capacidad de monitoreo del personal de seguridad. Las cámaras son cada vez más ubicuas y baratas, pero los recursos humanos para controlarlas y monitorearlas son costosos [3]. Los operarios no solo están limitados por la cantidad de cámaras que pueden controlar simultáneamente, sino también por su capacidad de atención visual en el tiempo: luego de 20 a 30 minutos es difícil para un humano mantener altos niveles de atención, y para imágenes con calidad degradada ese número puede disminuir hasta tan solo 5 minutos de atención continua [4]. Al mismo tiempo el volumen de datos se ha incrementado enormemente. Como referencia considérese que, en 2012, el porcentaje que los videos de vigilancia representaban de toda la big data considerada útil y analizable a nivel global superó el 50%, pero solo el 0.5% de toda la información fue efectivamente analizada [5]. Solo en 2016 se estima que el espacio de almacenamiento para vigilancia se incrementó cerca de la mitad [6]. En este contexto, la creación de software de asistencia y análisis de video automatizado se vuelve indispensable.
7
Es imposible actualmente emprender el diseño de un programa de software con capacidades generales que solucione todos estos problemas simultáneamente, por lo que la mayoría de los trabajos relacionados exploran técnicas para resolver una porción específica de estas cuestiones, con el fin de integrarlas luego a sistemas preexistentes. En este proyecto interesa la detección de objetos en movimiento, y se lo enfoca con el uso de técnicas de sustracción de fondo.
1.1. Motivación
La industria de la videovigilancia está adoptando cada vez más tecnologías digitales, imagen en alta definición, control de los sistemas a través de Internet e instalación de cámaras IP [6] [9]. Este contexto allana el camino para la implementación y proliferación de sistemas automatizados, que dan la posibilidad de analizar una gran cantidad de información de video de manera inteligente.
Los nuevos sistemas deben asimilar y aprovechar las características de las nuevas tecnologías de hardware. Entre estas se encuentran cámaras IP que tienen la capacidad de girar, como las de tipo bala o domo, que pueden controlarse digitalmente a través de Internet en tiempo real. Su incorporación permite reducir los costos y la complejidad de instalación y mantenimiento de un sistema de vigilancia, al cubrir la misma área con un número menor de cámaras que realizan paneos. Adicionalmente, las cámaras giratorias proporcionan la capacidad de hacer zoom en zonas particulares para facilitar tareas de análisis de contenido, como el conteo de multitudes o la identificación de personas, de matrículas de automotor y de objetos abandonados. Por otro lado, a medida que el número de cámaras aumenta, su control manual se hace inviable y se requiere de software cada vez más automatizado para asistir en el paneo y en la detección de casos de interés; pero no todas las técnicas de software son fácilmente adaptables al uso de estas cámaras.
8
la cámara se desplaza, gira, o hace uso de teleobjetivos para ampliar la imagen, porque en esos casos no se cuenta con un fondo invariante en el tiempo – o por lo menos con uno que varíe de manera gradual. Algunos algoritmos como ViBe [11] sí se adaptan a cambios en el fondo, pero requieren de un tiempo de reinicialización ante transiciones bruscas, haciendo difícil su aplicación en tiempo real si se efectúan giros de la cámara frecuentemente. Pero lo que es más importante, reinicializar el modelo del algoritmo significa que no pueden hacerse comparaciones con tomas anteriores del área enfocada. Esto representa un inconveniente si desea utilizarse estas técnicas para encontrar cambios en la escena en sistemas modernos, porque la mayoría de los sistemas de vigilancia actuales cuentan con las cámaras mencionadas, que pueden rotar para grabar en cualquier dirección. En el instituto PLADEMA, donde se lleva a cabo este trabajo final, se está desarrollando un sistema de vigilancia automatizada, y se requiere buscar alternativas para solucionar las limitaciones de los algoritmos tradicionales.
El alcance del problema no se contiene en la detección. Debe tenerse en cuenta que los pasos posteriores en la línea de procesamiento pueden depender del éxito de esta etapa. Considérese el object tracking: en el pasado se han utilizado técnicas tales como filtros de partículas para realizar el seguimiento de múltiples objetos luego de su extracción mediante sustracción de fondo [12] [13], volviendo a los programas que utilizan estos algoritmos sensibles a fallos en la etapa de sustracción. El tracking de puntos es también un ejemplo claro porque, cuando utiliza sustracción de fondo, depende casi exclusivamente de las posiciones de los objetos detectadas en base a esa etapa. Por ello, para posibilitar que las aplicaciones que utilizan técnicas como estas mantengan una noción de todo el espacio y realicen el seguimiento de objetos detectados en tomas distintas por una cámara giratoria, se presenta como una opción atractiva extender los algoritmos de sustracción de fondo mediante modelos que tengan en cuenta un espacio de grabación en 360 grados.
1.2. Objetivos
9
sobre imágenes de cámaras estáticas como sobre imágenes provenientes de un modelo en 360 grados, presentándose como alternativa para llevar a cabo la sustracción de fondo como una etapa independiente, dentro de líneas de procesamiento que probablemente atenderán cuestiones como el seguimiento o el reconocimiento de objetos.
Los algoritmos de detección podrían simplemente reiniciarse luego de cada rotación, pero la solución que se busca alcanzar procura “recordar” de alguna manera las regiones observadas con anterioridad, concediendo la capacidad de realizar comparaciones e identificar cambios entre distintas pasadas por la misma región de grabación, así como reutilizar tomas recientes para continuar con la sustracción con un tiempo de reinicialización reducido, idealmente nulo.
Específicamente, el trabajo tiene las siguientes metas:
Extender una técnica de sustracción de fondo para que opere tanto sobre cámaras estáticas como giratorias, manteniendo memoria de todo el espacio de visión.
Proveer la funcionalidad en tiempo real.
Como restricción técnica, se pide desarrollar los algoritmos en C# para facilitar su incorporación a la aplicación de vigilancia automatizada que está siendo desarrollada en el instituto.
Facilitar posibles reemplazos del modelo de visión, modificaciones a los algoritmos de sustracción y la creación de nuevas líneas de procesamiento. Se busca que la solución esté orientada a ser utilizada dentro de distintas aplicaciones relacionadas con la videovigilancia.
Explorar problemas que obstaculicen la eficacia de los algoritmos en condiciones adversas y considerar posibles soluciones.
10
1.3. Organización de este Informe
El presente informe está dividido en seis capítulos:
El Capítulo 1 termina en este punto, habiendo presentado el ámbito, las
motivaciones y los objetivos del trabajo.
El Capítulo 2 introduce las técnicas de sustracción de fondo haciendo hincapié en el algoritmo ViBe – el cual es utilizado con modificaciones en la versión final del software – y expone los principios de acción de las técnicas de seguimiento de objetos y su relación con este trabajo. También explica en líneas generales la técnica de stitching usada en la generación de fotos panorámicas, su relevancia en este contexto, y discute por qué no fue utilizada.
El Capítulo 3 describe la solución propuesta para incorporar cámaras giratorias; primero desde el punto de vista teórico, luego explicando las optimizaciones y detalles de implementación.
El Capítulo 4 muestra algunas problemáticas halladas tras el desarrollo que impiden el buen desempeño de la solución en la práctica, junto a intentos o consideraciones para su resolución.
El Capítulo 5 expone las metodologías de toma de métricas, los resultados obtenidos y un análisis de los mismos.
11
Capítulo 2. Estado del Arte
2.1. Sustracción de Fondo
La sustracción de fondo (más comúnmente background subtraction, por su nombre en inglés) es un enfoque para la detección de objetos en movimiento en videos. Las técnicas que siguen este enfoque generan una máscara binaria para cada cuadro de video, que indica cuáles píxeles corresponden al fondo de la imagen (background) y cuáles componen objetos que se desplazan sobre el mismo, llamada en este trabajo máscara de primer plano (foreground). La definición de fondo puede variar dependiendo de qué tipo de objetos se desea detectar, el marco de tiempo en el que quiere hacerse y otros criterios – es usual que se incluya el movimiento de las hojas de los árboles o las olas del mar dentro del fondo, por ejemplo, pero no así a los cambios en la imagen producidos por personas que caminan a la distancia. Como definición clásica, teniendo en cuenta estas salvedades, suele llamarse fondo a las partes de la imagen que se mantienen invariantes en el tiempo.
Un ejemplo de máscara de primer plano se presenta a la derecha en la Figura 1, la cual representa al fondo en color negro y a los objetos en movimiento en color blanco. Hay que subrayar que esta máscara no es estimada sólo en base al último cuadro de video – tal análisis requeriría primero de la clasificación de los objetos – sino que es hallada mediante la comparación de los cuadros a través del tiempo. Por su naturaleza, este enfoque es muy utilizado en videos de cámaras estáticas [10].
Figura 1 – Máscara de salida de un algoritmo de sustracción de fondo
A la izquierda, el último cuadro de video procesado por un algoritmo de sustracción de fondo; a la derecha, la máscara de primer plano que obtiene como resultado para ese cuadro.
12
Existen múltiples algoritmos que realizan sustracción de fondo y formas de parametrizarlos que pueden resultar más o menos apropiados dependiendo del ámbito de aplicación. La alternativa más sencilla es tomar la intensidad de cada pixel del último cuadro de video recibido y restarle la intensidad del píxel correspondiente en el cuadro anterior. Si la diferencia es mayor a un umbral arbitrario, entonces es considerado un píxel en movimiento; sino, se lo clasifica como fondo. Las virtudes de este algoritmo básico son su simplicidad y su reducido tiempo de procesamiento, pero los resultados son extremadamente susceptibles al ruido y no tiene memoria más allá del cuadro inmediatamente anterior. Otros algoritmos se enfocan en construir una memoria del color de cada píxel a lo largo del tiempo y permiten ser más tolerantes a cambios no relevante en la imagen.
Los resultados de un algoritmo de sustracción están determinados principalmente por su modelado del fondo. Para lograr buenos resultados, el modelo debe atender tres atributos centrales [14]:
Precisión: por un lado, es preferible que las formas en la máscara coincidan con las siluetas reales de los objetos detectados, por otro se espera que estas formas tengan una alta reactividad frente a los cambios en el tiempo, fundamentalmente ante el movimiento de los objetos. La sensibilidad del algoritmo también juega un papel importante en su precisión, y distintos contextos pueden requerir una sensibilidad distinta.
Flexibilidad: la capacidad de adaptación es necesaria para tolerar variaciones en la iluminación, oscilaciones, y otros cambios que preservan el contenido pero alteran la representación visual de los objetos, produciendo falsos positivos.
Eficiencia: se busca reducir los costos de memoria y procesamiento, pero por sobre todo el costo temporal, con el fin de proveer servicios en tiempo real.
13
2.1.1. Aplicaciones
Las aplicaciones de las técnicas de sustracción de fondo son variadas, e incluyen entre otras las siguientes.
D etección de m ovim iento: los algoritmos de sustracción de fondo que posean una precisión baja pueden ser útiles de cualquier forma para detectar el nivel de movimiento en el video grabado, definiendo umbrales de cantidad de píxeles detectados como primer plano y desencadenando acciones. Esto permite utilizarlos, por ejemplo, como alarmas de movimiento, o para evitar almacenar video en periodos de inactividad en la zona.
Segm entación y seguim iento de objetos: la segmentación de los objetos en
movimiento en la escena y su localización en el tiempo son las razones centrales para utilizar sustracción de fondo en el marco de la videovigilancia [15]. También se ha recurrido a esto en otros ámbitos. Por ejemplo en los deportes, tanto para seguir la posición de todos los jugadores durante un partido de futbol [16] o para determinar la posición de la pelota en un partido de tenis [17]. En el marketing, este tipo de seguimiento ha sido utilizado para determinar cuánto tiempo pasan los clientes observando cada producto en particular [18]. Debido a la orientación de este trabajo, las técnicas que permiten estas aplicaciones en la videovigilancia serán tratadas más adelante con mayor detalle.
Análisis de focalización de la atención : La llamada visual saliency es la
cualidad o estado de un objeto que le permite resaltar perceptualmente en comparación a los demás objetos presentes en una escena. La sustracción de fondo ha sido utilizada para extender el análisis de atención de imágenes a
Tracking de jugadores de futbol Fuente: Tracking multiple sports players through
occlusion, congestion and scale [16]
Figura 2 – Aplicación de la sustracción de fondo en el seguimiento de objetos Tracking de personas en videoviligancia
14
video, permitiendo filtrar los objetos en movimiento para un estudio posterior, debido a que son aquellos objetos casi siempre los más salientes en una escena [7]. El análisis de atención puede ser importante tanto en seguridad como en psicología social y en marketing.
Estim ación de pose: La estimación de pose consiste, en el sentido general, en determinar la transformación que permite pasar de la representación en dos dimensiones de un objeto – generalmente grabado en video – a un modelo del mismo en tres dimensiones. La sustracción de fondo ha sido aprovechada en modelos generales para filtrar las siluetas de interés, pero también en soluciones a casos más específicos como la determinación del posicionamiento del cuerpo humano, realizando el análisis de pose a partir de las máscaras de primer plano [19] [20]. Estas aplicaciones son relevantes para la interacción humano-máquina, sobre todo en interfaces de interacción natural. En videovigilancia puede servir dentro del análisis de acciones y comportamiento.
Codificación de video basada en contenido : La cantidad de datos
necesarios para transmitir o almacenar un video puede reducirse significativamente si se obvian las partes de la imagen que se mantienen estáticas a lo largo de varios cuadros (fondo), y se describen sólo los cambios que se producen en el primer plano [21]. Este tipo de compresión es muy extendida y contribuye a manejar el gran volumen y tamaño de los videos a través de Internet.
Figura 3 - Estimación de pose tras la sustracción del fondo
15
2.1.2. Algoritmos de Densidad Probabilística
2.1.2.1. Promedio Gaussiano Móvil
El algoritmo llamado Running Gaussian Average (originalmente propuesto por Wren, Azarbayejani, Darrell, & Pentland para asistir en la estimación de pose y el seguimiento del cuerpo humano [22]) utiliza una función de probabilidad gaussiana para estimar los posibles valores de intensidad de un pixel.
Específicamente, se propone ajustar una función gaussiana a los valores de intensidad
𝑰 que el píxel tomó en los últimos 𝒏 cuadros, considerando a esos valores como los
esperados cuando conforma parte del fondo. Luego, el píxel se clasifica como fondo o primer plano en el cuadro actual correspondiente al tiempo 𝒕, dependiendo de si su nuevo
valor de intensidad 𝑰𝒕 se mantuvo o no dentro 𝒌 desvíos estándar.
La distribución normal o gaussiana es:
𝑓(𝑥 | 𝜇, 𝜎2) = 1 √2𝜎2𝜋𝑒
−(𝑥−𝜇)
2
2𝜎2
Donde 𝜎 representa el desvío estándar y 𝜇 la media. Estos parámetros varían para
cada tiempo 𝒕 , y son elegidos inicialmente definiendo 𝜇0 = 𝐼0 y eligiendo 𝜎02
arbitrariamente, por lo general en base al promedio de las derivadas direccionales en 𝑥 y en 𝑦, y según la variabilidad esperada para la escena grabada.
Figura 4 – Compresión de video a partir de máscaras de primer plano
16
Para evitar el costo de procesamiento de realizar el ajuste de esta función desde cero para cada uno de los píxeles en cada cuadro – y facilitar así el funcionamiento del algoritmo en tiempo real – se deja variar tanto a 𝜇 como a 𝜎 como promedios móviles
mediante un suavizado exponencial, de la siguiente manera:
{𝜇𝑡 = 𝜌𝐼𝑡+ (1 − 𝜌)𝜇𝑡−1 𝜎𝑡2 = 𝑑
𝑡2𝜌 + (1 − 𝜌)𝜎𝑡−12
Donde 𝑑𝑡 = |𝐼𝑡− 𝜇𝑡| define 𝜎 para el nuevo cuadro, y 𝜌 es un parámetro que permite
controlarla ventana de tiempo de valores de importancia para el modelo del píxel. Los últimos cuadros tienen prioridad a la hora de estimar valores futuros, y decaen con el tiempo.
Formalmente, un píxel se clasifica como fondo en el cuadro correspondiente al tiempo
𝑡 si |𝐼𝑡−𝜇𝑡|
𝜎𝑡 ≤ 𝑘, y como primer plano cuando
|𝐼𝑡−𝜇𝑡|
𝜎𝑡 > 𝑘. Siendo 𝑘 el umbral de aceptación, elegido usualmente alrededor de 𝑘 = 2.5 y ajustado empíricamente de acuerdo al nivel de
sensibilidad que se quiere lograr.
Nótese que cuando un objeto se detiene, será consumido por el modelo e incorporado al fondo. Esto es debido a que los valores de sus píxeles en los últimos cuadros tienen mayor preponderancia que los antiguos valores del fondo, los cuales serán olvidados más o menos rápido dependiendo de 𝜌. Esto puede ser deseable o no dependiendo del contexto,
por ello una variante del algoritmo intenta evadir este comportamiento actualizando los valores históricos solamente para los píxeles que fueron clasificados como fondo, pero nunca para los correspondientes al primer plano. La modificación obtiene mejores resultados cuando el fondo se mantiene estático; no obstante, también ocasiona que el algoritmo no se adapte a cambios en el entorno, sobre todo en lo que respecta a la iluminación: una vez que un píxel es clasificado como primer plano, solo podrá volver a ser considerado como parte del fondo cuando regrese a los valores históricos que tenía antes de la irrupción del objeto; algo que puede no suceder nunca porque, después de que el objeto deja el área, la zona que estaba detrás puede haber variado y el modelo no es capaz de reconocer las nuevas condiciones del fondo.
17
los árboles a la distancia, que no son de interés en casi ningún caso. También permite clasificar a un objeto como primer plano si se detuvo solo momentáneamente, algo que la resta directa tampoco percibe porque no detecta ninguna diferencia entre las últimas dos imágenes. Finalmente, mejora la tolerancia a ciertos tipos de ruido porque puede incluirlo en los valores del modelo de cada píxel, ampliando la campana de gauss y evitando en varios casos clasificarlo como primer plano.
2.1.2.2. Basado en regiones
Los algoritmos de sustracción de fondo basados en regiones dividen la imagen en una grilla de rectángulos de igual tamaño, y caracterizan cada uno para decidir si cambiaron con respecto al cuadro anterior. En un algoritmo propuesto por Varcheie, Sills-Lavoie & Bilodeau [23] se representa a cada rectángulo mediante su histograma de color, y se explora su similitud mediante un quadtree. Se toman primero los rectángulos de mayor tamaño, y si la similitud entre su histograma en el nuevo cuadro con respecto al anterior está dentro de un umbral de aceptación, entonces se copia el rectángulo al modelo del fondo. Si no, se lo subdivide y se realiza el mismo análisis en rectángulos de menor tamaño en su interior – se toman también los rectángulos de menor escala vecinos, porque ello mejora los resultados.
La similitud de los histogramas de color puede evaluarse con distintas métricas de distancia entre histogramas, siendo la más simple la distancia euclídea. En el algoritmo mencionado se utiliza MDPA, que intuitivamente representa la cantidad de trabajo que
Figura 5 – Exploración del quadtree en un algoritmo basado en regiones
El algoritmo compara primero los histogramas de cuadros consecutivos de los rectángulos de mayor tamaño (coarsest scale rectangle). Las zonas en negro representan los rectángulos donde la similitud es lo suficientemente alta para considerarse parte del fondo. Los demás se recorren y se realiza el mismo análisis con granularidad más fina (rectángulo en rojo). No solo se tienen en cuenta los rectángulos en los que se subdivide, sino también sus vecinos (rectángulo gris).
18
debe hacerse para mover la “masa de la distribución” de manera de convertir un histograma en otro [24].
Los algoritmos basados en regiones permiten en varios casos mejorar la eficiencia de la detección al ahorrar procesamiento a nivel píxel. El análisis puede terminar cuando se alcanza un nivel de profundidad arbitrario, obteniendo resultados con mayor precisión y costo mientras más niveles se exploren. No obstante, en el algoritmo de Varcheie et. al. se propone permitir que la división llegue hasta el nivel de los píxeles cuando es necesario, y emplear el método en conjunción con un modelo de mezcla gaussiana por píxel, de manera similar al modelo gaussiano expuesto anteriormente.
2.1.3. ViBe
Visual Backgroud Extractor (ViBe) es un algoritmo de sustracción de fondo desarrollado y patentando por Olivier Barnich y Marc Van Droogenbroeck [11]. El presente trabajo final utiliza un algoritmo de sustracción de fondo basado en ViBe, por ello este algoritmo se expone con mayor detalle en esta sección separada.
ViBe se desvía de la idea de modelado a través de funciones de densidad probabilística que priorizan las últimas observaciones y, en vez de eso, mantiene una colección de muestras para cada píxel que actualiza continuamente con cierta probabilidad. Luego clasifica a un píxel como parte del fondo siempre que sea similar a solo unas pocas de esas muestras. Los autores argumentan que es más confiable estimar la distribución estadística de un píxel del fondo con un pequeño número de valores de color cercanos al original que con un gran número de muestras dispersas, las cuales son más proclives a ser influenciadas por valores atípicos. El efecto resulta similar a ignorar los extremos de una función gaussiana o considerar sólo su sección central aplicando un umbral.
2.1.3.1. Clasificación
Para determinar si un píxel de una imagen de entrada forma parte del fondo o no, el algoritmo compara su valor con las muestras que recolectó para ese píxel a lo largo del tiempo. Si el valor del píxel de entrada es similar a cierto número de muestras, entonces lo clasifica como fondo; si no, lo considera parte de un objeto en movimiento.
Formalmente se define 𝑣(𝑥) como el valor en un espacio de colores euclídeo
19
𝑀(𝑥) = {𝑣1, 𝑣2, … , 𝑣𝑁}
Donde 𝑣𝑖 es el valor de la muestra del fondo con índice 𝑖, y cada píxel del fondo es modelado con 𝑁 muestras.
Para clasificar el píxel 𝑥 de acuerdo a su modelo correspondiente 𝑀(𝑥), 𝑣(𝑥) es comparado con las muestras definiendo una esfera 𝑆𝑅(𝑣(𝑥)) de radio 𝑅 y con centro en 𝑣(𝑥). El píxel 𝑥 es clasificado como fondo si la cardinalidad (operación denotada con #) del conjunto intersección entre la esfera con la colección de muestras 𝑀(𝑥) es mayor o
igual a un umbral #𝑚𝑖𝑛. Esto es:
𝑥 es parte del fondo ↔ #𝑚𝑖𝑛 ≤ #{𝑆𝑅(𝑣(𝑥))} ∩ {𝑣1, 𝑣2, … , 𝑣𝑁}
El radio 𝑅 representa una distancia euclídea dentro del mismo espacio de colores,
aunque se argumenta que para el caso de RGB el canal azul puede descartarse sin disminuciones significativas en la precisión del algoritmo, acelerando el procesamiento.
Los autores exponen en la misma publicación citada que han determinado experimentalmente que, al menos para imágenes monocromáticas, los parámetros óptimos son 𝑅 = 20 y #𝑚𝑖𝑛 = 2. La selección de 𝑁 es dejada libre en principio para poder
determinar la sensibilidad del algoritmo. Finalmente, por un balance entre el costo, la sensibilidad y la eficiencia, seleccionan 𝑁 = 20, debido a que el porcentaje de clasificación
Figura 6 – Radio de inclusión al fondo con dos canales de color
20
correcta de píxeles sube con la cantidad de muestras pero se aplana alrededor de las 20, y se requieren exponencialmente más muestras para lograr mejoras apreciables. En general, recomiendan mantener la proporción #𝑚𝑖𝑛
𝑁 = 1 10.
2.1.3.2. Inicialización
El modelo es inicializado con la información recibida en el primer cuadro del video de entrada. La mitad de las muestras en 𝑀(𝑥) son inicializadas con una copia exacta del primer cuadro, mientras que las demás se inicializan con información proveniente de los píxeles vecinos: para cada pixel 𝑥 se define un vecindario espacial de 𝑥, escrito como
𝑁𝐺(𝑥), que representa al conjunto de píxeles cercanos a 𝑥. La función 𝑁𝐺 puede variar,
pero la versión inicial de ViBe utiliza una de las definiciones más comunes, normalmente llamada vecindad de Moore o píxeles 8-conectados, que es el conjunto de los ocho píxeles alrededor de 𝑥 – es decir, si 𝑥 = (𝑢, 𝑣), entonces 𝑁𝐺(𝑥) incluye los píxeles con coordenadas (𝑢 ± 1, 𝑣 ± 1) ó (𝑢, 𝑣 ± 1) ó (𝑢 ± 1, 𝑣). Se elige el color de un píxel al azar de 𝑁𝐺(𝑥) para
inicializar la segunda mitad de las muestras.
2.1.3.3. Actualización
Reem plazos
En contraste con los algoritmos clásicos de promedios gaussianos, ViBe desmerece la idea implícita de que los píxeles nuevos son necesariamente más precisos que las muestras más antiguas. En lugar de utilizar una política de primero en entrar, primero en salir, el algoritmo selecciona cuál 𝑣𝑖 reemplazar de manera aleatoria.
Específicamente, cada vez que se procesa un nuevo cuadro de entrada, cada pixel 𝑥
tiene una probabilidad de 1
φ de ser incorporado al modelo. Los autores toman φ = 16,
pero su análisis no determina este valor como especial, y puede cambiarse para ajustar la ventana de tiempo cubierta por el modelo del píxel. De ser incorporado, el nuevo valor puede reemplazar a cualquiera de las 𝑁 muestras en 𝑀(𝑥), la cual se selecciona
aleatoriamente con una distribución uniforme. Esto significa que para φ = 1, la
probabilidad de que una muestra se preserve tras una actualización es de 𝑁−1
21
Para múltiples actualizaciones, si se considera un tiempo discreto 𝒕 – que debe interpretarse como el número de cuadros procesados – la probabilidad de que la muestra continúe en el modelo tras 𝑑𝑡 cuadros es:
𝑃(𝑡, 𝑡 + 𝑑𝑡) = ∏𝑁 − 1 𝑁 𝑡+𝑑𝑡
𝑡
= (𝑁 − 1 𝑁 )
(𝑡+𝑑𝑡)−𝑡
En la última expresión es claro que la variable 𝑡 puede ser cancelada en el exponente,
lo que significa que el momento en el cual una muestra ingresa al modelo no altera la probabilidad de que sea reemplazada ( 𝑃(𝑡, 𝑡 + 𝑑𝑡) solo depende de 𝑑𝑡). En otras palabras
y a diferencia del modelo en general, la política de actualización no tiene memoria, permitiendo que las muestras viejas sean tratadas con igual prioridad que las nuevas y permanezcan vigentes – potencialmente de manera indefinida, pero la probabilidad decae exponencialmente. Nótese también que el uso de reemplazos aleatorios vuelve al algoritmo no determinístico.
Propagación
Como se mencionó en la introducción del algoritmo, una de las ideas principales detrás del diseño de ViBe es que un número reducido de muestras fidedignas son más resistentes a valores extremos y por lo tanto pueden hacer una mejor estimación que un gran número de muestras dispersas.
22
Para solucionar este problema se introduce un mecanismo mediante el cual los valores de los píxeles del fondo pueden propagarse a los píxeles vecinos, permitiendo que los fantasmas y los objetos que se detienen sean progresivamente consumidos por el modelo. Específicamente, cuando se actualiza el modelo de un píxel 𝑥 al insertar 𝑣(𝑥) en una actualización de reemplazo, también puede reemplazarse – con la misma probabilidad de ocurrencia – uno de los valores en 𝑀(𝑦 |𝑦 𝜖𝑁𝐺(𝑥) por 𝑣(𝑥), donde 𝑁𝐺 se define de igual manera que durante la inicialización, y donde 𝑦 es elegido también de manera aleatoria y
uniforme.
Este proceso aleatorio puede introducir información incorrecta desde los vecinos, pero dado que 𝑀(𝑥) contiene muchas muestras, esto no afecta significativamente la clasificación de píxeles. La estrategia de reemplazo conservadora pone un freno a la propagación de valores incorrectos o irrelevantes al requerir la observación de los valores en el cuadro de entrada antes de que puedan propagarse más allá.
2.2. Seguimiento de Objetos
El seguimiento de objetos o tracking consiste en determinar la posición espacial de un objeto a través del tiempo, entendiéndose por objeto a cualquier cuerpo rígido que se mantenga constituido durante todo el periodo de tiempo que se realiza el seguimiento. Si se restringe la definición a la videovigilancia, debe permitir localizar un objeto en el tiempo utilizando sólo información visual. Considerando sólo una cámara, hacer tracking implica cuanto menos estimar la trayectoria de un objeto en el plano de la imagen a medida que se desplaza a través de la escena [25].
23
2.2.1. Tipos de Tracking
Las técnicas de tracking más extendidas pueden dividirse en tres categorías generales según cómo representan y analizan a los objetos [25].
Tracking de puntos
Representa a cada detección en cada cuadro como un punto e intenta determinar cuáles de los puntos en distintos cuadros se corresponden con el mismo objeto moviéndose en el tiempo. Estima la trayectoria más probable asociando los eventos de detección entre distintos cuadros. Algunas de las características que se tienen en cuenta usualmente para llevar a cabo la asociación son:
La proxim idad de los puntos: asume que la posición de un objeto no cambia
significativamente entre dos cuadros consecutivos.
El cam bio en la velocidad: asume que la dirección y la rapidez con la que
se desplaza un objeto no se altera drásticamente entre dos cuadros consecutivos.
La velocidad com ún: si se detectan varios puntos cercanos moviéndose con
la misma velocidad, asume que las detecciones provienen de un mismo objeto y exige que la similitud entre la velocidad de esos puntos vecinos se preserve.
Proximidad Velocidad máxima Cambio de velocidad Velocidad común Rigidez
La velocidad m áxim a, la rigidez entre puntos del mismo objeto y la uniform idad proxim al (mayor similitud en el comportamiento de puntos vecinos a distancias más cortas), también son mencionadas como importantes por Yilmaz et. al. en [25]. Los métodos estadísticos, como el filtro de Kalman o los filtros de partículas, también tienen en cuenta dentro del modelo el ruido por medición y sensibilidad del video.
Figura 7 – Criterios de asociación en un tracker de puntos
24
Tracking de Kernels
Sigue cada objeto utilizando modelos de apariencia. Estos pueden ser pequeñas porciones de la imagen u otros modelos – tales como histogramas de color o simplemente valores escalares representativos – que se calculan comúnmente sobre una región rectangular o elíptica correspondiente al objeto que se quiere rastrear. Los mismos valores del modelo de apariencia son buscados luego en el próximo cuadro para determinar la nueva posición del objeto.
Este enfoque es costoso pero confiable, y es necesario si se quiere saber no solo la posición, sino la rotación o la escala. Uno de los ejemplos más populares de tracking de kernels es el algoritmo mean-shift, que se muestra en funcionamiento en la Figura 8. Para seguir un objeto, el algoritmo hace uso de un histograma de color calculado sobre una región elíptica.
Tracking de Siluetas
Generan un modelo de la silueta de cada objeto en base a los cuadros anteriores, que les permite determinar la posición del objeto en un nuevo cuadro. Pueden dividirse en dos tipos: por un lado, el matching de formas calcula las siluetas de los objetos en el cuadro nuevo en base a gradientes en la imagen y otras mediciones, y las compara con el modelo previo para decidir la nueva posición del objeto; por otro, el tracking de contornos mantiene una única silueta sobre el objeto rastreado que se va ajustando en cada cuadro a los movimientos o cambios de forma.
Figura 8 – Seguimiento de un objeto por su histograma de color mediante CamShift
25
2.2.2. Relación con la Sustracción de Fondo
En el caso del tracking de puntos lo que se requiere como entrada es un conjunto de coordenadas que estén posicionadas sobre cada uno de los objetos en movimiento, preferiblemente cerca de su centro de masa, mientras que en el tracking de kernels se necesitan regiones seleccionadas de los objetos que se quieren rastrear en base a las cuales generar los modelos de apariencia. En el primer caso la sustracción de fondo cumple un papel indispensable, mientras que en el segundo es una herramienta útil y rápida para lograr la segmentación inicial. Para el tracking de siluetas, en el contexto de la videovigilancia, aún es necesario decidir qué objetos se quieren seguir o descartar en base a algún tipo de segmentación previa.
Una solución posible para obtener la información de entrada necesaria es aplicar un algoritmo de sustracción de fondo y luego aislar las porciones de la máscara de primer plano que representan objetos distintos, finalizando la segmentación. En este contexto estas porciones demarcadas reciben el nombre de BLOBS (Binary Large Objects) y su identificación se realiza de manera posterior a la sustracción con algoritmos como Grassfire u otros relacionados con descriptores de figuras [26]. Tras su aislamiento puede enviarse a un tracker de puntos el promedio de las coordenadas de sus píxeles como una aproximación del centro del objeto; pueden enviarse regiones de la imagen original que hayan sido incluidas dentro del BLOB a un tracker de kernels; o sus bordes a un tracker de siluetas.
26
línea de procesamiento utilizada en un proyecto paralelo a este trabajo ilustrado en la Figura 9.
Las regiones de la imagen definidas por los BLOBS también pueden servir de entrada para los algoritmos involucrados en reconocer o clasificar a los objetos. Lo que compete a la sustracción de fondo en todos estos procedimientos es la sensibilidad ante los cambios en la imagen y la separación entre las porciones del primer plano; en otras palabras, que los objetos del primer plano formen en lo posible islas y no estén conectados por regiones derivadas de errores o ruido, ni por fragmentos de un objeto no relevantes que puedan conectarlo con otros – como sombras, o el humo o polvo dejados atrás por un automóvil.
2.3. Stitching
En cuanto a lo referido a construcciones en 360°, existen aplicaciones que producen imágenes panorámicas en base a fotos de distintas secciones del espacio, como las utilizadas en teléfonos móviles. Las aplicaciones de este tipo logran el resultado final casi siempre utilizando un enfoque llamado im age stitching. Este fue el primer enfoque en ser considerado, y debido a que es muy extendido se presenta en esta sección junto a las razones por las cuales su aplicación no se juzgó ideal en este contexto.
Figura 9 – Conteo de automóviles mediante sustracción de fondo y tracking de puntos
27
El stitching se realiza comúnmente con el uso de algoritmos de extracción y comparación de características (feature matching) que permiten determinar la posición de cada imagen con respecto a las demás. Para unir imágenes entre las cuales existen variaciones de escala o de perspectiva de la toma, deben utilizarse algoritmos cuyas representaciones de características sean invariantes ante esas transformaciones, siendo el más extendido el algoritmo SIFT [27]. Las imágenes son luego transformadas mediante homografías diseñadas para minimizar la distancia entre las posiciones de las features en ambas imágenes. Los resultados de este procedimiento se observan en la Figura 10. Ya con las imágenes posicionadas, mejoran el aspecto de la integración aplicando interpolaciones con el fin de eliminar los bordes.
Este enfoque fue descartado debido a varios motivos. Por un lado, para que esta técnica permita obtener buenos resultados es necesario que las imágenes sean relativamente pequeñas en comparación a todo el espacio de visión o que sean tomadas por un objetivo gran angular (wide lens), asegurando que estén solapadas entre un 15% y un 30% [28], para lo cual algunas herramientas de creación de panoramas imponen un mínimo de 12 imágenes para fotos tomadas con lentes comunes [29]. Sin embargo, en este trabajo se busca integrar imágenes de cámaras con campos visuales con ángulos no necesariamente amplios y que, como se reciben online, pueden provenir de coordenadas de rotación distantes, sin información del espacio intermedio. Esto vuelve a esta técnica, en el mejor
SIFT matches en A
SIFT matches en B
Composición. La imagen B es transformada para hacer coincidir los
matches con sus posiciones en la imagen A.
Imagen B Imagen A
Figura 10 - Stitching mediante feature matching
28
de los casos, incómoda: las imágenes pueden ser conectadas sólo cuando se toma conocimiento de sus posiciones relativas, por lo que no es posible representarlas siempre sobre el mismo modelo sin realizar cambios repentinos en sus ubicaciones. Esto no resulta en absoluto transparente para el algoritmo de sustracción de fondo.
Pero la razón principal por la cual se evitó este enfoque es que el posicionamiento de las imágenes debería resultar inmediato: las coordenadas de rotación ya son conocidas al momento de enviar el comando de posicionamiento a la cámara, por lo que la etapa de búsqueda de matches debería, en teoría, poder omitirse completamente. Además, el uso en tiempo real de algoritmos como SIFT requiere de optimizaciones que pueden resultar complejas o del uso intensivo de procesamiento en paralelo [30] [31], que limita las plataformas en donde la solución puede ejecutarse con un desempeño aceptable.
Finalmente, tampoco es posible utilizar las interpolaciones que las aplicaciones de creación de fotos panorámicas implementan para mejorar el aspecto de la integración de las imágenes, porque el proceso pierde información del espacio de visión que el algoritmo de sustracción de fondo requiere para la comparación de los cuadros de video. Los resultados visualmente atractivos de este tipo de correcciones no tienen la rigurosidad necesaria para ser útiles en el modelado del fondo. Un ejemplo de esto puede observarse en la Figura 11: la interpolación de las imágenes produce a veces objetos fantasma en la zonas delineadas en color rojo, los cuales no deberían ser difuminados si la última imagen grabada es la del lado izquierdo, o bien deberían ser excluidos completamente si la más reciente es la imagen a la derecha. Este tipo de artefactos ocasiona que algunos objetos no se detecten en su totalidad, o bien que se detecten objetos que ya no están presentes, y es la causa principal por la cual las interpolaciones no son deseables para un algoritmo de sustracción de fondo.
Figura 11 – Artefactos generados por la interpolación de imágenes
Fuente: Guía de uso de PTGui [41], uno de los programas de software más extendidos para crear fotos panorámicas mediante image stitching.
29
Capítulo 3. Solución Propuesta
3.1. Vista General
El objetivo principal de este proyecto es desarrollar un software que permita aplicar algoritmos particulares de sustracción de fondo utilizados en cámaras estáticas a video de cámaras giratorias, como una etapa importante dentro de una línea de procesamiento más grande. El software toma como entrada un video que puede provenir de una cámara estática o de una giratoria según se indique, y permite en ambos casos aplicar un algoritmo de sustracción de fondo que da como resultado una máscara binaria indicando los objetos nuevos o en movimiento presentes en el video – la llamada máscara de primer plano.
Para ello es necesario construir un modelo del espacio de visión de la cámara que tenga en cuenta toda la extensión que puede grabar, y que identifique qué sección está siendo observada en cada momento. Debe pensarse también que la línea de procesamiento – de la que esta solución formaría parte – podría preferir un algoritmo de sustracción de fondo diferente al propuesto para producir la máscara, o incluso podría requerir variaciones en el modelo del espacio de visión para cámaras con características particulares. Ahondando en los requerimientos, la primera observación evidente es que los usuarios del sistema pueden cambiar la dirección a la que apunta la cámara. El algoritmo responsable del modelo de visión debe actualizar sus parámetros para la reconstrucción virtual del espacio de grabación y efectuar la actualización de manera transparente, sin que otras etapas necesiten tomar decisiones sobre la forma en que un giro de la cámara afecta al procesamiento de las imágenes.
Todo esto señala a que debe aspirarse a la separación entre la construcción del modelo de visión de la cámara y los algoritmos de sustracción de fondo, así como de otras etapas de procesamiento posteriores. El modelo no debe estar implícito en los mecanismos del algoritmo de sustracción, sino que debe independizarse y representase dentro de los datos de entrada.
Una secuencia normal de ejecución discurre entonces a través de los siguientes pasos:
1. Se controla la cámara indicando la dirección a la que se desea enfocar y se toma el stream de video que envía.
30
3. Se ejecuta el algoritmo de sustracción de fondo sobre la porción del modelo que representa la visión actual como si se tratase de una cámara estática.
La Figura 12 detalla una vista general mediante un diagrama que indica las actividades y el flujo de datos necesario para llevar a cabo cada una. Los pasos 2 y 3 quedan plasmados en actividades concretas en el diagrama, mientras que el paso 1 – referido al control de la cámara – es externalizado para dar flexibilidad a la aplicación de la que esta solución formaría parte, y queda representado en el diagrama por el conjunto de actividades no definidas, el control del usuario, y los arcos de envío de datos de comandos de control a la cámara.
Las actividades pueden pensarse naturalmente como la aplicación de filtros sucesivos que se envían información. Por ello se tomó la decisión de que la solución siga una arquitectura de pipes & filters. Cada filtro corre en su propio thread y tiene definidos puertos de entrada y salida a través los cuales toma la información que requiere procesar y expone los resultados. La configuración de toda la solución está dada por un XML que determina qué filtros se usan, su parametrización, y cómo se conectan sus distintos
Referencias
Actividad Actividad no definida por la solución Envío de datos
31
puertos. Esto da flexibilidad e independencia entre cada etapa, permite reemplazar una sin afectar a las demás, y brinda la posibilidad de alterar cómo se relacionan con el resto de la línea de procesamiento simplemente modificando el archivo de configuración. Cada una de las etapas principales supone distintos desafíos de desarrollo; las secciones a continuación están dedicadas a detallar cómo se resolvió cada una y cómo se implementaron en la solución final.
3.2. Control de la Cámara
Antes de poder construir el modelo del espacio de visión, es necesario controlar la cámara y recibir el video que esta envía. En el ambiente de desarrollo experimental se cuenta con una cámara de tipo domo PTZ (pan-tilt-zoom) de marca D-Link, modelo DCS-6818B1 [32]. Esta cámara de vigilancia, como casi todas las disponibles en el mercado, cuenta con una interfaz de usuario web que permite controlarla en tiempo real y configurarla. La cámara brinda tres perfiles de video que permiten seleccionar el formato contenedor, la resolución, los cuadros por segundo, y el bit rate, los cuales ofrecen un stream mediante el protocolo RTSP para que pueda ser recibido a través de TCP/IP o UDP/IP. La cámara dispone también de una funcionalidad llamada presets, que permite guardar la posición actual para volver automáticamente a ese punto, aunque solo pueden grabarse un número reducido de posiciones.
Desafortunadamente, no existe una API bien documentada que muestre cómo realizar el control automático de estos dispositivos, por lo que debió explorarse el protocolo de control como una tarea importante dentro del desarrollo. Se realizó un análisis del código fuente de la web y se evaluaron paquetes de red que fueron capturados entre la cámara y el browser local (estos últimos mediante el uso de Wireshark [33]), y se logró autenticar la aplicación y controlar el movimiento mediante el envío de mensajes HTTP.
32
permite especificar los ángulos en grados y despreocuparse de los detalles de los protocolos de más bajo nivel a la hora de enviar el comando.
Un ejemplo se muestra en la Figura 13, donde se envía un comando de posicionamiento a coordenadas absolutas. El usuario selecciona las coordenadas en la interfaz gráfica y esta llama al método SendCommand de Camera, un objeto local que abstrae la cámara real y permite recibir las coordenadas en un formato independiente del modelo de la cámara (coordenadas angulares en grados, con pan de 0° a 360° y tilt de 0° a 90°) y el zoom como porcentaje del máximo. Este objeto es en realidad una instancia de una subclase que se corresponde con un modelo específico de cámara, en este caso el DCS-6818B1. Al recibir la llamada al comando, la instancia calcula las coordenadas nativas del modelo y construye el string que debe enviarse de acuerdo a los detalles del protocolo del fabricante y según la IP, el nombre de usuario y la contraseña que le fueron asignados durante su configuración. Luego, otra clase que fue llamada ConnectionManager hace uso de las librerías de .NET y de la estructura que fue hallada en los paquetes de autorización para enviar el mensaje HTTP.
La cámara contesta a los comandos con un mensaje de acknowledgement a la vez que comienza el movimiento. La coordinación entre el control de la cámara y el video recibido
Referencias
Figura 13 – Envío de un comando de control a la cámara
33
plantea algunas dificultades que serán mencionadas más adelante pero, en principio, esta capacidad de control es suficiente para generar el modelo del espacio de visión.
3.3. Construcción del Modelo de Visión
Si se quiere separar la etapa de construcción del modelo de visión de la etapa de sustracción de fondo, los datos del modelo deben estar contenidos en una imagen rectangular. De esta forma la imagen puede ser analizada por cualquier algoritmo de sustracción de manera habitual, sin necesidad de introducir cambios significativos en su funcionamiento en el caso de que la imagen provenga de una cámara estática o de una giratoria. Así, el problema central para aplicar los algoritmos de sustracción conocidos en cámaras PTZ se reduce en su mayor parte a la construcción de estas imágenes.
La solución propuesta intenta evitar análisis innecesarios haciendo uso del conocimiento previo que se posee de las coordenadas apuntadas. Si se aproxima a la cámara como un objeto puntual dentro de un espacio tridimensional que puede girar para apuntar en cualquier dirección, entonces puede idealizarse a todo el espacio de visión como la superficie interna de una esfera, y puede lograrse que los algoritmos de sustracción mantengan la misma entrada independientemente de la cámara si se proyecta esta esfera sobre un plano, el cual debe entregarse a la etapa siguiente como una imagen común de dos dimensiones. Con este enfoque no debería resultar necesario realizar image stitching porque cada píxel de la imagen final se corresponde siempre con una única dirección del espacio de visión. Si la cámara rota, el algoritmo debería poder mapear a cada punto rotado de la imagen grabada con el mismo píxel en la imagen final que había asignado al punto sin rotar.
34
3.3.1. Proyección de la Imagen Bidimensional a la Esfera de Visión
3.3.1.1. Selección de la Proyección
El primer problema que se encuentra al tratar de entregar información del espacio de visión en 360x180° a un algoritmo de sustracción que trabaja sobre un espacio bidimensional, es que no existe una isometría entre el plano y la esfera. Este hecho puede interpretarse intuitivamente al notar que no existe manera de efectuar la transformación de una esfera en un plano sin cortar ni deformar la superficie de la esfera. Por consiguiente, diferentes construcciones del plano producen distintos artefactos en la imagen final. El primer paso es elegir una proyección que sea conveniente.
Cortar la superficie no es deseable para un algoritmo de sustracción orientado a la detección de BLOBS y a realizar un tracking continuo en etapas posteriores, porque requeriría que esas etapas realicen correcciones complejas a lo largo de todo el espacio debido a saltos en las coordenadas de la imagen final, cuando los objetos atraviesan las líneas de corte. Proyecciones como Waterman Butterfly o la Proyección Homolosena de Goode, aunque disminuyen la distorsión, fueron considerados malos candidatos por la gran cantidad de cortes.
Otras proyecciones minimizan los cortes hasta llegar a un solo arco o incluso a un solo punto, y producen distintos tipos de distorsión en la imagen dependiendo de cómo realizan el mapeo. Las proyecciones elegidas se muestran en la Figura 15.
Proyección homolosena de Goode
Fuente: Daniel R. Strebe, Wikipedia [42]
Proyección en mariposa de Waterman
Fuente:Carlos A. Furuti, Progonos[43]
35
Proyección sobre el plano Líneas de corte sobre la esfera
Proyección Equirectangular
Fuente: Mapthematics [35]
Proyección
Acimutal Equidistante
Fuente: Mapthematics [35]
A continuación, se explica cómo se definieron e implementaron estas proyecciones. La convención utilizada en este trabajo llama 𝜃 al ángulo acimutal (longitud) - que
recorre el ecuador de 0° a 360° - y 𝜑 al ángulo polar (latitud) - el cuál es 0° sobre el
ecuador, positivo en la semiesfera superior (90° mirando al zenit) y negativo en la semiesfera inferior (-90° mirando al nadir). La dirección de 𝜑 es invertida más allá de la
explicación teórica para eliminar el signo negativo del uso habitual de la cámara.
3.3.1.2. Proyección Equirectangular
La proyección principal utilizada en la solución y en los casos de tests es la equirectangular. Esta elección se debe a que la proyección equirectangular reduce los cortes a un solo arco a lo largo de la esfera y ubica la mayor parte la distorsión en los polos, los cuales son pocas veces de interés para una cámara de vigilancia. La proyección equirectangular cuenta también con otras ventajas: por un lado, su cálculo es ligeramente más rápido que el de la mayoría de las proyecciones, por otro maximiza la utilización del espacio de una imagen rectangular al ocuparlo en su totalidad. Esto también facilita el manejo de la imagen de salida, al poder procesarla de manera directa con cualquier algoritmo o aplicación tradicional que trabaje con imágenes rectangulares. Además, es la proyección más extendida – de hecho, casi la única utilizada – para el almacenamiento de imágenes y videos en 360° en la Internet y como salida de cámaras omnidireccionales; probablemente por las razones mencionadas.
36
La proyección equirectangular fue implementada recorriendo cada pixel de la imagen final y recuperando la información de color del punto correspondiente en el espacio de visión. El recorrido inverso realizado fue descrito como una función 𝑬 de ℕ𝟐→ ℝ𝟐 que mapea las coordenadas del pixel a la superficie de la esfera. Si se tiene una imagen con ancho 𝑊 y alto 𝐻 y se define a la posición (𝑥𝑖, 𝑦𝑖) como las coordenadas de la imagen
correspondientes al pixel 𝑖, entonces las coordenadas esféricas para cada pixel 𝑖 son:
𝐸(𝑥𝑖, 𝑦𝑖) = (
𝑥𝑖
𝑊2𝜋, − (
𝑦𝑖
𝐻−
1
2) 𝜋) = (𝜃𝑖, 𝜑𝑖)
Donde 𝜃 es el ángulo acimutal en el intervalo [0, 2𝜋) y 𝜑 el ángulo polar en [−𝜋 2,
𝜋 2].
Nótese que sólo se requiere la orientación; el radio se pierde al realizar la proyección y no resulta relevante.
Este mapeo fue definido durante el desarrollo con los resultados deseados en vista, y puede visualizarse en la Figura 16.
Finalmente, es importante notar que la decisión de realizar la proyección haciendo el recorrido en el sentido inverso – esto es, de la imagen equirectangular a la esfera en vez de al revés – no es arbitraria, sino que permite resolver el problema de la transformación de escala de la imagen: si se recorriese la esfera para proyectar cada uno de sus puntos, estos quedarían esparcidos sobre la imagen equirectangular dejando espacios negros en las zonas donde la densidad de puntos de la esfera es mayor que la de la imagen plana, lo cual haría necesaria una interpolación posterior; o bien se superpondrían en donde la densidad de la imagen plana es mayor, ocasionando un costo de procesamiento innecesario.
Figura 16 - Coordenadas en la proyección equirectangular
37
3.3.1.3. Proyección Acimutal Equidistante
También se exploró como alternativa secundaria una proyección de tipo acimutal. Las proyecciones acimutales son aquellas que preservan la dirección desde el punto central a todos los demás puntos, transformando los círculos mayores que pasan por los polos de la esfera en líneas rectas que pasan por el centro de la imagen bidimensional.
Se definió esta proyección con una función 𝑨 de ℕ𝟐 → ℝ𝟐 donde, para cada píxel 𝑖:
𝐴(𝑥𝑖, 𝑦𝑖) = (𝑎𝑡𝑎𝑛2(𝑣𝑖, 𝑢𝑖), −𝜋
2+ 𝜋 ∙ √𝑢𝑖2 + 𝑣𝑖2) = (𝜃𝑖, 𝜑𝑖)
Donde 𝑢𝑖 =2𝑥𝑖
𝐿 − 1 y 𝑣𝑖 = − 2𝑦𝑖
𝐿 + 1, para una imagen final cuadrada de lado 𝐿.
Esta definición de la proyección tuvo por objetivo ubicar al nadir en el centro y al zenit en la circunferencia con radio 𝐿
2 . La transformación puede visualizarse
geométricamente en la Figura 17.
3.3.2. Proyección del Espacio Esférico a la Imagen Grabada
Una vez en el espacio esférico, debe recuperarse la información de color que la cámara está observando para ese punto de su visión. Esto implica realizar una segunda transformación de la imagen enviada por la cámara a la esfera de visión. Una vez más el recorrido se hizo en el sentido opuesto, proyectando la sección relevante de la esfera sobre el plano correspondiente a la imagen grabada.
Figura 17 - Coordenadas en la proyección acimutal definida
38
Primero debe determinarse en qué rectángulo en el espacio cartesiano se ubica la imagen con respecto a la esfera, basándose en los ángulos de visión actuales. Una apreciación importante es que la cámara solo puede rotar sus ángulos de dirección (yaw o pan) e inclinación (pitch o tilt), pero no de alabeo (roll). Además, debido a la idealización, se despreció la distancia entre el eje de rotación y el foco de la imagen.
3.3.2.1. Determinación del rectángulo de grabación
Un plano puede representarse como:
𝑁⃗⃗ ∙ (𝑋 − 𝑋⃗⃗⃗⃗ ) = 00
Siendo 𝑁⃗⃗ el vector normal a su superficie y 𝑋⃗⃗⃗⃗ 0 su desplazamiento desde el origen. Para
facilitar el cálculo se orientó el sistema de coordenadas para que el eje 𝑍+ coincida con la
línea de visión que pasa por el centro del rectángulo de grabación. Esta recta es perpendicular al plano, por lo que 𝑁⃗⃗ = (0,0,1). Además, se definió el largo de la unidad en el espacio como la distancia entre el foco y el plano de grabación, por consiguiente, el plano inicial es:
(0,0,1) ∙ (𝑋 − (0,0,1)) = 0
Se sabe que el rectángulo de grabación yace sobre este plano, pero también es necesario conocer su ancho 𝑊 y alto 𝐻. En general pueden calcularse como:
{
𝑊 = 2 tan (𝑉𝜃
2)
𝐻 = 2 tan (𝑉𝜑
2)