计算机视觉
图像处理

一些知识点的初步理解2

一些知识点初步理解(立体视觉,ing…)

     最近看了些立体视觉方面的资料,感觉立体视觉涉及到的东西太多,且数学理论比较强,特别是几何方面的东西,下面是对这一周看关于立体视觉方面的资料的初步 总结,很多知识也是懂了个概念而已,深入的话要在以后的实践过程中不断体会,其中主要是一些名词,写下来算是对自己有个小的总结:

一.   射影几何知识。

包括平面射影几何和空间射影几何。射影几何只是在欧式几何中引入了无穷远元素而已,比如说无穷远点,无穷远直线,无穷远曲线和曲面。因此在射影几何中2条平行线是可以相交的,交点在无穷远处,2个平行平面也交于无穷远处的一条直线。

所以在二维射影几何中,引入了二维射影平面,即由欧式平面和无穷远直线构成。其中涉及到的相关知识点有其次坐标和非其次坐标,叉积,交比,射影参数,对 偶,无穷远直线的表达,二次曲线,对偶二次曲线,退化二次曲线,圆环点,单应,自由度,等距变换,相似变换,仿射变换,射影变换之间的区别,几何失真,变 换群与不变量等。

三维射影几何中和二维的很类似,但是在三维射影空间中直线是最难表达的,且直线有4个自由度,而点和面只有3个自由度,点和面对偶,直线自对偶。涉及到的 相关知识点有二次曲面,对偶二次曲面,扭三次曲线,绝对二次曲线。所有的球面交无穷远平面于绝对二次曲线,所有的圆交绝对二次曲线于2点,即圆环点。绝对 对偶二次曲面,不变量,消隐点和消隐线的计算等。

为什么在立体视觉中要引入射影几何呢?因为图片的成像并不保持欧式不变性,摄像机的成像过程是一个射影变换过程。

二.   摄像机模型。

主要是小孔成像模型,中心透视投影模型。引入的概念有景深,视角,透视失真,物理坐标系,相机坐标系,物体图片坐标系,像素坐标系,主点偏移,相机内参数 (5个,主点坐标2个,2个方向上的焦距,1个尺度因子),相机外参数(2个,旋转和平移),径向畸变,离心畸变,薄透镜畸变,仿射相机,摄像机矩阵等。

其中一般的立体视觉中分析的原理都是小孔成像模型,但是用的却是中心透视投影模型。

三.   多视几何。

因为从单幅图像中恢复场景中的结构和深度会引起歧义,所以引入了多视几何,主要包括二视几何和三视几何。

二视几何是指同时获得2幅照片,比如说有2个摄像机或者一个摄像机移动拍摄2次。其概念有外极几何,外极点,基线,外极平面,外极线,外极线约束,本质矩阵,基本矩阵,8点算法估计基本矩阵,单应矩阵,不动点和不动线等。

三视几何的产生是由于二视几何不能产生对直线的约束,2幅图像之间的约束由基本矩阵决定,3幅图像之间的约束由3焦张量决定,3幅及3幅以上的图像之间不存在独立的约束。

多视几何的知识对后面的摄像机标定和三维重建有很大的帮助。

四.   摄像机标定理论。

摄像机标定是指求出摄像机的内参数和外参数。涉及到的知识点有直接线性变换,退化配置,几何误差,黄金标准算法,矩阵分解,圆环点和摄像机内参数的约束, 平行线与摄像机内参数的约束,Kruppa方程与摄像机内参数的约束,绝对二次曲线于摄像机内参数的约束,绝对二次曲面与摄像机内参数的约束,主动视觉系 统,主动视觉标定等。

五.   三维重建理论。

目前的计算机理论框架是基于marr理论的,marr理论认为三维重建是人类视觉的主要问题,也是计算机视觉最主要的研究方向。因此三维重建理论在计算机 视觉中占有很重要的地位。三维重建的一般步骤时在多幅图中分别找出相应的对应特征点,然后匹配对应的特征点,然后根据对应的特征点的几何约束,颜色值约 束,运动模型约束等其他约束来估算出空间中对应点的深度。其中最难的部分在与怎样将每幅图像中的点对应起来,即多目融合问题。

