Check de Color Contrast del indicador de foco
En este documento se describe cómo la herramienta realiza el chequeo automático de CC en indicador de foco
1. Descripción del algoritmo
Una vez que se determina que el indicador de foco es visible, se pasa a comprobar su contraste con respecto al BG. Es importante este detalle, el check de CC asume que el indicador de foco existe y es visible.
Llamaremos imagen1 a la imagen del elemento sin enfocar e imagen2 a la imagen del elemento enfocado.
La diferencia entre imagen1 e imagen2 es por tanto otra imagen con todos sus pixeles en negro excepto por aquellos que correspondan al indicador de foco que solamente aparece en la imagen2.
Los fg_pixels son aquellos pixeles de la imagen2 cuyas coordenadas se corresponden con la de los pixeles no negros en la imagen diferencia.
Los bg_pixels son aquellos pixeles de la imagen1 cuyas coordenadas se encuentren en una vecindad de 2 pixeles de radio de algún pixel no negro de la imagen diferencia.
O sea que los fg_pixels se corresponden con los pixeles del indicador de foco mientras que los bg_pixels se corresponden con los pixeles alrededor de este indicador de foco.
Posteriormente se separan los bg_pixels en componentes conexas. Una componente conexa es un conjunto de pixeles adyacentes tal que el gradiente de color entre ellos no supere un umbral determinado. En nuestro caso este umbral es (10, 10, 10).
El mismo procedimiento de separación en componentes conexas se realiza sobre los fg_pixeles.
Para cada componente conexa se calcula el color medio: la media entre todos los pixeles de la componente.
Para cada color medio del bg se calcula su cc ratio contra cada color medio del fg. El cc ratio resultante es el máximo cc ratio alcanzado para cada pareja de colores medios.
Limitaciones
El enfoque anterior no produce CC ratios correctos en todas las situaciones, y puede dar lugar a missing issues. No obstante, no debería provocar falsos positivos dado que toma el máximo CC ratio posible entre el indicador de foco y su vecindad.
Los escenarios donde se pueden aparecer missing issues son aquellos donde el indicador de foco tiene como background colores no uniformes. Por ejemplo, a la derecha el background es negro y a la izquierda es blanco, mientras que el indicador de foco es de un color que no contrasta bien con el negro pero si con el blanco. En este caso la parte que no contrasta bien será ignorada debido a que solo se toma en cuenta la pareja de colores medios que más contrasta sin considerar la posición de las componentes conexas del bg con respecto a las del fg.
Pese a estas limitaciones, consideramos que el estado actual del test puede beneficiar a los auditores en la gran mayoría de los casos.
Mejoras futuras
Se puede mejorar el análisis incluyendo la información de la posición de las componentes conexas para no comparar colores medios que estén separados unos de otros.
