移动正方形算法在2D张量投票中的应用

合集下载

模型移动算法公式

模型移动算法公式

模型移动算法公式
模型移动算法的公式可能会因具体情境而异,但一般来说,它可能涉及到一些基本的数学和物理概念。

以下是一个简单的模型移动算法公式的示例:
假设一个物体在二维平面上以恒定的速度v沿x轴方向移动。

模型的移动可以表示为:
dx = v dt
其中,dx是模型在时间dt内的移动距离,v是物体的速度,dt是时间间隔。

这个公式是基于欧拉方法的一个简单实现,它是一种常见的用于计算机图形学和物理学中的数值方法。

需要注意的是,这个公式假设物体的移动是线性的,没有考虑重力、空气阻力或其他非线性因素。

如果你的模型是在三维空间中移动,那么移动的公式可能会更复杂,包括旋转和加速等概念。

具体的公式会取决于你的模型和你正在尝试解决的问题。

如果你能提供更多的具体信息,我可能能够给出更具体的帮助。

采用张量投票理论的三角网格特征边提取算法

采用张量投票理论的三角网格特征边提取算法

采用张量投票理论的三角网格特征边提取算法张量投票理论(Tensor Voting Theory)是一种用于描述局部几何特征的理论。

它被广泛应用于计算机视觉、计算机图形学、自动驾驶、机器人以及医学图像处理等领域。

张量投票理论可以对局部特征进行有效的描述和区分,能够在三维场景下提取出三角网格的特征边,是一种重要的三角网格处理技术。

本文提出了一种基于张量投票理论的三角网格特征边提取算法。

该算法主要包括以下步骤:1. 建立三角网格的基本数据结构:三角形的三个顶点坐标,法向量,以及曲率张量。

2. 计算每个三角形的曲率张量:曲率张量是用来描述曲面局部几何特征的重要参数。

其可以在三角形邻域内计算平均法向量及其协方差矩阵,得到每个三角形的曲率张量。

3. 计算每个三角形的特征张量:根据曲率张量,计算每个三角形的特征张量。

特征张量包括特征值和特征向量两部分。

特征值可以用来描述曲面几何特征的大小,而特征向量则表示曲面局部几何特征的方向。

4. 计算每个三角形的特征边:在计算出每个三角形的特征张量后,通过特征值与特征向量之间的关系来计算该三角形的特征边。

特征边是一条连接相邻两个具有相似特征张量的三角形的边。

5. 进行张量投票:通过对每个三角形的特征边进行投票,来判断该边是否为特征边。

每个特征边得到的票数由其所包含的特征张量数量决定。

如果一条边得到了足够的票数,则认为它是一条特征边。

6. 消除不合法的特征边:排除特征边中不能与其相邻的边,即存在较大的角度差异的边。

7. 输出特征边结果:将所有通过投票得到的特征边输出,得到三角网格的特征边。

该算法的时间复杂度主要取决于曲率张量的计算和特征张量的计算速度。

在实际应用中,曲率张量的计算可以采用基于深度学习的方法,特征张量的计算则可使用矩阵特征值分解等数学方法来实现。

针对张量投票过程的优化可以采用GPU并行计算加速等方法,以提高算法的计算效率。

综上所述,基于张量投票理论的三角网格特征边提取算法不仅能够有效地描述和区分三角网格的特征边,还具有较高的计算速度和计算精度,具有很高的实用价值。

基于平面的三维空间物体任意点移动算法

基于平面的三维空间物体任意点移动算法

