基于MATLAB/GUI的无人机遥感图像分类系统设计

2021-04-28 02:44白俊龙王章琼李元松
武汉工程大学学报 2021年2期
关键词:图像处理聚类阈值

白俊龙,王章琼,张 明,李元松

武汉工程大学土木工程与建筑学院,湖北 武汉 430074

随着无人机和传感器技术的不断成熟,无人机遥感系统逐渐成为空间数据获取的一种重要手段[1-2]。与卫星遥感和普通航空遥感技术相比,无人机遥感具有时效性强、机动灵活、获取成本较低等优势[3]。此外,无人机还具备云下超低空飞行能力,弥补了传统遥感技术因云层遮挡而无法获取高质量数字影像的不足,是传统遥感手段的有力补充[4],在灾害调查与解译、监测与评估、地质勘察等方面发挥着极大的作用[5-6]。

现阶段,无人机遥感数据的获取能力已远超其有效处理能力[7],遥感图像数据中所蕴含的大量有价值信息亟待充分挖掘与利用[8]。传统的目视解译往往需要专业的知识与丰富的经验,且因数据量巨大,导致解译效率低下;而前沿的计算机解译处理方式如机器学习,通常需要提供大量的训练样本,否则难以保证后续的分类精度,导致信息提取难以完成[9-10];此外,各相关领域能够满足模型训练条件的训练样本数据,如滑坡样本数据十分稀少等问题,也进一步增加了该方法的应用难度。

K-means 算法是一种无监督学习分类算法[11],能对原始图像进行聚类,再采用 Otsu 阈值法对聚类结果进行快速分割,结合形态学优化等图像处理,可实现无人机遥感图像地物的精确提取与分类处理。鉴于此,本文根据实际工程需要,利用 MATLAB 强大的数值计算[12]、图像处理功能[13],借助其自带的图形用户界面开发环境,设计了一个集图像分割与分类等功能于一体的无人机遥感图像分类系统,用于地物信息的快速识别与提取。

1 系统框架

图形用户界面可以内嵌MATLAB 支持和用户自定义的所有图像处理函数,避免直接面对枯燥的代码,通过具象化的图形,如窗口、按钮、菜单等简便地操纵计算机[14]。MATLAB GUI 包含多个控件,如 Axes(坐标轴)、Push Button(按钮)、Pop-up Menu(弹出式菜单)等,用鼠标拖动控件并双击即可对其属性进行设置,与命令行界面相比,操作简单,执行效率高,因此,被广泛应用[15-16]。

基于MATLAB 的图形用户界面开发环境(GUIDE)设计无人机遥感图像分类系统,该系统包含函数功能演示模块和图像系统处理模块,其中函数功能演示模块主要用于展示具体函数对图像的处理效果,帮助用户选择合适的图像处理函数,以期在处理不同图像时均能达到较好的效果,在此对该模块不进行过多的描述。

图像系统处理模块是整个系统的核心部分。该模块用于对无人机遥感图像进行系统化处理,最终实现图像地物分类与信息提取。该部分主要包含图像导入、图像处理和图像分类(图1)。

图1 图像系统处理模块结构框架Fig.1 Structure framework of image processing module

1.1 图像导入部分

使用imread 函数实现单张图像的导入,通过imshow 函数实现数字图像在系统中的实时显示;若导入的为图像文件夹,则先使用detectSURFF eatures 函数检测和提取每张图像上的Surf 特征点,根据特征点匹配实现图像拼接,采用MSAC 算法对拼接之后的图像进行几何变换,生成最终的全景图像用于后续处理。

若点击“色彩转换”按钮可将RGB 图像转换到HSV、Lab 和YCbCr 色彩空间,通过改变特征颜色的深度和亮度实现图像数据的增强,有利于后续图像分割处理。

1.2 图像处理部分

