论文部分内容阅读
摘 要 本文的突出特色在于,用标注工具对耕地的原始图像进行提取,制作出效果极佳的标签图。并且从不同的田块具体特征进行分析,提取了其特征数据,利用对应的算法,得到了能更好提升分割图像精确度的模型。还利用标注工具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
关键词 标注工具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