基于平面的三维空间物体任意点移动算法作者:宋继红李凤龙徐全生来源:《计算机辅助工程》2009年第03期摘要:为优化虚拟三维管理领域的物体移动操作,实现利用鼠标完成物体在三维空间中任意点的移动过程,引入可移动平面的概念,在三维空间建立垂直于视线在xz平面投影的可移动平面;建立1条从摄像机位置到鼠标位置的射线,由鼠标滚轮控制可移动平面在视线方向上的前后移动;通过移动可移动平面,使鼠标射线与可移动平面的交点可以到达三维空间中的任意位置;计算射线与可移动平面的交点坐标,将其作为待移动物体新坐标放入渲染流水线,从而完成物体移动. 实际应用表明,该算法在保证移动速度与精度的同时可减少移动所需的输入设备.关键词:DirectX; 可移动平面; 三维移动; 鼠标射线; 射线变换中图分类号:TP317.4;TP391.73文献标志码:AArbitrary movement algorithm of objects in3D space based on planeSONG Jihong, LI Fenglong, XU Quansheng(Info. Sci. & Eng. College, Shenyang Univ. of Tech., Shenyang 110178, China)Abstract: To optimize the operation of movement of objects in virtual 3D management field and realize the process of using mouse to complete the object movement to any point in 3D space, the concept of movable plane is introduced into the study. A movable plane is built that is perpendicular to the projection of sightline in xz plane; a radial from camera position to mouse point is built and the mouse wheel is used to control the forward and backward movement of the movable plane along the sightline direction; the intersection point of the mouse radial and the movable plane can be moved to any position in 3D space by moving the moveable plane; the coordinate of the intersection point of the radial and the moving plane is calculated, taken as the new coordinate of the object to be moved which is added into the romance pipeline, and the object movement can be implemented. The application shows that the algorithm can ensure the movement accuracy and speed of the objects and reduce the input devices that help to move objects.Key words: DirectX; movable plane; 3D moving; mouse radial; radial counterchange 收稿日期:2009-02-18修回日期:2009-05-08作者简介: 宋继红(1968—),女,辽宁福县人,副教授,研究方向为计算机网络通信、计算机网络远程控制、虚拟现实技术,(E-mail)stuky_2005@0引言在计算机技术高速发展的今天,虚拟现实(Virtual Reality,VR)技术作为1门综合计算机图形、多媒体、传感器、人机交互、网络、立体显示以及仿真等多种技术而发展起来的计算机领域的新技术正逐步走向成熟并得到广泛应用.[1]VR本质上是1种先进的计算机用户接口,它通过给用户同时提供诸如视觉、听觉、触觉等各种直观而又自然的感知交互手段,最大限度地方便用户操作,从而减轻用户负担,提高整个系统的工作效率.[2]因其在管理领域中所具有的独特优势,近几年VR正逐渐被应用到各种管理领域.特别是在建筑、仓储等管理领域中,传统的窗口式管理软件已不能满足用户需要,人们希望能对数据进行可视化管理,从感观上对仓库中的物品进行管理.因而,VR技术成为数据可视化管理的首选.当VR技术应用于建筑、仓储等管理领域中时,实现物体在虚拟三维场景中的移动成为实现VR技术在该领域应用的基础.因为在三维环境中多了深度信息,反映到坐标系上就增加了z方向的坐标值,从而使得一些在二维空间交互的简单问题到三维空间就变得非常复杂.[3]利用鼠标、触摸板等二维输入设备得到的输入信息只具有x和y方向的二维信息,要实现在三维环境下的物体移动,首先需要解决将二维屏幕上的鼠标点坐标变换为三维场景中的三维坐标.[4]但是,直接利用鼠标获取输入点的高度信息十分困难.最初的三维空间物体移动方案利用键盘等输入设备在三维空间通过在x,y,z 3个坐标增加或减少1个固定值完成,这种方法不但耗费移动时间,而且因其在x,y,z轴上每次只可移动1个固定值,移动精度很难保证.因此,实现通过鼠标控制完成二维屏幕的三维移动操作对VR技术应用于虚拟三维管理工作上具有极其重要的意义.1基于平面的三维空间物体任意点移动算法在三维空间中建立垂直于视线在xz平面投影的可移动平面,并建立从摄像机位置,到鼠标位置的射线.计算射线与可移动平面的交点,将其放入渲染流水线作为待移动物体的新坐标值从而完成三维物体的移动.此算法可分解为以下5步:(1)建立可移动平面;(2)建立鼠标射线;(3)拾取物体确定待移动物体;(4)对平面进行移动;(5)计算射线与移动平面交点.1.1建立可移动平面通过3点可确定1个平面,该平面要满足以下要求:(1)平面要通过物体重心;(2)平面垂直于xz平面;(3)平面垂直于视线在xz平面的投影.定义P1点为物体重心点,可通过查看物体的当前位置信息获得P1点.设该重心中点垂直上方点为P2, 其坐标为(xP1,yP1+10,zP1).为使平面垂直于视线在xz平面上的投影,此时只需再在xz平面上找到1点P3,即可得到向量A(P1,P2)与向量B(P0Eye,P0vLook),使向量A与B满足A×B=0(1)因P3点在xz平面上,所以yP3=0,又因P3点在x轴上的坐标只要不与P1点在x轴重合,即可建立满足要求的平面,所以设P3=(10 000,0,h), zP3为待求值.由式(1)得(xP1-xP3)×(xP0vEye-xP0vLook)+(zP1-zP3)×(zP0vEye-zP0vLook)=0zP3=zP1(xP1-xP3)×(xP0vEye-xP0vLook)(zP0vEye-zP0vLook)此时,由已确定的P1,P2和P3点可确定唯一平面.定义向量A,B,C:A=P2-P1;B=P2-P3.利用DirectX SDK库函数D3DXVec3Cross()计算A和B所在平面的法向量: D3DXVec3Cross(C,A,B),所以过P1,P2,P3的平面方程为xc(x-xp1)+yc(y-yp1)+zc(z-zp1)=01.2建立鼠标射线当按下鼠标并移动到屏幕上的点S时,从屏幕上可想象出1条从摄像机位置到鼠标点处的射线.然而,应用程序不可能仅仅根据得到的屏幕点S的坐标建立这条射线.[5]与二维图形程序的显示方式不同,三维图形程序中的顶点要经过世界变换、摄像机变换、投影变换、剪切以及视口缩放,才能在二维屏幕上显示.[6]为获取鼠标按下点的造型空间坐标,利用造型空间和用户空间之间的坐标变换提取空间坐标.[7]设在投影窗口上与S点对应的点为P,投影面为z=1.建立1条射线,使其从投影空间起点出发穿过点P.建立射线的算法可分解为以下3步:(1)捕捉屏幕上点S,确定S点对应投影窗口上的点P;(2)建立1条从投影坐标系原点出发穿过点P的射线;(3)将射线和模型变换到同一坐标系中.1.2.1屏幕到投影窗口变换视口变换矩阵[8]为w20000-h20000zmax-zmin0x+w2y+h2zmin1投影窗口上的点P通过视口变换产生屏幕上的点S:xs=xpw2+x+w2(2)ys=yph2+y+h2(3)z坐标在视口变换以后没有作为二维图像的一部分存储被存储到深度缓存中.[9]因此,由式(2)和(3)得到计算xp的式(4)和计算yp的式(5).xp=2xs-2x-ww(4)yp=-2ys+2y+hh(5)通常情况下,视口中的x和y为0,因此能更进一步得到xp=2xsw-1(6)yp=-2ysh+1(7)由定义可知,投影窗口就是z=1的平面,因此zp=1(8)投影矩阵缩放投影窗口上的点以适应不同大小的观察视野.为了得到被缩放之前点的值,必须通过缩放变换的逆运算来变换点.设P为投影矩阵,因为变换矩阵的P00和P11是点的x坐标和y坐标的缩放值,所以被缩放之前点的值为xp=2xw-11P00(9)yp=-2yh+11P11(10)此时点P为屏幕上点S对应投影窗口上的点.1.2.2建立射线射线可以表示为等式P(r)=P0+tu,其中,P0是射线的起点位置,u是用于描述射线的方向向量.在前面设定射线的起点为投影空间的起点,因此p0=(0, 0, 0).因为射线通过点P,所以方向向量u 可表示为u=P-P0=(xp,yp,1)-(0,0,0)=P.采用上述方法在Direct3D中计算射线.首先定义射线结构体RAY,Struct RAY{D3DXVERCTOR3 Origin;D3DXVERCTOR3 Direction;}创建RAY类型全局变量Ra,其中变量Origin和Direction分别用于存储射线的起点和方向.定义函数GetRay(int x,int y)计算射线.在函数中声明D3DVIEWPORT9 类型结构体Viewport和D3DXMATRIX 类型矩阵Proj.用 pd3dDevice->GetViewport(&Viewport)将视口信息存储于Viewport中,用pd3dDevice->GetTransform(D3DTS_PROJECTION, &Proj)获取投影矩阵,并用Proj返回.根据式(9)和(10)计算出xp和yp,可得射线的起点为D3DXVECTOR3(0.0f,0.0f,0.0f),射线的方向为D3DXVECTOR3(xp,yp,1.0f),最后函数返回射线Ra.1.2.3射线变换在第1.2.2节中计算出来的射线是在投影空间中描述的.为了完成射线与第1.1节中建立的移动平面相交,射线和移动平面必须在同一坐标系内.与其将移动平面转换到视图空间中,不如将射线转换到世界空间.[10]通过变换矩阵来改变射线P(r)=P0+tu中的起点P0和方向u,进而实现对射线的变换.定义函数TransformRay(Ray*ray, D3DXMATRIX* T)变换射线.其中,采用函数D3DXVec3TransformCood变换射线起点,第4个分量缺省为1;采用函数D3DXVec3TransformNormal变换射线方向,第4个分量缺省为0.这里,起点作为1个点变换,方向作为1个向量变换.至此,在待移动物体所在的世界坐标系中可得到1条从摄像原点出发并经过鼠标在世界坐标系下对应点的射线Ra.1.3拾取物体确定待移动物体通过第1.2节计算得到的射线原点与方向向量,利用DirectX SDK D3DXIntersect()函数逐一判断场景中的物体是否被拾取,以确定待移动物体.函数原型为: D3DXIntersect( pMesh,&vPickRayOrig,&vPickRayDir,&bHit,NULL,NULL,NULL,NULL,NULL,NULL) [11]; 通过bHit返回值是否为1判定物体是否被拾取.利用该函数可以一次性拾取到射线所穿过的几个物体,此时可通过提取物体在三维场景中的位置信息Place[i],并计算找出距摄像机距离最小的物体为拾取物体.1.4对平面进行移动前面建立的平面只能实现物体在1个平面上移动,要实现物体在整个三维空间移动需要让该平面在视线方向上向前或向后移动.如图1所示,在xz平面内可移动面可表示为1条直线.要把可移动面从面1位置移动到面2位置只须让面1中的各点分别在z轴和x轴方向上移动1个单位即可.图中视线的方向向量OE=(P0vEye-P0vLook);角α为向量OE与x轴的夹角;d为移动距离.由图可得Δx=d cos α,z=d sin α所以移动后P1,P2,P3的点坐标分别为P4=(xp1+d cos α,yp1,zp1+d sin α)p5=(xp2+d cos α,yp2,zp2+d sin α)p6=(xp3+d cos α,yp3,zp3+d sin α)再将P4, P5, P6赋值给P1, P2, P3.图 1可移动平面变换采用上述方法在Direct3D中计算.首先定义函数PlanMove(int i),在此函数中完成以上功能,其中参数i用于控制平面向前移动还是向后移动.该函数响应鼠标滚轮事件WM_MOUSEWHEEL,当向前滚动时,使移动距离d>0,反之d由于第1和2节已建立从摄像原点到鼠标在世界坐标系对应点的射线和垂直于视线在xz平面上投影的可移动平面,所以下一步只要计算射线与可移动平面的交点,得出交点值,将其作为世界坐标系下待移动物体的新坐标,装入渲染流水线即可完成对物体的移动.交点值的计算过程如下:xc(x-xp1)+yc(y-yp1)+zc(z-zp1)=0x=xOriginRa+xDirectionRa×ty=yOriginRa+yDirectionRa×tz=zOriginRa+zDirectionRa×t式中:t为参数方程的参数.解方程得t=xc(xp1-xOriginRa)+yc(yp1-yOriginRa)+zc(zp1-yOriginRa)xc×xDirectionRa+yc×yDirectionRa+zc×zDirectionRax=xOriginRa+xOriginRa×xc(xp1-xOriginRa)+yc(yp1-yOriginRa)+zc(zp1-yOriginRa)xc×xDirectionRa+yc×yDirectionRa+zc×zDirectionRay=yOriginRa+yOriginRa×xc(xp1-xOriginRa)+yc(yp1-yOriginRa)+zc(zp1-yOriginRa)xc×xDirectionRa+yc×yDirectionRa+zc×zDirectionRaz=zOriginRa+zOriginRa×xc(xp1-xOriginRa)+yc(yp1-yOriginRa)+zc(zp1-yOriginRa)xc×xDirectionRa+yc×yDirectionRa+zc×zDirectionRa此交点值为鼠标射线与移动平面的交点坐标,即待移动物体的新坐标值.将该点装入渲染流水线作为待移动物体的坐标,到此完成物体在三维空间中的移动.2实验结果上述算法在PC机(AMD Athlon 64 Processor 3000+处理器,1 GB内存,NVIDIAGeForce 6600LE显卡)上利用Direct3D 9.0c (AGU2006)图形库实现.在场景中,当物体被拾取到后,通过拖动鼠标可以使物体在初始移动平面上自由移动.当滚动鼠标滚轮,物体可在新建立的移动平面上自由移动从而达到通过鼠标使物体在三维空间中作任意位置移动的目的.图2为相关示例.图 2算法实践3结束语为改进物体在三维空间的移动操作,从建立可移动平面和鼠标射线出发,通过移动可移动平面,使鼠标射线与可移动平面的交点可以到达三维空间中的任意位置,而后将该位置坐标作为待移动物体新坐标放入渲染流水线,完成物体移动.该算法能保证移动的速度与精度,同时也可减少因移动所需的输入设备.实际应用证实该方法切实可行.参考文献:[1]韩晓玲. 虚拟现实技术发展趋向浅析[J]. 多媒体技术及其应用, 2005, 12(2): 549-550.[2]陈定方, 罗亚波. 虚拟设计[M]. 北京: 机械工业出版社. 2007: 2-3.[3]TANI B S, NOBREGA T, dos SANTOS T R. Generic visualization and manipulation framework for three-dimensional medical environments[C]// 19th IEEE Int Symp on Comput-Based Med Systems, USA: IEEE COMPUT Soc, 2006: 27-31.[4]何健鹰, 徐强华, 游佳. 基于OpenGL的一种三维拾取方法[J]. 计算机工程与科学, 2006(1): 45-46.[5]陆国栋, 许鹏, 温星. 基于向量夹角的三维网格模型简化算法[J]. 工程设计学报, 2005,12(2): 124-128.[6]王德才, 杨关胜, 孙玉萍. DirectX 3D 图形与动画程序设计[M]. 北京: 人民邮电出版社, 2007: 85-103.[7]李怀健, 陈星铭. 基于VB获取鼠标按下点的造型空间坐标[J]. 计算机辅助工程, 2008,17(2): 50-53.[8]叶至军. 3D游戏开发引导[M].北京: 人民邮电出版社, 2006: 112-113.[9]金禾工作室. 3D游戏程序设计基础[M]. 北京: 北京希望电子出版社, 2006: 122-126.[10]LIU Z, SHI J Y, PENG H Y.A Direct3D-based large-scale display parallel rendering system architecture for clusters[C]// Advances in Comput Systems Architecture, German: Springer-Verlag, 2005: 24-26.[11]王德才, 杨关胜, 孙玉萍. DirectX 3D 图形与动画程序设计[M]. 北京: 人民邮电出版社, 2007: 590-591.(编辑于杰)。

