1 需求

对于遥感影像,在制作数据集中需要裁剪固定尺寸大小的图片,本来打算用通用一点的软件arcgis实现,但在arcgis中的裁剪功能设置裁剪位置的单位是十进制度的,这个单位也不知道怎么改变为像素单位,最后没办法,使用了下面两种方式实现!

2 方法

方法一

使用PIE-Basic软件,这款软件是北京航天宏图研发的,具体操作如下:
1·打开软件,加载原始影像数据,找到感兴趣区域,使用探针工具找到中心坐标并记录;

2·打开图像裁剪按钮,点击后弹出如下窗口,根据刚才找到的坐标中心及自己想要的尺寸大小,依次填写想要输出的像素范围,输出文件路径,点击确认即可完成

方法二

使用python代码结合GDAL开源包完成,代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Apr  2 18:00:21 2019@author: Administrator
"""import gdalin_ds = gdal.Open("D:\\Data\\test.tif")           # 读取要切的原图
print("open tif file succeed")
width = in_ds.RasterXSize                         # 获取数据宽度
height = in_ds.RasterYSize                        # 获取数据高度
outbandsize = in_ds.RasterCount                   # 获取数据波段数
im_geotrans = in_ds.GetGeoTransform()             # 获取仿射矩阵信息
im_proj = in_ds.GetProjection()                   # 获取投影信息
datatype = in_ds.GetRasterBand(1).DataType
im_data = in_ds.ReadAsArray()                     #获取数据 # 读取原图中的每个波段
in_band1 = in_ds.GetRasterBand(1)
in_band2 = in_ds.GetRasterBand(2)
in_band3 = in_ds.GetRasterBand(3)# 定义切图的起始点坐标
# offset_x = 0
# offset_y = 0
offset_x = width/2
offset_y = height/2# 定义切图的大小(矩形框)
block_xsize = 1000  # 行
block_ysize = 1000  # 列## 从每个波段中切需要的矩形框内的数据(注意读取的矩形框不能超过原图大小)
out_band1 = in_band1.ReadAsArray(offset_x, offset_y, block_xsize, block_ysize)
out_band2 = in_band2.ReadAsArray(offset_x, offset_y, block_xsize, block_ysize)
out_band3 = in_band3.ReadAsArray(offset_x, offset_y, block_xsize, block_ysize)# 获取Tif的驱动,为创建切出来的图文件做准备
gtif_driver = gdal.GetDriverByName("GTiff")# 创建切出来的要存的文件
out_ds = gtif_driver.Create('clip5.tif', block_xsize, block_ysize, outbandsize, datatype)
#print("create new tif file succeed")# 获取原图的原点坐标信息
ori_transform = in_ds.GetGeoTransform()
if ori_transform:print (ori_transform)print("Origin = ({}, {})".format(ori_transform[0], ori_transform[3]))print("Pixel Size = ({}, {})".format(ori_transform[1], ori_transform[5]))# 读取原图仿射变换参数值
top_left_x = ori_transform[0]  # 左上角x坐标
w_e_pixel_resolution = ori_transform[1] # 东西方向像素分辨率
top_left_y = ori_transform[3] # 左上角y坐标
n_s_pixel_resolution = ori_transform[5] # 南北方向像素分辨率# 根据反射变换参数计算新图的原点坐标
top_left_x = top_left_x + offset_x * w_e_pixel_resolution
top_left_y = top_left_y + offset_y * n_s_pixel_resolution# 将计算后的值组装为一个元组,以方便设置
dst_transform = (top_left_x, ori_transform[1], ori_transform[2], top_left_y, ori_transform[4], ori_transform[5])# 设置裁剪出来图的原点坐标
out_ds.SetGeoTransform(dst_transform)# 设置SRS属性(投影信息)
out_ds.SetProjection(in_ds.GetProjection())# 写入目标文件
out_ds.GetRasterBand(1).WriteArray(out_band1)
out_ds.GetRasterBand(2).WriteArray(out_band2)
out_ds.GetRasterBand(3).WriteArray(out_band3)# 将缓存写入磁盘
out_ds.FlushCache()
print("FlushCache succeed")
del out_ds

3 总结

如果需要批量裁剪,可以使用代码实现,这样更简单,时间也更短;但如果只是少量裁剪几个不同区域的数据,建议使用PIE-Basic,因为Python代码裁剪单张图片的时间要比使用PIE-Basic手动裁剪时间更长!!!

图像处理:根据像素坐标及像素尺寸大小裁剪遥感影像相关推荐

  1. 怎样区分图片的实际像素、分辨率和尺寸大小

    为什么设计师给的设计图到前端开发师手里要除以二? A:像素分为物理像素和逻辑像素,设计师提供的是物理像素,而我们使用的是逻辑像素. 物理像素并不代表css中使用的像素. 如iphone5s的逻辑分辨率 ...

  2. A1,A2,A3,A4纸的尺寸大小|A4纸与分辨率的关系|像素换算|ABC号纸尺寸|纸张幅面规格

    纸张幅面规格: 纸张的规格是指纸张制成后,经过修整切边,裁成一定的尺寸.过去是以多少"开"(例如8开或16开等)来表示纸张的大小,现在我采用国际标准,规定以A0.A1.A2.B1. ...

  3. 如何修改图片像素尺寸大小?如何改图片大小尺寸?

    修改图片尺寸是一项常见的图片处理技术,可以帮助我们将图片调整为不同的尺寸,以适应不同的用途.在进行修改图片大小(https://www.yasuotu.com/size)的时候,需要注意照片的比例.设 ...

  4. 图像分辨率、像素和宽高比有什么区别?如何在线修改图片尺寸大小?

    我们生活中总会遇到各种各样关于图片的名词,比如图像分辨率.像素.宽高比,那么这些词语都是什么意思呢,我们在修改图片尺寸大小的时候究竟应该修改哪个维度的尺寸?在修改图片尺寸前该如何选择合适的图片尺寸?如 ...

  5. 关于图片的像素、分辨率、尺寸问题的解答,以及显示器的显示大小。

    像素.分辨率.尺寸 https://zhuanlan.zhihu.com/p/60192719 关于显示器显示大小 复制的这个答案:https://www.zhihu.com/question/198 ...

  6. 【图像处理】数字图像处理基础(分辨率,像素,显示...)

    Table of Contents 1.数字图像处理基础 1.1 图像表示1.1.1 图像成像模型1.1.2 数字图像的表示a.图像采样b.图像灰度的量化c.算比特数 1.2 分辨率1.2.1 空间分 ...

  7. C语言读取图像像素坐标,求指导,如何用c语言实现读取*.raw格式图像

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...

  8. 相机计算坐标公式_相机标定后,从图像坐标(像素)向物理坐标的转换计算,...

    各位大侠,本人用1组35张图片,标定相机参数.分别用MATLAB和OPENCV分别标定,标定结果基本一致. 现在,我希望从标定的一副图像中(使用这幅图像标定的相机外参),计算图像上几个红点之间的在3维 ...

  9. 图片坐标提取软件/图片坐标点和像素点颜色提取软件/图片坐标获取工具/Python图片坐标获取源码/图片像素坐标获取软件/python tkinter 图片显示(完全开源)

    该软件使用python写的,可以提取像素点的坐标还有也能获取像素点的16进制数据RGB565和RGB888(RGB888仅最新的源码才支持),可以单点坐标也可以按键坐标,甚至可以使用简单的左右键配合使 ...

  10. 正射影像地理坐标转像素坐标c语言,数字正射影像坐标转换及储存管理方法研究...

    摘要:我国使用的坐标系统主要有1954年北京坐标系.1980年西安坐标系.CGCS-2000国家大地坐标系以及地方独立坐标系.随着信息共享的扩大化,数据标准的统一化,4D产品客观的需要进行坐标系统的任 ...

最新文章

  1. ssd测试工具crystaldiskmark_使用SSD增强Ceph性能并对比测试
  2. 适用于Mac OS X的官方Java 7 –状态
  3. Thinkphp5 请求报错
  4. Spark在文本统计中的简单应用
  5. ACR Code Pacs
  6. 计算一个子网掩码有多少个有效ip地址_一个月有多少个工作日,你会计算了吗?...
  7. C语言TCP客户端获取时间
  8. 细品慢酌QuickTest关键视图(1)
  9. flask架设微信小程序服务器,苹果手机能正常访问,安卓不行(ssl的中间证书问题)
  10. 优秀的 Verilog/FPGA开源项目介绍(二十九)- 开源网站
  11. DirectX示例翻译和解析StateManager Sample
  12. 利用学信网免费激活PyCharm企业版(也适用所有其它JetBrains的IDE)
  13. ep服务器修改时间,BIOS揭秘 手把手教你设置Nehalem平台
  14. Peta数据集识别性别
  15. java银行面试题目及答案,顺利拿到offer
  16. VirtualBox 安装Android on X86
  17. 无涯教程:Node.js - Streams介绍
  18. redis的数据库通知(notify-keyspace-events)
  19. 计算机表格里的隐藏怎么弄出来怎么办,电脑表格隐藏不见了怎么办
  20. 一文读懂 Redis!

热门文章

  1. uniapp实现微信登录
  2. 微信登录报错40125和-6签名秘钥问题解决方案
  3. 微信网页授权本地调试
  4. Aria2+yaaw+Chrome插件BaiduExporter实现百度网盘下载
  5. OpenWrt路由器无线中继、桥接、信号放大、访客网络的实现方案
  6. excel下拉列表多选框_将列表框添加到Excel工作表
  7. win10磁盘分区时无法删除卷解决办法
  8. 什么是索引?索引的作用是什么?Mysql目前主要的几种索引类型
  9. 计算机标准红色,标准红色cmyk值
  10. 4个关键,如何清晰的做好数据分析