Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Trazar clasificación de terrenos con características de color y Superpíxeles

En este ejemplo se muestra cómo realizar la clasificación de tipos de terrenos basándose en las entidades de color mediante clústeres K-means y superpíxeles. Los superpíxeles pueden ser una técnica muy útil al realizar la segmentación y la clasificación, especialmente cuando se trabaja con imágenes grandes. Los superpíxeles permiten dividir una imagen en un conjunto de regiones estructuralmente significativas, donde los límites de cada región tienen en cuenta la información de borde de la imagen original. Una vez que se divide una imagen en regiones de superpíxeles, los algoritmos de clasificación se pueden usar para clasificar cada región, en lugar de tener que resolver el problema de clasificación sobre la cuadrícula de la imagen original completa. El uso de superpixels puede proporcionar grandes ventajas de rendimiento en la resolución de problemas de clasificación de imágenes al mismo tiempo que proporciona un resultado de segmentación de alta calidad.

Leer una imagen en el espacio de trabajo. Para un mejor rendimiento, este ejemplo reduce el tamaño de la imagen a la mitad. Visualmente, hay cuatro tipos de terrenos que son distinguibles en la imagen de mármol azul basado sólo en las características de color: regiones boscosas, regiones secas/desérticas, regiones cubiertas de hielo y agua.

A = imread('http://eoimages.gsfc.nasa.gov/images/imagerecords/74000/74192/world.200411.3x5400x2700.jpg'); A = imresize(A,0.5); imshow(A)

Convierta la imagen al espacio de color.L*a*b*

Alab = rgb2lab(A);

Calcule la sobresegmentación de superpíxeles de la imagen original y mostrarla.

[L,N] = superpixels(Alab,20000,'isInputLab',true); BW = boundarymask(L); imshow(imoverlay(A,BW,'cyan'))

Cree una matriz de celdas del conjunto de píxeles de cada región.

pixelIdxList = label2idx(L);

Determine el color mediano de cada región de superpíxel en el espacio de color.L*a*b*

[m,n] = size(L); meanColor = zeros(m,n,3, 'single'); for i = 1:N     meanColor(pixelIdxList{i}) = mean(Alab(pixelIdxList{i}));     meanColor(pixelIdxList{i}+m*n) = mean(Alab(pixelIdxList{i}+m*n));     meanColor(pixelIdxList{i}+2*m*n) = mean(Alab(pixelIdxList{i}+2*m*n)); end

Agrule la función de color de cada superpíxel utilizando la función.imsegkmeans

numColors = 4; [Lout,cmap] = imsegkmeans(meanColor,numColors,'numAttempts',2); cmap = lab2rgb(cmap); imshow(label2rgb(Lout))

Utilice los centros de clúster como el mapa de colores para un mapa temático. Los colores medios encontrados durante el clustering K-means se pueden usar directamente como un mapa de color para dar una interpretación visual más natural de las asignaciones de clasificación terrestre de bosques, hielo, tierra seca y agua.

imshow(double(Lout),cmap)