2d着色器常用算法

2d着色器常用算法

2d着色器常用算法
2D着色器常用的算法有很多种,下面是一些比较常用的算法:
1. 边缘检测算法:这种算法主要用于识别图像中的边缘,以便更好地进行着色处理。

常用的边缘检测算法有Sobel、Prewitt、Canny 等。

2. 形态学算法:形态学算法是一种基于形状的图像处理方法,可以对图像进行膨胀、腐蚀、开运算、闭运算等操作,以便更好地提取和处理图像中的形状和结构。

3. 色彩分离算法:这种算法主要用于将图像中的颜色分离出来,以便对不同的颜色进行着色处理。

常用的色彩分离算法有HLS和HSV 等。

4. 纹理生成算法:这种算法主要用于生成图像中的纹理,以便更好地模拟真实世界的物体表面。

常用的纹理生成算法有Perlin噪声、Simplex噪声等。

5. 光照模型算法:这种算法主要用于模拟光照对图像的影响,以便更好地呈现出物体的表面细节和质感。

常用的光照模型算法有Phong、Blinn-Phong等。

这些算法都是在2D着色器中常用的,通过这些算法的应用,可以更好地处理和呈现出图像中的细节和质感,提高着色的效果和质量。

计算机图形学第5讲 二维填充图元的生成zds

