自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 [深度学习] SpaceToDepth 类

也就是说,(64,1,120,160)的labels 经过 space2depth 函数,转换成了 (64,64,15,20)的labels。将 labels 输入给 space2depth对象,input:(64,1,120,160)在 output 的第2维度上,按没 block_size=8,切块。对 t_1中的每一块(64,120,8,1),总共20块。交换维度,output:(64,120,160,1)reshape成(64,15,64)

2022-11-26 22:29:27 1035 1

原创 [深度学习] labels2Dto3D 函数

labels2Dto3D 函数

2022-11-26 22:28:06 333

原创 [深度学习] magic point

magic point

2022-11-26 22:26:30 1396

原创 [计算机组成原理] 指令的完成过程

指令的完成过程

2022-11-04 17:10:02 3222 3

原创 迪杰斯特拉(Dijkstra)算法

迪杰斯特拉算法

2022-10-21 17:00:31 492

原创 [操作系统] 启动

操作系统启动

2022-10-08 16:54:49 410

原创 [计算机网络] 概述

概述

2022-10-06 11:16:11 183

原创 [操作系统] CPU

CPU

2022-10-03 21:32:57 1005

原创 [操作系统] 内存

内存

2022-10-03 20:09:10 446

原创 [C++] 引用的本质

C++引用的本质

2022-10-01 11:28:17 400

原创 [OpenGL] OpenGL图像渲染管线流程

OpenGL图形渲染管线概述

2022-09-11 10:16:43 1728

原创 [C++] 数据结构

数据结构

2022-09-05 17:35:41 405

原创 [C++] 类继承相关知识

类继承

2022-08-31 11:14:46 267

原创 [C++] 排序算法

排序算法

2022-08-20 17:17:29 364

原创 [C++] C++面试试题

试题

2022-08-19 17:33:13 627

原创 [C++] RANSAC

RANSAC

2022-08-14 20:59:27 1137

原创 [C++] Kmeans算法实现

kmeans

2022-08-07 11:55:18 3712 1

原创 [C++] const限定符

限定一个对象为常量,该对象的值不能被改变,且该对象必须初始化。

2022-08-05 09:22:30 277

原创 [深度学习]吴恩达笔记——第二周

深度学习

2022-07-08 16:32:58 385

原创 [深度学习]吴恩达笔记——第一周

吴恩达深度学习笔记

2022-07-06 17:31:18 284

原创 傅里叶级数

傅里叶级数理论:周期为 2π2π2π 的周期函数 f(x)f(x)f(x) ,可以写作一系列三角函数的线性组合:f(x)=a0cos0+b0sin0+a1cosx+b1sinx+a2cos2x+b2sin2x+...+ancosnx+bnsinnxf(x)=a_0cos0+b_0sin0+a_1cosx+b_1sinx+a_2cos2x+b_2sin2x+...+a_ncosnx+b_nsinnxf(x)=a0​cos0+b0​sin0+a1​cosx+b1​sinx+a2​cos2x+b2​sin2

2022-05-27 18:01:25 581

原创 [机器学习][三维重建] 凸包算法——Graham扫描

凸包的严格数学定义比较复杂,这里只针对二维情况,因此用通俗的话来解释二维凸包:给定二维平面上的点集,凸包就是能够围住这些点的最小的凸多边形。Graham扫描法就是在给定点集的情况下,找到这么一个凸包的最常用的算法,时间复杂度是 O(nlogn)O(nlogn)O(nlogn),其中 nnn 是点集内点的总数。算法步骤大致如下:1.找到凸包最左下角的顶点作为起点 startstartstart,如上图中的 p0p_0p0​。寻找方法非常简单,找到点集中纵坐标最小的点,如果有多个点,再在其中找到横坐标

2022-05-18 21:11:56 2521 1

原创 [三维重建] 对极几何约束、本质矩阵、基础矩阵、单应矩阵

本质矩阵,基础矩阵,单应矩阵

2022-05-16 22:21:21 1758

原创 [机器学习] [三维重建]最小二乘法

一、线性最小二乘法假设平面中存在一组数据点,需要找到一个数学模型(在这里是一条直线)去拟合这组数据点,这就是拟合。而实际上,样本点的维数不会仅仅是2维的,而可以是任意的ppp维。为了不失一般性,假设有一组样本:D={(x1,y1),(x2,y2),(x3,y3),...,(xn,yn)}D=\{(x_1,y_1),(x_2,y_2),(x_3,y_3),...,(x_n,y_n)\}D={(x1​,y1​),(x2​,y2​),(x3​,y3​),...,(xn​,yn​)}xix_ixi​

2022-05-05 22:04:13 1450

原创 [C++] push_back和emplace_back的区别

一、vector容器内存的特点先介绍vector的内存特点,vector为了支持快速的随机访问,vector容器内元素以连续的方式存放,而为了提高在添加元素时的性能,vector允许在创建时额外预留一些多出来的储存空间,为添加新元素做准备。vector的元素并未存在vector地址最开始处,而是在后续一段地址,即vector.data()所指的地址才开始存放元素。个人猜测从&vector到vector.data()这段内存中,应该存放了这个vector的一些信息,比如说长度、容量等。cout

