本发明涉及计算机图形技术领域与计算机图像技术领域,是一种移植二维图像中角色的姿态的方法,能让一个角色模仿目标角色的姿态。
背景技术:
姿态移植技术为基于例子的图形形变提供了简单,自动的形变方法,可以减少艺术家创作时许多重复工作。与之相比,其余的图形形变方法需要很多用户操作。当前的姿态移植工作如[1]的处理对象大多是三维的纯图形,很少工作给出二维角色进行姿态移植的完整解决方案。然而所有的图像都是二维的,在如卡通绘画等工作中,二维图像中角色的姿态移植很有需求。本发明我们提出了一个利用拉普拉斯框架工具与骨骼蒙皮的方法来实现了2维图像中角色的姿态移植。在很多姿态移植的相关工作中,存在着无法保持图形的平缓趋势的问题,如角色的胖瘦属性等,我们方法利用二维形状的骨骼信息解决了这个问题。姿态移植工作有两个方向,一个在空域上对图形的处理,另一个在频域上对图形进行处理。
在频谱方面的几何处理工作里,拉普拉斯框架被广泛的运用,2006年lévyetal.在论文laplace-beltramieigenfunctionstowardsanalgorithmthat"understands"geometry提出了一个用转移低频基上的投影系数进行姿态移植的方法,但此方法局限性是在移植姿态的两个图形间的差别大时效果不好,因为其要求两个几何图形的基要相似,kovnatskyetal.2013年在论文coupledquasi‐harmonicbases解决这个问题时,先将三图形的基耦合,再进行姿态移植。他的局限是只限于三维图形,对于二维时没法保持图像轮廓内部,并且算法复杂,运算成本高。以上两个基于频域的姿态移植方法都有一个缺陷,难以在姿态移植结果中保持原始图形的平缓趋势的属性,如角色的胖瘦属性等
在空域上面进行姿态移植的工作里,sumneretal.2004年在deformationtransferfortrianglemeshes提出将目标模型的三角网格的形变转移到原模型的的三角网格上,同时加上几何约束来保持原始模型的自身特性。zhouetal.提出一个方法来传递多目标对象的形变量,zhaoetal.的dual‐domaindeformationtransferfortriangularmeshes文章改进将此方法将处理过程放入复平面内。yangetal.的deformationtransferbasedonstretchinessratio在原始网格与目标网格间传递伸张系数来实现传递网格的形变量。上述方法传递的是目标模型中网格的形变量而非姿态,并且他们是基于3维图形的方法,不适用与二维角色的姿态移植。
技术实现要素:
本发明我们提出了一个结合了拉普拉斯框架工具与骨骼形变的方法来实现了2维图像中角色的姿态移植,克服了现有技术的不足。
本发明至少通过如下技术方案之一实现。
一种移植二维图像角色姿态的方法,其包括如下步骤:
1)输入是包含了原始角色与目标角色的图像集合;用canny边缘检测算子提取各个角色,并且将图像转化为图形;
2)用拓扑拉普拉斯算子处理步骤1)所得到的图形边界,将原始角色图形与目标角色图形分解为高频的边缘细节与低频的躯体;
3)基于步骤2)的原始角色与目标角色低频躯体,提取骨骼,将原始角色与目标角色的骨骼匹配,并且参照目标角色的骨骼,在保持原始角色躯体的拉普拉斯坐标不变约束下,对原始角色的躯体进行基于骨骼的形变;
4)基于步骤2)的原始角色的躯体与步骤3)形变后的原始角色的躯体,利用拉普拉斯坐标约束与轮廓长度约束保持躯体的几何特征;
5)基于步骤4)的形变后并保持了几何特征的原始角色的躯体与步骤2)的原始角色的高频边缘细节,将边缘细节根据原始角色躯体的形变进行等角变换并与原始角色的躯体组合,结果为移植了目标角色的姿态的原始角色。
进一步地,所述的步骤1)中,先用canny边缘检测方法找到角色的外部边缘,并将边缘的像素按顺时针方向转化为图形的边界点;在图形的配准上,用户需要在两个角色对应的六个部分上各选取一个匹配点,其中头、双手、双脚共五个部分,命名为末端点,角色的中心部分,命名为中心点;根据在边界上的匹配点,将两个角色边界重新划分成多段,保证两个图形边界上每两个匹配点间的点数相同,从而达到匹配的目的。
进一步地,所述的步骤2)中,用拓扑拉普拉斯算子处理图形边界,将图形分为高频细节与低频躯干两部分,vi坐标的拓扑拉普拉斯算子公式:
其中n(i)是第i个顶点的相邻节点集合。j为集合n(i)的元素,指第i个顶点的某个邻接节点序号。di为顶点的度数,且di=|n(i)|=2。顶点i与j的拉普拉斯权重:
拉普拉斯权重矩阵w为:w=(ωij),于是将笛卡尔坐标系上坐标转为拉普拉斯坐标的拉普拉斯转换矩阵l为:l=i-w;其中i为单位矩阵。
定义矩阵ls=d*l,d是对角矩阵,于是ls是对称半正定矩阵,经过特征分解有:
ls=λ*ε,(ε={ε1,ε2,…,εn},0=λ1≤λ2≤…≤λn)
其中λi为特征值,εi为特征向量,1≤i≤n,n为图形的边界点数量。osorkine于2005发表的论文laplacianmeshprocessing中提出,将每对特征向量与特征值按照特征值从小到大排序,图形的低频部分会对应前序特征向量,高频部分对应后序特征向量。所以低频躯干上的顶点坐标voutline可表示如下:
voutline=α1ε1+α3ε2+…+αkεk
αi是角色的图形边界点坐标在特征向量εi的投影,其中1≤i≤k,k为用户自定的分割参数;取前k个特征值与特征向量的乘积的和为角色的低频躯干,k以后的特征值与特征向量的乘积的和表示角色的高频细节μdetail:
μdetai1=αk+1εk+1+αk+1εk+1+…+αnεn。
进一步地,所述的基于步骤2)的原始角色与目标角色低频躯体,提取骨骼,基于步骤1)中用户选择的匹配点,将原始角色与目标角色的骨骼匹配。我们用细化算法(zhang于1984在communicationsoftheacm发表的afastparallelalgorithmforthinningdigitalpatterns论文)找到原始角色与目标角色低频躯体的骨骼,命名为a与b。同时用角点检测算法(shi于1993年在technicalreport发表的goodfeaturestotrack论文)找到b骨骼的特征点b1,b2,…bn。对于b骨骼,把离目标角色中心点最近的特征点记为bc,离目标角色五个末端点最近的特征点记为
其中d(ai,ac)意为点ai到ac在骨骼上的测地距离,
ai=ω1ai+ω2a′i
其中ai为a骨骼的特征点。ω1,ω2为用户自定义的权重,满足ω1+ω2=1。
进一步地,步骤(3)所述参照目标角色的骨骼,对原始角色的躯体进行基于骨骼的形变,将a骨骼,b骨骼各个特征点对应后,用特征点把骨骼分段,对于a与b骨骼的各个对应分段,可以得到将a的分段几何变换到b骨骼对应分段的变换矩阵mi,然后对于原始图形躯干上的所有点包括轮廓点与内部点,结合a骨骼的变换矩阵,应用复四元数骨骼蒙皮算法(ladislavkavan于2007在symposiumoninteractive3dgraphicsandgames发表的skinningwithdualquaternions论文),得到基于骨骼的形变结果。
进一步地,所述的步骤4)中,基于步骤2)的原始角色的躯体与基于步骤3)形变后的原始角色的躯体,利用拉普拉斯坐标约束与轮廓长度约束保持躯体的几何特征,优化步骤3)形变后的原始角色的躯体;对于原始角色的躯体内部点vi,取离它距离最近的两个内部点作为邻接点集合n(i)。对于原始角色的躯体边界上的点,与它相邻的两个边界点作为邻接点集合n(i)。拉普拉斯坐标为:
j为集合n(i)的元素,vj为点vi的邻接点,将各点与其邻接点相连,记录下各个连接边长;
li=||vi-vi-1||
保持拉普拉斯坐标与边长不变,用能量方程表示为:
mine=||l′-l||2+||δ′o-δo||2,
其中e为要最小的能量目标值,l与l′分别是原始角色躯体形变前后的各段边长,δo与δ′o分别是原始角色躯体形变前后的各内部点的拉普拉斯坐标,用高斯牛顿迭代法求解能量方程,得到结果是保持了几何特征的原始角色的形变后躯体。
进一步地,所述的步骤5)中,基于步骤4)的形变后并保持了几何特征的原始角色的躯体与步骤2)的原始角色的高频的边缘细节,将边缘细节根据原始角色的躯体的变换进行等角变换并与原始角色的躯体组合,结果为移植了目标角色的姿态的原始角色;步骤2)中μdetail代表了从角色的躯体上的点到角色细节的对应点的向量。对于躯体边界上的顶点vi,定义其所在向量为σi,其中
σi=vi+1-vi-1
vi+1与vi-1分别代表vi的两个邻接点。计算经过步骤3)、4)后躯体形变所对应的躯体边界上的各个向量σi的旋转矩阵ri,将其应用到原始角色的细节μdetail中,达到对细节保角变换的目的,
μ′detail=rμdetail
μ′detail代表保角变换后的原始角色的细节部分,是向量的形式。于是将步骤4)的中的形变原始角色躯体的轮廓与保角变换后的细节相加,重构完整的姿态移植后的原始角色:
vcontour=voutline+μ′detail
其中vcontour为重构的边界,voutline为形变后的原始角色躯体。
与现有技术相比,本发明的有益效果如下:
1.本发明对二维角色的姿态移植,让角色内部能跟随姿态变化,进行的形变,传统姿态移植方法极少考虑二维角色内部形变的情况,本发明补充了此领域的工作。
2.本发明利用二维形状的骨骼信息,在进行姿态移植时能够很好保持原角色的自身特征,如角色的边缘细节,角色的胖瘦等属性,解决了传统姿态移植方法丢失原始角色自身信息的问题,结果更符合用户期望。
3.本发明采用分步骤的姿态移植方法,可以由用户控制角色的姿态提取,增加了过程的可控性。
附图说明
图1为本发明的流程图。
图2分别为包含原始角色的图像(左边)和包含目标角色的图像(右边)。
图3分别为图形原始角色的边界(左边)和经步骤2)的处理得到图(右边,取k=60,)原始角色的低频躯干的边界。
图4为骨骼特征点的匹配结果图。
图5分别为原始角色的躯体(左)、目标角色的躯体边界(中)、经过步骤3)与步骤4)后参照目标角色骨骼进行了形变并且保持了原有的几何特征的原始角色躯体图(右)。
图6分别为原始角色(左)目标角色(中)、姿态结果(右)图。
图7分别为原始角色(左)、目标角色(中)、姿态移植结果(右)图。
图8分别为原始角色(最左上)、目标角色(右上5个图形)、移植结果(右下五个图形)图。
具体实施方式
以下结合附图和实例发明的具体实施作进一步说明,但本发明的实施和保护不限于此。
一种在移植二维图像角色的姿态的方法,包括如下步骤:1)输入是包含了原始角色与目标角色的图像集合。用canny边缘检测算子提取各个角色,并且将图像转化为图形;2)用拓扑拉普拉斯算子处理图形边界,将原始角色图形与目标角色图形分解为高频的边缘细节与低频的躯体;3)基于步骤2)的原始角色与目标角色低频躯体,提取骨骼,将原始角色与目标角色的骨骼匹配,并且参照目标角色的骨骼,在保持原始角色躯体的拉普拉斯坐标不变约束下,对原始角色的躯体进行基于骨骼的形变;4)基于步骤2)的原始角色的躯体与基于步骤3)形变后的原始角色的躯体,利用拉普拉斯坐标约束与轮廓长度约束保持躯体的几何特征。5)基于步骤4)的形变后并保持了几何特征的原始角色的躯体与步骤2)的原始角色的高频边缘细节,将边缘细节根据原始角色躯体的形变进行等角变换并与原始角色的躯体组合,结果为移植了目标角色的姿态的原始角色。
下面通过实施例,结合图1的流程图,详细讲述每步的实施过程。
步骤1)先用canny边缘检测方法找到角色的外部边缘,并将边缘的像素按顺时针方向转化为图形的边界点。在图形的配准上,用户需要在两个角色对应的六个部分上各选取一个匹配点,头,双手,双脚五个部分,命名为末端点,与角色的中心部分,命名为中心点。根据在边界上的匹配点,我们将两个角色边界重新划分成多段,保证两个图形边界上每两个匹配点间的点数相同,从而达到匹配的目的。图2为左边包含原始角色的图像,右边为包含目标角色的图像,对其进行步骤1)的处理。
步骤2)用拓扑拉普拉斯算子处理图形边界,将图形分为高频细节与低频躯干两部分。边界点i的拓扑拉普拉斯算子公式:
其中n(i)是第i个顶点的相邻节点集合。j属于集合n(i)的元素,指第i个顶点的某个邻接节点序号。di为顶点的度数,且di=|n(i)|=2。顶点i与j的拉普拉斯权重ωij:
l=i-w
定义矩阵ls=d*l,d是对角矩阵,于是ls是对称半正定矩阵,经过特征分解有:
ls=λ*ε,(ε={ε1,ε2,…,εn},0=λ1≤λ2≤…≤λn)
其中λi为特征值,εi为特征向量,1≤i≤n。将每对特征向量与特征值按照特征值从小到大排序。低频躯干上的顶点坐标可表示如下:
voutline=α1ε1+α2ε2+…+αkεk
αi是角色的图形边界点坐标在特征向量εi的投影,1≤i≤k。取前k个特征值与特征向量的乘积的和为角色的低频躯干,k以后的特征值与特征向量的乘积的和表示角色的高频细节μdetail。
μdetail=αk+1εk+1+αk+1εk+1+…+αnεn
图3左边图形为原始角色的边界,将其经过步骤2)的处理,取k=60,得到图3右边图形为原始角色的低频躯干的边界。
步骤3)中,基于步骤2)的原始角色与目标角色低频躯体,提取骨骼,基于步骤1)中用户选择的原始角色与目标角色的已匹配点,将原始角色与目标角色的骨骼匹配。参照目标角色的骨骼,对原始角色的躯体进行基于骨骼的形变。
其中,步骤3)中的骨骼匹配部分:基于步骤2)的原始角色与目标角色低频躯体,我们用细化算法(zhang于1984在communicationsoftheacm发表的afastparallelalgorithmforthinningdigitalpatterns论文)找到原始角色与目标角色低频躯体的骨骼,命名为a与b。同时用角点检测算法(shi于1993年在technicalreport发表的goodfeaturestotrack论文)找到b骨骼的特征点b1,b2,…bn。对于b骨骼,把离目标角色中心点最近的特征点记为bc,离目标角色五个末端点最近的特征点记为
其中d(ai,ac)意为点ai到ac在骨骼上的测地距离,
ai=ω1ai+ω2a′i
其中ai为a骨骼与b骨骼匹配的特征点。ω1,ω2为用户自定义的权重,ω1,ω2满足ω1+ω2=1。
骨骼特征点的匹配结果如图4所示。取ω1=0.7,ω2=0.3。其中左边的图形为原始角色的骨骼与特征点,右边图形为目标角色的骨骼与特征点.
步骤3)中的骨骼形变部分,参照目标角色的骨骼,对原始角色的躯体进行基于骨骼的形变。将a骨骼,b骨骼各个特征点对应后,用特征点把骨骼分段。我们目的是将a骨骼依照b骨骼进行形变,对于a与b骨骼的各个对应分段,可以得到将a的分段几何变换到b骨骼对应分段的变换矩阵mi。
对于原始图形躯干上的所有点(轮廓点与内部点)v,定义其与骨骼段的距离为其到骨骼段中点的距离。记与v距离最短的骨骼段为s0,与骨骼段s0相邻的骨骼段中,记与v最近的骨骼段为s1,把s0与s1作为v的关联骨骼,对应权重为ωs0,ωs1。
ωs0+ωs1=1
我们取ωs0=0.7,ωs1=0.3。结合a骨骼的变换矩阵,应用复四元数骨骼蒙皮算法(ladislavkavan于2007在symposiumoninteractive3dgraphicsandgames发表的skinningwithdualquaternions论文),得到基于骨骼的形变结果。
步骤4)中,基于步骤2)的原始角色的躯体与基于步骤3)形变后的原始角色的躯体,利用拉普拉斯坐标约束与轮廓长度约束保持躯体的几何特征,优化步骤3)形变后的原始角色的躯体;对于步骤2)原始角色的躯体内部点,取与它距离最近的两个点作为其邻接点,对于原始角色的躯体边界上的点,与它相邻的两个边界点作为邻接点。拉普拉斯坐标为:
j为集合n(i)的元素,vj为点vi的邻接点,将各点与其邻接点相连,记录下各个连接边长:
li=||vi-vi-1||
保持拉普拉斯坐标与边长不变,用能量方程表示为:
mine=||l′-l||2+||δ′o-δo||2
其中e为要最小的能量目标值,l与l′分别是原始角色躯体形变前后的各段边长,δo与δ′o分别是原始角色躯体形变前后的各内部点的拉普拉斯坐标。用高斯牛顿迭代法求解能量方程,得到结果是保持了几何特征的原始角色的形变后躯体。虽然其中边长是非线性部分,但推导后表达式简单。
定义关于点坐标的函数f,把能量方程分解为函数f的积,其中xi为点的坐标,有1≤i≤n。
e=f(x)tf(x)
为方便表示,记x为包含所有点坐标的矩阵,每次迭代更新x。
j(x)是函数f对坐标x的雅克比矩阵,ε为每次更新时x的迭代方向。t为步长,初始值为1,每次迭代
同样,
对于拉普拉斯坐标的约束是线性约束,雅克比矩阵的项包含v′i(x′i,y′i)与其两个邻接点v′i+1(x′i+1,y′i+1),v′i-1(x′i-1,y′i-1)。
对于y′i,y′i-1与y′i+1,情况相似。图5所示,左边为原始角色的躯体,中间为目标角色的躯体边界,右边为经过步骤3)与步骤4)后,参照目标角色骨骼进行了形变并且保持了原有的几何特征的原始角色躯体。步骤5)中,基于步骤4)的保持了几何特征后的原始角色的躯体与步骤2)的原始角色的高频的边缘细节,将边缘细节根据原始角色的躯体的变化进行等角变换并与原始角色的躯体组合,结果为移植了目标角色的姿态的原始角色。步骤2)的原始角色的高频的边缘细节的点与原始角色低频躯体上的点一一对应,μdetail代表了从角色的躯体上的点到角色细节的对应点的向量。对躯体上的顶点vi,定义其所在向量为σi。
σi=vi+1-vi-1
可得到步骤2)形变前的原始角色躯体上所有向量σ相对于步骤4)的中的保持了几何特征后的原始角色的各向量的旋转量,转换为旋转矩阵r,将原始角色的细节向量μdetail进行同样的旋转,达到对细节保角变换的目的。
μ′detail=rμdetail
μ′detail代表保角变换后的原始角色的细节部分,是向量的形式。于是将步骤4)的中的形变原始角色躯体的轮廓与保角变换后的细节相加,重构完整的姿态移植后的原始角色:
vcontour=voutline+μ′detail
vcontour为原始角色边缘的姿态移植结果,voutline为步骤4)的保持了几何特征后的原始角色,其内部的图形在之前步骤已经处理完,组合后为原始角色姿态移植结果。图6最右列为姿态结果,最左列为原始角色,中间列为目标角色。更多的例子如图7,最左列为原始角色,中间列为目标角色,最右列为姿态移植结果;图7分别为原始角色(左)、目标角色(中)、姿态移植结果(右)图。图8中,最左上图形为原始角色,右上5个图形为目标角色,右下五个图形为移植结果。