遥感影像的真正的顶点
如上图所示,红色的四个点是遥感影像中的真正的顶点,指的是影像有效区域的边界点,而非无效值(如NoData或背景值)的顶点。
而蓝色的四个点,影像的地理范围(边界)的角点。这些顶点是影像的四个角点(左上、右上、右下、左下),表示影像的地理范围。与影像的有效区域无关,即使影像中有大量无效值(如NoData),GDAL的顶点仍然是影像的四个角点。
GDAL只保存左上角信息,其余三个角通过基于影像的地理坐标(经纬度或投影坐标)计算的。
代码如下:
from osgeo import gdal
# 打开影像
dataset = gdal.Open('image.tif')
width = dataset.RasterXSize
height = dataset.RasterYSize
geotransform = dataset.GetGeoTransform()
# 计算四个角点的坐标
corners = [
(geotransform[0], geotransform[3]),
(geotransform[0] + width * geotransf ...
提问以一张png做演示,不依赖gdal和rasterio第三方库,用python一步一步演示遥感影像几何校正的过程,写成函数,帮我学习几何校正,帮助理解几何校正的本质
以下是它的思考:
嗯,用户想让我用Python一步步演示遥感影像的几何校正过程,而且不依赖GDAL和rasterio这两个库。他们希望写成函数,帮助他们理解几何校正的本质。好的,首先我得理清楚几何校正的基本步骤,然后考虑如何用纯Python实现这些步骤,而不用那些专业的库。
首先,几何校正的主要步骤通常包括确定控制点、构建变换模型、然后对图像进行重采样。用户可能想了解的是多项式变换,比如一阶或二阶多项式,然后用最小二乘法来求解系数。接着是反向映射,用双线性插值等方法填充校正后的图像。不过,使用纯Python处理图像的话,可能需要用到PIL库来读取和保存图像,以及处理像素数据。
那用户的需求是不用GDAL和rasterio,所以需要找到替代的库。PIL或者Pillow应该可以处理基本的图像操作。但处理地理空间数据的话,可能需要自己解析坐标,不过用户可能只是需要一个演示,所以可能控制点是由用户提供的,而不是从地理文件中 ...
根据https://github.com/xzyun2011/finetune_segment_anything_tutorial 微调SAM模型
代码使用Fine-tuning
Step 0, 下载SAM的权重,可以从segment-anything github repo model checkpoint 直接下载
Step 1, 准备好VOC2007 dataset,直接在 官网 下载。直链是http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
代码里面有个迷你版的VOC2007数据集,在 “data_example”里面,下好了权重可以直接用这个目录文件试跑
Step 2, 开始 fine-tuning
❗ 记得把模型、数据路径换成自己的,gpu id也可以指定 ❗
python3 finetune_sam_voc.py --w weights/sam_vit_b_01ec64.pth --type vit_b --data data_example/VOCdevkit
代 ...
代码片段1#include <iostream>
#include "gdal_priv.h"
using namespace std;
int main()
{
printf("strat!\n");
//注册文件格式
GDALAllRegister();
const char* file = "D:\\img1_1_32.tif";
GDALDataset *ds = (GDALDataset*) GDALOpen (file, GA_ReadOnly);
//A* p则使用:p->play(); 左边是结构指针。
//A p 则使用:p.paly(); 左边是结构变量。
int Xsize = ds->GetRasterXSize();
int Ysize = ds->GetRasterYSize();
printf("Xsize =%d\n" , Xsize);
...
MATLAB 和 Python 的主要区别在于,Python 是一种通用编程语言,而 MATLAB 是一个用于工程和科学应用的计算平台。
Matlab和Python,它们就像 Windows 和 Linux。
Matlab 更加直观,而 Python 可以定制,但需要更多知识。
Matlab 可能在某些特定方面比 Python 做得更好,MATLAB 也是 Simulink 的基础,Simulink 是一个用于模拟复杂多域系统的框图环境。
MATLAB 与 Python 语法Python 将一切视为对象,而 MATLAB 将一切视为数组。根本的技术差异影响了两者之间语法变化的许多其他方面。
例如,MATLAB 的语法非常适合数学建模和线性代数,可以清晰简洁地表达数学概念。相比之下,Python 提供了一种通用方法,凭借其可读性、多功能性和广泛的生态系统,更适合更广泛的应用。
MATLAB 的语法简洁直观
MATLAB 具有简单直观的数据分析和数值计算语法。一个原因是它使用类似于数学符号的脚本语言。Matlab 最擅长矩阵向量。语法就像在纸上书写一样,非常棒。你可以实现很多功能,比 ...
一直想在CLION上写关于GDAL的代码。由于我是一个野生程序员,所以我的CPP功力不深厚,甚至是属于那种,学过但全忘了的状态。
平常的工作中,python足以解决了我遇到80%的问题。
由于我习惯使用pycharm,那自然对clion也有一个较为不错的初印象。
我想在clion编辑器上,重新学习GDAL,重新学习CPP。
于是,拦路虎出现了:怎么在Clion下配置GDAL开发环境。
我查阅了很多中文资料、英文资料。终于解决了这个问题。
所以现在,把这个解决问题的详细的步骤记录下来。
这篇文章分为 行不通的方案,可行的方案。
行不通的方案,是指我走不通的路,但是别人走通的。
可行的方案,是指我走通的路,你们走不走得通,你们都试试才知道。
我是小白,水平有限,CPP太难了。
行不通的方案
在clion上使用vcpkg安装gdal。
这条路,我走了很多次,次次失败。失败原因未知。
你们可以先试一下这条路,是否对你们有用。
可行的方案我会详细地记录这个过程。步骤分为:
1.编译gdal
2.在clion创建一个新项目
3.复制编译好的gdal文件夹到我们的项目文件夹下
4.修改CMakeLi ...
无孔洞
当时是处于什么的情况下才写出这样的代码,我不禁地问自己。
poly = ogr.Geometry(ogr.wkbPolygon)
if len(polygon['coordinates']) > 4:
for hole_coords in polygon['coordinates']:
hole_ring = ogr.Geometry(ogr.wkbLinearRing)
for coord in hole_coords:
hole_ring.AddPoint(coord[0], coord[1])
poly.AddGeometry(hole_ring)
else:
try:
max_i = len(polygon['coordinates'][0])
target_i = 0
for i in range(len(polygon['coordinates'])):
temp_i = len(polygon[ ...
一般看知网的论文,我喜欢看别人的毕业论文。
今天在看《无人机航拍多光谱图像全景拼接显示系统设计》,收获颇多。
现简单地记录一下关于无人机图像校正的部分。
首先是无人机图像校正的方面,论文梳理了各个坐标系的区别与联系。
由此像素坐标系、图像物理坐标系出发,进而介绍图像空间坐标系、相机坐标系、地面直角坐标系。
介绍完了坐标系部分,开始讲解姿态参数:翻滚角 、俯仰角 、航偏角 以及航高 。
基于上述的分析,综合了平面位置几何关系,
得到了无人机综合校正的流程。
之前写了一个关于无人机粗校正的教程,那个教程针对的正射影像,只校正了偏航角,并没有针对翻滚角、俯仰角进行校正。
而今天所看到的论文《无人机航拍多光谱图像全景拼接显示系统设计》,给出了具体方法的实现。其中的具体细节,大家还是去下载这篇论文查看,作者写的很详细。
制作遥感标签样本,可以分为3个步骤:
1.画矢量
2.矢量转栅格
3.分块分割影像
画矢量这个步骤是最耗费时间的、最麻木的一个过程。
一般是在arcgis勾画目标的轮廓。
矢量的格式一般为shp,而深度学习输入数据一般为栅格,如png、bmp等等。
所以需要对矢量进行转换,即下一步。
矢量转栅格我写好了python代码,代码大概50行左右,很短。小白可以参考。
再详细记录这个矢量转栅格的过程。
首先在arcgis新建一个字段叫做ID,字段的名字我是随便起的,你可以起其他的名字,无所谓的。
对这个字段赋值。赋值的大小,由你的需求决定,由你的深度学习预设的标签样本决定。
如果是目标只有一类,我一般赋值为255。
举个例子,底图如下。
我们要勾画植被、建筑物,勾画后的矢量如下:
属性表如下:
from osgeo import gdal, ogr
def shp_to_tiff(shp_file, refore_tif, output_tiff, type='int'):
'''
函数作用:将shp文件转换成tif文件
形参解释:
shp_fil ...