График классификацию земель с помощью цветовых Функций и суперпикселей

В этом примере показано, как выполнить классификацию типов земель на основе цветовых функций с помощью кластеризации K-средних значений и суперпикселей. Суперпиксели могут быть очень полезным методом при выполнении сегментации и классификации, особенно при работе с большими изображениями. Суперпиксели позволяют вам разбить изображение на набор структурно значимых областей, где контуры каждой области учитывают ребро информацию в оригинальное изображение. Если вы разбиваете изображение на суперпиксельные области, то алгоритмы классификации могут использоваться для классификации каждой области, а не для решения задачи классификации по полному оригинальному изображению сетке. Использование суперпикселей может обеспечить большие преимущества эффективности в решении задач классификации изображений, а также обеспечивает высококачественный результат сегментации.

Чтение изображения в рабочую область. Для лучшей эффективности этот пример уменьшает размер изображения вдвое. Визуально существует четыре типа земель, которые различимы в изображении синего мрамора, основанном только на цветовых функциях: лесные области, сухие/пустынные области, покрытые льдом области и вода.

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

Преобразуйте изображение в цветовое пространство L * a * b *.

Alab = rgb2lab(A);

Вычислите сверхдегментацию суперпикселя оригинального изображения и отобразите его.

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

Создайте массив ячеек из набора пикселей в каждой области.

pixelIdxList = label2idx(L);

Определите медианный цвет каждой области суперпикселя в цветовом пространстве 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

Кластеризуйте цветовую функцию каждого суперпикселя с помощью imsegkmeans функция.

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

Используйте центры кластеров в качестве палитры для тематической карты. Средние цвета, обнаруженные во время кластеризации K-средних значений, могут использоваться непосредственно в качестве палитры, чтобы дать более естественную визуальную интерпретацию назначения классификации земель для леса, льда, сухой земли и воды.

imshow(double(Lout),cmap)

Для просмотра документации необходимо авторизоваться на сайте