计算机图形学第5讲 二维填充图元的生成zds
SetPixel(x, y, color); }/*end of FillRectangle() */
(xmax, ymax) (xmin, ymin)
5
5.2 扫描转换矩形
问题
矩形是简单的多边形,那么为什么要单独处理矩 形?
与一般多边形相比可简化计算 应用非常多,如窗口系统
共享边界如何处理?
《计算机图形学》课程
第5讲 二维填充图元的生成
主讲教师:张东水
湖南科技大学 地球空间信息研究中心
1
本讲目标
掌握如何绘制填充图元(矩形、多边形等)
扫面转换算法(扫描线算法) 填充算法
2
主要内容
填充图元 扫描转换矩形 扫描转换多边形 扫描转换扇形区域 区域填充 以图像填充区域 字符的表示与输出
3
5.1 填充图元
填充(Filling)图元
矩形(Rectangle) 多边形(Polygon) 扇形(Ellipse Arc)
步骤
确定那些像素位于填充图元的内部 用指定颜色绘制这些像素
两类方法
扫描转换(Scan Converting): 参数->点阵 填充(Filling) : 点阵->点阵
7
5.3 扫描转换多边形
如何识别多边形的凸凹性
方法1:多边形边的延长线是否划分顶点在两侧 方法2:向量的叉积 每条边建立一个向量,测试相邻边的叉积z坐标的正负 (1)如果叉积同号,那么是凸多边形 (2)如果叉积不同号,那么是凹多边形
(E1×E2 )z > 0 (E2×E3 )z > 0 (E3×E5 )z < 0 (E5×E5 )z > 0 (E5×E6 )z > 0 (E6×E1 )z > 0

