Esta aplicación realiza una clasificación no supervisada de una imagen inspirada en el método clásico IsoData de Duda y Hart: Duda, RO, PE Hart (1973) "Pattern Classification and Scene Analysis", John Wiley and Sons, New York, [cap. 6, "Unsupervised Learning and Clustering", pp. 226-227].

En la implementación del clasificador en MiraMon (IsoMM), la aplicación empieza por un cierto número de categorías (clusters o conglomerados) sugerido por la persona usuaria. La ubicación inicial de estas categorías se distribuye inicialmente siguiendo cuatro criterios (pueden utilizarse ubicaciones con varios criterios):

  1. A lo largo de la diagonal multivariante de los datos, repartidos de forma equidistante. Se puede restringir el rango en cada variable utilizando un criterio basado en los datos más cercanos a la media de cada banda. La persona usuaria debe definir este rango a partir de cuántas veces (n) admite la desviación alrededor de la media; a tal fin, de cada una de las bandas (variables) originales se calcula su media (M) y desviación estándar (D) y se define el intervalo así: (M-n*D, M+n*D). Finalmente, el intervalo se divide en tantas partes como categorías se haya pedido. Si se indica n=0, se toma todo el rango en cada variable. (NClusterInicialDiagonal)
  2. Aleatoriamente en todo el espacio multivariante. Este criterio resulta poco útil cuando el número de variables es muy elevado. (NClusterInicialAleatorio)
  3. A partir de un muestreo sobre la imagen, de número/resolución configurable. (NClusterInicialuestreo)
  4. A partir de un cierto número de signaturas espectrales proporcionados en un fichero lista (/FICHERO_SIGNATURAS=). Las direcciones de los ficheros de signaturas pueden ser relativas al fichero lista.

Se puede pedir entre 0 y 32767 categorías de cada criterio, pero la suma de todas las categorías iniciales siguiendo todos los criterios no puede exceder 32767. Si se produce desbordamiento debido a un muestreo excesivo, la aplicación reducirá la densidad de muestreo; en cualquier caso, en el criterio 3 la densidad de muestreo es adaptada por la aplicación a un múltiplo del lado de píxel. Así mismo, es obligatorio que la suma del número de categorías por todos los criterios sea al menos 1.

En imágenes grandes se aconseja utilizar un número de, por ej., 250 categorías del criterio 1 y de nbandas*50 del criterio 2, aunque el criterio 2 se puede dejar a cero si se indica una cierta densidad de muestreo sistemático, que suele funcionar mejor. Cuando el número de variables (bandas) proporcionado es muy grande, el criterio 2 resulta prácticamente carente de utilidad. Otra estrategia que suele dar buenos resultados es pedir 0 o pocas categorías en el criterio 1, 0 en el criterio 2, y un muestreo que implique obtener entre 250 y 500 categorías ("N300", por ejemplo, ampliado si gran parte de la imagen contiene sindatos [por ejemplo, mar]). En cualquier caso, un número muy elevado de categorías suele dar buenos resultados, pero suele implicar una primera iteración muy lenta.
Debe notarse que aumentando el parámetro Mínima similitud entre clases se puede obtener una fusión de las clases más cercanas en sucesivas iteraciones. Este parámetro, sin embargo, sólo está implementado en las clases que provengan del criterio NClusterInicialMuestreo.

Todas estas categorías formarán los conglomerados iniciales. Para cada uno de los píxeles multivariables, se mide la distancia a cada uno de los centros de conglomerado y se asigna el píxel al conglomerado más próximo. La aplicación ofrece la posibilidad de calcular la distancia con los siguientes criterios:

Una vez se han asignado todos los píxeles de la imagen se recalculan los centros de conglomerado, calculando su centro de gravedad en el espacio multidimensional formado por las diferentes variables (bandas) utilizadas. De forma iterativa se vuelve a repetir el proceso de asignación de los píxeles a los centros de conglomerado, y se vuelve a calcular los centros de conglomerado. Esta iteración se lleva a cabo un cierto número de veces que la persona usuaria establece, a menos que el proceso se detenga antes al llegar a una situación de muy poco cambio de los centros de conglomerado entre iteraciones (umbral de convergencia). Después de cada iteración se mira si alguno de los conglomerados está compuesto por un número de píxeles más pequeño que un mínimo establecido por la persona usuaria; si es así, el conglomerado es eliminado, y sus píxeles son reasignados al conglomerado más cercano.

