主要内容

用颜色特征和超像素绘制土地分类

此示例显示了如何使用K均值聚类和超级像素基于颜色特征执行土地类型分类。在执行分割和分类时,Superpixels可能是非常有用的技术,尤其是在使用大图像时。超级像素使您能够将图像分解为一组结构有意义的区域,每个区域的边界都考虑到原始图像中的边缘信息。一旦将图像分解为超像素区域,可以使用分类算法来对每个区域进行分类,而不必在完整的原始图像网格上解决分类问题。超级像素的使用可以在解决图像分类问题时提供较大的性能优势,同时还提供了高质量的细分结果。

在工作区中阅读图像。为了获得更好的性能,此示例将图像的大小减少了一半。从视觉上讲,在蓝色大理石图像中只能基于颜色特征:森林区域,干/沙漠地区,冰覆盖的区域和水。

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',真的);bw = boundaremask(l);Imshow(Imoverlay(a,bw,'青色'))

在每个区域中创建一个像素集的单元格数组。

pixelidxlist = label2idx(l);

确定每个超级像素区域的中位颜色l*a*b*色彩空间。

[m,n] = size(l);卑鄙的颜色=零(m,n,3,'单身的');为了i = 1:n Meancolor(pixelidxlist {i})= earne(alab(pixelidxlist {i}));eNecolor(pixelidxlist {i}+m*n)=均值(alab(pixelidxlist {i}+m*n));eNecolor(pixelidxlist {i}+2*m*n)=均值(alab(pixelidxlist {i}+2*m*n));结尾

通过使用Imsegkmeans功能。

数字= 4;[lout,cmap] = imsegkmeans(卑鄙的彩色,数字,数字,'numAttempts',2);cmap = lab2rgb(cmap);imshow(label2rgb(lout))

将群集中心用作主题图的菌落。在K-均值聚类中发现的平均颜色可以直接用作菌落,以更自然地视觉解释森林,冰,干地和水的土地分类分配。

imshow(double(lout),cmap)