一种基于SNAM二值图像表示方法的正方形子模式搜索策略

一种基于SNAM二值图像表示方法的正方形子模式搜索策略

一种基于SNAM二值图像表示方法的正方形子模式搜索策略Gong Haixiao;He Jie【摘要】该文在SNAM二值图像表示方法的基础上,提出了一种新的正方形子模式搜索算法,首先详细地描述算法的编码原理及步骤,然后结合实例进行详细的阐述,最后在理论上对算法的数据量、时间复杂度、空间复杂度等几个方面与传统的线性四元树图像表示方法进行比较和分析,结果表明,该搜索策略针对正方形独特的结构特征,是一种性能较优的扫描算法.【期刊名称】《梧州学院学报》【年(卷),期】2018(028)006【总页数】5页(P21-25)【关键词】SNAM;正方形;线性四元树【作者】Gong Haixiao;He Jie【作者单位】;【正文语种】中文【中图分类】TP3910 引言图像表示[1]是图像处理领域中的一个重要的研究方向,随着多媒体技术的发展,图像数据量变得越来越大,为了减少数据存储量和提高处理效率,陈传波教授提出了一种新的图像表示方法,即非对称逆布局模型的图像表示方法[2],该方法不仅解决了四元树等图像表示方法存在的对称分割问题,而且在降低图像的存储空间、提高算法的运算速度等方面都取得了显著的成效。

