与计算机视觉中的目标检测不同,遥感图像目标检测的检测范围更大,例如机场内的飞机检测、港口内的舰船检测,根据影像分辨率的不同,检测所需图像数据相比自然图像更多、范围更大,如下图1。以高分系列卫星数据为例,高分二号空间分辨率最高达到0.8m,成像幅宽45km;高分六号空间分辨率为2m,成像幅宽800km。
在给定大范围区域快速对感兴趣目标进行搜索任务时,一般最常见的思路就是“化整为块”,将大幅图像分块为不同的小块,块之间可以不重叠,也可以重叠,块的大小满足目标检测算法的输入要求,例如Faster RCNN的输入大小一般设置为1024*1024,对每个块进行检测,然后将结果进行拼接,输出检测信息及包含目标的图像块,经纬度坐标等等。
一、待处理的图像大小为43648*53759像素,空间分辨率为4.5m,覆盖面积约10559平方公里。分块的python代码如下(这里只考虑无重叠分块,有重叠后续再更新):大幅的遥感影像(TIF)格式裁剪到2048后,转化为png格式
### 2.1 tif格式图像的切
'''- 切割环境:**python3、gdal、windows**
- **Gdal的安装:**
- **tif格式图像的切割代码:**'''
import os
import numpy
from osgeo import gdal
from PIL import Image
Image.MAX_IMAGE_PIXELS = None
class GRID:
# 读TIF图像文件
def read_img(self, filename):
dataset = gdal.Open(filename) # 打开文件
im_width = dataset.RasterXSize # 栅格矩阵的列数
im_height = dataset.RasterYSize # 栅格矩阵的行数
im_geotrans = dataset.GetGeoTransform() # 仿射矩阵
im_proj = dataset.GetProjection() # 地图投影信息
im_data = dataset.ReadAsArray(0, 0, im_width, im_height) # 将数据写成数组,对应栅格矩阵
del dataset
return im_proj, im_geotrans, im_data
# 写文件,以写成tif为例
def write_img(self, filename, im_proj, im_geotrans, im_data):
# gdal数据类型包括
# gdal.GDT_Byte,
# gdal .GDT_UInt16, gdal.GDT_Int16, gdal.GDT_UInt32, gdal.GDT_Int32,
# gdal.GDT_Float32, gdal.GDT_Float64
# 判断栅格数据的数据类型
if 'int8' in im_data.dtype.name:
datatype = gdal.GDT_Byte
elif '