大作业图像拼接_第1页
大作业图像拼接_第2页
大作业图像拼接_第3页
大作业图像拼接_第4页
大作业图像拼接_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、图像拼接报告学院(系):软件学院专业:软件工程(日强)班级:0809学号:_6姓名:师慧波大连理工大学DalianUniversityofTechnology图像拼接技术研究的背景及意义在实际应用中,经常会用到超过人眼视野范围甚至是全方位的高分辨率图像,普通数码相机的视野范围往往难以满足要求。为了得到大视野范围的图像,人们使用广角镜头和扫描式相机进行拍摄。但这些设备往往价格昂贵、使用复杂,而且在一幅低分辨率的图像中得到超宽视角会损失景物中物体的分辨率,所以,使用广角镜头和扫描式相机只能部分的解决这一问题。此外,广角镜头的图像边缘会难以避免的产生扭曲变形,不利于一些场合的应用。为了在不降低图像分

2、辨率的条件下获取大视野范围的图像,人们提出了图像拼接技术,将普通图像或视频图像进行无缝拼接,得到超宽视角甚至360度的全景图,这样就可以用普通数码相机实现场面宏大的景物拍摄。利用计算机进行匹配,将多幅具有重叠关系的图像拼合成为一幅具有更大视野范围的图像,这就是图像拼接的目的。本文的研究内容与组织结构本文研究的重点是使用数码相机或手机手持拍摄的图像的全自动拼接。算法的基本流程如下:(1)读取n副连续有重叠部分的图像,在n副图像中检测SIFT特征,并用SIFT特征描述子对其进行描述。(2)匹配相邻图像的特征点,并根据特征点向量消除误匹配。(3)使用RANSAC法,确定变换参数。(4)图像融合简介p

3、(x,y),p'(x',y') ,为两幅图像对手持相机拍摄得到的照片,即相机运动不受限制,两幅图像的关系可近似归结为初等坐标变换,即平移、旋转和缩放的组合。设I,I'的对应点,则二者关系由下式确定m0m1m2X' MX其中 X ' x ' y ' 1 T , X1)Mm3m4m5m6m71xy1T是两点的齐次坐标,M是两图像间的变换矩阵,含有八个参数。一旦M确定,则两幅图像的变换关系即可确定如何确定矩阵M?首先确定一定数量的特征点,利用特征点的匹配给出图像变换的估计初值,最后通过递归算法得到最后的变换。特征提取与匹配采用SIFT算

4、法进行特征点的提取与匹配。主要包含4个步骤:1、建立尺度空间,寻找候选点2、精确确定关键点,剔除不稳定点3、确定关键点的方向4、提取特征描述符本文中matlab实现代码如下:im11=imgccc-1;im22=imgccc;im1,des1,loc1=sift2(im11);im2,des2,loc2=sift2(im22);distRatio=;des2t=des2'match(size(des1,1)=0;fori=1:size(des1,1)dotprods=des1(i,:)*des2t;vals,indx=sort(acos(dotprods);if(vals(1)<