目前三维重建理论涉及到的概念有重建过程,人体视觉理论,双目融合,灰度相关,交叉相关,相似性约束,窗口搜索,多尺度边缘匹配,动态规划,多视立体重 建,多基线立体重建,视差,深度,立体元素,空间切割,剪影重构,相交体,基于切割的视觉壳,分层重建理论,射影重建,仿射重建,无穷远单应,相似重建, 基于结构光的重建,基于纹理的重建,基于颜色值的重建,基于运动模型的重建,大规模场景重建等。

六.   参考文献:

  1. 吴福朝 (2008). 计算机视觉中的数学方法, 科学出版社.
  2. 中科院自动化所计算机视觉ppt,《立体视觉》.
  3. Szeliski, R. (2010). Computer vision: algorithms and applications, Springer-Verlag New York Inc.
  4. Shapiro, L. G. and G. C. Stockman ( 2001). Computer Vision, Prentice Hall.
  5. Hartley, R., A. Zisserman, et al. (2003). Multiple view geometry in computer vision, Cambridge Univ Press.
  6. Forsyth, D. A. and J. Ponce (2002). Computer vision: a modern approach, Prentice Hall Professional Technical Reference.
  7. Bradski, G. and A. Kaehler (2008). Learning OpenCV: Computer vision with the OpenCV library, O’Reilly Media.

立体视觉中的水很深,路漫漫其修远兮,吾将上下而求索!

 

一些知识点的初步理解_4(协方差矩阵,ing…)

      每次看公式用到协方差矩阵时,要跑去网站上看一下协方差矩阵的定义,当然一看就能看明白,可是到了下次再碰到时,不查资料又卡住了,卡在那里令人纠结,这只能说明没有真正理解协方差矩阵。这次顺便做下笔记,加深下理解。

      首先要清楚一般出现协方差矩阵时就会出现多维列向量,这里假设为n维,另外既然有协方差字眼,那肯定是一个随机变量。这里假设有d个随机变量 x1,x2,x3,…,xd,只不过每个随机变量x又是由n个标量组成的列向量。简单的理解就是说在n维空间中有d个随机的点。现在我们需要求的是关于n 维空间中这d个点的协方差矩阵。

      用uk列向量表示d个点的平均值,uk中的每一个元素对应d个点中相应维数的平均数。所以协方差矩阵为n*n维的。其每个元素的计算公式如下:

(这个公式是从百度百科上截的,貌似这里的X1,X2,…,Xn和我上面描述的不同,该公式里面指的是由每一维的d个值构成的向量…不管怎样,该博客中文字的描述是正确的)

      其数学含义是协方差矩阵的第i行第j列的元素表示为,d个随机变量点中的第i维和第j维的协方差。因为每一维的d个数都可以看做算是一维空间中的d个实数,因此它有自己的平均数和方差,每2维之间也就有协方差。

一些知识点的初步理解(梯度下降,ing…)

      梯度下降法又叫最速下降法,英文名为steepest descend method.估计搞研究的人应该经常听见这个算法吧,用来求解表达式最大或者最小值的,属于无约束优化问题。

