再探旋转相机中的图像拼接问题

Homography 知多少?

https://blog.csdn.net/heyijia0327/article/details/53782094

在ORB-SLAM初始化的时候,作者提到,如果场景是平面,或者近似平面,或者低视差时,我们能应用单应性矩阵(homography),这三种情形在我应用SVO的过程中颇有同感,打破了我对HH矩阵的固有映像,即只能用于平面或近似平面。

在学SLAM过程中,知道HH矩阵的推导是来自于相机在不同位姿拍摄同一个三维平面,所以使用opencv计算单应性矩阵HH的时候前提是两个图像对应区域必须是同一平面。

 

Lab 8 - 全景图拼接

http://www.cad.zju.edu.cn/home/gfzhang/course/computational-photography/lab6-panorama/panorama.html

 

论文:单摄像头旋转监控下的快速图像拼接

http://xueshu.baidu.com/usercenter/paper/show?paperid=b5747356d38ad0fad4c531030b7970b9&site=xueshu_se

 

图像拼接

https://blog.csdn.net/qjh5606/article/details/82718712

 

图像处理之_仿射变换与透视变换

1.      仿射变换


1) 用途
旋转 (线性变换),平移 (向量加).缩放(线性变换),错切,反转

2) 方法
仿射变换是一种二维坐标到二维坐标之间的线性变换,它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。任意的仿射变换都能表示为乘以一个矩阵(线性变换),再加上一个向量 (平移) 的形式.

以上公式将点(x,y)映射到(x’,y’),在OpenCV中通过指定一个2x3矩阵实现此功能(公式中的m矩阵,是线性变换和平移的组合,m11,m12,m21,m22为线性变化参数,m13,m23为平移参数,其最后一行固定为0,0,1,因此,将3x3矩阵简化为2x3)

3) 举例
a) 以原点为中心旋转,2x3矩阵为:
[ cos(theta), -sin(theta), 0 ],
[ sin(theta), cos(theta), 0 ]

x’ = x * cos(theta) - sin(theta) * y
y’ = x * sin(theta) + cos(theta) * y

b) 平移,2x3矩阵为 
[1,0,tx],
[0,1,ty]

x’ = x * 1 + y * 0 + tx = x + tx
y’ = x * 0 + y * 1 + ty = y + ty

4) 具体应用
在OpenCV中,仿射变换通过函数cvWrapAffine(src,dst,mat)实现,其中mat是2x3的仿射矩阵,该矩阵可以利用函数cvGetAffineTransform(srcTri,dstTri,mat)得到,其中mat是被该函数填充的仿射矩阵,srcTri和dstTri分别是由三个顶点定义的平行四边形(由于是平行四边形,只需要指定三个顶点即可确定),即:给出变换前的ABCD和变换后的A’B’C’D’

2.      透视变换(投影变换)

1) 用途
将2D矩阵图像变换成3D的空间显示效果,全景拼接.

2) 方法
透视变换是将图片投影到一个新的视平面,也称作投影映射.它是二维(x,y)到三维(X,Y,Z),再到另一个二维(x’,y’)空间的映射.
相对于仿射变换,它提供了更大的灵活性,将一个四边形区域映射到另一个四边形区域(不一定是平行四边形).它不止是线性变换.但也是通过矩阵乘法实现的,使用的是一个3x3的矩阵,矩阵的前两行与仿射矩阵相同(m11,m12,m13,m21,m22,m23),也实现了线性变换和平移,第三行用于实现透视变换.

以上公式设变换之前的点是z值为1的点,它三维平面上的值是x,y,1,在二维平面上的投影是x,y,通过矩阵变换成三维中的点X,Y,Z,再通过除以三维中Z轴的值,转换成二维中的点x’,y’.
从以上公式可知,仿射变换是透视变换的一种特殊情况.它把二维转到三维,变换后,再转映射回之前的二维空间(而不是另一个二维空间).