图像分区处理使用了K-means 算法,根据颜色特征对图像进行聚类分割,综合程序运行时间和图像聚类效果,在此将图像聚类数设置为5。因此,分区处理可将图像分为5 个不同区域,单个区域内可能只包含一到两种地物也可能包含多种地物。对于地物较少的区域,例如对绝大部分为“耕地”包含少部分“土路”的区域,可选择“抠图”操作,直接手工圈除“土路”部分,使该区仅保留“耕地”,然后对该区域图像进行图像增强、分割、去噪和形态学处理等一系列操作,优化图像成像效果,并最终生成和保存“耕地”区域的标记,从而完成“耕地”区域的提取,下文会有具体的操作演示;若一个区域内包含地物较多,则表明这几类地物仅依靠颜色特征不易区分,此时可选择手动获取ROI(region of interest)感兴趣区域,并生成相应区域的标记,即先用ginput 函数手动选取目标区域,然后使用roipoly 函数实现感兴趣区域的提取,最后用label2rgb 函数完成区域的标记。

1.3 图像分类部分

经上述步骤完成各类地物的分割与提取后,通过对保存的标记数据进行叠加,实现各类地物的合并,并在原图上通过颜色区分展示具体的分类效果。此外,对每类地物进行标注后,能够更加清楚每类颜色具体代表哪类地物。各类标记数据叠加部分的程序如下:

[filename, pathname, q] = uigetfile({'*.*'; '*.mat'},'select file','MultiSelect','on');

matFile=cell(length(filename),1);

for k=1:length(filename)

input=load(fullfile(pathname,filename{k}));

BJ=cell2mat(struct2cell(input));

matFile{k}=BJ*k*30;

L1=sum(cat(3,matFile{:}),3);

End

Lrgb=label2rgb(L1,jet,'w','shuffle');

end

2 模块化设置

无人机遥感图像分类系统采用自上而下的层次化设计思路,界面包含主界面和子界面。用户通过主界面调用相应的操作子界面,实现无人机遥感图像分类处理。

函数功能演示模块属于辅助操作模块,主要用于展示和对比各类图像处理函数的具体效果,界面左侧用于显示各个函数的具体处理效果,右侧为控制面板,可以选择具体要查看和对比的函数。

图像系统处理模块属于系统核心部分,主要用于对遥感图像进行分类。界面包含图像处理效果显示区和操作面板2 部分,分别位于界面的上侧区域和下侧区域,下文即对该模块的实现进行详细描述。

2.1 图像系统处理模块

图像系统处理模块通过集成图像拼接、图像分区、分割、去噪、形态学优化等算法,对无人机遥感图像进行系统化处理、可视化操作,实现图像的分割与分类。由图1 可知,无人机遥感图像的处理步骤主要包含图像导入、图像处理和图像分类。

2.1.1 图像导入部分 首先,即对图像导入的选择与操作,该部分可以选择导入已经拼接好的单张遥感图像,节省操作时间,也可以直接选择遥感图像文件夹,进行拼接处理;图像导入成功后可以根据成像效果和处理经验,选择对图像进行色彩转换、几何变换或颜色分量计算等操作。

选择色彩转换操作可将图像由RGB 空间变换到 HSV 空间,生成H、S、V这 3 个分量,色调H代表颜色属性,决定光谱主波长;饱和度S表示光谱主波长在强度中的比例,即颜色的鲜艳度;强度V表示光谱的亮度大小。图像经HSV 变换后,能够提高结果图像的纹理特征,增强其空间细节表现能力[17],有助于遥感图像理解和图像分析,如冲沟[18]、沙地[19]等地物的识别与提取。此外还可将图像由RGB 空间转换到YCbCr 空间或Lab 空间,用于特殊地物的提取如建筑物阴影[20]、棉花植被覆盖度[21]的提取等。

