基于CBIR的计算机拼图系统的设计与实现(1)
2014-05-10 01:02
导读:计算机应用论文论文,基于CBIR的计算机拼图系统的设计与实现(1)怎么写,格式要求,写法技巧,科教论文网展示的这篇文章是很好的参考:
摘 要 本文重点对CBIR软件的系统框架和所用机器视觉技术进行了
摘 要 本文重点对CBIR软件的系统框架和所用机器视觉技术进行了阐述。该软件经过系统测试,能完成手工拼图和12、48块拼块的自动拼接。本文中介绍的技术方案,有可能应用于破碎物品修复、考古瓷器碎片复原、碎纸屑拼接等领域。 关键词 基于内容的图像检索;拼图游戏系统;软件系统架构1 引言 CBIR(Content Based Image Retieval)即基于内容的图像检索是指直接根据图像媒体对象内容进行的各种特征检索,它能从图像库中直接找到具有指定特征或含有特定内容的图像[1]。 计算机自动拼图所涉及到的技术不仅可用于简单的拼图游戏,而且从深远层次讲,还可以应用到破碎物品的修复,考古瓷器碎片的复原,甚至在刑事破案中的碎纸屑拼接来提供有力证据等等。自上世纪60年代初,国外学术界对拼图自动拼接问题开展了大量科学研究[2 - 6],然而先前的做法,主要是考虑到几何形状信息,没有考虑到其它有用的信息,如颜色、纹理作为额外线索。鉴于这个事实,本文提出了一种新的拼图求解器,其中用到颜色、纹理以及部分边界信息。把CBIR的理论直接应用到计算机拼图系统的设计和实现中,可以在无人工参与的条件下完成各小图块的拼接。重点阐述了计算机拼图游戏系统的架构和如何应用具体的机器视觉技术,并详细介绍了作者开发的计算机拼图游戏系统应用软件。2 CBIR系统简介 典型的CBIR系统的框架如图1所示,用户通过人机交互界面选择某幅图像,然后提出感兴趣目标的几何形状或所需图像背景颜色等发出查询请求,系统将查询要求提取输入图像的特征向量,再借助这些特征向量与特征库中信息进行匹配,提取出相似度高的图像数据显示给用户,用户对此验证后可直接使用或借以改进查询条件并开始新一轮检索。

图1 CBIR系统框架图3 计算机拼图游戏系统设计 计算机拼图游戏系统是基于CBIR系统框架的,但鉴于系统处理对象即拼块数量有限,并不存在特征库,故不预先计算图像库中图像的某种特征存入库中,并且把特征提取模块与检索匹配模块集成到统一检索算法模块DLL中,可以称之为简化的CBIR系统。其系统结构图如图2所示。

图2 计算机拼图游戏系统结构图3.1 功能 计算机拼图游戏系统主要由手工拼图、自动拼图和项目选择三大功能。具体如图3所示。

