简介/入门0.1 教程的简介欢迎来到学习 C++ 教程!最重要的是,这些教程的目的是让学习 C++ 变得容易。
与许多其他网站和书籍不同,这些教程不假设您之前有任何编程经验。随着您的进步,我们将教您所需了解的一切,并提供大量示例。
无论您是出于业余爱好还是为了职业发展而学习 C++,您都来对地方了!
本介绍性章节中的课程旨在为您提供有关 C++ 是什么、它是如何产生的、程序如何工作以及需要安装哪些软件来创建自己的程序的一些背景信息。您甚至可以编写自己的第一个程序。
后续章节将探讨 C++ 语言的不同部分。在第一章(第 1 章)中,您将对许多基本 C++ 概念进行广泛但浅显的概述,因此我们可以开始编写一些简单的程序。后续章节将深入探讨这些概念,或介绍新概念。
每一章都有一个主题,其下面的大部分课程通常与该主题相关。没有建议您应该花在每课或每章上的时间;以您觉得舒服的速度学习材料。
目标在开始之前,让我们先介绍一下这些教程的几个重要目标:
涵盖一般编程主题以及 C++。传统教科书在教授特定编程语言的基础知识方面做得相当不错,但它们通常不涵盖与该语言无关的其他编程主题。例如,书籍会省略有 ...
无孔洞
当时是处于什么的情况下才写出这样的代码,我不禁地问自己。
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 ...
什么是深度学习?
- 45**分钟理解深度神经网络和深度学习**
刘利刚
中国科学技术大学图形与几何计算实验室
http://staff.ustc.edu.cn/~lgliu
【绪言】
近年来,人工智能(Artificial Intelligence, AI)和深度学习(Deep Learning, DL)非常火爆,在各个领域得到了广泛的应用。在笔者所从事的计算机图形学领域,也出现了越来越多的使用深度学习方法来解决各种问题的研究工作。2018年7月初,笔者首次在第七届中国科学技术大学《计算机图形学前沿》暑期课程上讲授和分享了笔者从数学(函数逼近论)的角度来对基于深度神经网络(Deep Neural Network, DNN)的深度学习的进行理解。之后,不断有学生来向笔者进一步询问和交流有关资料和问题。为了使学生们能够更好、更快理解和使用深度神经网络和深度学习,特撰写此文。
本文的目的是帮助非人工智能领域的学生(主要是计算机图形学领域的学生及笔者的学生)来搞懂深度学习(这里指狭义的深度学习,即基于DNN的深度学习)的基本概念和方法。笔者尝试用通俗的语言,从函数逼近论的角度来阐释深度神经网 ...
制作遥感变化检测样本,其他的遥感深度学习样本制作流程,在本质上无大的差别。
比如遥感语义分割的样本coco格式、voc格式,遥感目标检测yolo格式等。
它们的差别只在细节之处。现不展开细说,今天说的是:由遥感影像制作遥感变化检测样本
模仿俗话说,巧妇难为无米之炊。
制作遥感变化检测样本前提是,拥有两张完成配准的遥感影像和一张标签影像。
标签影像可以由矢量文件转换(这个教程最近会做)。
遥感变化检测样本的格式,我们可以参照已有的开源数据集:LEVIR、WHU-CD
我们以LEVIR为例子,下面是LEVIR的数据集文件结构:
A文件夹存放后时相图片,
B文件夹存放前时相图片。
前后时相是相对的,例如A文件夹存放的照片拍照于2019年,B文件夹存放的照片拍照于2024年
label文件夹存放前后时相变化的差值,有变化的地方用白色表示,无变化则用黑色表示。
白色表示,代表计算机中数值255。此时我们的标签文件是8bit。
list文件夹则存放三个txt,分别代表训练集、验证集、测试集。下图是训练集部分的截图。
从图片尺寸大小上,看看LEVIR数据集是怎么定义的。
A、B文件夹中的图片大小 ...
学习遥感编程要注意的一个地方是 :
gdal读取图像返回的矩阵,和python图像库读取图像返回的矩阵,二者格式大小是不一致的。
这也是我自己在学习遥感编程曾经混淆的一个知识点。
实践对比假设此时影像是一个3通道的图像。
使用gdal读取:
ds = gdal.Open(file)
if ds is None:
raise Exception("无法打开文件")
array = ds.ReadAsArray()
返回的矩阵array的大小为 (3,8082,5133)
python图像库一般有PIL和opencv
使用PIL读取:
from PIL import Image
import numpy as np
img = Image.open(file)
img_array = np.array(img)
使用PIL读取文件后,返回的是一个对象。此时要借助numpy把该对象转换为矩阵。
返回的矩阵img_array的大小为 (8082,5133,3)
使用opencv读取:
import cv2
img_cv2 = cv2.imread(file)
使用op ...
输入遥感影像的路径,生成对应的有效覆盖范围。
界面写得很简单,一共两个按钮。对应两种处理方式。
一个是单文件处理;第二个是批处理。
单文件处理测试:
点击第一个按钮。界面如下:
在处理完成后,会弹出窗口提示。
批量文件处理测试:
点击第2个按钮。要选择的文件夹必须包含tif文件,我选择的路径是D:\test
界面如下,选择好文件夹后,点击选择文件夹按钮:
在处理完成后,会弹出窗口提示。如下:
将结果放在QGIS展示,目测是否正确。
针对含孔洞的有效范围安装footprint后,打开footprint.py,只针对footprint_from_mask函数
定位到第85行,修改代码,如下:
修改前:
reprojected = reproject_geometry(
densified, source_crs, destination_crs, precision=precision
)
修改后:
reprojected = densified
二者区别在于 ,是否进行重投影。
所以 ,footprint_from_mask函数被修改为
def f ...
说起数组,不得不说numpy。
当然 ,如果你是使用其他的语言,如 C、C++或者matlab,数组的基本概念与编程语言无关。
因为我平常使用 python比较多,所以 就用numpy作为解释什么是图像。
NumPy 是一个 Python 库。
NumPy 用于处理数组。
NumPy 是“Numerical Python”的缩写。
NumPy 用于处理数组。NumPy 中的数组对象称为 ndarray。
0 维数组0 维数组或标量是数组中的元素。数组中的每个值都是 0 维数组。
这里我们可以把 0 维数组理解为图像中的像素点。
例子创建一个值为 10 的 0 维数组
import numpy as np
arr = np.array(10)
print(arr)
一维数组
以 0 维数组作为元素的数组称为 1 维数组。
这里我们可以把1 维数组理解为图像中的某一行或者某一列。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
二维数组
以一维数组作为元素的数组称为二维数组。
二维数组可以看为是单个通道(波段)的 ...
全球耕地数据集地址:
https://github.com/fiboa/data
List of datasets
Title
License
Provider
Austria
CC-BY-4.0
Agrarmarkt Austria
BRP Crop Field Boundaries for The Netherlands (CAP-based)
CC0-1.0
Denmark Crop Fields (Marker)
CC-0
Field boundaries for Belgium Wallonia
No conditions apply to access and use
Field boundaries for Cambodia and Vietnam (AI4SmallFarms)
CC-BY-4.0
Field boundaries for Catalonia, Spain
Open Information Use License - Catalonia
Field boundaries for Croatia
Public ...