5、distRatio*vals(2)match(i)=indx(1);endendim3=appendimages(im1,im2);figure('Position',100100size(im3,2)size(im3,1);colormap('gray');imagesc(im3);holdon;cols1=size(im1,2);holdoff;num=sum(match>0);fprintf('Found%dmatches.n',num);其中sift2封装了sift特征点提取,返回值des是特征描述子;appendimages函数实

6、现了两幅图像边挨边拼接。详细代码见和消除误匹配假设同一个相机拍出的图像尺度差别比较小。因此对于两对匹配点(P1,Q1)(P2,Q2),向量P1P2,Q1Q2的夹角比较小,同时|P1P2|和|Q1Q2|的值也比较接近。我们记录一个匹配点与其他匹配点形成的向量,并记录待匹配图像中的对应匹配点与其他相应匹配点形成的向量,通过比较,记录该匹配点通过匹配阈值的个数,如果超过匹配点总数的4/5,则该匹配点是正确匹配。否则为误匹配。图1,消除误匹配matlab实现代码如下:KeyPoints(num,4)=0;j=1;fori=1:size(des1,1)if(match(i)>0)KeyPoints

7、(j,1)=loc1(i,2);KeyPoints(j,2)=loc1(i,1);KeyPoints(j,3)=loc2(match(i),2);KeyPoints(j,4)=loc2(match(i),1);j=j+1;endendyuzhi_y=min(size(im11,1),size(im22,1);yuzhi_x=min(size(im11,2),size(im22,2);yuzhi=sqrt(yuzhi_yA2+yuzhi_xA2);PointDis(num)=0;fori=1:size(KeyPoints,1)forj=1:size(KeyPoints,1)a=abs(KeyPo

8、ints(i,1)-KeyPoints(j,1),abs(KeyPoints(i,2)-KeyPoints(j,2);b=abs(KeyPoints(i,3)-KeyPoints(j,3),abs(KeyPoints(i,4)-KeyPoints(j,4);xiangsi=dot(a,b)/(norm(a)*norm(b);if(xiangsi<cos(pi/4)|norm(a)-norm(b)>yuzhi/10)PointDis(i)=PointDis(i)+1;endendendj=0;fori=1:numif(PointDis(i)>num/6)KeyPoints(i,

9、1)=inf;j=j+1;endendKeyPoints2(num-j,4)=0;z=1;fori=1:numif(KeyPoints(i,1)=inf)KeyPoints2(z,:)=KeyPoints(i,:);z=z+1;endendKeyPoints=KeyPoints2;num=size(KeyPoints,1);fori=1:numline(KeyPoints(i,1)KeyPoints(i,3)+cols1,.KeyPoints(i,2)KeyPoints(i,4),'Color','c');end确定变换参数我们用平面透视变换来表示图像间的几何关

10、系:q,xm。mim2Pxq'ym3m4m5Py1m6m711为了恢复M中的8个参数,需要4对匹配点来求解。我们使用RANSAC(RandomSampleConsensus)方法来寻找两幅图像间最佳的4对匹配点,得到相应的H阵,并剔除误配点。前面自动提取和匹配得到的初始匹配特征点对集合中难免存在误配点,此外特征点在提取时也存在一定的精度误差,因此需要一种容错能力很强的算法来过滤初始匹配特征点对集合,而RANSACE是这样的一种算法,其具体内容可描述如下:给定N个数据点组成的数据集合P,假设这N个数据点中的绝大部分是由一个参数未知的特定模型产生,而该模型至少需要n个数据点来求解,且N&g

11、t;n,则可以通过下面的迭代过程求解该模型的参数。将以下步骤运行k次:(1)从P中随机选取n个数据点的子集So(2)由选取的这n个数据点计算出一个模型M(3)对数据集合中其余的N一n个数据点,计算它们与模型肘之间的距离,记录P中在M的某个误差允许范围内的数据点的个数c。迭代(1)(3)k次后,对应最大c值的模型即为所求,数据集合P中的这c个数据即为内点,其余的N1C个数据即为外点。matlab实现代码如下:DDmin=5000;forll=1:6zNum=1;while(1)if(zNum>num*6)break;endzNum=zNum+1;DD(15)=0;H(3,3,15)=0;f

12、ork=1:15while(1)suiji=round(rand(1,4)*(num-1)+1);if(sum(find(suiji=inf)=0)break;endendj=1;fori=1:4x2=KeyPoints(suiji(i),1);y2=KeyPoints(suiji(i),2);x=KeyPoints(suiji(i),3);y=KeyPoints(suiji(i),4);%line(x2x+cols1,y2y,'Color','c');A(j,:)=x,y,1,0,0,0,-x*x2,-x2*y;D(j)=x2;j=j+1;A(j,:)=0,0

13、,0,x,y,1,-x*y2,-y2*y;D(j)=y2;j=j+1;%B(i-1,:)=x,y,x2,y2;endy=inv(A)*D'H(:,:,k)=y(1),y(2),y(3);y(4),y(5),y(6);y(7),y(8),1;if(sum(H=inf)>0)continue;elseforin1=1:numTT=H(:,:,k)*KeyPoints(in1,3);KeyPoints(in1,4);1;DD(k)=DD(k)+sqrt(TT(1)-KeyPoints(in1,1)2+(TT(2)-KeyPoints(in1,2)2);endendendval3,ind

14、x3=sort(DD);i=1;while(1)if(H(1,1,indx3(i)=inf|DD(indx3(i)=0)1 =i+1;elsebreak;endendif(DD(indx3(i)<=DDmin)DDmin=DD(indx3(i);Hfinal=H(:,:,indx3(i);break;endendendHfinalMax(:,:,ccc-1)=Hfinal;fortc=1:ccc-1if(ccc-tc-1=0)break;elseHfinal=HfinalMax(:,:,ccc-tc-1)*Hfinal;endend图像融合1. 图像旋转之后可能新的像素点并不在实际的像素

15、位置,因此需要插值处理。建议使用双线性插值。2. 对于重合的部分的像素值可以有如下计算办法:2图像融合方法我们采用method1matlab实现代码如下:edgept1=round(Hfinal*size(im22,2);size(im22,1);1);edgept2=round(Hfinal*1;size(im22,1);1);edgept3=round(Hfinal*1;1;1);edgept4=round(Hfinal*size(im22,2);1;1);height=max(size(im11,1),edgept1(2),edgept2(2),edgept3(2),edgept4(2)

16、;width=max(size(im11,2),edgept1(1),edgept2(1),edgept3(1),edgept4(1);t2(height,width,3)=0;t2=uint8(t2);if(ccc=2)im11=curImg2;endfori=1:size(im11,1)forj=1:size(im11,2)t2(i,j,:)=im11(i,j,:);endendp1=round(size(im11,2)/2),round(size(im11,1)/2);p2=round(Hfinal*size(im22,2);size(im22,1);1);fori=1:size(im2

17、2,1)forj=1:size(im22,2)x=Hfinal*j;i;1;tx=max(1,round(x(2);ty=max(1,round(x(1);if(t2(tx,ty,1)=0&&t2(tx,ty,2)=0&&t2(tx,ty,3)=0)di=sqrt(ty-p1(1)A2+(tx-p1(2)F2);d2=sqrt(ty-p2(1)A2+(tx-p2(2)A2);para1=d2/(d1+d2);para2=d1/(d1+d2);t2(tx,ty,:)=round(im22(i,j,:).*para2+t2(tx,ty,:).*para1);elset2(tx,ty,:)=im22(i,j,:);endendendfori=2:height-1forj=2:width-1if(t2(i,j,1)=0&&t2(i,j,2)=0&&t2(i,j,3)=0)t2(i,j,:)=round(t2(i-1,j-1,:)/+t2(i-1,j+1,:)/+t2(i+1,j-1,:)/+t2(i+1,j+1,:)/);endendend%figure;imshow(t2);curImg2=t2;set,'Pos',28,28,size(curImg2,2),size

温馨提示

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

评论

0/150

提交评论