自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WebRTC 源码阅读 3——音频类(1)

WebRTC 源码阅读 3——音频类(1) 上一章已知,所有的配置信息汇总到了ConnectionContext中,里面的ChannelManager则是音、视处理的具体类,其类的结构如下: 本小节以音频为例,探究MediaEngineInterface。 MediaEngineInterface // MediaEngineInterface is an abstraction of a media engine which can be // subclassed to support differe

2021-08-09 19:34:45 141

原创 WebRTC 源码阅读 2——初始化

WebRTC 源码阅读 2——初始化 初始化集中于PeerConnectionFactoryInterface PeerConnectionFactoryInterface  一个抽象工厂,用于管理与业务相关的一切抽象类的创建,正如它原本的注释所说: PeerConnectionFactoryInterface is the factory interface used for creating PeerConnection, MeadiaStream,MediaStreamTrack objects。包括

2021-08-05 17:14:14 194

原创 WEBRTC源码阅读 1

WEBRTC源码解读 1 初识流程重要的定义ICE 流程  相关的流程许多博客上都能找到。简单来说,一个WebRtc连接有两端,每个端有各自的媒体流、媒体轨和网络信息,WebRtc主要解决两个问题: 两端的隐藏在NAT后面,所以需要做NAT穿透,用到的协议有STUN或TURN。 两端需要进行媒体流信息协议的匹配,具体来说,可能一个媒体流对应一个媒体轨,也可能一个媒体流融合了多个媒体轨等复杂情况,所以两端应当需要“协商”决定。  所以,WebRtc引入了SDP作为信令,其中包含了网络信息和媒体信息,每端先

2021-07-29 15:28:41 117

原创 ACWING学习(三)——快速幂

快速幂 前提: 任何一个数k都可以由二进制表示,即 k=alogk2logk+...+a121+a020 k = a_{logk}2^{logk} + ...+a_12^1 + a_02^0 k=alogk​2logk+...+a1​21+a0​20 其中alogkalog(k)−1....a1a0a_{logk}a_{log(k)-1}....a_1a_0alogk​alog(k)−1​....a1​a0​就对应了k的二进制!! 一个数的幂可以由二分法拆成: xk=xa020+a121+...+alo

2020-10-10 15:03:55 157

原创 归并排序模版+例题

归并排序  归并排序是排序算法中最为经典的类型,采用了分治策略。时间复杂度为O(lnog(n))O(lnog(n))O(lnog(n)),若采用递归空间复杂度为O(log(n))O(log(n))O(log(n)),采用迭代则为O(1)O(1)O(1)。其主要步骤为: 确定合并区间(相邻) 有序数组合并  其中数组的合并较为简单:(采用清华大学邓公的方法,这儿写容器的版本) void merge(vector<int>& A,int lo ,int mid ,int hi) { //

2020-10-09 15:53:31 437

原创 二分法模版+例题

二分法  二分法实际上非常灵活,虽然原理非常简单,但细节上十分要命,剑指offer上相关题就有两道。不如直接记下相关模版:  注意这儿的模版是左闭右闭的,即[lo,hi][lo,hi][lo,hi],朝向哪边收就保留当前的mid! 找到最左侧的值: vector<int> nums{1,2,3,3,3,4,5,6,7}; int k = 3; int lo = 0 , hi = nums.size()-1; while(lo < hi) { int mid = lo + hi &gt

2020-10-09 14:49:35 432

原创 ACWING算法基础课学习(一)

数组模仿单链表与邻接矩阵 1.定义 数组不仅仅具体存储的数据是有用的,有时候它的下标同样能够提供非常有用的信息,这一点常常被我们忽略。对于一个链表结构,最基本的元素有节点与next指针,对于每个节点可以用不同的idxiidx_iidxi​唯一标识,它所拥有的数据可以使用e[idx]表示,而它的指针则可以用ne[idx]来表示,指向对应的idxjidx_jidxj​: e[i]=dataine[i]=j e[i] = data_i\\ne[i] = j e[i]=datai​ne[i]=j 首先我们开辟能完

2020-09-23 01:32:17 2686

原创 SLAM基础——卡尔曼滤波(二)

Kalman滤波实现鼠标跟踪  首先根据opencv库定义好kalmanTrack的使用类 xk=Ak−1xk−1+Bvk+wkyk=Ckxk+nk x_{k} = A_{k-1}x_{k-1} + Bv_{k} +w_{k}\\ y_{k} = C_{k} x_k + n_{k}\\ xk​=Ak−1​xk−1​+Bvk​+wk​yk​=Ck​xk​+nk​ x0∼N(x0ˇ,P0ˇ)wk∼N(0,Qk)nk∼N(0,Rk) x_0 \sim\mathcal N(\check{x_0},\check{P

2020-07-11 10:09:03 286

原创 SLAM基础——卡尔曼滤波(一)

  虽然如今的SLAM / VIO已经不太可能再使用卡尔曼滤波作整体的紧耦合优化,但其分析问题的思想却深深影响着现如今基于优化的方法,同时读完《State Estimation for Robotics》后发现之前早期的理解很不到位,导致在之前做扫地机器人时Kalman模块对精度并没有什么影响。所以写下这篇文章加以总结。文章将先从理论推导说起,然后实现基于卡尔曼滤波的鼠标跟踪(c++)。贺博之前实现了python的版本。  首先回顾一下机器人状态估计的经典公式: xk=Ak−1xk−1+Bvk+wky

2020-07-09 11:53:03 880

原创 《深度探索c++对象模型》与《Effective c++》读书笔记

Copy Constructor与条款4:确定对象被使用前已先被初始化 当class object 以"相同class的object"作为初值,其内部通过default memberwise initialization

2020-06-29 18:11:53 172

原创 SLAM基础——滑动窗口中的三角测量

前言:简单的三角化   理想情况下,两张图像中关联的同一个三维特征点 P\ P P 满足下述方程: {s2x2=Ps1R21x1+t21=Ps2x2=s1R1x1+t1 \left\{ \begin{aligned} s_2x_2 = P \\ s_1R_{21}x_1 + t_{21}=P\\ \end{aligned} \right.\\ s_2x_2 = s_1R_1x_1 + t_1\\ {s2​x2​=Ps1​R21​x1​+t21​=P​s2​x2​=s1​R1​x1​+

2020-05-21 15:24:16 349

空空如也

空空如也

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

TA关注的人

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