基于Labelme的遥感图像地块分割与提取

    卿枫 何林锶 刘书含 周佳妮

    

    

    

    摘 要 本文的突出特色在于,用标注工具对耕地的原始图像进行提取,制作出效果极佳的标签图。并且从不同的田块具体特征进行分析,提取了其特征数据,利用对应的算法,得到了能更好提升分割图像精确度的模型。还利用标注工具Labelme为耕地原始图像打上标签,非常简明有效地得到了所需要的标签图。最后我们还对模型进行了改良,大大提升图像的分割效果。

    关键词 标注工具Labelme 类矩形引导算法 亮度均衡法 边缘检测法

    中图分类号:TP391.4 文献标识码:A 文章编号:1007-0745(2020)04-0001-06

    1 问题重述

    1.1 问题背景

    耕地的数量和质量是保持农业可持续发展的关键,利用卫星遥感影像可以识别并提取耕地,并对耕地进行遥感制图,准确的耕地分布能够为国家决策部门提供重要支撑。目前高精度的耕地信息提取主要还是依靠人工解译,耗费大量人力、财力且效率较低,因此,遥感图像的耕地识别算法、研究将对耕地遥感制图提供重要帮助。[1]

    1.2 问题提出

    1.2.1 问题一:耕地比例

    计算十幅给出的耕地图在各图像中所占比例,并将得出数字,填写到给出的表格(表1)。

    1.2.2 问题二:制作耕地标签图

    从给定的两幅测试图像(Test1.tif、Test2.tif)中提取出耕地,制作耕地标签图,并将标签图分别上传到竞赛平台中。

    1.2.3 问题三:快速、精准识别田块

    我国土地辽阔,地貌复杂,希望团队寻找新的思路和模型,能够快速、精准的识别出田块。

    2 问题一

    2.1 工具介绍

    我们通过Python语言的:PIL、NumPy等第三方库完成了这个问题一的模型建立与求解。

    PIL是Python的第三方图像处理库,这个库的功能非常的强大,我们不仅能够拿它来画图,PIL还可以使图像的对比度自动增强。

    NumPy(Numerical Python)是Python中科学计算的基础包。NumPy可以处理python里的数组和列,针对python的各种数据进行数据分析,这样的能力使其广受众多Python编程者的喜爱。

    2.2 模型建立

    首先运用PIL中的核心类--Image类,赛题图像数据初始化。然后利用NumPy库的转换矩阵功能,先将RGB图片转为灰度图片,再利用numpy库的where函数功能的广播机制统计图像像素个数。

    我们团队通过将图像的所有像素点的参数计算得到,然后再将黑与白两种图像的像素个数计算得到。然后通过白色(值为1)代表耕地的像素点与总像素点之比,得到耕地所占面积结果。

    2.3 问题结论

    3 问题二

    3.1 工具介绍

    问题二是需要我们从给定的两幅测试图像(Test1.tif、Test2.tif)中取出耕地,制作对应的耕地标签图,并将标签图分别上传到竞赛平台中。为此我们选择了python中的pyqt5和深度学习图像标注工具Labelme进行对耕地打上标签的工作,其中关于python、Labelme和pyqt5的介绍如下:

    Python:Python由荷兰数学和计算机科学研究学会的Guido van Rossum于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

    Labelme:LabelMe是一个用于在线图像标注的标注工具。我们可以使用该工具对图像进行自己的规划和标注,使得标注这件原本十分枯燥的事情变的十分的简单。此外,它也可以帮助我们标注图像,使得原本需要人工标注的东西变得十分简单,节约了大量的人力物力。

    pyqt5:Pyqt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成。Pyqt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包括:Unix、Windows、MacOS。

    3.2 模型建立

    假设图像中的耕地图像都是准确的,其中的耕地面积无变化,假设通过模型得到的标注图像准确,问题二的流程图如上图2所示。

    3.3 模型求解

    我们想要通过标注工具Labelme进行对耕地打上标签,我们需要先将相关的软件准备好,这里使用的是python3.8,并且调用anaconda prompt对相对应的labelme与pyq5进行安装,注意这里安装的labelme版本为3.16.7,必须需要安装对应的labelme版本才可以。在anaconda安裝好了过后,需要在终端运行一下labelme接着就会出现的画面[2]。

    接着我们打开上方的open选择我们需要的图片,并且对其进行标注,标注的方法为标点,将点连为线便可以得到一块被标注后的图形,再对这个图形打上标签,并且为这个标签命名,例如本次命名为耕地那么图片就算是标注好了。

    接着将其保存,保存后再打开一个终端,也就是anac onda prompt。首先利用cd将路径转到你的图片文件所对应的地方,接着在终端继续输入命令行:labelme_json_to_dataset.json,接着就可以在相应的文件夹中找到标注好后对应的图片。

    但是在这里的labelme中的标注颜色为黑红具体标注效果如下所述。所以我们需要改变其标注颜色,这里需要改一个文件,labelme是通过anaconda虚拟环境运行的,那么我们在修改labelme时,自然就要找到labelme所在的目录,修改labelme特定的文件才行。如下图所示,在anaconda环境下的Lib/site-packages/目录下可以找到该环境安装的包。找到labelme后,进入labelme的utils目录则可以找到配置文件draw.py进行修改。

    将其改写后再次运行labelme就可以得到黑白的效果,接下来我们就可以看看改写后得到的图像。其中图像3和图像4分别为标注前后的Test1,Test2。

    3.4 问题结论

    最后通过labelme的一系列的操作得到了标签图如上图5、图6所示。

    4 问题三

    4.1 模型建立

    我们团队在利用传统分割方法和机器视觉进行田块分割时,会造成边缘出现许多非田块的小块区域,因而导致我们计算的数据和分割、识别的田块有难以忽视的误差。

    我们考虑到,在一定气候和区域内的田块,所种植的植物的类型都会是相同的。这样的特点既满足种植者培育农作物的方便,也会带来农作物收割的便利。

    而我们的卫星遥感图像技术,可以根据大面积农作物种植的分布特点,在对农田信息进行提取时,采用面向对象的图像处理方法,对于田块的农作物如大豆、玉米、大米等,能有效地利用不同农作物具有的图像的光谱特征、结构信息和几何信息,来进行对于田块进行识别,能更准确地统计田块面积。[3]

    我们关于问题三的模型流程图如上图7所示:

    首先我们采用资料中查阅到的亮度均衡的图像分割方法,去处理地物的光谱特征;再将亮度均衡和边缘检测算法的区域分割法有效地结合,可得到封闭的区域边界,依据田块边缘和种植区域特征结合的不同,我们可以将图像特征和光谱特性结合的分割方法和边缘检测的后处理方法一同结合,完成类矩形引导的图像分割与识别,对田块的分割与识别形成了闭合且有效的区域;最后将算法的分割结果与人工解释的分析结果进行对比,得出结论。

    4.2 模型求解

    4.2.1 农作物图像、光谱特征提取

    从农作物植被角度来看,植被遥感特征主要基于植被与光(辐射)的相互作用,而我们已知植被冠层的形状大小和空间结构是比较复杂的,不同种类的植被冠层的叶片大小,形状和密度均不相同。因此在植被遥感中,很多时候我们会对植被的叶片、冠层做一些简化,如将叶片简化成某种简单几何形状,将冠层分层处理,甚至将单独一株树木看作某个简单几何体。

    从遥感原理角度来看,在可见光-近红外区域内,近红外波段对于植被遥感有重要作用,因叶片内部的结构影响,植被在近红外区域的反射极为明显。[4]植被的发射特征主要表现在热红外波段和微波波段,植被的理化反应和结构会对其发射能量造成影响。植被自身反射率曲线如上图8所示。

    大多数农作物植被冠层的多次反射(如上图9)会对能量进行一定的散射透射,使得我们难以描述这种反射能量。

    自然界中的许多自然地表的反射有一定的规律,这些地表面对太阳入射的反射具有方向性,这种方向性随着太阳入射角和观测角度的变化而有明显的差异,类似于镜面反射。

    植被冠层反射示意图如图9所示:

    在不同波段的光谱信息受叶内不同结构(如叶绿素、细胞结构)和叶片状态(如含水量)等条件控制。因此,对于复杂的植被遥感,我们常常利用多光谱遥感数据纪念馆过一定的分析运算(加减乘除等线性或非线性组合方式)产生某些对植被长势、生物量等具有一定指示意义的数值,即植被指数。

    下图可见,健康植被的光谱曲线近似于数学中的根号,而干土的曲线则接近于一条倾斜线,不健康植被的曲线逐渐接近于干土。图像和光谱特征包括4个多光谱波段:蓝(0.45~0.52μm)、绿(0.52~0.59μm)、红(0.63~0.69μm)和近红外(0.77~0.89μm)波段,分辨率均为8m;1个全色波段(0.45~0.90μm)。我们假设模型运用地点的地势较为平整,对研究类似玉米与水稻的农作物特征曲线查到了光谱曲线。

    4.2.2 特定田块边缘区域特征提取

    我们选择了一些网络上的资源资料,试着用我们获取的处理模型和方法去获得区域特征提取数据,下图就是我们选择的一处田块覆盖区域的图像数据。

    该地区是我们选取的气候较为适宜,图像也较为工整,整个地区都比较适合用于我们本次模型的使用,并且我们对其也已經进行了一些处理。

    图10就是通过GS算法处理过后的全色图像:

    在基于图的分割算法中,利用提取的边界区域构建无向图,采用本文的类矩形引导分割规则进行分割处理。如下图边界提取效果图所示,检测出的边缘线细腻而光滑,有较好的连续性,有效地体现了玉米田地块的边缘特征,且定位精度较高效果很好。

    分割提取的结果图中可以看出,加入类矩形阈值函数的本文分割方法在有效区分不同地物的同时,减少了地块边缘的小块区域,凸显了特定田块的类矩形的形状特点。符合我们一开始预期结合的效果。

    4.2.3 亮度均衡算法

    我们所使用的亮度均衡算法,针对大小为的灰度图像G,对于任意位置所对应像素灰度值大小为(指图像灰度级总数),不同灰度级出现概率可表示为:

    统计原始图像各灰度级的像素频数并计算各灰度级的像素频率以得到灰度级累计直方图;之后取整计算并确定映像关系进行灰度变换作出新的直方图。

    为了检验类矩形引导的分割结果与实际农作物特征的符合情况,一般都会将算法与人工解译的目标区域样本进行比较。人工解译样本是由专业人员结合影像目视解译与光谱特征分析获取的。

    4.3 问题结论

    我们结合资料提出的类矩形引导的田块分割方法,在对目标有效分割的同时,结合了田块形状特征和农作物的外形光谱特征,减少了边缘小块区域对田块面积统计的影响。通过类矩形的引导,增强了特定形状的分割,对含有大量类矩形地块的大面积植被田遥感图像有很好的分割效果。并且也与人工解释的数据对比,发现效果符合预期,为我国耕地面积计提供了有效帮助的方法。

    参考文献:

    [1] 彭兴邦,蒋建国.一种基于亮度均衡的图像阈值分割技[J].计算机技术与发展,2006,16(11):10-12.

    [2] 田野.面向对象的遥感影像多尺度自适应分割技术[D].上海:上海交通大学,2009.

    [3] 梁若飞,杨风暴,王毅敏.一种类矩形引导的玉米田遥感图像分割算法[J].国土资源遥感,2016,28(03):53-59.

    [4] 杨风暴.红外物理与技术[M].北京:电子工业出版社,2014:180-245.

    (西华大学 电气与电子信息学院,四川 成都 610039)