几何变化可将导入图像进行平移、旋转和镜像处理,有助于用户多角度查看地物,便于目视解译。颜色分量的计算主要用于不同植被类型的识别,相对于卫星与航空遥感图像可以使用基于近红外波段与红波段的植被指数(如归一化植被指数,NDVI)来指示绿色植物,而由传统数码相机拍摄得到的无人机遥感图像往往由于缺少近红外波段的数据,在植被提取方面只能另辟蹊径,即借助可见光的红光波段与绿光波段构建颜色指数来提取植被信息[22-23]。本系统可计算的颜色指数主要包括过绿指数(excess green index,ExG)、归一化绿-红差值指数(normalized green-red difference index,NGRDI)和 绿 - 蓝 差 值 指 数(green-blue difference index,GBDI)。

由此可知,色彩转换、几何变换和颜色分量计算这3 种操作,主要针对特殊地物的识别与提取,在对于绝大部分地物类型进行识别处理时,用户可选择跳过这些步骤直接对原始输入图像进行分区处理,提高处理效率。

2.1.2 图像处理部分

1)K-means 聚类

K-means 算法是一种基于划分聚类的无监督学习算法,常以欧式距离作为衡量数据对象间相似度的指标,对象间距离越小,相似度越大,核心思想为[24]:

步骤1:从给定的数据集中随机选取k个初始聚类中心;

步骤2:计算其余数据对象与聚类中心的欧氏距离,根据欧式距离,将数据对象分配到与其相距最近的聚类中心所在的簇中;

步骤3:计算每个簇中数据对象的平均值作为新的聚类中心;

步骤4:进行下一次迭代,直到聚类中心不再变化或达到最大的迭代次数停止。

在图像分区部分,K-means 算法可对图像进行初分割。在使用K-Means 算法时,其聚簇个数k需要提前确定。因此,综合程序运行时间和图像聚类效果,本文将图像聚类数k值设置为5,将图像粗略分为5 个不同区域,其中单个区域内可能包含不同数量地物类别。根据图像处理效果即可以任选其中1 个区域也可选择5 个区域之间的任意组合。如图2 所示,区域4 和区域5 组合区域大部分为“植被”,包含小部分“水体”,表明该部分“水体”与“植被”仅依靠颜色特征已无法分割。由于“水体”区域相对较小,为提高处理效率可使用ginput函数,在“水体”周围选择多个点,用imfill 函数将此区域填充成块,最终实现将“水体”部分去除,得到完整的“植被”区域。其中使用K-means 聚类实现图像初分割的核心代码如下:

图2 图像处理流程与效果Fig.2 Image processing flow and effect

global input;

Lab = applycform(input, makecform('srgb2lab'));

I = reshape(double(Lab(:,:,2:3)),size(ab,1)*size(ab,2),2);

nColors=5;

[cluster_idx,cluster_center] =kmeans(I,nColors,'distance','sqEuclidean','Replicates',2);

pixel_label=reshape(cluster_idx,nrows,ncols);

2)Otsu 阈值分割

阈值分割是一种基于区域的图像分割技术,因其实现简单、运算快捷、性能较稳定而被广泛应用。

Otsu 阈值法是实际应用中最为广泛的阈值分割法之一[25]。

基本原理:假设一副图像由前景色和背景色组成,首先根据计算方法(最大类间方差法)得到一个阈值T,若点(x,y)的灰度值f(x,y)>T,则将其归为对象点;反之,归为背景点。由此可将图像的前景色和背景色尽可能分开,实现图像的二值分割。

经过初分割得到的“植被”区域图像,此时只包含目标对象——“植被”和背景,使用MATLAB自带的Otsu 函数能有效地将目标对象与背景进行分割。

3)结果优化与标记

进行Otsu 阈值分割之后得到的二值图像往往包含背景噪声[图3(a)]。中值滤波是一种非线性操作,使用medfilt2 函数对二值图像进行中值滤波,可以滤除图中的椒盐噪声,同时保留边缘;使用imfill 函数对图中的密集独立的的孔洞区域进行填充使其连成一整块区域,实现二值图像的优化处理[图3(b)]。再使用bwlabel 函数对分割后的二值图像进行处理,生成“植被”区域的标签数据,实现该区的信息提取[图3(c)]。

