




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于扩散曲线的位图矢量化过 基于GPU的泊松方程快速求解方法研 三、算 梯度幅度的非极大值抑 一阶差分算 二阶差分算 特征点选 斜率探测 主曲线分析 三次贝塞尔曲线插 多重网格算 限制算 延拓算 四、结果展 整体效果展 手绘方式创作矢量 位图矢量 边缘检 一阶差分算法检测曲线 二阶差分算法检测曲线点实 基于GPU的扩 颜色值和模糊值的扩 残差与网格层数的关 一、简位图是在70年代伴随着帧缓存的出现而诞生的。位图是由无数产生近似相片的真效果,因而被广泛应用于品质的图像处理。参差不齐而失真,如图1-1所示。另外,由于位图是以排列的像素集合体形式被创建的,所以不能单独操作局部位图。图1-1矢量图、位图放大后效果对比图矢量图具有许多优点,主要表现矢量图可以、方便地编辑,这对于制作动画来说是一个很和径向的颜色渐变,如图1-2所示,因而难以像位图那样色彩层次丰富的真的图像效果。(a)向渐变(b)线性渐图1-2目前的矢量图支持的颜色渐变目前基于矢量的一些绘图工具在如何复杂的颜色渐变方面1-3现形式使得网格不但难以创建并且操作起来效率很低。2007年Sun对渐变网格进行了改进,提出了一种用于优化手动初始化网格的半自动方法,尽管该方法减轻了使用者的体力负担,但它并没有涉及到随后的对渐变网格的操作,并且没有使从无到有地手动创建渐变网格的过程变得更容易。1-3变网格示意鉴于矢量图具有广阔的发展前景,针对目前矢量工具在表达丰富的颜渐变上存在不足,本采用了新型几何元素扩曲线为矢量图形基元,旨在开发一个矢量素材制作工具,以解决现有的矢量等缺点。本打造一个既能够提供给开发者徒手绘制矢量动漫1-4所示;还能够将现有的位图动漫自动转化为矢量1-5所示。以“操作简单,降低开发者接入门槛”作为开发理念,极大的提高了矢量动漫素材的开发效率。本不仅实1-1.手绘式矢量图1-5.卡通位图矢本具有以下几个创新点基于扩散曲线的矢量绘图工具相对于传统的矢量绘图工具来说,本项目针对优质矢量动漫素材迫切需求,采用了新型的几何元素扩散曲线作为矢量图形基元,旨在开发一个矢量素材制作工具,以解限的颜色梯度等缺点,总体功能划分如下:位图矢量化导入抽取特征曲线——识别特征点并连接特征曲线,使用三阶采样获得特征曲线的颜手动绘制矢量化曲线直接通过鼠标或手绘板即可,可手动选择曲线左右两侧的编辑曲线位置和形状编辑线上控制点一调整曲线位置,编辑线外控制点调整曲线形编辑曲线起始控制点左右两侧的调整起止控制点左右两侧的颜色,并扩散到整交换曲线左右两侧交换此曲线左右两侧的颜色删删除曲可调整曲线的模糊度,使颜色梯度过渡更加平图1-6矢量素材制作功能模块本系统的界面可以划分为六大块:菜单栏、公共栏、、调板区、状态栏和主画布。各大模块的大概布局设计如图1-7所示:界面详细设计如1-8所示下面将分别详细说明这六大块里的各种菜单栏菜单栏目前分为文件、编辑、视图、窗口四部分1-9文件1-10文件菜单文件菜单栏主要有以下新建:新建空白画图板。若当前正处于编辑状态,则提示保存。打开:根据文件的类型判断,可载入和xl文件保存:可以保存成和xml两属性:显示当前文件信息(文件名、位置、大小等)退出:退出编辑1-11编辑菜单撤销:快捷键Ctrl+Z重做:快捷键剪切:得到当前选中的对象的副本,并删除原对象:得到当前选中的对象的副本视图图1-12视图菜单视图菜单栏主要有以下缩小:单次实际大小:原来大窗口图1-13窗口菜单:隐藏或显示公共公共栏在菜单栏下,放置一些常规工具和状态选择按钮1-4主要操作包一般工移动:移动选中的对象(可以是一个弹性选取中的多个对象,颜色拾取器:点击画布上某个位置,选择该位置的颜色作为自义颜色,如果左/右颜色按钮处于选中状态,则同时改变左/右颜色为此颜色锐平滑:使曲线更加重做:重做上一次撤销其显示位图:设置是否允许画布显示位中的工具是整个系统的工具,技术的体现1-15中的工具可以分为以下几绘矩形:按住ctr键,绘制正方弧形:需输入弧形参数:起始角度,终止角度,和弧半曲线编选择曲线:直接单击曲线,选中。Ctr+左键为多选,可选择对按下鼠标左键并拖动鼠标,建立弹性选区,选区内的所有对象选位图矢量化工具抽取曲线:状态栏显示抽取进修复:对扩散后的矢量图进行局部修调板调板区位于界面右侧,用来安放操作过程中常用的各种调1-16调板区主要包括调色标准色:系统提供的标1-17调色:通过调节RGB的值来添加自定1-18调色自定义颜色:调色下添加的自定义颜色全部保存在这1-18自定义颜画笔粗粗细(0.1~9.9)1-19画笔粗模糊设置曲线的模糊值,和模糊的状态设置按钮配合1-20状态状态栏位于界面底部,显示当前的一些状态信息1-21状态栏主要包括鼠标坐标位置显示鼠标在主画布中的位置主画主画布位于界面,是用来绘制示的地方,所有的操作都是针对画布上的线条或的。使用aa重量级组件Glanvas,加速图形计算。硬件配置由于运用了GPU进行并行加速,因此运行环境定位为配备CPU:InCorei5-2500RAM:4.00G可编程图形处理器图7.可编程图形GPU的发展ProgrammableGraphicsProcessingUnit(GPU,即可编程图形处理单元,通常也称之为可编程图形硬件(图7GPU概念在20世纪70年代末和80年代初被提出,使用单片集成电路(monolithic)作为图形,此时的GPU已经被用于和动画方面,它能够很快地进行几张的(仅限于此。在20世纪80年代末到90年代初这段时间内,基于数字信号处理(digitalsignalprocessorchip)的GPU被研发出来,与前代相比速度更快、功能更强,当然价格是非常的昂贵。在1991年,S3Graphics公司研制出第一个单2D,到了1995主流的PC图形厂商都在自己的上增加了对2D的支持。与此同时,固定功能的视窗(fixed-functionWindowsaccelerators)由于其高昂的价格而慢慢退出PC市场。1998年NVIDIA公司宣布modernGPU的研发成功,标志着GPU研发的历史性突破成为现实。通常将20世纪70年代末1998年的这一段时间称之为pre-GPU时期,而自1998年往后的GPU称之为modernGPU。在pre-GPU时期,一些图形厂modernGPU使用晶体管(transistors)进行计算,在微(microchip 在2.4GHz的PentiumIV上使用5千5百万(55million)个晶体管;而NVIDIA在GeForceFXGPU上使用超过1亿2千5百万(125million)个晶体管,在NVIDDIA7800GXT上的晶体管达到3亿2百万(302million)个。回顾ModernGPU的发展历史,自1998年后可以分为4个阶段。NVIDIA于1998年宣布ModernGPU研发成功,这标志着第一代ModernGPU的诞生,第一代ModernGPU包括 2TI的Rage和3Dfx的Voodoo3。这些GPU可以独立于CPU进行像素缓存区的更新,并可以光栅化三角面片以“必须依赖于GPU执行顶点坐标变换的计算”。这一时期的GPU功从1999到2000年,是第二代modernPU的发展时期。这一时期的PU可以进行三维坐标转换和光照计算(3DObjectTansformationandLighting,T&L,并且OpenGL和DirectX7都(workstation)的图PU对于纹理的操作也扩展到了立方体纹理(cubemap。NVIDIA的GeForce256,GeForceMAX,ATIRadeon7500等都是在这一2001年是第三代modernGPU的发展时期,这一时期研发的GPU提供vertexprogrammabilit(顶点编程能力GeForce3,GeForce4Ti,ATI8500等。这些GPU允许应用程序指定一个序列的指令进行顶点操作控制(GPU编程的本,这同样是一个具有开创意义的时期,这一时期确立的GPU编程思想一直延续到2009年的今天,不但深入到工程领域帮助改善人类日常生活(医疗、地质勘探、、等,而且开创或延伸了计算机科学的诸多研究领域(。同时,Direct8和OpenL都本着与时俱进的精神,提供了支持vertexprogammabilty的扩展。不过,这一时期的GPU还不支持fagmentprogammabilit(片段编程能力,在第四代modernPU时期,迎来同时支持verexprogrammability和fagmentprogammabilty的PU。第四代modernGPU的发展时期从2002年末到2003年。NVIDIAGeForceFXATIRadeon9700同时在市场的舞台上闪亮登场,这GPU都支持vertexprogrammabilityfragmentprogrammabilityDirectXOpenGL也扩展了自身的API,用以支持vertexprogrammabilityfragmentprogrammability。自2003年起,可编程图形硬件正式诞生,并且由于DirectX和OpenGLPU编程,也诞生。恭喜eFoce和TI的硬件研发人可口,较劲卡同恭喜rectX和OpenGL的研发,也可以休息下了,不用斗继而。可程件具如支持vertexprogrammabilityfragment支持IEEE32位浮点运支持4元向量,4阶矩阵计算提供分支指令,支持循环控制语具有高带宽的内存传输能力(27.1GBs支持1D、2D、3D纹理像素查询和使用,且速支持绘制到纹理功能(RendertoTexture,RTT3.2.3GPUVS上节阐述了GPU的发展历史,那么为什么在CPU之外要发展GPU?GPU的vertexprogrammability和fragmentprogrammability究竟在何处有着怎样的优势8展示了GPU和CPU在结构上的差异,CPU大部分面积为控制器和寄存器,与之相比,GPU拥有的AL(ArithmeticogicUnit用于数据处理,CPU执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行(请回忆OS上的时间片轮转算法,而GPU具有多个处理器核,在一个时刻可以并行处理多个数据。8.GPUCPU的不同架GPU采用流式并行计算模式,可对每个数据进行独立的并行计用多个数据并行运算的时间和1个数据单独执行的时间是一图9中代码目2D图像上每个像素点的颜色CPU上运算的C++代码通过循环语句依次遍历像素GPU上,则只需图9.CPUGPU的不同编程GPUCPU么不用GPU完全取代CPU呢?因为GPU在许多方面与CPUGPU采用数据并行处理方式极大加快了运算速“需要知道数据之间相关性的”算法,在GPU上难以得到实现(但在CPU上则可以方便的实现,一个典型的例子是射线与不规则物体的求交运算。此外,GPU在控制流方面弱于CPU,在图中可以看到,GPU中的控制器少于CPU,而控制器的主要功能是取指令,并下一条指令在内存中的位置,控制和协调计算机的各个部件有条不紊地工作。在早期的OpenGLfp2.0fp3.0以及DirectX的ps_4_0之前的profile版本都不支持或不完全支持循环控制流语句(目前在软硬件方面都已得到改进。由于GPU编程完全依赖于图形硬件,故而较早版本的GPU并不支持一些常用的编程需要,而现在很多个人4-6年,所2012之后,旧式显卡的更新换代会基本结束,这也制约了GPU编程技术的使用最后进行GPU编程必须掌握计算机图像学相关知识,以及图形处理API,入门门槛较高,学习周期较长,尤其国内GPU编程的资料较为匮乏,这些都导致了学习的难度。在早期,GPU编程只能使用汇编语言,开发难度高、效率低,不过,随着高级Shaderlanguage的兴起,在GPU上编程已经容易多了3.2.3国内外研究基于U的科学可视化计算(VisualizatonincientiicComputing算处理的数据量极大(CT、地质勘探、气象数据、流体力学等,仅仅基于CU进行计算完全不能满足实时性要求,而在GPU上进行计算则可以在效率上达到质的突破,许多在CU上非GPU上,所以基于PU的科学可视化研究目前已经成为主流。近年来,基于U进行通用计算的研究逐渐成为热点,被称之为PGPU(eneal-urposeCompuingonaphicsocessingUnits,也被称为P2U上得到了实现,并有不俗的性能表现,目前,线性代数(linearalgebra,物理仿真(physicalsiulation)和光线算法(aytace)都已经成功的移植到U上。在国内,中国计算技术进行了基于GPU的串匹配算法的实现关于PGPU的知识点可以参阅旨在降低PU编程难度,设计基于PU的高级程序语言的研2004BROOKGPU项目设计了一个实时的编译器,编程不需掌握图形学知识,只需掌握与C语言类似的流处理语言BROOKGPU的通用BROOKPU已经在AMD公司进行深入研发。国内浙江大学计算机学院针对高级语言的编译系统,以及可编程图形硬件的加速等技术进行了研究。环JDK(JavaDevelopmentKit,Java开发包,Java开发工具)是一个写Javaapplet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试JavaappletJDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit 包含的基本组件包·javac–编译器,将源程序转成字节·jar–打包工具,将相关的类文件打包成一个·javadoc–文档,从源码注释中提取文·jdb–debugger,查错工境也被称privateruntime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如的库、IDL库。JDK中还包括各种例子程序,用以展示JavaAPI中的各部分从初学者角度来看,采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面象的设计思想。JDK的另一个显著特点是Java(J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明显的就是从事大规模企业级Java应用开发非常,不能进行复杂的Java开发,也不利于团体协JDK一般有三种版SE(J2SE),standardedition,标准版,是通常用的一个版EE(J2EE),enterpsiseedtion,企业版,使用这种JDK开发J2EE应用 edtion,主要用于移动设备、设备上的应用程Java开发工具(JDK)是许多Java最初使用的开发环境。尽管许多编程已经使用第的开发工具,但JDK仍被当作Java开发的重要工具JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。其JavaAPI是一些预定义的类库,开发需要用这些类来Java语言的功能。JavaAPI包括一些重要的语言结构以及基本图形,网络和文件I/O。一般来说,JavaAPII/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。作为JDK实用程序,工具库中有七种主要程Javac:Java编译器,将Java源代码转换成字节码ava:Java解释器,直接从类文件执行Java应用程序字节代appletviewer:小程序浏览器,一种执行HTML文件Java小程序的Java浏览器。Javadoc:根据Java源码及说明语句生成HTML文档。Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件Javap:Java反汇编器,显示编译类文件中的可功能和数据,建立,现在是由WillowGarage提供支持。OpenCV是一个基于BSD证的跨平台的计算机视觉库,能够运行在WindowsLinux、AndroidMacOS操作系统上。它是轻量级的并且高效的,是由一系列的C函数以及少量的C++类构成,并同时Python、、Ruby等语言的接口,实现图像处理及计算机视觉方面很多的通用算法,而不依赖于其他外部库。OpenCV致力于真实世界的实时应用,通过优化C代码的编写极大提高了代码的执行速度,同时还可以通过In 的IPP的高性能多函数库来得到更高的处理速OpenCV的主要应用领域包括物体识别、人机互动、人脸识别、图像分割、运动、动作识别和机器人等。所具有的主要功能有:1、图像数据操作,例如内存分配与图像设定和转换等2、图像或的输入输出,支持文件或头的输入,图像或文件的输出。3、矩阵或向量数据操作以及线性代数运算,包括矩阵乘积、特征值、矩阵方程求解、奇异值分解等。4、支持多种的动态数据结构,即链表、队列、树、图、数据集。5、基本的图像处理,包含去噪、角点检测、边缘检测、色彩变换、采样与插值、直方图、形态学处理、图像金字塔结构。6、结构分析,例如连通域/、像、换模板配曲线合多式近、狄劳尼三角化、椭圆拟合等。7、头定标,主要包括寻找及定标模式、基本矩阵估计、参数标、视觉匹配、单应矩阵估计。8、运动分析,包含光流、目标、动作分割。9、目标识别,利用特征方法或HMM模型。10、处理基本的GUI,例如显示图像或、键盘或鼠标操作、滑动条等。11、图像标注,对直线、曲线、多边形或文本标注。为了便于管理和扩充OpenCV整个库,整个库被分成几个子库,结构分析、运动分析与对象、照相机定标、模式识别和三维重建等相关函数。2、cvaux-辅助函数库,主要提供匹配、3D等 -数据结构与线性代数库,提供所有的OpenCV时包括出错处理的一些基本函数。4、highGUI-GUI函数库,提供一些 二、位图和矢量图是计算机中常见的两大类图像格式。位图有着丰富多和缩放容易失真等缺点。而矢量图占用的空间小,图像不会因为缩系统运用一种新型的几何元素——扩散曲线作为图形的基元,力图打造一个既能够提供给开发者徒手绘制矢量动漫素材的能够将现有的位图动漫自动转化为矢量图的强大工具,以“操作简单,一直受到国内外研究的高度重视,并为之付出了巨大的努力。关于点边缘检测是图像处理的一个低层技术,但它通常是视觉计算的图像特征包含了图像的大部分信息。图像的特征分为很多种,如:对卡动图像特殊,特征量的过中要考虑到边界曲线的矢量化同时也需要考虑装饰曲线的矢量化,这样才能够保证最终形成的矢量图特征的真实完整性。传统的特征矢量化大都识别边界曲线,但是这种方法对于卡通图像是不适用的。虽然边界曲度会比边界曲线大得多,因此若采用颜色梯度的方法则会在其两侧形会造成一定的影响。因此,在同时考虑边界曲线和装饰曲线的情况下,采用两个步1、曲线点检测。边界曲线的二阶偏导数虽然不能够得到真方向偏差是在可接受范围内。因此可以通过计算图像中每个像素点的二阶偏导数进行非极大抑制来检测出边界曲线和装饰曲线点。2、曲线点连接。通过不断选取具有最大二阶偏导数的曲线点作三阶贝塞尔曲线的形状由四个控制点确定,曲线首尾的端点被我们成为上控制点,曲线外控曲线的两个制点被成为外控制点由于采用的是分三次贝塞尔曲线合方法,分段点的确定就尤重要了。这里,分段点作为三阶塞尔曲线的线上控制样点分布点确定外控点,可用的法有平分、特征多边形中点法等。数字曲线,它的数据点与日常图像边缘检测得到的点有一定的区别,后者相对较稀疏,而确定手绘曲线的数据点相对稀疏,并且绘制出的曲线在不同地方点的密度也会受鼠标拖动速度的快慢影响,尤其在曲线的首段和末段点的密度大且噪声点比较集中,选择适当的除噪方式才能确曲线具有小幅高频噪声的特点,采取了平均滤波法。对从手绘曲线采样得到的数据点集进行除噪后,采用三次贝塞的方案是,先抽取出线上控制点,再根据线上控制点计算出线外控制点,由于贝塞尔曲线的是由线外控制点决定的,所以特征点的选取点的选取,其实是对矢量数据的压缩过程,压缩后的矢量数据仍要尽可在特征矢量化过程中,矢量图形元素的定义显得尤为重要,扩散曲线是一种新颖的矢量图形元素。虽然目前在商业应用市场上,有诸如AdobeIllutao,CoelDaw等矢量绘图工具,但是他们都普遍因存幅色彩过渡平滑的矢量图像。这不仅解决了之前对颜色梯度的有限支持,颜色过渡锋锐等问题,同时极大提高了用户体验。扩散曲线结构2-1扩散曲线的结扩散曲线的基本结构主要由以下几个部1、扩散曲线的几何原型为贝塞尔曲线。贝赛尔曲线被广泛应用于各种矢量图形来精确地绘制光滑的曲线。贝塞尔曲线拥有线上和线外两种类型的控制点。如图2-1中(a)所示,蓝色的点表示线上控形。通过控制的控制能够很容易的制出具有线光滑变化动漫图像。2、颜色控制点。扩散曲线的起始点和终止点位置分别拥有两个条颜色曲线上从起始位置到终止位置通过线性插值进行颜色渐变。如图2-1中(b)所示。3、模糊值控制点。除了颜色控制点之外,扩散曲线在曲线的首尾位置处拥有模糊值控制点。用来控制曲线左右两侧颜域过渡的平滑2-1中(c)4、扩散。通过扩散曲线两侧的颜色值以及模糊值定义颜色梯度场从而构造线性系统实现颜色扩散。如图2-1中(d)基于扩散曲线的位图矢量化过程位图矢量化是一个将栅格化的彩像转化由通过一系列数学公能够保存图像中原有的特息的完整。在卡通动漫矢量素材制作中,图量占了足重的用能够大提开制作矢量素材的效率。基于扩散曲线的位图矢量化过程分为如下几个步 曲线和装饰曲线。这一过程即为特征矢量化的过程。如图2-2中(a)线拟合,使曲线能够过渡平滑。如图2-2中(b)所示。别对每条曲线选取合适的颜色控制点进行曲线两侧的颜色采样。手动设定合适的模糊值,使得曲线两侧的颜色过渡平滑而不锋锐。如图2-2中左右两侧的颜色在曲线所划分的两个区域最终达到热扩散的效果。如图2-2中(d)所示。(a)位图特征提 (b)曲线拟 图2-2基于扩散曲线的位图矢量化过程示意图GP(GaphcPocessngnt)在近几年的发展十分迅速,尤其是在通用计算方面。GPU的通用计算(GeneralPuposeGP)指的是用GPU来处理一些原本PU可以处理的计算。由于GPU具有非常多的,一般可以过百上千,与民用PU不超过8核6线程的数量相比非常悬殊,因此它的计算速度相对于PU具有相当的优势,一块小小的GP,它的计算能力可以达到同期PU的10GPU的市场价格也是普通民众可以接受的。矢量图有诸多优点,主要表现矢量图可以、方便地编辑,这对于制作动画来说是一个很何制作出矢量化素材和光栅图像的矢量化(Raserocoronerson)成为众多领域的热门课题,也是本课题的主要技术之一。矢量素材是根据图像的几何特征加上颜色信息得到的一种图像。在色信息,CPU上实现色彩延拓,尤其是热扩散,那么速度会较为缓慢。应该追求在GPU上快速的实现色彩延拓。色彩延拓方法线性渐线性渐变指的是沿着一根轴线改变颜色,从起点到终点颜色进行定两个或颜色停止点,需要注意的是这些颜色停止点必须在同一条定义这条要遵循的渐变线。于是更直线。于是更直观的,只需要指定(angle,color1,color2,colorn)这些参数后,就能构建出线性渐(a)左下角到右上角的渐变。线性渐变只能对颜色停止点在一条直线上的径向渐线性渐变是从线的一端过渡到另一端,与之相比,径向渐变则先开始于一点,然后呈圆形或者椭圆形由内向外均匀地扩散开。需要指定 是渐变采用的形状,可以是圆形也可以是椭圆形,最后要指定的是两个或者的颜色停止点。径向渐变的原理是先由各个颜色终止点通过和线性渐变一样的方法得到一条已知的颜色线,然后将这条线绕圆心转一圈就可实现色彩延拓。图2-3(b)显示了以中心点为圆心然后向外的径线性渐变和径向渐变只能对简单的颜色梯度变化进行颜色行温度扩散的式,热扩散的过程最终可以归结为泊松方程的求解,这种方式可以较好的模拟的色彩延拓。图2-3(c)显示了对三条(a)线性渐 (b)径向渐(c)热图2-3不同类型的色彩延基于GPU的快速色彩延拓相热扩散的过程最终是归结为泊松方程[5]在,的用户交互体验是一项非常重要的内容,如果直接在CPU上求GPUGPU的通用计算给这种大量数据的处理带来了。本文提出将这两者结合,即利用GPU的通用计算来求解泊松方程从而给用户带来良好的交互体验。三、算思想。需要保留局部梯度最大的点,而抑制非极大值。从而最终将算法3-1梯度幅度的非极大抑制cosNxSgn←cosN>0?1,-1;ySgn←sinN>0?1,-1;cosN←conN*cosN;sinN←sinN*sinN;if(p_Der[r][c]>=(p_Der[r][c+xSgn]*cosN+p_Der[r+ySgn][c]*sinN)&&p_Der[r][c]>=(p_Der[r][c–xSgn]*cosN+p_Der.[r–ySgn][c]*sinN))二维图像空间中的曲线点检测关于边界曲线点的检测可以通过一一阶差分算法通过一阶差分进行曲线点检测算法类似于anny像中需要通过分别计算横向和的差分才能够得到像素点的这里选用Sobel算子对图像进行一阶差分运算,Sobel算子是边缘检测常用的算子之一,从技术上看它是一个离散型的差分算子。该3*3的矩阵,分别为横向及纵向,将之与图像作平面卷积,G
2
G
10
(公式3-
获得横向和纵向的灰度差分值之后,可以通过公式3-2,公式3-3来分别计算梯度的大小和方向。GxG (Gxarctan(Gy
(公式3-在获得图像中每个像素点的灰度梯度值及其方向之后。通过高斯函数对灰度梯度矩阵进行卷积运算,排除噪声点对曲线点检测的干扰最后,通对像素点梯度进行非大抑制,标记具有部度极大的点,这点即为所需要曲线点算法的具过如下所示:算法3-2一阶差分算法检测kSize:Sobel核的大小.Sobel(srcImg,dxMat,1,0,Sobel(srcImg,dyMat,0,1,p_Der[y][x]GaussianBlur(p_Der,p_Der,Size(3,3),二阶差分算法曲线,因此得到的结果并不是最终想要的结果若将全部曲线看作是装饰曲线,通过计算二阶导数来检测边缘点是合理的。因此考虑采通过二阶差分进行曲线点检测相当于是通过计算图像中每的二阶偏导数进行非极大抑制从而检测出边缘点,每个像素点的二阶偏导数以及偏导数的方向通过Sobel算子从xyxy方向分别进行二量来获得二阶偏导数及偏导数的方向。具体算法如下所示:算法3-3二阶差分算法检测边kSize:Sobel核的大小.computeEigenvals(dyy[y][x],dxy[y][x],dxx[y][x],eigval,�.⃗. p_Ornt[y][x]←arctan(-Nx,NyGaussianBlur(p_Der,p_Der,Size(3,3),在确定曲线点的过程中,需要满足以下两个要求1、曲线点的二阶偏导数必须是在其偏导数方向上相对于周围邻域的极大值。2、曲线点的二阶偏导数必须大于一定的最小阈值tlow。最小阈值所以,的首要任务是选取特征点。能体现一条曲线特征的点,往往是尖点、拐3、极值点:若f(afxafxx轴斜率探测法根据前面分析,最能体现曲线特征的点是尖点、拐点和极值点。依次计算线上每个点的斜率,找到所有斜率为0、∞和斜率相乘为负数的点。这些点将有可能是特征点,该算法如下所示。算法3-4ArrayList<Point>tmpList=newArrayList<Point>();foreach(PointpinpList)p的前后点对求得斜率kif(k0||k||k*prevK0)}return主曲线分析法高维流形推广。该方法如算法3-5所示。算法3-5prevIdx:记录上一个特征点的下标intprevIdx=for(inti=1;i<pList.size();{intlside=0,rside=0;for(intj=prevIdx;j<i;++j){if(pList.get(j)pList.get(i)pList.get(prevIdx)}if(lside!=0&&rside!={resList.add(下标从prevIdx到i的所有点中到点pList.get(i)点pList.get(prevIdx)构成的直线的距离最远的点);prevIdx=}}returnresList;B(t)1t)3P3t(1t)2P3t21t)Pt3P,t privateprivatevoidgetSpline(Pointp0,Pointp1,Pointp2,Pointp3,int{for(int;//限制算算法3-6限制算for(i-=scale;i<=scale;i+=scale)for(j-=scale;j<=scale;j+=scale){if(image!≈背景色){accum+=image;n++;}}色){if(n>0){cst}}}在通过算法3-6生成n张粗细不同的纹理之后(第1张为最细网格,第n张为最粗网格,把最粗网格最为一个最初的猜想,然后不断地把残差修正到细网格上,在经过n次修正后,就可以得到最终解。延拓算对于延拓操作,即从粗网格延拓到细网格,采用如下算法}}这里需要注意的是以上两种代码都是在GPU上实现的,也就是四、结果展示手绘方式创作矢量图本提供强大的矢量图绘制编辑功能。矢量卡通图的绘制过程极其简单,只需勾画出图像的基本轮廓,然后为轮廓填充颜色,通过锋锐等问题,同时极大提高了用户体验。图.1展示了一个完整的通过手绘方式创作矢量图的过程。(a)根据需要选择图 (b)绘画过程中调整曲线左右两侧颜(c)绘制中曲线颜色不进行扩 (d)鼠标后扩(e)热扩散使得颜色过渡平滑(f)再制功能(/剪切+粘贴) 图4-1手绘方式创作矢量图过程位图矢量化本够将现有的位图动漫自动转化为矢量图的强大工具,操作1、导入2、抽取特征曲线(ExtractTheCurvesFromTheImage,识别3、采样获得特征曲线的颜色(SampleTheCurve’sColorFromTheImage)4、扩散(DiffueseT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗行业2025年人才流动趋势及培养策略研究报告
- 中职学院学籍管理办法
- 住宅装修管理办法细则
- 人员内部流动管理办法
- 企业电机维修管理办法
- 乡镇工会会员管理办法
- 企业融合销售管理办法
- 临时用地补偿管理办法
- 保险培训管理办法试行
- 临汾供热收费管理办法
- 2025年职业病防治宣传日知识竞赛参考试题库400题(含答案)
- 公司行政5s管理制度
- 家庭消毒知识课件
- 2024人教版七年级下册生物第三单元 植物的生活 单元测试卷(含答案)
- 市政道路地下综合管廊工程总承包项目施工进度计划及保证措施
- 2024-2025学年江苏省南通市高一(上)期末物理试卷(含答案)
- 2025年重庆出版集团招聘笔试参考题库含答案解析
- 施工现场重大危险源辨识及监控措施
- 新产品开发流程
- 介绍正畸课件教学课件
- 译林版(2024新版)英语七年级上册Units 1~2 综合测试卷(含答案)
评论
0/150
提交评论