2022-04-24 21:22:37 2303

原创 [C++] 右值引用

1、左值左值是一块关联了变量名的内存位置,可以理解为一片有名有性的内存区域,可以通过变量名来调用它,自然也可以通过变量名来引用它。比如:int x=0;在该语句中,x 是一个左值, x 代表一个内存位置,它可以被程序的其他部分访问,比如:x = 12; //赋值cout << x << endl; //输出左值是可以引用的,引用左值会返回该变量名所对应的内存空间的地址:int *p=&x;cout<<p<<endl;009CF

2022-04-19 21:20:20 1001

原创 [OpenGL] VAO、VBO、EBO

一、BO(Buffer Object,缓冲对象)缓冲对象是OpenGL管理的一段内存,为了与我们CPU的内存区分开,一般称OpenGL管理的内存为:显存。显存,也就是显卡里的内存。显卡访问显存比较快,而Buffer Object,就是由OpenGL维护的一块显存区域。比如说在一块显存为2G的显卡里,分配了128K大小的内存区域给OpenGL使用,这个128K大小的内存区域,就叫一个Buffer Object。由于显卡访问显存,比访问内存(CPU里的内存区域)要快很多。而且显卡做运算,一般都是访问显存的

2022-04-19 19:35:20 4848 6

原创 [三维重建] [机器学习] 图片相似度

由于论文可能会需要,学习顺便整理一下衡量两幅图片相似度的指标,根据需要可能会补上某些方法的C++实现代码一、resize首先需要改变一下图片的尺寸,现在一张普通的照片都上千万像素(如博主自己的手机拍出来的照片都5792×4344,2500多万像素),算法的输入采用原始图片的话,需要处理几千万个像素值,时间太长而且也没什么必要。所以原始图片需要经过resize改变一下尺寸,但这里采用的缩小尺寸的算法应该会对后续计算图片相似度的算法产生影响。1、OpenCV cv::resize()OpenCV库内有

2022-04-17 17:17:32 3589

原创 [MIT6.006 算法导论] 2.Random Acces Machine,Pointer Machine,document distance

一、Ramdom Access Machine就是RAM,随机存取存储器,可以认为是一个大型数组,里面的存储单元通过索引可以直接访问,时间复杂度:O(1)O(1)O(1),但增加或删减的时间复杂度是线性的:O(n)O(n)O(n)如:L[i]=0L[i]=0L[i]=0大多数计算机内存似乎都是这种方式,没什么好说的,很常见的概念了。二、Pointer Machinedynamic memory allocation,动态内存分配指针、链表等,也是很常见的计算机概念了,开辟的一块内存里,

2022-04-15 23:30:01 432

原创 [OpenGL] 视图矩阵(View)矩阵与glm::lookAt函数源码解析

一、视图矩阵(View)矩阵首先明确视图矩阵的作用:在OpenGL的众多坐标系中,存在一个世界坐标系和一个摄像机坐标系,视图矩阵的作用就是将世界坐标系内的坐标转换成摄像机坐标系内的坐标。如图,空间中存在一个点 PPP,它在世界坐标系内的坐标为(Xw,Yw,Zw)(X_w,Y_w,Z_w)(Xw​,Yw​,Zw​),在摄像机坐标系内的坐标为(Xc,Yc,Zc)(X_c,Y_c,Z_c)(Xc​,Yc​,Zc​),在视图矩阵的转换下,存在如下等式:[XcYcZc1]=View[XwYwZw1] \be

2022-04-13 21:58:17 8861 2

原创 [C++] 运算符的执行顺序