后续研究者陆续提出了基于矩形、三角形、梯形等的图像表示方法,其中贺杰教授在NAM的基础上提出了基于正方形的非对称逆布局表示方法[3],即SNAM图像表示方法,该方法通过光栅扫描[4]的方式对正方形子模式进行搜索,然后对搜索到的子模式进行逆布局,最终形成了图像的表示。

光栅扫描适用于块状特征不明显的图像,是一种通用的扫描方式,但该扫描策略对SNAM的正方形子模式的搜索具有一定的局限性,因此,作者针对正方形子模式独有的结构特征,提出了对角扫描策略。

1 对角扫描的过程原理对角扫描方式依据正方形独特的结构特征,通过判断对角的两个像素点特征是否一致进行搜索,具体过程为,在二值图像矩阵中的第一行开始找到一个像素值为0且未被标记的点,把此点当基准点A,A的坐标值为(x,y)。

张量投票在边界提取中的应用

张量投票在边界提取中的应用

Keywords
Edge Extraction, Edge Completion, Tensor Voting
张量投票在边界提取中的应用
邵晓芳,魏俊淦
海军航空工程学院青岛校区,山东 青岛
收稿日期:2016年10月19日;录用日期:2016年11月6日;发布日期:2016年11月9日


边界提取是图像处理中的基本问题之一。在分类总结相关工作的基础上,介绍了张量投票方法在边界提
如果图像中含有较强噪声此时若直接进行微商运算将会出现许多虚假边界点因此可以首先采用曲面拟合方法用一个曲面拟合数字图像中要检测点的邻域各像素的灰度然后再对拟合曲面运用微商算子或用一个阶跃曲面拟合数字图像根据其阶跃幅值判断其是否为边界点还可以首先用一个函数与图像卷积平滑噪声然后再对卷积结果运用微商方法提取边界点集
文章引用: 邵晓芳, 魏俊淦. 张量投票在边界提取中的应用[J]. 计算机科学与应用, 2016, 6(11): 638-643. /10.12677/csa.2016.611078
邵晓芳,魏俊淦
取中的应用,并通过实验展示了该方法的边界修复特性。
关键词
边界提取,边界修复,张量投票
Computer Science and Application 计算机科学与应用, 2016, 6(11), 638-643 Published Online November 2016 in Hans. /journal/csa /10.12677/csa.2016.611078
输入数据 二维圆形 投票域
张量投票
边界 显著图
投票解释
边界检测结果
Figure 2. The flowchart for tensor voting to extract the boundary 图 2. 张量投票提取边界的计算流程图

张量分解在特征提取的应用

张量分解在特征提取的应用

张量分解在特征提取方面有着广泛的应用。

张量是高维数据在数学中的扩展,对于高阶或多维数据,例如多维图像或时间序列数据,通常需要使用张量分解来提取特征。

以下是一些张量分解在特征提取应用方面的例子:
1. 图像处理:基于张量的方法可以从图像数据中提取出更加具有区分性和鲁棒性的特征。

以色彩图片为例,可以将不同颜色的张量作为输入,并使用张量分解方法从这些张量中提取出具有区别性的特征。

2. 视频处理:通过对视频数据进行张量分解,可以得到一个三维张量,其中第一维表示时间,另外两个维度则代表空间。

这样,可以从视频序列中提取出更加丰富的特征,例如运动信息和物体形态信息。

3. 医疗诊断:医疗诊断中的数据通常包含了多种不同类型的信息,例如影像数据、生化指标等。

通过将这些数据表示为张量并使用张量分解算法,可以提取出与疾病相关的特征,并为疾病诊断和治疗提供支持。

总之,张量分解在特征提取方面的应用非常广泛,可以用于多个领域的数据分析、模式识别和机器学习任务中。

