En visión artificial , un mapa de saliencia es una imagen que resalta la región en la que los ojos de las personas se enfocan primero o las regiones más relevantes para los modelos de aprendizaje automático . [1] El objetivo de un mapa de saliencia es reflejar el grado de importancia de un píxel para el sistema visual humano o un modelo de aprendizaje automático que de otro modo sería opaco.
Por ejemplo, en esta imagen, una persona observa primero el fuerte y las nubes de luz, por lo que deberían estar resaltadas en el mapa de prominencia. Los mapas de prominencia diseñados con visión artificial o computacional normalmente no son los mismos que el mapa de prominencia real construido con visión biológica o natural .
Los mapas de saliencia tienen aplicaciones en una variedad de problemas diferentes. Algunas aplicaciones generales:
La estimación de la prominencia puede considerarse como un ejemplo de segmentación de imágenes . En visión artificial , la segmentación de imágenes es el proceso de dividir una imagen digital en múltiples segmentos (conjuntos de píxeles, también conocidos como superpíxeles). El objetivo de la segmentación es simplificar o cambiar la representación de una imagen para que sea más significativa y más fácil de analizar. La segmentación de imágenes se utiliza normalmente para localizar objetos y límites (líneas, curvas, etc.) en imágenes. Más precisamente, la segmentación de imágenes es el proceso de asignar una etiqueta a cada píxel de una imagen de modo que los píxeles con la misma etiqueta compartan determinadas características. [7]
Hay tres formas de algoritmos clásicos de estimación de saliencia implementados en OpenCV :
Además de los enfoques clásicos, también son populares los basados en redes neuronales . Existen ejemplos de redes neuronales para la estimación de la prominencia del movimiento:
Primero, debemos calcular la distancia de cada píxel al resto de píxeles en el mismo cuadro:
es el valor del píxel , en el rango de [0,255]. La siguiente ecuación es la forma expandida de esta ecuación.
Donde N es el número total de píxeles en el cuadro actual. Luego podemos reestructurar aún más nuestra fórmula. Ponemos juntos los valores que tienen el mismo valor I.
Donde F n es la frecuencia de I n . Y el valor de n pertenece a [0,255]. Las frecuencias se expresan en forma de histograma, y el tiempo computacional del histograma es complejidad temporal.
Este algoritmo de mapa de saliencia tiene una complejidad temporal de . Dado que el tiempo computacional del histograma es una complejidad temporal de , donde N es el número de píxeles de un cuadro. Además, la parte negativa y la parte multiplicadora de esta ecuación necesitan 256 operaciones. En consecuencia, la complejidad temporal de este algoritmo es , que es igual a .
Todo el código que sigue es pseudocódigo MATLAB . Primero, lea los datos de las secuencias de video.
para k = 2 : 1 : 13 % lo que significa del cuadro 2 al 13, y en cada bucle el valor de K aumenta en uno. I = imread ( currentfilename ); % leer cuadro actual I1 = im2single ( I ); % convertir imagen doble en simple (requisito del comando vlslic) l = imread ( previousfilename ); % leer cuadro anterior I2 = im2single ( l ); regionSize = 10 ; % establecer el parámetro de SLIC esta configuración de parámetro es el resultado experimental. RegionSize significa el tamaño del superpíxel. regularizer = 1 ; % establecer el parámetro de SLIC segments1 = vl_slic ( I1 , regionSize , regularizer ); % obtener el superpíxel del cuadro actual segments2 = vl_slic ( I2 , regionSize , regularizer ); % obtener el superpíxel del cuadro anterior numsuppix = max ( segments1 (:)); % obtiene el número de superpíxeles. Toda la información sobre los superpíxeles se encuentra en este enlace [http://www.vlfeat.org/overview/slic.html] regstats1 = regionprops ( segmentos1 , ' all ' ); regstats2 = regionprops ( segmentos2 , ' all ' ); % obtiene la característica de la región en función de los segmentos1
Después de leer los datos, realizamos un procesamiento de superpíxeles en cada fotograma. Spnum1 y Spnum2 representan el número de píxeles del fotograma actual y el píxel anterior.
% Primero, calculamos la distancia del valor de cada píxel. % Este es nuestro código principal para i = 1 : 1 : spnum1 % Desde el primer píxel hasta el último. Y en cada bucle i++ para j = 1 : 1 : spnum2 % Desde el primer píxel hasta el último. j++. cuadro anterior centredist ( i : j ) = suma (( center ( i ) - center ( j ))); % calcula la distancia central end end
Luego calculamos la distancia de color de cada píxel, a este proceso lo llamamos función de contrato.
para i = 1 : 1 : spnum1 % Desde el primer píxel del fotograma actual hasta el último píxel. I ++ para j = 1 : 1 : spnum2 % Desde el primer píxel del fotograma anterior hasta el último píxel. J++ posdiff ( i , j ) = sum (( regstats1 ( j ). Centroid ' - mupwtd (:, i ))); % Calcular la distancia de color. end end
Después de estos dos procesos, obtendremos un mapa de prominencia y luego almacenaremos todos estos mapas en una nueva carpeta de archivos.
La principal diferencia entre la función uno y la dos es la diferencia de la función de contrato. Si spnum1 y spnum2 representan ambos el número de píxeles del fotograma actual, entonces esta función de contrato es para la primera función de prominencia. Si spnum1 es el número de píxeles del fotograma actual y spnum2 representa el número de píxeles del fotograma anterior, entonces esta función de contrato es para la segunda función de prominencia. Si usamos la segunda función de contrato que usa el píxel del mismo fotograma para obtener la distancia entre centros para obtener un mapa de prominencia, entonces aplicamos esta función de prominencia a cada fotograma y usamos el mapa de prominencia del fotograma actual menos el mapa de prominencia del fotograma anterior para obtener una nueva imagen que es el nuevo resultado de prominencia de la tercera función de prominencia.
El conjunto de datos de prominencia suele contener movimientos oculares humanos en algunas secuencias de imágenes. Resulta valioso para la creación de nuevos algoritmos de prominencia o para la evaluación comparativa de los existentes. Los parámetros más valiosos del conjunto de datos son la resolución espacial, el tamaño y el equipo de seguimiento ocular . A continuación se muestra una parte de la tabla de grandes conjuntos de datos de los conjuntos de datos de referencia de prominencia del MIT/Tübingen, por ejemplo.
Para recopilar un conjunto de datos de prominencia, se deben preparar secuencias de imágenes o videos y equipos de seguimiento ocular , y se debe invitar a los observadores. Los observadores deben tener una visión normal o corregida a la normal y deben estar a la misma distancia de la pantalla. Al comienzo de cada sesión de grabación, el rastreador ocular se recalibra. Para ello, el observador fija su mirada en el centro de la pantalla. Luego comienza la sesión y se recopilan datos de prominencia mostrando secuencias y grabando miradas oculares.
El dispositivo de seguimiento ocular es una cámara de alta velocidad , capaz de registrar los movimientos oculares a una velocidad de al menos 250 fotogramas por segundo . Las imágenes de la cámara son procesadas por el software, que se ejecuta en una computadora dedicada que devuelve datos de la mirada.