一、|| 运算由于 ∣∣||∣∣ 运算有一真,结果为真。当程序判断到有真值的语句时,后续语句会被短路,不再执行if( printf("这句为真,且会被执行") || printf("这句也为真,但由于前面一句已经判断为真,这句被短路了,不会再执行"));代码输出如下:借助这一特性,在数组遍历时,某些可能会越界的条件判断实际上不会越界:for(int i=0;i<n;++i){ if((i==0 || s[i-1]==' ') && s[i]!=' ') ++ans;

2022-04-13 09:50:33 1995

原创 [OpenGL] 球坐标系实现模型旋转效果

使用OpenGL实现了一个将三维模型可视化显示出来的软件,效果类似soliwork、catia等三维建模软件的效果。与各三维建模软件类似,需要实现一个旋转360°视角观察物体的操作。采用球坐标系实现。

2022-04-12 21:16:59 1190

原创 [MIT6.006 算法导论] 1. Peak Finding 寻峰

一、1D情况假设有一个如下图的一维数组,格子下的数字代表它们的索引位置,格子内的字母代表该位置内的数值。峰值的定义:当且仅当 b≥a 且 b≥c 时,位置2为峰值。(如果位置位于数组两个边界,则只需要比较另一个方向。如当 a≥b 时,位置1为峰值。)寻峰:如果峰值存在,找到峰值所在的位置。(注意,由于定义时使用了大于等于,在此定义下数组内必定至少存在一个位置满足峰值的定义,因此此时不需要考虑峰值不存在的情况)1、遍历最简单且最直接的峰值寻找方式就是遍历,遍历数组内的每一个位置,若该位置内的元素满

2022-04-11 22:20:29 3001

原创 opencv中的SIFT

最近需要使用opencv里的SIFT算法查了网上的教程,安装了opencv_contrib扩展模块大致通过如下形式的语句调用:xfeatures2d::SIFT::create()但实际使用时发现会报错,将SIFT改成SURF反而成功运行了。查看opencv_contrib/modules/xfeatures2d/src后发现,里面只有surf.cpp,没有sift.cpp翻遍网上教程都没找到解决方法,直到怀疑opencv的版本问题我用的opencv+opencv_contrib都是3.4.1

2021-09-23 21:29:47 2725 1

原创 摄像机标定

一、摄像机标定投影矩阵M(3×4)M(3\times4)M(3×4)有11个未知量。ui=m1Pim3Piu_i=\frac{m_1P_i}{m_3P_i}ui​=m3​Pi​m1​Pi​​vi=m2Pim3Piv_i=\frac{m_2P_i}{m_3P_i}vi​=m3​Pi​m2​Pi​​可见,一对对应点可以获得两个方程,需要求解11个未知量的话,至少需要6对对应点。但在实际过程中,为了鲁棒性,通常使用多于六对对应点。二、齐次线性方程组三、奇异值分解1、特征值分解特

2021-06-10 21:58:50 1649

原创 [机器学习] 奇异值分解(SVD)

1、特征值分解特征值和特征向量的定义如下:Ax=λxAx=\lambda xAx=λx其中AAA是一个n×nn\times nn×n矩阵,xxx是一个nnn维向量(n×1n\times 1n×1),而λ\lambdaλ是一个数值。则λ\lambdaλ是矩阵A的一个特征值,而x是矩阵A的特征值λ\lambdaλ所对应的特征向量。如果求出了矩阵A的n个特征值,λ1≤λ2≤...λn\lambda_1≤\lambda_2≤...\lambda_nλ1​≤λ2​≤...λn​,以及这n个特征值所对应的

2021-06-06 12:13:35 2621

原创 摄像机几何模型

最终得到摄像机坐标系下,空间中的点PPP和数字图像上的点P′P'P′的映射关系:P=(x,y,z)——>P′=(αxz+cx,βyz+cy)P=(x,y,z)——>P'=(\alpha\frac{x}{z}+c_x,\beta\frac{y}{z}+c_y)P=(x,y,z)——>P′=(αzx​+cx​,βzy​+cy​)将此映射关系转换成线性映射的形式:齐次坐标:将P′P'P′的欧氏坐标转换成齐次坐标形式Ph′P_h'Ph′​,可以发现,Ph′P_h'Ph′​与P...

2021-06-05 09:51:54 1503

原创 三维点云配准

点云数据点云数据通常表示为N行,至少3列的矩阵,其中N表示点的数量,每一行代表一个点。通常3列分别是点在空间中(x,y,z)的坐标。如果点云数据有除空间中坐标外的附加信息,如来自LIDAR传感器的点云数据,那么它可能具有每个点的附加值,例如“反射率”,其是在该位置中障碍物反射多少激光光束的量度。 在这种情况下,点云数据可能是N×4阵列。三维点云配准点云的配准过程,就是求两个点云之间的一个旋转平移矩阵,源点云通过旋转平移矩阵后,变换成和目标点云矩阵相同的矩阵。可以表示为以下方程:其中,pt,ps

2021-06-02 17:41:44 4488

原创 多模态神经网络

嗅觉神经网络六个传感器组成的传感器阵列,每组数据如下:其应是一个(6,40)的矩阵,行表示传感器,列表示时间,内部元素是每个传感器在每一秒处的响应值。对20种实验物质进行采集,每种物质采集10组数据,共200组数据。其中,每组数据为明确属于不同传感器的响应,制成六通道的数据形式。最终训练集为(200,6,1,40)的四维矩阵。而标签集为(200,20)的矩阵,列索引对应物质种类,200行为200组数据的标签,是one-hot型的矩阵,i行j列为1表示第i组数据是物质j。将训练集和标签集导入自编码器中

2021-05-30 21:36:36 2591

原创 嗅觉气室设计

在嗅觉数据的采集中,采用多个传感器组成传感器阵列。当通入检测气体时,每个传感器都会产生不同的响应,将所有传感器的响应波形记录下来,作为实验数据。由于波形中可能包含有气味的物质信息,利用特征提取手段就有可能达到识别气味的目的。由于检测设备是由多个传感器组成的传感器阵列,将其放置入气室中,向气室内通入检测气体,完成检测。因此气室的设计应满足基本要求:通入的气体应尽量扩散至每个传感器的上空。本文采用六个传感器呈正方形分布排列,对如下的几种气室设计进行了流体力学分析,选用了最为满足要求的设计。标题...

2021-05-29 22:21:07 321

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除