通过利用张量分解提取出的特征,可以获得更加精确和高效的数据表示和分析方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Software Engineering and Applications 软件工程与应用, 2015, 4, 11-18Published Online April 2015 in Hans. /journal/sea/10.12677/sea.2015.42002Application of Marching Square Algorithm in 2D Tensor VotingXiaofang Shao, Dalong Li, Yan TangQingdao Branch of NAEI, Qingdao ShandongEmail: pugongying_0532@Received: Apr. 3rd, 2015; accepted: Apr. 23rd, 2015; published: Apr. 29th, 2015Copyright © 2015 by authors and Hans Publishers Inc.This work is licensed under the Creative Commons Attribution International License (CC BY)./licenses/by/4.0/AbstractMarching Cube is a classic algorithm applied in 3D medical visualization for its simpleness and practicality. Marching Square algorithm is the 2D version of Marching cube, which is used mainly in extracting isolines. Tensor voting algorithm introduces this algorithm to detect general curves.This paper presents the application of Marching Square in 2D tensor voting. Experimental results show its efficiency and the influence of scale parameter.KeywordsMarching Square, Perceptual Completion, Curve Detection移动正方形算法在2D张量投票中的应用邵晓芳,李大龙,汤燕海军航空工程学院青岛校区,山东青岛Email: pugongying_0532@收稿日期:2015年4月3日;录用日期:2015年4月23日;发布日期:2015年4月29日摘要移动立方体(Marching Cube)算法是三维医学可视化领域应用的经典算法,因其简单实用而得到广泛推移动正方形算法在2D张量投票中的应用广。

移动正方形算法是移动立方体算法的二维版本,传统应用主要体现在等值线提取方面,如今在二维张量投票中得到了扩展,可用于曲线检测。

该文介绍了移动正方形算法在二维张量投票中的应用,并通过实验展示了应用的效果及尺度参数的影响。

关键词移动正方形算法,感知修复,曲线检测1. 引言根据输入的数据类型,我们可将以往有关曲线、区域和三维表面等特征提取的研究工作归为以下几类:正则化方法(Regularization)[1]、松弛标记法(Relaxation Labeling)[2]、鲁棒性方法(Robust Methods)[3]、水平集方法(Level Set Methods) [4]、聚类(Clustering)方法[5]、基于结构显著性(Structural Saliency)的方法[6] [7]、基于视觉竞争合作机制的组织(Grouping with Cooperative and Inhibitive Fields)方法和用于图像修复的一些方法[8]等。

张量投票[7]是一种基于结构显著性的方法,与相关研究工作相比,张量投票方法数据表示方式更为丰富,而且不同结构类型可以在张量投票的计算框架下进行一体化的处理。

张量投票方法因其简单实用而获得广泛的应用。

然而,在张量投票方法的特征提取环节,如果仅做投票解释,得到的会是曲线及其周围一定邻域范围内点的曲线特征显著度;如果进行简单的极值搜索,会因忽略各点取向信息而增大曲线点检测的误差。

另一方面,移动正方形算法[9]自提出以来,其应用一直局限在等值线提取方面。

本文主要介绍移动正方形算法在二维张量投票中的应用,并通过实验说明应用效果及尺度参数的影响。

本文主要内容安排如下:第一节是对移动正方形算法的介绍;第二、节描述张量投票方法中应用移动正方形方法的过程和一些细节问题;第三节是实验结果;最后是结束语。

2. 移动正方形算法移动正方形法是一种二维等值线算法[9],它是移动立方体法(Marching Cube)的基础和依据。

移动立方体法正是移动正方形法的三维引申发展起来的,因其简单实用而得到广泛推广,在生物化学、生物医学、可变形建模、数字雕刻、环境科学、机械动力学、三维可视化及算法分析等领域均有应用[10]。

移动正方形法首先找四个相邻的象素,图1给出了阈值为5的一个例子。

每个象素值有大于阈值和小于阈值两种情况,如果象素值大于阈值用实心圆点表示,如果小于阈值就用圆圈表示。

四个点就有16种组合形式,图2列出了所有的可能组合形式。

每一种形式就是等值线与正方形边之间的一种拓扑关系。

图2中的连线就是等值线的路径。

没有连线的形式说明等值线不与正方形相交。

以图2中case 1为例,该图中左下角的象素值大于给定值,其它三个象素小于给定值,那么可以推断出等值线的一侧是圆圈代表的象素,另一侧是另外三个象素,等值线只能以图中连线所示的这种方式与正方形相交。

等值线与正方形边的交点坐标可以用线性插值求得。

这样当一幅图像中的所有正方形都求出了各自的一段等值线后,这些线段自然而然的就连成一个闭合的等值线。

移动正方形算法如下:1) 在一幅图像中求出所有四个相邻象素点构成的正方形。

2) 判断四个象素值与阈值的关系,生成0101的代码。

3) 由上步生成的代码按照图3所示的关系求出等值线与四个象素点间的拓扑关系。

4) 由拓扑关系,用线性插值法求出等值线与正方形边的交点。