图3 计算机拼图游戏系统功能用例图3.2 整体设计 本系统采用面向对象技术实现上图的三大功能。经过面向对象分析与设计阶段形成的主要实体类、边界类和控制类表示。系统的关键为游戏控制类CJigsawGameControl,它一对多组合了拼块CPiece类,并且一对一关联了算法决策类CDecisionMaker、计时器类CTimer、封装DirectSound的声效播放器类CSpeaker。CPiece拼块类的图像显示旋转等操作是由其内部关联的CJigsawBitmap类完成的,CJigsawBitmap是基于GDI Bitmap的适配器。用于自动拼接的CDecisionMaker算法决策类关联了分别用于颜色、纹理和形状算法接口类,封装了初始化算法库、算法权重设置、核心控制各算法搜索策略等方法。以颜色算法类CColorArthmetic类为例,由它派生出基于颜色直方图相交法的CCHistorimArthmetic类和基于颜色累积直方图相交法的CAgrHistorimArthmetic类,而它们的具体实现在相应的动态链接库中,由动态链接库加载器类CDllLoader类完成动态加载。3.2.1 所用设计模式 模式,即在某一个情景下的问题解决方案。软件设计模式,那些经过前人总结和时间考验的解决方案为我们创建可复用的、高质量的软件和改善代码的可修改性使之更容易处理变化奠定了坚实的基础。针对本系统的不同应用场景和意图,我们主要采用了Adapter、Singleton、Stragy三种模式。 1)Adapter模式在系统中的应用 Adapter模式的意图是:将一个类的接口转换成客户希望的另外一个接口。使原本由于接口不兼容而不能一起工作的那些类可以一起工作[7]。对于拼块CPiece类要求的拼块图像操作已经被GDI Bitmap类完全实现,但CPiece类需要不同的方法名称和参数列表,并且也不需要GDI Bitmap类的全部功能。故我们加入了CJigsawBitmap适配器类,CJigsawBitmap类包含GDI Bitmap类,并且把收到的请求转发给内部的GDI Bitmap类对象。 2)Singleton模式在系统中的应用 在本系统中有且仅有一个游戏控制类CJigsawGame Control实例,并且为了满足面向对象技术要求消除全局变量的准则,我们选用了单件模式。CJigsawGameControl的公有静态方法GetGameControl会检查对象是否已经被实例化。如果对象已经被实例化,仅仅返回一个指向这个对象的指针,否则先对象实例化再返回新对象的地址。 3)Strategy模式在系统中的应用 Strategy模式的意图是:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换[7]。这点正好符合我们系统的定位,即为教育演示系统,针对每一种特征提取匹配会有多种的算法方案。我们在CDecisionMaker中包含颜色算法抽象基类CColorArthmetic、纹理算法抽象基类CTextureArthmetic和形状算法抽象基类CShapeArthmetic。每个抽象类中都有一个抽象方法指定如何调用算法。每个派生类根据自身算法特点来实现这个抽象方法。如CCHistorimArthmetic类使用基于颜色直方图相交法实现MatchbyColor,而MatchbyColor在CAgrHistorimArthmetic类中使用基于颜色累积直方图相交法。3.2.2 各主要模块设计 1)手工拼接跟传统电子拼图游戏类似我们把每一个拼块实现编号,从1,2,3,… …到N记数。对每一个拼块CPiece类除了记录本身ID,还记录上、下、左、右四方向邻居拼块的编号,如果没有邻居拼块简单赋值为0即可。用于判断在游戏中两拼块是否邻接来触发自动磁性粘贴功能。手工拼接模块主要涉及人机交互方面,即玩家可以通过系统标准输入设备鼠标来实现拼块的拖拽移动和放下来完成拼图。其中最重要的是文档视图结构中视图类的用于鼠标消息响应的OnLButtonDown、OnLButtonUp和OnMouseMove三个方法。 OnLButtonDown方法中遍历各个拼块,如果鼠标指针位置在某个拼块外围盒中,则说明玩家选中该拼块,记录拼块编号和鼠标指针位置(X1,Y1)与拼块外围盒左上角坐标(X2,Y2)之差,用于移动拼块。 OnMouseMove方法中实时更新选中拼块外围盒左上角坐标。 OnLButtonUp方法中遍历除已选拼块外其余拼块,分别判断是否是已选拼块的顶端、左端、底端和右端拼块,如果是调整选中拼块外围盒左上角坐标。最后根据各拼块外围盒左上角坐标和宽高信息重新绘制视图中所有拼块。 2)自动拼接 通过UI由用户根据待拼接图像特点来选择使用单一颜色、单一纹理或单一形状算法以及它们的组合。例如对于一张灰度图像,用户会选择基于纹理和形状特征,而不会采用颜色特征来完成拼块自动匹配拼接。更进一步来讲,用户还可以具体到选择使用何种颜色、形状、纹理算法来比较和评价检索算法。 系统所用的每种算法都被包装成一个动态链接库(DLL),平台对这些DLL是采用动态载入的方式调用的。这些DLL要求有统一的导出函数声明,即名称和参数列表。这样,我们调用每种算法时只需要提供通用的一些参数,如图像位图文件全路径,而算法程序也就是根据这些位图数据计算出检索所需要的特征和特征间相似距离再予以返回。在本系统中正是由CDllLoader的LoadLibraryAPI(LPCTSTR lpszDllName,LPCTSTR lpszModuleName,FARPROC *exportedfunc)来加载名为lpszDllNameDLL文件中名为lpszModuleName的算法函数。共2页: 1 [2] 下一页 论文出处(作者):