射影几何几何运算_第1页
射影几何几何运算_第2页
射影几何几何运算_第3页
射影几何几何运算_第4页
射影几何几何运算_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数字图像处理,几何运算,1.引言,几何运算与点运算不同,它可改变图象中物体(像素)之间的空间关系。这种运算可以看成将各像素在图像内移动的过程。 几何变换是图像处理和图像分析的重要内容,按照变换性质可以分为位置变换、形状变换以及复合变换。图像几何变换是指用数学建模的方法来描述图像位置、大小、形状等变化的方法。 几何变换常用于摄像机的几何校正过程,这对于利用图象进行几何测量的工作是十分重要的。在实际场景拍摄到的一幅图像,如果画面过大或过小,都需要进行缩小或放大。如果拍摄时景物与摄像头不成相互平行关系的时候,会发生一些几何畸变,例如会把一个正方形拍摄成一个梯形等。这就需要进行一定的畸变校正。在进行目

2、标物的匹配时,需要对图像进行旋转、平移等处理。在进行三维景物显示时,需要进行三维到二维平面的投影建模。因此,图像几何变换是图像处理及分析的基础。,2.知识点,一、几何变换基础知识 齐次坐标 欧式几何 变换矩阵 二、图像中的几何变换 平移变换 旋转变换 缩放变换 仿射变换 射影变换 三、总结,3.几何变换基础,1.齐次坐标在电脑图形内无处不在,因为该坐标允许平移、旋转、缩放及透视投影等可表示为矩阵与向量相乘的一般向量运算。例如,在透视投影里,空间中的位置与该位置至称为“投影中心”的固定点间的线相关联。该点可透过找出平面与该线之相交点被映射至该平面上。这是三维物件如何呈现于眼上的一精确表示。在最简

3、单的情况下,投影中心会是圆点,而点会映射至平面z= 1上,如同在笛卡儿坐标上时一样。对空间内的一点(x,y,z),其线与平面相交的点为(x/z,y/z, 1)。删掉现在显得多余的 z 坐标,即变成(x,y,z)。在齐次坐标里,二维点(x,y)的齐次坐标表示为(hx,hy,h)。空间点(x,y,z)表示为(xw,yw,zw,w),且该点映射至平面上的点表示为(xw,yw,zw)。由此可以看出,一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标(8,4,2)、(4,2,1)表示的都是二维点(4,2)。,3.几何变换基础,2.欧式几何是几何学的一门分科。又称欧几里德

4、几何。公元前3世纪,古希腊数学家欧几里德(英文Euclid,希腊文)把人们公认的一些几何知识作为定义和公理,在此基础上研究图形的性质,推导出一系列定理,组成演绎体系,写出几何原本,形成了欧氏几何。在其公理体系中,最重要的是平行公理,由于对这一公理的不同认识,导致非欧几何的产生。按所讨论的图形在平面上或空间中,分别称为“平面几何”与“立体几何”。欧几里德几何指按照欧几里德的几何原本构造的几何学。欧式几何有时就指平面上的几何,即平面几何。三维空间的欧式几何通常叫做立体几何。数学上,欧式几何是平面和三维空间中常见的几何,基于点线面假设。数学家也用这一术语表示具有相似性质的高维几何。,3.几何变换基础

5、,3.矩阵变换是数学线性代数中的一个概念。在线性代数中,线性变换能够用矩阵表示。是线性代数中矩阵的一种运算形式。 在线性代数中,例如初等变换是指以下三种变换类型 : (1) 交换矩阵的两行(对调i,j,两行记为ri,rj); (2) 以一个非零数k乘矩阵的某一行所有元素(第i行乘以k记为rik); (3) 把矩阵的某一行所有元素乘以一个数k后加到另一行对应的元素(第j行乘以k加到第i行记为ri+krj)。 图形变换的矩阵变换有如下的几种: (1)平移变换 从一个位置到另一个位置的变换可以用平移矩阵T表示,该矩阵对图形进行平移操作。 (2)旋转变换 旋转矩阵将图形绕平面上点(x,y)或x,y,z

6、轴进行旋转。 (3)缩放矩阵 对于一个二维非齐次坐标(x, y),我们想让它扩大2倍,则可以让它变成(2x, 2y)。 还有错切矩阵、刚体矩阵等。,4.图像中的几何变换,1.平移变换 初始坐标为(x0,y0)的点经过平移(tx,ty)(以向右,向下为正方向)后,坐标变为(x1,y1)。这两点之间的关系是x1=x0+tx ,y1=y0+ty。图像的平移变换就是将图像中的所有像素点按照给定的平移量进行水平(x方向)和垂直(y方向)移动。平移变换分为两种类型:图像大小变化和图像大小不变。第一种类型保证图像平移的完整信息,第二种图像的原始信息部分可能丢失。,矩阵: 称为平移变换矩阵(因子),tx和ty

