利用arcgis和Python制作光学遥感影像语义分割的样本
1.参考博文
以下的几个博客的地址确实对我制作自己的样本起到了帮助,但有几步我没有看明白,遂做补充。
我制作的是语义分割样本是针对三波段的,原始的4通道TIF影像会被导出为3波段。
- 博文参考1——利用arcgis和Python制作语义分割的样本
- 博文参考2——利用arcgis将4波段栅格转换为RGB的3波段
- 参考博文3——生成规则格网fishnet
- 参考博文4——arcgis擦除(erase)操作
- 参考博文5——arcgis空间叠加(union)操作
- 参考博文6——arcgis矢量转栅格
2.流程
2.1 选择影像区域
该2.1章节参考博文参考1中的一、选择裁剪合适的影像区域。
对文中后面实际导出了三通道的影像这一段我一开始不是很理解,原来就是右键影像的图层,有一个export data。这里参考了博文参考2。
2.2 勾画标签区域
该2.2章节参考博文参考1中的二、创建标签shp文件,目视解译勾画标签区域。
需要提前借鉴参考博文1中的三、标签shp修改属性并转换为tif文件,将标签shp的id字段转换成为255。
2.3 标签shp转tif文件
这一段虽然参考博文参考1中的三、标签shp修改属性并转换为tif文件。但是参考博文里,缺失了部分的细节。应当将以下步骤操作完(将背景和标记的shp组合在一起后),才能开始转换。
2.3.1 背景shp的创建
在2.2 勾画标签区域的时候,创建了标签的文件,但是除了标签勾画的区域,未勾画的区域都是背景。但博文参考1中省略了如何制作背景的细节。以下是创建背景shp,并将其与标记shp合并,最后转换成tif格式文件的步骤。
2.3.2 Arcgis创建1x1的fishnet
在参考博文3里创建格网。但需要注意的是参数的设置:
- 不是设置像元宽度和像元高度,而是设置行数和列数均为1。
- 创建标注点(可选)前的√号不需要点,应当为空,因为我们不需要这个。
- 几何类型(可选)的菜单需要下拉,不是POLYLINE,而是POLYGON。
2.3.3 Arcgis擦除(erase)操作生成背景
在参考博文4中的erase操作,将创建的fishnet格网中的标记shp全部裁剪掉,这样现在就有两个shp文件:标记shp和背景shp了。并且擦除得到的shp,其id应当是0(如果不是,应当修改属性里的id为0)。
2.3.4 Arcgis空间叠加(union)操作
在参考博文5中的union操作,将先前得到的标记shp和背景shp联合在一起,就能得到一个和影像区域大小一致的shp了,并且这个shp中有两个元素,一个是背景,另一个是标记。(联合后,打开图层的属性表,肯定有一个属性,其中一个值是0,其余的值是255,记住这一列的列名,若未做修改,列名应当是id_1)。
2.3.5 Arcgis中conversion工具转换shp为tif
在参考博文1里的三、标签shp修改属性并转换为tif文件中使用了conversion工具条中的polygon to raster工具。
详细操作见参考博文6。
有如下几个参数需注意:
- 字段。前文已经提醒,要记住union操作后,属性表中一列除一个0外全为255的列名(大概率是id_0)。转栅格时要修改字段为该段。
- 输出像元大小(可选)。该段应当利用后面的文件夹符号,指定为2.1中得到的影像。
2.4 使用Python滑动裁剪图像及标签
该段完全同参考博文1中的四、使用Python滑动裁剪图像及标签。
复制代码到pycharm中,安装指定的库,利用定义的TifCrop函数。
TifCrop(参数1,参数2,参数3,参数4)
- 参数1:指定的tif文件的完整路径
- 参数2:选择保存的文件夹(文件夹的路径)
- 参数3:裁剪的图像的大小,这里为256
- 参数4:重复率设定为0.1