3) 具体应用
在OpenCV中,透视变换通过函数cvWrapPerspective(src,dst,mat)实现, 与仿射变换不同的是,透视矩阵是一个3x3的矩阵,在计算矩阵时,可利用函数cvGetPerspectiveTransform(srcQuad,dstQuad,mat),由于不再是平行四边形,需要提供四边形的四个顶点

3.      区别
仿射变换后平行四边形的各边仍操持平行,透视变换结果允许是梯形等四边形,所以仿射变换是透视变换的子集
--------------------- 
作者:xieyan0811 
来源:CSDN 
原文:https://blog.csdn.net/xieyan0811/article/details/71106539 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

关于单应性矩阵的理解:Homography matrix for dummies

尽量写的通俗一点,因为从某种程度上讲,本人也是dummy.....
1. 先说homogeneous coordinate,齐次坐标
一幅2D图像上的非齐次坐标为(x,y),而齐次坐标为(x,y,1),也可以写成(x/z,y/z,1)或(x,y,z)。齐次坐标有很多好处,比如可以很清楚的确定一个点在不在直线上:
T(x)*I=0,这里T表示转置;还可以描述无穷远点:(x,y,0);
还可以把平移和旋转写到一个矩阵里(也有不愿意这么干的,摄影测量里用的都是非齐次坐标,平移和旋转分开写);
具体的可去看<计算机视觉中的多视图几何>,i.e.,<multiple view geometry in computer vision>。
2. Homography matrix,单应性矩阵
两个不同视角的图像上的点对的homogeneous coordinate可以用一个射影变换(projective transformation)表述,即:x1 =H*x2
二维和三维的图示如下:

射影变换也叫“单应”--Homography,“Homo”前缀就是same的意思,表示“同”(homosexual大家都知道),homography就是用同一个源产生的graphy,中文译过来大概就是"单应"。
因此上面式子中的矩阵H就叫单应性矩阵。上式中的x1和x2都是3*1的齐次坐标,因此H是一个3*3的矩阵:{h00,h01,h02;h10,h11,h12;h20,h21,h22}。
然而,单应矩阵的自由度是多少呢?(参考https://www.zhihu.com/question/23310855)
如果给定一个单应H={h_ij},给它的元素乘上同一个数a,得到的的单应a*H和H作用相同,因为新单应无非把齐次点x1变成了齐次点a*x1,都是一回事。因此我们可以把a换成1/h22,那么H就变成了只有8个自由元素的矩阵。
那么需要多少个点对求解这个H呢?如果需要唯一解的话,需要4个点对(对应8个方程,去解H中的8个未知数)。
关于这个话题的理解,可以继续参考:
http://blog.csdn.net/qq_19764963/article/details/52038748
http://cseweb.ucsd.edu/classes/wi07/cse252a/homography_estimation/homography_estimation.pdf
3. 举两个应用的例子。
例子1:两个图像的拼接
通过图像特征点匹配+RANSAC可以获得图像之间的单应性矩阵,然后把其中一个图像通过这个矩阵投影到另一个图像上就完成了基本的拼接。
例子2:在相机的内参数标定过程中会用到求解单应性矩阵
对一个棋盘格拍照,棋盘格的世界坐标系是用户任意设定的,标定的时候,默认世界坐标系就是以标定板左上角点为原点,z轴垂直于标定板,xoy面与标定板重合的三维直角坐标系。棋盘格的格子长度已知,因此可以知道各个角点的世界坐标系坐标XYZ(Z=0)。由于Z=0,因此可以忽略掉Z这个维度,世界坐标系中某个坐标(X,Y,Z,1)到图像坐标(x,y,1)的变换就等价于(X,Y,1)到图像坐标(x,y,1)的变换。此时的变换矩阵就由3*4变为3*3,成为了单应性矩阵。
因此用4个角点就可以计算H的8个参数。以不同的角度对棋盘格拍摄3张就可以得到3个H,如果用张正友标定法,就可以得到6个约束方程,可以求解B矩阵(对称矩阵)的6个未知参数,进而通过Cholesky分解求解出内参矩阵A的参数。
--------------------- 
作者:zinnc 
来源:CSDN 
原文:https://blog.csdn.net/zinnc/article/details/52319491 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值