MATLAB 对应点集配准的四元数法
摘要:这个算是ICP算法中的一个关键步骤,单独拿出来看一下。 算法流程如下: 1.首先得到同名点集P和X。 2.计算P和X的均值up和ux。 3.由P和X构造协方差矩阵sigma。 4.由协方差矩阵sigma构造4*4对称矩阵Q。 5.计算Q的特征值与特征向量。其中Q最大特征值对应的特征向量即为最佳旋转向
阅读全文
posted @
2020-09-10 14:44
一杯清酒邀明月
阅读(523)
推荐(0) 编辑
MATLAB 高斯牛顿法最优化
摘要:计算步骤如下: 下面使用书中的练习y=exp(a*x^2+b*x+c)+w这个模型验证一下,其中w为噪声,a、b、c为待解算系数。 代码如下: 1 clear all; 2 close all; 3 clc; 4 5 a=1;b=2;c=1; %待求解的系数 6 7 x=(0:0.01:1)'; 8
阅读全文
posted @
2020-09-10 14:42
一杯清酒邀明月
阅读(1170)
推荐(0) 编辑
MATLAB Levenberg-Marquardt法最优化
摘要:上一篇博客中介绍的高斯牛顿算法可能会有J'*J为奇异矩阵的情况,这时高斯牛顿法稳定性较差,可能导致算法不收敛。比如当系数都为7或更大的时候,算法无法给出正确的结果。 Levenberg-Marquardt法一定程度上修正了这个问题。 计算迭代系数deltaX公式如下: 当lambda很小的时候,H占
阅读全文
posted @
2020-09-10 14:41
一杯清酒邀明月
阅读(891)
推荐(0) 编辑
MATLAB FAST特征点检测
摘要:算法思想:如果一个像素与它邻域的像素差别较大(过亮或过暗) , 那它更可能是角点。 算法步骤: 1.上图所示,一个以像素p为中心,半径为3的圆上,有16个像素点(p1、p2、...、p16)。 2.定义一个阈值。计算p1、p9与中心p的像素差,若它们绝对值都小于阈值,则p点不可能是特征点,直接pas
阅读全文
posted @
2020-09-10 14:39
一杯清酒邀明月
阅读(450)
推荐(0) 编辑
MATLAB 点集配准的SVD法
摘要:本篇我们使用SVD计算点集配准。 下面是《视觉slam十四讲》中的计算方法: 计算步骤如下: 我们看到,只要求出了两组点之间的旋转,平移是非常容易得到的,所以我们重点关注R的计算。展开关于R的误差项,得: 注意到第一项和R无关,第二项由于R'R=I,亦与R无关。因此,实际上优化目标函数变为: 接下来
阅读全文
posted @
2020-09-10 14:38
一杯清酒邀明月
阅读(613)
推荐(0) 编辑
MATLAB 曲面拟合
摘要:这里用到的还是最小二乘方法,和上一次这篇文章原理差不多。 就是首先构造最小二乘函数,然后对每一个系数计算偏导,构造矩阵乘法形式,最后解方程组。 比如有一个二次曲面:z=ax^2+by^2+cxy+dx+ey+f 首先构造最小二乘函数,然后计算系数偏导(我直接手写了): 解方程组(下图中A矩阵后面求和
阅读全文
posted @
2020-09-10 14:37
一杯清酒邀明月
阅读(1202)
推荐(0) 编辑
MATLAB 局部加权线性回归
摘要:通常我们使用的最小二乘都需要预先设定一个模型,然后通过最小二乘方法解出模型的系数。 而大多数情况是我们是不知道这个模型的,比如这篇博客中z=ax^2+by^2+cxy+dx+ey+f 这样的模型。 局部加权线性最小二乘就不需要我们预先知道待求解的模型,因为该方法是基于多个线性函数的叠加,最终只用到了
阅读全文
posted @
2020-09-10 14:35
一杯清酒邀明月
阅读(872)
推荐(0) 编辑
MATLAB 求向量间的旋转矩阵与四元数
摘要:问题是这样,如果我们知道两个向量v1和v2,计算从v1转到v2的旋转矩阵和四元数,由于旋转矩阵和四元数可以互转,所以我们先计算四元数。 我们可以认为v1绕着向量u旋转θ角度到v2,u垂直于v1-v2平面。 四元数q可以表示为cos(θ/2)+sin(θ/2)u,即:q0=cos(θ/2),
阅读全文
posted @
2020-09-10 14:34
一杯清酒邀明月
阅读(1843)
推荐(2) 编辑
MATLAB 旋转矩阵、欧拉角、四元数互转
摘要:欧拉角转旋转矩阵公式: 旋转矩阵转欧拉角公式: 旋转矩阵转四元数公式,其中1+r11+r22+r33>0: 四元数转旋转矩阵公式,q0^2+q1^2+q2^2+q3^2=1: 欧拉角转四元数公式: 四元数转欧拉角公式: matlab代码如下: 1 clear all; 2 close all; 3
阅读全文
posted @
2020-09-10 14:32
一杯清酒邀明月
阅读(4500)
推荐(0) 编辑
MATLAB 贝塞尔曲线
摘要:下面三个公式分别是一次、二次和三次贝塞尔曲线公式: 通用的贝塞尔曲线公式如下: 可以看出,系数是由一个杨辉三角组成的。 这里的一次或者二次三次由控制点个数来决定,次数等于控制点个数-1。 实现的效果如下: 代码如下: 1 clear all; 2 close all; 3 clc; 4 5 p=gi
阅读全文
posted @
2020-09-10 14:31
一杯清酒邀明月
阅读(1557)
推荐(0) 编辑
MATLAB DBSCAN
摘要:DBSCAN全称Density-Based Spatial Clustering of Applications with Noise,是一种密度聚类算法。 和Kmeans相比,不需要事先知道数据的类数。 以编程的角度来考虑,具体算法流程如下: 1.首先选择一个待处理数据。 2.寻找和待处理数据距离
阅读全文
posted @
2020-09-10 14:30
一杯清酒邀明月
阅读(1656)
推荐(1) 编辑
MATLAB 点云密度
摘要:算法思路是首先建立kd树,然后找到每个点距离最近的点的距离,对距离求和再求平均即可。 代码如下: 1 clear all; 2 close all; 3 clc; 4 5 pc = pcread('rabbit.pcd'); 6 pc = pcdownsample(pc,'random',0.1);
阅读全文
posted @
2020-09-10 14:28
一杯清酒邀明月
阅读(435)
推荐(0) 编辑
MATLAB 图像投影到点云
摘要:最近接触点云比较多,如果把图像投影到点云应该挺有意思。 首先需要载入图像,然后做个球或其他什么形状的点云,这里可以参考球坐标公式。 最后通过pcshow将像素输出到点云上即可。 原图: 投影后的点云: 代码如下: 1 clear all; 2 close all; 3 clc; 4 5 img =
阅读全文
posted @
2020-09-10 14:27
一杯清酒邀明月
阅读(720)
推荐(0) 编辑
MATLAB 计算图像旋转角度
摘要:比如有图像1,将其旋转n度得到图像2,问如何比较两张图像得到旋转的度数n。 算法思路参考logpolar变换: 1.从图像中心位置向四周引出射线。 2.计算每根射线所打到图像上的像素累计和,得到极坐标灰度曲线。 3.比较两张图的灰度曲线,得到最相关的偏移位置,即为两张图像的旋转角度。 原图: 旋转了
阅读全文
posted @
2020-09-10 14:25
一杯清酒邀明月
阅读(1973)
推荐(0) 编辑
MATLAB 龙格库塔法
摘要:非刚性常微分方程的数值解法通常会用四阶龙格库塔算法,其matlab函数对应ode45。 对于dy/dx = f(x,y),y(0)=y0。 其四阶龙格库塔公式如下: 对于通常计算,四阶已经够用,四阶以上函数f(x,y)计算工作量大大增加而精度提高较慢。 下面以龙格库塔法解洛伦兹方程为例: matla
阅读全文
posted @
2020-09-10 14:23
一杯清酒邀明月
阅读(4091)
推荐(0) 编辑
MATLAB 传染病模型
摘要:最近新型冠状病毒疫情越来越严重了,待在家中没法出去,学习一下经典传染病模型。 这里总结了五个模型,分别是SI模型,SIS模型,SIR模型,SIRS模型,SEIR模型。 这几种模型的特点先介绍一下。 首先定义SEIR: S为易感者 (Susceptible),指未得病者,但缺乏免疫能力,与感染者接触后
阅读全文
posted @
2020-09-10 14:22
一杯清酒邀明月
阅读(4934)
推荐(0) 编辑
MATLAB 模拟退火SA
摘要:模拟退火首先从某个初始候选解开始,当温度大于0时执行循环。 在循环中,通过随机扰动产生一个新的解,然后求得新解和原解之间的能量差,如果差小于0,则采用新解作为当前解。 如果差大于0,则采用一个当前温度与能量差成比例的概率来选择是否接受新解。温度越低,接受的概率越小,差值越大,同样接受概率越小。 是否
阅读全文
posted @
2020-09-10 14:11
一杯清酒邀明月
阅读(384)
推荐(0) 编辑
MATLAB 倾斜校正,透视变换
摘要:过去也写过透视变换,当时算法真是弱爆了,我竟然会通过两次变换。不过那引用的三篇文章都是非常好的文章,直到今天我才看明白。所谓的倾斜校正,一定要有标定点,将一个倾斜的矩形变为不倾斜的。因此可以从原四边形四个点和新矩形四个点得到一个变换矩阵,根据这个矩阵再作用到全局图像就可以了。详细原理在这里,MIT的
阅读全文
posted @
2020-09-10 14:09
一杯清酒邀明月
阅读(1473)
推荐(1) 编辑
MATLAB HOG方向梯度直方图
摘要:HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测。 算法流程图如下(这篇论文上的): 下面我再结合自己的程序,表述一遍吧: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边
阅读全文
posted @
2020-09-10 14:08
一杯清酒邀明月
阅读(722)
推荐(0) 编辑
MATLAB PSNR
摘要:PSNR,峰值信噪比,通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了。PSNR越高,压缩后失真越小。这里主要定义了两个值,一个是均方差MSE,另一个是峰值信噪比PSNR,公式如下: 这里的MAX通常是图像的灰度级,一般就
阅读全文
posted @
2020-09-10 14:06
一杯清酒邀明月
阅读(587)
推荐(0) 编辑