Documentos de Académico
Documentos de Profesional
Documentos de Cultura
m
Alex Vallmitjana enero 2018
Este documento es una breve descripción de la función ballCandidates.m que se utiliza
durante la ejecución del programa principal TennisTracker1.m. La función se llama a cada
fotograma y sirve para detectar candidatos a pelota en los objetos que se han movido
respecto al fotograma anterior. Los criterios para seleccionar candidatos son área (el
tamaño en píxeles) y eccentricitat (el grado de circularidad del objeto). Realmente el
parámetro importante es área, la excentricidad descarta pocos objetos y seguramente se
podría eliminar el filtro sin demasiados cambios.
1. Llamada de la Función
La función se llama a la línea 185 del código principal (Fig.1). La variable de entrada D es
una matriz que tiene el mismo tamaño que el fotograma que se está examinando en ese
momento donde sólo hay ceros (0) o unos (1). Unos corresponden a zonas que han
sobrevivido el umbral de movimiento determinado por la constante UMB aplicada sobre la
diferencia del fotograma actual con el fotograma acumulado de los pasados (línea 168 del
código madre). Son regiones que han cambiado respecto a los fotogramas anterior. Los
ceros son regiones que no han superado el umbral de movimiento, y por tanto que no han
cambiado respecto a los fotogramas anteriores.
2.Cuerpo de la Función
Debido a que la pista se ve con una perspectiva conocida y sabemos que el campo de
visión incluye la pista entera podemos saber con antelación el tamaño que debe tener una
pelota en función de su posición vertical. Un balón en la parte baja del fotograma debe
aparecer como un objeto mucho mayor que si la vemos en la parte alta del fotograma
debido a que la de abajo se encuentra mucho más cerca. La relación entre el tamaño y la
posición vertical está modelada como un polinomio de segundo grado, los coeficientes se
declaran al principio como constantes (Fig.2).
A = c + by + ay2
Estamos diciendo que sabiendo la posición en píxeles medidos desde la parte superior
del fotograma y, podemos saber el área A que esperamos que tenga un balón en aquella
posición. Obviamente el modelo no contempla las pelotas que se separan mucho en la
dirección vertical (por ejemplo si el jugador más cercano tira el balón arriba para hacer el
servicio, ese balón aparecerá mucho mayor de lo esperado por su posición y). los tres
coeficientes c, b y a están puestos en este orden porque es el orden con el que se
declaran a la variable coef: el primero es el término independiente c, el segundo es el
término de primer orden b y el tercero es el término de segundo orden a. Cabe decir que
estos tres coeficientes han sido calculados por un fotograma respecto 1080pix en la
dirección vertical, deberían modificarse en función de esta magnitud.
El condicional que aparece entre estas dos líneas es para descartar la situación en que no
se ha detectado ningún objeto y ahorrar las llamadas a las funciones que calculan las
propiedades (Fig.7).
3. Salida de la Función
La función devuelve la variable C, que es una lista de coordenadas, una por cada región.
En este punto la variable C contiene las coordenadas de todas las regiones, el pedido de
la línea 23 (Fig.11) se encarga de seleccionar sólo aquellas que han sobrevivido al filtro.
La llamada se hace haciendo indexación doble debido a que para el filtro de tamaño se ha
obtenido la lista de índice (Fig.9), y que para el filtro de excentricidad se ha obtenido los
índices de la lista de índices del filtro anterior.
Fig. 11: Lista de coordenadas de los objetos que han sobrevivido a los filtros.
Finalmente, para el caso de que no se encontró ningún objeto, la función devuelve una
variable C vacía. (Fig.12)
Fig. 12: En caso de que no había objetos detectados, la función devuelve una lista vacía.