图3 图像优化与标记:(a)Otsu 阈值分割,(b)二值图像优化,(c)标记叠加Fig.3 Image optimization and marking:(a)Otsu threshold segmentation,(b)binary image optimization,(c)marker overlay

4)图形矢量化

使用bwboundaries 函数寻找二值图像的轮廓边界线及对应的坐标,并用shapewrite 函数将对应的坐标信息和“Line”元素写入形文件,对结果进行矢量化输出,便于导入其它软件进行处理,实现软件之间的数据交互。

图4 是将提取得到的“植被”标签矢量文件导入ArcGIS 处理得到的效果图,在此可以任意更改图层的颜色信息,添加“字段”为图层赋予更多的属性等。

图4 ArcGIS 软件处理效果Fig.4 Processing effect of ArcGIS software

2.1.3 图像分类部分 重复2.1.2 步骤,对初分割得到的其它区域进行处理,完成图中其它地物的提取,得到对应地物的标签数据。选择“多标记叠加”按钮会出现一个新的操作子界面(图5),可对此前处理得到的各类地物标记数据进行合并与类别标注。

式(1)~式(4)中,Cl、Cw分别表示传感器的长和宽;Tl、Tw分别表示图像的长和宽;H表示无人机的航拍高度;b表示传感器尺寸与图像尺寸的比值;d表示图像的比例尺;f表示相机焦距;m表示比例换算系数;li为单个像素在地面上的实际投影长度;n表示所求区域的像素点个数;S表示所求区域的实际换算面积。

如图5(a)所示,图中主要包含“水体”、“植被”、“道路”、“土体”和“其他”5 部分,通过对 5 类地物进行叠加,得到一个彩色标记矩阵,其中相同颜色区域代表同一种地物。此外,选择其中一个地物类型,如“水体”,输入无人机的航拍高度H=300 m、相机焦距f=35 mm、传感器尺寸Cl×Cw=35.9 mm×24 mm 和图像尺寸Tl×Tw=6 000×4 000,根据式(4)[26]换算出该区域的实际面积[图5(b)],由此实现各区域面积的快速调查。表1 为根据以上输入参数,计算出图中水体、植被、道路和土体的实际面积。

图5 系统子界面:(a)地物标记叠加,(b)面积计算Fig.5 System sub-interface:(a)feature marker overlay,(b)area calculation

表1 各区域实际面积Tab.1 Actual area of each region m2

3 结 论

1)基于MATLAB/GUI 开发的无人机遥感图像分类系统,包含函数功能演示模块和图像系统处理模块两部分。函数功能演示模块为辅助模块;图像系统处理模块为核心模块,可对图像进行拼接、分区、分割、去噪、形态学优化等操作,最终实现无人机遥感图像分类。

2)K-means 聚类与 Otsu 阈值分割相结合的方法,实现了图像的快速分类与信息提取;分类处理后的结果可以矢量化输出,大大提高了本系统与其他软件的交互性。

3)根据无人机的航拍高度、镜头焦距和传感器尺寸等信息,可计算每一类地物的实际面积,实现区域面积大小的快速统计。

猜你喜欢
图像处理聚类阈值
人工智能辅助冠状动脉CTA图像处理和诊断的研究进展
基于K-means聚类的车-地无线通信场强研究
小波阈值去噪在深小孔钻削声发射信号处理中的应用
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的机器人精确抓取的设计与实现
基于自适应阈值和连通域的隧道裂缝提取
机器学习在图像处理中的应用
比值遥感蚀变信息提取及阈值确定(插图)
基于高斯混合聚类的阵列干涉SAR三维成像
基于Spark平台的K-means聚类算法改进及并行化实现