遥感影像分割成多幅小图像方法

目的

本人需要将一幅Landsat8影像,切割成多幅256 * 256的小幅影像,用于深度学习相关处理。
经过在envi中的可视化的裁剪,得到了一幅5130 * 5230的影像,我经过计算,发现可以横向切出
256 * 20,纵向同样切出256*20 =5120, 共计400幅影像。

方法

利用python

  • gdal模块读取影像并存入numpy数组
  • 利用循环和opencv进行写入(实际用的时候要用gdal,可关注我后面有关landsat8处理小工具的博文)
    https://blog.csdn.net/RSstudent/article/details/108724556?spm=1001.2014.3001.5501
    其中代码的329-378行就是所需内容,还附带了地理编码和投影,地理信息不会丢失,可在实际中使用。
  • 利用os模块得到路径

代码

import numpy as np
from osgeo import gdal
from osgeo import gdal_array
import cv2
import os
filename = 'tiffbigcut.tif'
dataset = gdal.Open(filename)
datatype = dataset.GetRasterBand(1).DataType
rows = dataset.RasterYSize
columns = dataset.RasterXSize
bands = dataset.RasterCount
image = np.zeros((rows, columns, bands), 
				dtype = gdal_array.GDALTypeCodeToNumericTypeCode(datatype))
for b in range(bands):
    band = dataset.GetRasterBand(b+1)
    image[:, :, b] = band.ReadAsArray()
image_cut = image[:5120, :5120, :]
for i in range(19):
    for j in range(19):
        image_save = image_cut[i*256:(i+1)*256, j*256:(j+1)*256, :]
        base_dir = os.getcwd()
        dir_name = 'images'
        dir = os.path.join(base_dir, dir_name)
        filename = str(i) + str(j) + '.png'
        path = os.path.join(dir, filename)
        cv2.imwrite(path, image_save)

结果展示

缩略图没经过2%linear拉伸,颜色显示较差
遥感影像分割成多幅小图像方法_第1张图片

你可能感兴趣的:(遥感图像处理,python,opencv,gdal,遥感)