GDAL 入门

        出入摄影测量与三维重建的大门,不免要接触对图像数据的处理。虽然现如今OpenCV3以其强大的算法和广泛的支持率傲视群雄,但谈到对图像的支持我们不得不提一提GDAL,这个老牌的图像处理的开源库。这篇学习笔记主要跟着这篇博文走(head first GDAL)可能需要科学上网,边看边学习吧。

环境配置

        我之前已经写了用Clion配置GDAL的相关内容,因为暂时没有考虑到进行GDAL源码的调试和修改,我没有进行编译,只是下载的二进制库文件。这里也需要补充补充库的相关知识静态库和动态库。

影像

GDAL中也叫做数据集,可以分为多波段影像个多数据集影像。数据集(Dataset)包含了元数据投影信息和波段等等信息。其中使用了WTK来表示投影:

GDAL 入门_第1张图片
通过GetProjectionRef()获取数据集投影信息

对于数据集内部。有两种方式可以表示栅格数据中像元的位置(图像中的某个点在影像中的序列号)和投影坐标系(不是经纬度,是投影到二维平面的地图坐标,二者可以通过地图投影进行相互转换)间的关系:一是放射变换,二是gcp点;放射变化由6参数实现, 可以通过GDALDataset::GetGeoTransform()获得放射变换参数数组。像元位置转换为投影坐标的公式为:


GDAL 入门_第2张图片
六参数数组进行放射变换

波段

波段是真正存储数据的结构,GDAL中用GDALRasterBand类来表示单个波段。波段具有一些特殊的性质。

栅格数据的读写

项目可能暂时用不到矢量格式的读写,但是不涉及OGR的内容,但需要对栅格数据的读写做进一步的学习:

GDAL为每种格式提供了一个驱动GDALDriver,他对每种对应的格式进行管理(读取创建删除重命名复制从已有数据创建数据集等)。因此需要在所有程序开头添加GDALAllRegister()函数以注册所有GDAL支持的数据驱动。

数据读取

数据读取步骤如下:打开数据集—>打开数据集下所需的波段—>读取数据。

打开数据集

使用GDALOpen()或GDALOpenShared()函数(同一线程中多个GDALOpenShared打开的是同一个dataset的引用,而在不同线程中返回的是不同的对象)。

#include"gdal_priv.h"

#inclucde

你可能感兴趣的:(GDAL 入门)