基于CUDA的点匹配合成算法

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:zimuogu
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要]纹理合成在计算机动画制作中具有重要地位。为克服传统串行点匹配纹理合成算法效率低下的缺陷,提出一种基于计算统一设备架构(CUDA)的并行合成算法。通过合理安排CPU和GPU之间的数据传输,用GPU进行繁琐耗时的计算,明显地提高了算法效率。
  [关键词]纹理合成 点匹配 CUDA GPU并行计算
  中图分类号:TP393.08 文献标识码:A 文章编号:1009-914X(2014)25-0323-02
  纹理合成是当前计算机的研 究热点之一。该技术在图像编辑、计算机动画、数据高倍压缩、大规模场景的生成等方面具有广泛的应用前景。纹理合成方法可分为基于过程的纹理合成和基于样图的纹理合成两类。而基于样图的纹理合成技术不仅可以克服传统纹理映射存在走样的缺点,而且避免了纹理合成过程中调整参数的繁琐。
  Wei和Levoy提出的纹理合成算法(简称WL算法)是典型的基于样图的纹理合成算法之一,WL算法中L邻域的尺寸对合成质量和合成效果影响很大,一般说来,L邻域越大,效果越好,但是随之带来的计算量会很大,因此,合成时间也会成倍增加。传统的算法都是在CPU中串行执行,效率非常低下,特别是在计算量特别庞大而不需要过多的逻辑控制时,使用CPU串行计算,很难有效利用处理器的全部资源。本文使用一种基于CUDA的纹理合成算法,通过将繁琐的L邻域计算和最匹配像素的搜索转入GPU中并行计算,优化了算法。
  1.基于点匹配的纹理合成算法介绍
  WL纹理合成算法是基于点纹理合成算法的代表,是一种确定性搜索的纹理合成算法。该算法使用像素L邻域的[1]相似度作为合成依据,L邻域只取像素邻域的上半部分,因其形状像字母L,故称为L邻域。在输入纹理中按照扫描线顺序搜索与当前合成像素的L邻域具有最大相似度的像素点来合成纹理。WL算法的具体步骤如下:
  (1)用随机噪声初始化输出图像。
  (2)对于输出图像的每个像素p,按照扫描线顺序计算:
  a.构造输出图像当前像素p的L邻域(如图1中b,c,d);
  b.在输入纹理中同样按照扫描线顺序搜索与像素p的L邻域具有最大相似度L邻域的像素q(如图1,a);
  c.将像素q拷贝到像素p。
  (3)重复步骤(2),直到图像合成完毕。
  图1 L邻域查找示意图
  算法中采用Euclid距离来度量邻域之间的相似度。
  (1)
  式中,R,G,B分别为像素p,q的红,绿,蓝三原色通道。N1,N0分别是输入纹理和输出纹理中某一点的L邻域。
  从上面步骤可以看出,WL算法主要耗时在L邻域相似度的计算和L邻域最大相似度像素的搜索上,每合成输出图像的一个像素,都要在输入图像中逐个像素地计算,虽然合成效果较好,但是其计算和搜索过程相当费时。如果能将以上耗时的计算搜索转为并行,相信会对算法效率有很大提高。
  2.CUDA介绍
  2006年NVIDIA推出的G80系列显卡引入了CUDA架构,使得GPU可以解决商业、工业以及科学方面的复杂计算问题。下面对CUDA进行简要介绍:
  2.1 CPU与GPU结构的区别
  传统的CPU由于摩尔定律失效,其计算速度目前已经基本达到顶峰,而GPU则是专为计算密集型、高度并行化的计算而设计的。两者的架构如图2所示:
  CPU GPU
  图2 cpu(左)和gpu(右)的结构
  GPU的设计增强了数据处理能力,而数据缓存和流控制方面则不及CPU。这使得GPU适用于解决不需要过多精密流控制的大规模并行计算问题。
  2.2 CUDA的线程层次模型和存储器分配
  CUDA采用线程->线程块->线程块网格的线程层次模型。一个线程块网格可以划分为多个线程块,每个线程块包含了一定数量的线程。CUDA通过这种结构来管理线程的执行以及存储器的分配。每个线程有一个私有的本地存储器。每个线程块有一个共享存储器,该存储器对于块内的所有线程都是可见的,并且与块具有相同的生命周期。最后,所有线程都可访问全局存储器。
  2.3 CUDA运行模式
  CUDA定了一种称为内核(kernel)的C语言函数,并且扩展了C语言。在调用此类函数时,它将由N个不同的CUDA线程并行执行N次,这与普通的C语言函数只执行一次方式不同。另外CUDA把CPU称作主机,GPU称作设备,在运行CUDA程序时,串行代码在主机上执行,并行代码即”kernel”在设备上执行。另外,可以通过主机和设备同步函数,使CPU和GPU同时计算,提高程序效率。
  3.基于CUDA的纹理合成
  本部分介绍在CUDA平台上用GPU来计算像素L邻域相似度并寻找最大相似度像素的算法。
  3.1 GPU存储器的分配
  把数据传入GPU,需要合理分配存储器。输入与输出图像存入对于所有线程都是可读写的Global Memory。在计算L邻域相似度时为各线程分配高速的Local Memory;而在规约计算查找具有最大L邻域相似度的像素时,则使用对线程块可见的shared memory。
  3.2 并行计算输入纹理L邻域的相似度值
  在计算L邻域相似度时,输入图像存储在GPU的Global Memory中,其每个像素在计算时不发生变化,即只需对Global Memory进行读操作,多个线程并行读Global Memory不会发生冲突。基于以上原因,通过GPU对此过程进行并行优化。以64×64大小的输入样图为例,可使用64×64个线程来并行计算,由一个线程计算一个像素的L邻域相似度。定义一个含有64个线程块的网格,每个线程块包含64个线程。这样便完成了像素到CUDA线程的映射。   3.3 并行查找具有最大L邻域相似度的像素
  在并行计算输入纹理的L邻域相似度后,需要找出具有L邻域最大相似度的像素。所有数据在GPU中计算得出,如果将数据传回CPU计算后再传入GPU,会浪费大量的数据拷贝时间。
  为提高整个程序的效率,在GPU中使用改进的并行规约算法来进行查找。并行规约算法的思想类似归并排序,把规约中的加运算改为比较运算,并且设置一个监视哨,用来存储由公式(1)计算得到的Euclid距离最小值(即L邻域最大相似度值)的位置。线程块里的每个线程分别处理一个数据,线程块前半部分的数据分别与后半部分数据比较,得出相对较小的结果,并存入前半部分线程所分配的空间,以此循环,直到只剩下最后一个数据。此时监视哨里也保存了最小值的位置,它对应输入纹理的像素位置。
  4.实验结果及分析
  实验平台为INTEL CORE I3 cpu,显卡是常用的NVIDIA GEFORCE 9800MGS与GTX560显卡。在LINUX下文本模式下实验(图形模式会消耗显卡资源)。程序使用C语言编写。为了便于比较,输入纹理像素均等于输出纹理。
  4.1 不同邻域尺寸的加速比
  分别对L3,7,9,13邻域进行实验,输入纹理为64×64像素,显卡采用GEFORCE 9800GTX使用基本WL算法和经过CUDA加速的算法,并且对照TSVQ,SPSO加速的WL算法,它们的运行时间如下表所示。
  表1 CPU与GUP运行时间比较(单位:秒)
  下图直观显示了CUDA并行算法的加速效果:
  图3 加速比对比
  CUDA的平均加速效果可达100倍以上。由于合成算法的计算量随L邻域的增大而增加,图表中也可以看出计算量越大,GPU的加速越高,这也体现了CUDA平台下GPU的大规模并行处理能力。且加速比要高于SPSO和TSVQ加速的WL算法。
  5.小结
  为了加速计算L邻域的相似度值并寻找最匹配的像素,利用CUDA平台下GPU强大的计算能力,并行计算输入纹理的L邻域相似度值,并使用改进并行规约算法寻找具有最大相似度的像素,提高了算法效率。然而加速比并没有达到并行线程的数量,这主要是局限于GPU流处理器的数目,以及算法本身的优化质量。另外,对不同大小的输入样图,或者非正方形样图,需要手工指定线程数目与线程块数目,也是需要改进的地方。
  参考文献
  [1] Wei LiYi,Marc Levoy.Fast texture synthesis using tree-stuctured vector quantization[A].In:proceedings of SIGGRAPH[C],New Orleans,2010:479-488.
  [2] Kennedy J,Eberhart R C.Particle swarm optimization [C]//IEEE Service Center.Proc IEEE Int’1 Conf on Neural Networks Vol IV.2009.
  [3] Zhang Yan,Meng Yu L Wen-hui,et al.A fast algorithm for image analogy using particle swarm optimization[C]//Proc of the 3rdInternational Conference on Machine Leaning and Cybernetics, shanghai:2011.26-29.
  [4] Daniel Bratton,James Kennedy,et al.Defining a Standard for Particle Swarm Optimization [C]// Proceedings of the 2011 IEEE Swarm Intelligence Symposium.2011.120-127.
  [5] NVIDIA CUDA programming guide 2.0[z].NVIDIA,2012.
  [6] 薛峰,张佑生.基于样图的纹理合成技术研究[D].合肥:合肥工业大学.2011.