En cada iteración también se analiza si existen clases que se considere que tienen una distancia estadística demasiado cercana para ser consideradas diferentes y, en este caso, se tratan como una sola.

La imagen de salida mantiene en valor 0 los píxeles con sindatos en todas las bandas originales, o en un número de bandas mayor o igual a MaxBandesNODATA, y los documenta como tales. Si el número de categorías finales es superior a 255, la imagen de salida es integer, mientras que de lo contrario será byte. En cualquiera de los dos casos la imagen de salida está comprimida con el algoritmo RLE. El clasificador puede trabajar con imágenes de cualquier tipo (byte, integer, real, etc), comprimidas o no.

Las características estadísticas (signaturas) de cada categoría obtenida se almacenan en un directorio de nombre SGN_aaaammdd_hhmmss (signaturas obtenidas el año-mes-día a la hora-minuto-segundo). Este directorio se crea en el mismo directorio que la imagen clasificada.

Se permite clasificar los píxeles aunque presenten sindatos en algunas variables (bandas). Esto se gobierna con el parámetro MaxBandesNODATA, que indica el número de variables con sindatos que se tolerará antes de marcar el píxel como no clasificado. Este valor puede oscilar entre 0 y n_bandas-1:

Con independencia del valor de MaxBandesNODATA, las clases (y las signaturas) se definen en función de todos los píxeles. En los individuos incompletos (los píxeles que no presentan información en todas las bandas) la clasificación sólo tiene en cuenta las bandas en las que hay datos y las clases se recalculan en función de todos los datos disponibles en cada banda.

Para interpretar los valores de distancia que utiliza este clasificador, se recomienda leer el apartado "Orientación sobre el significado de las distancias utilizadas en los procesos de clasificación" en la ayuda de la aplicación ClasSup.

Por defecto esta aplicación carga todas las imágenes en memoria, lo que le permite realizar los procesos de manera más ágil. Sin embargo, en ordenadores con pocos recursos respecto del tamaño de las imágenes esta estrategia puede no ser viable. Es por ello que la opción "No cargar las imágenes a clasificar en memoria" permite indicar a la aplicación que en los procesos mantenga en memoria sólo aquellos datos que necesita en cada momento, ni que esto implique una ralentización de la ejecución. La aplicación conmuta automáticamente a este modo si no tiene suficiente memoria disponible, por lo que habitualmente no es necesario activarlo expresamente.

Esta aplicación está paralelizada, tanto en las versiones de 32 como de 64 bits, con lo cual es posible que distribuya el trabajo entre los núcleos de procesador disponibles en el ordenador donde se ejecuta. Si, por ejemplo, se dispone de un ordenador con dos procesadores de 20 núcleos cada uno, se puede conseguir dividir casi entre 40 el tiempo necesario para obtener los resultados, utilizando todos los núcleos disponibles, lo que se puede hacer con el parámetro correspondiente en un valor indicado por "MAX"; cuando se indica que el número de núcleos a emplear es MAX, la aplicación utiliza todos los núcleos. Sin embargo, a veces se puede preferir no comprometer toda la capacidad de cálculo del ordenador e indicar SUB_MAX (dejará un procesador libre para otras tareas que se estén haciendo) o indicar un valor numérico concreto inferior, en todos los casos a través de la opción "Número de núcleos de procesador a utilizar". Pedir más núcleos que los realmente disponibles es posible, creando otros virtuales, pero esto no acelera el procesado, sino al contrario. El Administrador de tareas de Windows permite conocer de qué número total de núcleos dispone el ordenador, y también puede saberse ejecutando la aplicación en modo MAX, ya que indicará por pantalla cuántos núcleos está utilizando. En las versiones más recientes de la interfaz de la aplicación, un botón de información también permite obtener dicho dato.


Sintaxis:

Parámetros:

Modificadores: