基于特征点的图像拼接算法摘要:在实际应用中,由于单台摄像设备技术参数的限制,要达到大的视角范围同时保证必要的清晰度往往是很困难的。于是人们就利用计算机图像拼接技术来解决所面临的问题。对人们在图像处理技术上所遇到的问题,本文提出解决方法使用图像拼接技术.并对图像拼接的算法——基于特征点的图像拼接算法做了重点论述,它所使用的算法实现是使用matlab软件在待匹配的图像上选取明显的特征点对两幅有重叠区域的图像进行拼接,形成新的完整的图像。关键词:特征点;预处理;MATLAB;图像拼接BasedoncharacteristicpointimagesplicingalgorithmAbstract:Inreallife,Asinglecameraequipmentasaresultofthetechnicalparametersoftheconstraints,toachievealargerangeofperspectivestoensurethenecessaryclarityatthesametimeisoftenverydifficult.Peopleontheuseofcomputerimagemosaictechnologytosolvetheproblemsfaced.Onimageprocessingtechnologyintheproblemsencountered,solutionsproposedinthispapertheuseofimagestitchingtechnology.Andimagestitchingalgorithms-basedonfeaturepointsoftheimagemosaicalgorithmhasdoneafocusonitsuseofthealgorithmistousematlabsoftwareintheimagetobeselectedtomatchthecharacteristicsofobviouspointsofoverlapbetweentwoimagessplicedregiontoformacompletenewimage.Keyword:uniquepoint;pretreatment;MATLAB;imagemosaicking引言随着科技发展,市场上数码产品越来越便宜,品种越来越多,其已经日渐成为每人生活中的一部分。对于一般的数码相机,只是将拍摄到的相片存储或者数码冲印,而实际上,数码产品在拍摄图像时,达到大的视角范围同时保证必要的清晰度往往是很困难的,这个问题现在已经成为多媒体处理领域研究的热点。由于数码相机视野的局限性,不可能一次拍出很大图片,本文主要围绕拼接合成技术展开讨论。就是利用计算机图像拼接技术来解决所面临的问题。图像拼接就是把针对同一场景的相互有部分重叠的一系列图片合成一张大的宽视角的图像。拼接后的图像要求最大程度地与原始图像接近,失真尽可能小,没有明显的缝合线.目前图像拼接技术应用广泛.在宇宙空间探测、海底勘测、医学图像、气象、地质勘测、军事、视频压缩和传输,档案的数字化保存,视频的索引和检索,物体的3一D重建,军事侦察和公安取证,数码相机的超分辨处理等领域都有应用。在2003年,美国科学家就是利用图像拼接技术,把“勇气号”和“机遇号”火星探测器发回的大量火星地面照片合成了火星表面的宽视角图像.图像拼接的算法图像拼接的质量主要依赖于图像的对准程度因此图像的对准是拼接算法的核心和关键。通常的对准算法是基于两图像重叠部分所对应像素在RGB或CMY颜色系统中灰度值的相似性,自动寻找图像的匹配位置。实际上可以归结为如下的模式识别问题:设相邻两张重叠照片中前一张照片为矩形区域A,后一张照片为矩形区域B,已知A中包含区域A1,B中包含一个区域B1,A1与B1是相同的模块,求B中B1相对A中A1的位置。常用算法有基于面积的算法、基于比值的算法、基于网格的快速算法、基于特征的算法。也可以利用色调值进行图像拼接,该方法的抗干扰能力强于利用灰度值和RGB的值的方法。在基于面积的算法中,只要模块取得足够大,这种算法的精度较高,但其缺点也是非常明显的,计算量太大,时间开销是人们所不能接受的。基于比值的算法比基于面积的算法有所减少,但仍未得到很好的改观,并且计算需要大量的除法。由于在做除法过程中计算取值是相应图像像素的RGB值,而RGB值有可能出现0值的情况,这样在做除法时,算法或出现一处现象,必须进行特殊处理,否则将导致程序运行的中断。因此,该算法在计算量上以及程序实现上并不理想。基于比值算法的思路是选取一幅图像重叠部分中间隔的一定距离的两列的比值作模板,在第二幅图像中对应重叠区域搜索最佳匹配,找到与第一幅图像索取模板对应的两列实现拼接。.在基于特征算法中,首先要处理图像,提取满足特定应用要求的特征,然后利用特征对应关系确定模型参数.该方法的主要困难在于选择什么样的特征,以及如何对特征进行匹配跟踪.常用的图像特征有点、直线、曲线等.下面对图像拼接算法的一种简单的算法——基于特征点的图像拼接算法来进行研究。最简单的基于特征的拼接是在两幅图像的重叠部分中用手工寻找四个对应点,然后计算出两幅图像的对应关系,进而完成整合和拼接工作.另一个方法类似于边缘提取.先用梯度算子对灰度值进行处理,然后再进行匹配.基于特征点的图像拼接算法一般包括预处理,图像配准,算法实现,结果分析。具体如下:(i)拼接预处理:拼接预处理包括数字图像处理的基本操作(如去噪、边缘提取、直方图处理等)、建立图像的匹配模板以及对图像进行某种变换(如傅里叶变换、小波变换等)等操作.图像拼接预处理的主要目的是保证下一步图像配准的精度,对原始图像做一些折叠变化和坐标变换,初略定位,找到大致的重叠区域,缩小匹配范围,提高速度.(ii)图像配准:图像拼接的关键是精确找出相邻两张图像中重叠部分的位置,然后确定两张图像的变换关系,即图像配准。由于视角、拍摄时间、分辨率、光照强度、传感器类型等的差异,待拼接的图像往往存在平移、旋转、尺度变化、透视形变、色差、扭曲、运动目标遮挡等差别,配准的目的就是找出一种最能描述待拼接图像之间映射关系的变换模型。目前常用的一些空间变换模型有平移变换、刚性变换、仿射变换以及投影变换等.图像的平移关系比较容易检测和配准,但旋转和尺度缩放的检测比较困难。图像配准算法大体可分为基于特征的图像配准和基于区域的图像配准两类。基于特征的图像配准是利用图像的明显特征来估计图像之间的变换,而不是利用图像全部的信息。这些明显特征如图像的特征点(角点或关键点)、轮廓和一些不变矩等。图像的配准问题可以归结为求解对应点集。在待配准的图像中选取一些特征点,对准了这些特征点,两幅图像也就配准了。控制点法往往要借助人工选取初始匹配点,这大大降低了算法的速度和适用范围。基于特征点的配准算法量较小,配准精度高,缺点是边缘信息少的图像、大旋转和大尺度缩放的图像和多光谱图像不能很好地进行配准。因此有必要采用一些数学方法自动实现图像间对应控制点的选取。(ii)算法实现本算法主要是在matlab软件中运行实现的,以拼接两幅有相同点的图像为例。具体的算法实现流程如下:Matlab图像处理流程:(1)输入图像I=imread('1.bmp');figure,imshow(I)title('源图像A')J=imread('2.bmp');figure,imshow(J)(图2)(图3)(2).分析处理当前图像,并选取两幅图之间特征点。图像2和图像3是同一个相机拍摄的,两幅图像的分辨率,大小一样。根据两幅图像的共同点选取明显的特征点.[high,wid]=size(A);%求出第一幅图像的长和宽(size数组维数)尺寸大小:(352*100像素)[x1,map1]=imread('1.bmp');[x2,map2]=imread('2.bmp');subplot(2,1,1),imshow(x1,map1);subplot(2,1,2),imshow(x2,map2);人工选取一个点,在待拼接的另一幅图上找对应的特征点。(3).根据选取的特征点进行配准,拼接处理。根据确定的特征点对待拼接的第二幅图进行平移变换。(图4)图4尺寸(368*200像素)(4)对图像进行边界处理,观察图像拼接效果。对拼接后的图像进行大小处理,实现了拼接的目的。Imcrop(‘k.bmp’);m=imcrop;%imshow(m);(图5)图5尺寸(334*200像素)(iii)对拼接的图像进行分析从拼接结果图可看出,该算法对上述两幅图像实现了无缝拼接,图像间的过渡自然,达到了一定精度.合成图像包含了原图像所有的信息量,证明了算法的正确性。MATLAB应用到的源程序:imcropA=imread('view1.bmp');figure,imshow(A)title('源图像A')B=imread('view2.bmp');[high,wid]=size(A);%求出第一幅图像的长和宽(size数组维数)A1=double(A);B1=double(B);B2=B1;A2=A1;sub_A=A1(high/2-39:high/2,3*wid/4:3*wid/4+39);sub_A=A1(high/2-39:high/2,end-39:end);sub_B1=B1(11:50,11:50);mod1=sub_A-sub_B1;%求出第一幅图像的固定两列的象素差值mat1=sum(sum(mod1.*mod1));%求出第一幅图像的两列的取出的所有象素的差的平方和mat_best=mat1;forx1=1:40:wid-20%在水平方向上搜索间隔距离相等的两列的象素求其象素差值fory1=1:40:high-40sub_B=B1(y1:y1+39,x1:x1+39);mod=sub_A-sub_B;mat=sum(sum(mod.*mod));ifmat=mat_bestmat_best=mat;xx=x1;%定位到该搜索方向上最佳匹配所在的位置yy=y1;endendendx=xx;y=yy;forx2=xx-30:xx+40%在垂直方向上搜索间隔距离相等的两列的象素,求其象素差值fory2=yy-20:yy+80sub_B2=B1(y2:y2+39,x2:x2+39);mod2=sub_A-sub_B2;mat2=sum(sum(mod2.*mod2));ifmat2=mat_bestmat_best=mat2;x=x2;%定位到该搜索方向上最佳匹配所在的位置y=y2;endendendx=140;[high2,wid2]=size(A2);a1=A2(1:high2,wid-x+1:wid);b1=B2(1:high2,1:x);a=double(a1);b=double(b1);d1O=linspace(1,0,x);%在1和0之间产生x行向量d=1:high2;d1=d1O';[X1,y1]=meshgrid(d1,d);%meshgrid为三维图形生成XY矩阵im1=a.*X1;d20=linspace(0,1,x);d2=d20';[X2,y2]=meshgrid(d2,d);im2=b.*X2;im11=uint8(im1);im22=uint8(im2);im3=imadd(im11,im22);a_b=imadd(im11,im22);aa=A2(1:high2,1:wid-x);bb=B2(1:high2,x:wid);D2=[aaa_bbb];D2=[aa(:,1:wid2-x)a_bbb];imwrite(D2,'6.bmp');总结图像拼接是一个日益流行的研究领域。本文简单的介绍了图像拼接的一些算法,并对基于特征点的图像拼接算法进行了重点介绍。基于特征点的图像拼接算法采用Harris角点检测算子提取特征点,并对特征角点进行初始匹配与求精,利用MATLAB进行算法的实现,最后生成无缝拼接图像。实验结果表明,该算法取得了理想