其他文献
[摘 要]石灰岩矿床属层状矿床,严格受地层控制,因此矿床成矿条件主要与地层相关。通过对大四平矿区的区域地质背景及地层条件进行分析,指出可能的含矿层位及潜在的矿体,为本区的地质找矿工作提供了科学依据,指明了方向。  [关键词]“大四平” “层状矿床” “CaO含量”  中图分类号:P619.14 文献标识码:A 文章编号:1009-914X(2014)25-0356-01  (一)区域地质背景  工
期刊
[摘 要]作为城市规划的重要组成部分,市政规划越来越引起人们的关注。本文主要介绍了在可持续社会进行市政规划的重要意义。同时,指出在进行市政规划的所出现的问题。通过对问题的分析,得出解决措施以及在可持续发展社会进行市政规划的正确方法。  [关键词]可持续发展 市政规划 问题 解决方法  中图分类号:TU99 文献标识码:A 文章编号:1009-914X(2014)25-0358-01  随着科学发展
期刊
中图分类号:在Casio fx-5800P 文献标识码:A 文章编号:1009-914X(2014)25-0321-02  一、前言  在测量工作中,我们经常会遇到国家54坐标与独立坐标之间的相互转换问题,如何在施工现场快捷正确的转换是比较棘手的事情。作者利用Casio fx-5800P编程计算器中编程功能,编写了坐标转换程序,实现了在Casio fx-5800P计算器中国家54坐标系与阳泉矿区独
期刊
[摘 要]青铜纹饰是青铜文化的重要组成部分,青铜纹饰孕育在陶器文化的土壤里,它的纹饰经历了由流散到整齐、由简单到复杂的过程后,出现了平雕和浮雕相结合的方法。青铜纹饰的种类很多。饕餮纹是商代最流行的一种青铜纹样。而到了西周这种凶猛的纹样就逐渐消失,取而代之的是云雷纹、夔纹、牛头纹、凤纹、虎纹、人面纹、龙纹、鹿纹、蝉纹等纹饰。  [关键词]青铜纹样 动物纹 形式  中图分类号:J313.5 文献标识码
期刊
中图分类号:S127 文献标识码:A 文章编号:1009-914X(2014)25-0360-01  一、绪论  1.1 研究背景  乡村景观是指乡村地域范围内不同土地单元镶嵌而成的嵌块体,以农业特征为主,是人类在自然景观的基础上建立起来的自然生态结构与人为特征的综合体。随着城镇化进程的加快,我国乡村景观将面临着前所未有的变化。如何保护乡村景观,充分挖掘乡村景观的生态和文化旅游价值,使其形成高效、
期刊
[摘 要]为了更好的适应高速列车、城际列车等多元化动车组总装需求,基于动车组结构特点,研究总装生产线台位模式,结合批量化制造组织形式,建立装配工作站与节拍之间的函数关系,分析生产线约束条件,搭建最优化生产线平衡数据库,构建一套低成本的、通用化的并具备快速反应能力的动车组总装生产线。  [关键词]动车组 总装 资源利用 制造周期  中图分类号:TH166 文献标识码:A 文章编号:1009-914X
期刊
[摘 要] 通过建立数学模型利用BASIC语言编制大体积混凝土温度控制软件,通过施工前对混凝土温度变化和温度控制措施的模拟有效的控制混凝土温度变化符合规范要求  [关键词] 大体积混凝土 温度控制 软件 模拟控制  中图分类号:TC81 文献标识码:A 文章编号:1009-914X(2014)25-0283-03  1、前言  大体积混凝土施工中裂缝控制是混凝土质量的关键,控制裂缝的主要措施是控制
期刊
[摘 要]本文通过运用sap2000有限元对比分析了5层框架结构的考虑楼板影响模型和不考虑楼板影响模型的抗震性能,重点研究其屈服机制。分析表明,考虑楼板的框架结构依然很难充分地实现 “强柱弱梁”屈服机制可为今后结构设计提供一定的参考。  [关键词]楼板 框架结构 抗震性能  中图分类号:X703 文献标识码:A 文章编号:1009-914X(2014)25-0310-03  [Abstract]T
期刊
[摘 要]未成年人是未来的建设者,了解未成年人的医疗服务需要、利用及医疗费用的水平、分布及基本特征,对完善未成年人医疗保障制度,提高其医疗服务可及性有着极其重要的意义。  [关键词]未成年人 医疗服务利用 现状分析  中图分类号:R195 文献标识码:C 文章编号:1009-914X(2014)25-0365-01  未成年人是一个国家的储备力量,是每一个国家的未来、民族的希望,未成年人健康问题日
期刊
[摘 要]汽车发动机是汽车整车的核心组成部分,发动机的好坏直接影响一辆汽车的各项使用性能。而活塞又是汽车发动机的“心脏”,那么,研究活塞的受力与受热情况就显得十分重要。本文通过运用三维设计软件CATIA建立活塞几何模型,利用大型有限元分析软件ANSYS Workbench对活塞顶部和整个活塞进行静力学和热力学分析,来模拟活塞在实际运转情况下所受的应力、应变等。希望能为国产发动机活塞的优化设计提供一
期刊