7、为平移量。,图像平移变换程序,void ImageTranslation2(const Mat ,4.图像中的几何变换,2.旋转变换 旋转变换是由一个图形改变为另一个图形,在改变过程中,原图上所有的点都绕一个固定的点换同一方向,转动同一个角度。旋转变换是欧氏几何中的一种重要变换。在欧氏平面上(欧氏空间中),让每一点P绕一固定点(固定轴线)旋转一个定角,变成另一点P,如此产生的变换称为平面上(空间中)的旋转变换。此固定点(固定直线)称为旋转中心(旋转轴),该定角称为旋转角。而且旋转是第一种正交变换。,其齐次表示矩阵表示为:,矩阵: 称为旋转变换矩阵(因子), 为旋转角度。,其非齐次表示矩阵表示为

8、:,图像旋转变换程序,void RotIamge(const Mat . ,4.图像中的几何变换,3.缩放变换 将图像乘以一定系数,从而产生新图像的过程。缩放算法是设某点坐标,在x轴方向扩大 sx倍,y轴方向扩大 sy倍,x0,y0为变换前坐标, x1,y1为变换后坐标。x1 = sx*x0; y1 = sy*y0。尺度缩小的变换:按照一定的间隔选取某些行和列的像素构成新的图像。新图像会出现空行和空列,需要用插值的方法加以填补,但存在“马赛克”现象,图像的细节将变得不明显。尺度放大的变换:在一些点处可能找不到图像原像,就需要进行近似处理。,矩阵: 称为缩放变换矩阵(因子),sx和sy为缩放量。

9、,图像缩放变换程序,/最近邻插值的实现代码 void NearstInterpolation(const Mat ,4.图像中的几何变换,4.仿射变换 定义:由一个平面/立体图形变换到另一个平面/立体图形,在改变的过程中保持直线和平行线不变(平行线映射为平行线)。任何仿射变换都可以分解为缩放、平移、旋转和切变的组合。相似变换可以看做是仿射变换的特殊情况。线性变换包括旋转、缩放、切变,但不包含平移,因此仿射变换也定义为一个线性变换再加上一个平移变换。二维平面经过一系列仿射变换后,把点变为点,线变为线,用向量表示时,向量的线性关系不变,线性相关的两个向量在变换后仍然线性相关。仿射变换有六个自由度。

10、,矩阵: 称为仿射变换矩阵的分解,U、V是正交矩阵,为保距变换,D为一个非均匀缩放变换。,图像仿射变换程序,#include #include int main() CvPoint2D32f srcTri3,dstTri3; CvMat* rot_mat = cvCreateMat(2,3,CV_32FC1); CvMat* warp_mat = cvCreateMat(2,3,CV_32FC1); IplImage *src,*dst; src=cvLoadImage(src.jpg); / 设置目标图像的大小和类型与源图像一致 dst = Mat:zeros( src.rows, src.

11、cols, src.type() ); / 设置源图像和目标图像上的三组点以计算仿射变换 srcTri0.x = 0; /src top left srcTri0.y = 0; srcTri1.x = src-width - 1; /src top right srcTri1.y = 0; srcTri2.x = 0; /src Bottom left offset srcTri2.y = src-height - 1; dstTri0.x = src-width*0.0; /dst top left dstTri0.y = src-height*0.33; dstTri1.x = src-w

12、idth*0.85; /dst top right dstTri1.y = src-height*0.25; dstTri2.x = src-width*0.15; /dst Bottom left offset dstTri2.y = src-height*0.7; /compute warp matrix cvGetAffineTransform(srcTri,dstTri,warp_mat);/compute map_matrix /对源图像应用上面求得的仿射变换 cvWarpAffine(src,dst,warp_mat);/do affine /显示图像 。 return 0; ,4

13、.图像中的几何变换,5.射影变换 射影变换也称作投影变换、射影变换。 射影变换:是最一般的线性变换。有8个自由度。 射影变换保持重合关系和交比不变。但不会保持平行性。即它会使得仿射变换产生非线性效应。,其齐次表示矩阵表示为:,矩阵: 称为射影变换矩阵(因子),分解成相似变换、仿射变换与一个改变无穷远直线的射影变换。,图像射影变换程序,/对一张透视图片变换回正面图的效果: int main() Mat img=imread(boy.png); int img_height = img.rows; int img_width = img.cols; Mat img_trans = Mat:zero

14、s(img_height,img_width,CV_8UC3); PerspectiveTransform tansform = PerspectiveTransform:quadrilateralToQuadrilateral( 0,0, img_width-1,0, 0,img_height-1, img_width-1,img_height-1, 150,250, / top left 771,0, / top right 0,1023,/ bottom left 650,1023 ); vector ponits; for(int i=0;i(i); for (int j=0;j(im

15、g_width-1)|y(img_height-1) continue; uchar* p = img.ptr(y); tj*3 = px*3; tj*3+1 = px*3+1; tj*3+2 = px*3+2; imwrite(trans.png,img_trans); return 0; ,5.总结,几何运算在SLAM中的作用,视觉 SLAM 算法可以实时构建世界的 3D 地图,并同时追踪摄像头(手持式或增强现实设备上的头戴式或安装在机器人上)的位置和方向。SLAM 关注于几何问题而深度学习是感知(识别)问题的大师。如果你想要一个能走到你的冰箱面前而不撞到墙壁的机器人,那就使用 SLAM。 视觉SLAM的流程分为以下的几个步骤: 1. 传感器数据 相机图像信息的读取和预处理,如果在机器人中可能还有码盘、惯导传感器等信息。 2. 视觉里程计 解决问题:估算相邻图像间的运动,以及局部地图的样子,又称为前端。 解决方法:主要进行图像特征提取和匹配 3. 后端优化 解决问题:处理slam过程中噪声的问题。从带有噪声的数据中估计整个系统的状态,以及这个状态估 计的不确定性有多大称为最大后验概率估计(MAP),状态包括机器人的轨迹和地图 解决方法:滤波和非线性优化算法 4. 回环检测 解决问题:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论