首先我们应该清楚,一个多元函数的梯度方向是该函数值增大最陡的方向。具体化到1元函数中时,梯度方向首先是沿着曲线的切线的,然后取切线向上增长的方向 为梯度方向,2元或者多元函数中,梯度向量为函数值f对每个变量的导数,该向量的方向就是梯度的方向,当然向量的大小也就是梯度的大小。

      现在假设我们要求函数的最值,采用梯度下降法,如图所示:

      梯度下降法的基本思想还是挺简单的,现假设我们要求函数f的最小值,首先得选取一个初始点后,然后下一个点的产生时是沿着梯度直线方向,这里是沿着梯度的反方向(因为求的是最小值,如果是求最大值的话则沿梯度的方向即可)。梯度下降法的迭代公式为:

     

      其中表示的是梯度的负方向, 表示的是在梯度方向上的搜索步长。梯度方向我们可以通过对函数求导得到,步长的确定比较麻烦,太大了的话可能会发散,太小收敛速度又太慢。一般确定步长的方法是由线性搜索算法来确定,即把下一个点的坐标ak+1看做是的函数,然后求满足f(ak+1)的最小值的 即可。

      因为一般情况下,梯度向量为0的话说明是到了一个极值点,此时梯度的幅值也为0.而采用梯度下降算法进行最优化求解时,算法迭代的终止条件是梯度向量的幅值接近0即可,可以设置个非常小的常数阈值。

      下面是网上下的一个求2元函数最小值的matlab函数实现代码,在上面添加了少许注释。代码中关于步长的计算公式还是没有弄很清楚,用到了hessian矩阵,有点像牛顿法,先不管了,以后有时候慢慢研究。

 1 function y=fs2steep(f,e,a,b) %返回的是点坐标的2个分量
 2 % fs2steep函数 最速下降法
 3 % x=fs2steep(f,e,a,b)为输入函数 f为函数 e为允许误差 (a,b)为初始点;
 4 % fsx TJPU 2008.6.15
 5 x1=a;x2=b;
 6 Q=fs2hesse(f,x1,x2);
 7 x0=[x1 x2]';
 8 fx1=diff(f,'x1'); %对x1求偏导数
 9 fx2=diff(f,'x2'); %对x2求偏导数
10 g=[fx1 fx2]'; %梯度
11 g1=subs(g); %把符号变量转为数值
12 d=-g1;%d为搜索方向
13 while (abs(norm(g1))>=e)  %norm(g1)为g1的2范数,即sqrt(x1^2+x2^2),因为梯度其各分量=0,所以其梯度幅值=0
14     t=(-d)'*d/((-d)'*Q*d);%求搜索步长,方法是?
15     x0=x0-t*g1; %搜索到的点
16     v=x0;
17     a=[1 0]*x0;
18     b=[0 1]*x0;
19     x1=a;
20     x2=b;  
21     Q=fs2hesse(f,x1,x2);
22     x0=[x1 x2]';
23     fx1=diff(f,'x1'); %对x1求偏导数
24     fx2=diff(f,'x2'); %对x2求偏导数
25     g=[fx1 fx2]'; %梯度    
26     g1=subs(g);
27     d=-g1;
28 end;
29 y=v;
30 
31 function x=fs2hesse(f,a,b)
32 % fs2hesse函数 求函数的hesse矩阵;
33 % 本程序仅是简单的求二次函数的hesse矩阵!;
34 % x=fs2hesse(f)为输入函数 f为二次函数 x1,x2为自变量;
35 % fsx TJPU 2008.6.15
36 x1=a;x2=b;
37 fx=diff(f,'x1');     %求f对x1偏导数
38 fy=diff(f,'x2');     %求f对x2偏导数
39 fxx=diff(fx,'x1');   %求二阶偏导数 对x1再对x1
40 fxy=diff(fx,'x2');   %求二阶偏导数 对x1再对x2
41 fyx=diff(fy,'x1');   %求二阶偏导数 对x2再对x1
42 fyy=diff(fy,'x2');   %求二阶偏导数 对x2再对x2
43 fxx=subs(fxx);       %将符号变量转化为数值
44 fxy=subs(fxy);
45 fyx=subs(fyx);
46 fyy=subs(fyy);
47 x=[fxx,fxy;fyx,fyy]; %求hesse矩阵

在matlab命令行窗口验证函数,结果如下:

      最优化应用很广,有很多东西要学,且自己对matlab编程还不熟悉,以后慢慢积累吧!

转载注明来源:CV视觉网 » 一些知识点的初步理解2

分享到:更多 ()
扫描二维码,给作者 打赏
pay_weixinpay_weixin

请选择你看完该文章的感受:

0不错 0超赞 0无聊 0扯淡 0不解 0路过

评论 4

评论前必须登录!

 

  1. #1

    的文章写得很用心,受教了!谢谢