第1页共135页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共135页[置顶]VC多媒体编程分类:软件开发2007-04-2814:0914021人阅读评论(8)收藏举报编程nullmicrosoftwindowsgdi+文档--VC多媒体编程--VisualC++中基于多文档视窗模型的重叠图象拼接技术摘要图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的图象提出了一种行之有效的对准算法,并通过平滑因子对图象实现了无缝拼接。并应用文档视窗模型实现了该算法,并完成了位图文件的显示、存储等操作,具有一定的普遍意义。关键词:图象拼接,算法,重叠图象,文档视窗,位图文件,图象显示文章正文一、多文档视窗模型概述第2页共135页第1页共135页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共135页MFC的AppWizard可以生成三种类型的应用程序:基于对话框的应用、单文档应用(SDI)和多文档应用(MDI)。三种应用中,以多文档应用(MDI)最为复杂,其功能也最强大。当我们用AppWizard生成一个多文档应用时,系统由CMultiDocTemplate自动生成了一个从Cdocument类继承的文档类,一个从Cview类继承的视窗类,一个从CMDIChildWnd类继承的框架类。当我们每次建立一个新的文档时,程序根据文档模板生成一个新实例,这些我们均可不用关心AppWizard已经自动生成了代码。但如果我们要在程序中使用多个不同的文档类时,则需自己建立文档模板并控制文档实例的建立。假设我们要向一基于多文档的工程MDI中增加一Test的文档。具体步骤如下:1、用Clazard建立一个框架类CTestFrame基类选CMDIChildWnd。2、用Clazard建立一个文档类CTestDoc基类选CDocument。3、用Clazard建立一个文档类CTestView基类选CView。4、将三个类的头文件加入应用类CMDIApp中。第3页共135页第2页共135页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共135页5、创建新文档模板,在CMDIApp::InitInstance()函数中加入如下代码CMultiDocTemplate*pDocTemplate;pDocTemplate=newCMultiDocTemplate(IDR_TESTTYPE,RUNTIME_CLASS(CTestDoc),RUNTIME_CLASS(CTestFrame),RUNTIME_CLASS(CTestView));AddDocTemplate(pDocTemplate);6、定义一菜单项ID号为ID_NEWTEST,利用Clazard将其处理函数加入应用类(或主框架类),在其处理函数CMDIApp::OnNewtest()函数中加入如下代码第4页共135页第3页共135页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共135页POSITIONcurTemplatePos=GetFirstDocTemplatePosition();while(curTemplatePos!=NULL){//取下一个文档模板指针CDocTemplate*curTemplate=GetNextDocTemplate(curTemplatePos);CStringstr;curTemplate->GetDocString(str,CDocTemplate::docName);//取文档名称if(str==_T("Test"))//判断当前文档文档是否Test类{第5页共135页第4页共135页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共135页curTemplate->OpenDocumentFile(NULL);//创建新的文档实例return;}}这样我们就建立了一个新的文档类。注意在5中创建文档模板时我们用到了一文档类型资源IDR_TESTTYPE,该资源ID在资源文件中定义如下(未包括图标和菜单的定义):STRINGTABLEPRELOADDISCARDABLEBEGIN……….IDR_TESTTYPE"//nTest//nTest//n//n//nMDI.Document//nT第6页共135页第5页共135页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共135页estDocument"END文档类型标识包括七个子串,包括窗口标题、文档名称、文件扩展名等。在6中curTemplate->GetDocString(str,CDocTemplate::docName);取的就是第二个子串,文档名称。文档建立之后我们就可以对其进行操作了。当然文档类和视窗类,文档类和主窗口类,以及不同文档类之间进行通信也是较为复杂的,并非几句话就能说清楚,如不熟悉文档视窗的读者请参看其它有关资料。二、重叠图象拼接技术1.算法思想在实现全景视频(PanoramicVideo)系统、地理信息系统(GIS)及其它一些应用的过程中,我们通常会碰到这样的一个问题,就...