欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-24 22:17:58
...

目的

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

方法

利用python
gdal模块读取影像并存入numpy数组
利用循环和opencv进行写入
利用os模块得到路径

代码

import numpy as np
from osgeo import gdal
from osgeo import gdal_array
from show import TwoPercentLinear
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拉伸,颜色显示较差
遥感影像分割成多幅小图像方法