5) 顺序连接等值线段得到等值线。

移动正方形算法在2D 张量投票中的应用Figure 1. An example for Marching Square’s isoline extraction 图1. 移动正方形等值线提取示例Figure 2. Sixteen cases of Marching Square’s iso-surface图2. 移动正方形等值面的16种情况(a) (b) (c) Figure 3. An example for curve maximum extraction图3. 曲线极点提取示例3. 张量投票的特征提取张量投票的主要思想是:曲线和曲面的插值都可以通过收集局部邻域及其取向信息来实现,不连续点和边界也可以通过对邻域取向信息的一致性度量来检测。

在这一方法中,邻域信息通过投票的方式聚集到一起,而取向信息通过矢量场的计算规则进行估计,允许使用类似卷积的方式进行有效的计算,实现数据之间的通信。

这种方法的新颖性在于采用二阶矩来聚集和解释矢量投票。

基于这一思想,张量投票方法主要由两部分组成:数据的张量表示和数据间以非线性投票方式进行信息传递,这里的数据由空间点组成,空间的维数不限。

张量投票方法还涉及到显著性的概念,其显著性的主要涵义是视觉上能够迅速引起观察者的注意的一种“突出性”。

从模糊数学角度来看,对表示图像数据的张量而言,其具有某一特征的显著性度量可以理解为该张量具有这种特征的置信度。

然而,在张量投票方法的特征提取环节,如果仅做投票解释,得到的会是曲线及其周围一定邻域范围内点的曲线特征显著度;如果进行简单的极值搜索,会因忽略各点取向信息而增大曲线点检测的误差。

因此,可在其特征提取环节,引入移动正方形算法,辅助完成曲线检测。

0 1 1 3 21321 3 6 6 37 9 7 37 8 6 2234 3Case 0 Case 1 Case 2Case 3 Case 4 Case 5Case 6 Case 7Case 8 Case 9 Case 10 Case 11 Case 12 Case 13 Case 14 Case 155 10 15 20 25 30 35 40 45 5010.90.80.70.60.50.40.30.20.10A B l 沿AB 的强度Strength along AB移动正方形算法在2D 张量投票中的应用为便于说明,首先给出以下定义:定义1 曲线极点[1]:给定某一投票结果的曲线特征显著程度图,设其中每一元素可以用一个二元组()ˆ,s t 表示,其中s 表示强度大小(即对应于23λλ−),ˆt 表示切向(即对应于3e ),u ,v 表示与ˆt 垂直的平面,R 表示将某一三维矢量旋转到u -v 平面的操作(具体来说就是使三维矢量(),,x y z q q q q =满足d d x s q u ⇔,d d y s q v⇔,0z q =),令[]T g s x s y s z =∂∂∂∂,我们称某一点为曲线极点当且仅当该点满足以下条件:1) s 是局部极值点 2) 0s u s v ∂=∂=3) ()ˆ0q R t g ×即曲线上的点的显著性s 应在该点的切线方向上有局部极大值,而在与切线垂直的平面上分量最小。

曲线即是由一个个的曲线极点组成的,张量投票应用移动正方形算法搜索曲线极点。

图3给出了曲线极点的示例说明[1],其中图3(a)为对计算机产生的圆环点集的投票计算结果;图3(b)是沿3(a)中A 、B 两点的法线方向计算直线l 上各点矢量域强度的大小,可见A 、B 两点处各有一个峰值,根据极值搜索即可得到曲线极点的位置;图3(c)是将所有曲线极点连接起来而成的曲线。

图4给出了曲线极点的微分求解过程,曲线极点即为两个方向上微分过零点连线的交线[1]。

下面首先给出离散情况下提取曲线极点时需计算的参量,然后给出算法流程。

离散情况下,q 的计算公式为:(),,,,,,ˆi j k i j k i j k q R t g =× (1)式中,R 定义了一个将某一平面旋转至平行于u -v 平面的旋转矩阵。

从上式可以看出,所有的,,i j k q 的集合{},,i j k q 组成一个矢量数组,而这个域可以用文献[2]提出的算法改进后进行处理,在这里我们与张量投票的提出者保持一致,将这一算法简称为SingleSubVoxelCMatch [1],其原理如图3,图4所示,而曲线极值搜索的整个算法流程如图5 [2]所示,算法首先根据s 值的大小挑选出可能构成曲线的“种子”元素,然后对超过高门限的元素应用SingleSubVoxelCMatch 算法进行处理,判断其是否曲线极点,直到被处理元素的s 值小于低门限则停止搜索,再退回到种子点处向相反方向重复同样处理过程,直至所有“种子”元素均被处理过为止,最终输出图像中存在的曲线。

相关文档
最新文档