发明名称 基于异构特征降维的二维角色卡通生成方法
摘要 本发明公开了一种基于非负风格分解的风格化二维卡通生成方法。本发明利用了机器学的知识,实现了基于非负风格分解的风格化二维卡通生成的功能。首先输入二维卡通动画人物的二维卡通关键帧序列,系统提取对应的二维骨骼特征表达式,并分解成二维卡通动作的风格基向量和隐组件;将得到的风格基向量与异构的隐组件结合来重新生成具有特定卡通动画人物风格的二维骨骼特征表达式,并驱动二维卡通动画人物的形体形成风格化的二维卡通关键帧。本发明通过分解二维卡通动作至风格基向量与隐组件,减少了传统方法分离动作本体与风格带来的实施困难;同时解决了传统非负矩阵分解方法不能保持卡通数据基于语义连贯性的问题,提高了准确性、扩大了应用范围。
申请公布号 CN102231209B 申请公布日期 2014.04.16
申请号 CN201110107099.1 申请日期 2011.04.19
申请人 浙江大学 发明人 肖俊;梁璋;庄越挺
分类号 G06T13/80(2011.01)I 主分类号 G06T13/80(2011.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 张法高
主权项 1.一种基于非负风格分解的风格化二维卡通生成方法,其特征在于它的步骤如下:1)从某个二维卡通动画人物的二维卡通视频中提取包含卡通人物完整动作的视频段,对视频段经过视频图像技术处理后,利用自定义的关键帧提取方法提取卡通人物的二维卡通关键帧序列,并对二维卡通关键帧序列进行归一化与中心化处理;对经过处理的二维卡通关键帧序列利用自定义的特征提取方法,获得对应的二维骨骼特征表达式;获得几个二维卡通动画人物对应的二维骨骼特征表达式,并对这些二维骨骼特征表达式按照自定义的动作类别进行分类,建立二维卡通人物的动作数据库;2)针对某个二维卡通动画人物的二维骨骼特征表达式,利用自定义的非负风格分解的目标函数及其解法,通过迭代的求取方法来获得该二维骨骼特征表达式对应的风格基向量和隐组件;利用已获得的隐组件,通过二次函数求导的方式,获得对应的保持基于语义理解的降维矩阵;3)按照用户指定需要进行生成二维卡通动作的二维卡通动画人物,从二维卡通动画人物的动作数据库中提取对应的二维骨骼特征表达式,用非负风格分解方法获得对应的隐组件,并与别的二维骨骼特征表达式用非负风格分解方法获得的风格基向量进行重合成,形成异构的二维骨骼特征表达式;用异构的二维骨骼特征表达式按照自定义的特征点驱动方法,通过关键点形变技术来获得某二维卡通动画人物风格化的二维卡通关键帧进而获得基于非负风格分解的风格化二维卡通;所述步骤1)包括:从某个二维卡通动画人物的二维卡通视频中,提取包含卡通人物完整动作的视频段V<sub>cart</sub>,对V<sub>cart</sub>进行傅里叶变化降噪处理,消除背景以及视频噪声对于后面处理的影响;从V<sub>cart</sub>中渲染出来的视频帧,利用Hausdorff距离算法获得卡通视频序列中帧与帧之间的距离矩阵M<sub>cart</sub>=R<sup>n×n</sup>,其中n为V<sub>cart</sub>所渲染出来的帧数量,<img file="FSB0000116853520000011.GIF" wi="134" he="87" />表示卡通视频帧中第i帧和第j帧之间的Hausdorff距离,矩阵M<sub>cart</sub>中的每一项分别乘以系数<img file="FSB0000116853520000012.GIF" wi="470" he="148" />来完成Hausdorff距离的归一化处理,其中的d<sub>cart_max</sub>为矩阵M<sub>cart</sub>中的最大值,在获得经过归一化的M<sub>cart</sub>之后,按照设定的阈值<img file="FSB0000116853520000021.GIF" wi="118" he="59" />来过滤矩阵中的对角值,分别将得到的<img file="FSB0000116853520000022.GIF" wi="320" he="72" />所对应的第i帧作为关键帧,由此得到二维卡通关键帧序列<img file="FSB0000116853520000023.GIF" wi="484" he="68" />其中m为关键帧的数量;针对已经获得的二维卡通关键帧序列<img file="FSB0000116853520000024.GIF" wi="485" he="75" />定义A<sub>i</sub>为每一帧关键帧<img file="FSB0000116853520000025.GIF" wi="104" he="71" />对应的包含有二维卡通动画人物完整轮廓的区域面积,定义常量C<sub>a</sub>,对于二维卡通关键帧序列中的每一帧关键帧<img file="FSB0000116853520000026.GIF" wi="119" he="71" />经过如下的公式来获得归一化大小至C<sub>a</sub>的关键帧:<maths num="0001"><![CDATA[<math><mrow><msubsup><mi>I</mi><mi>cart</mi><mi>i</mi></msubsup><mo>=</mo><msubsup><mi>I</mi><mi>cart</mi><mi>i</mi></msubsup><mo>&times;</mo><mfrac><msub><mi>A</mi><mi>i</mi></msub><msub><mi>C</mi><mi>a</mi></msub></mfrac><mo>-</mo><mo>-</mo><mo>-</mo><mn>1</mn></mrow></math>]]></maths>通过公式1获得经过归一化的关键帧序列<img file="FSB0000116853520000028.GIF" wi="484" he="70" />针对序列中的每一帧关键帧<img file="FSB0000116853520000029.GIF" wi="119" he="71" />利用Sobe1轮廓提取方法获得其对应的A<sub>i</sub>中的二维卡通动画人物完整的轮廓边缘,在轮廓边缘随机取样t个点,计算该t个点的几何坐标中心<img file="FSB00001168535200000210.GIF" wi="273" he="72" />以及该几何坐标中心与图像中心点之间的坐标位移<img file="FSB00001168535200000211.GIF" wi="354" he="72" />将A<sub>i</sub>按照坐标位移<img file="FSB00001168535200000212.GIF" wi="339" he="71" />进行平移,从而完成<img file="FSB00001168535200000213.GIF" wi="100" he="71" />的中心化处理,对关键帧依次经过处理,获得经过中心化的关键帧序列<img file="FSB00001168535200000214.GIF" wi="494" he="69" />针对完成归一化和中心化的二维卡通关键帧序列<img file="FSB00001168535200000215.GIF" wi="483" he="70" />针对每一帧关键帧<img file="FSB00001168535200000216.GIF" wi="120" he="71" />按照二维卡通动画人物的肢体体征,在二维卡通动画人物的头部、四肢、躯干各部分取关键点总计17个,获得该关键帧对应的二维骨骼特征表达向量<maths num="0002"><![CDATA[<math><mrow><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mo>[</mo><msubsup><mi>x</mi><mi>i</mi><mn>1</mn></msubsup><mo>,</mo><msubsup><mi>y</mi><mi>i</mi><mn>1</mn></msubsup><mo>,</mo><msubsup><mi>x</mi><mi>i</mi><mn>2</mn></msubsup><mo>,</mo><msubsup><mi>y</mi><mi>i</mi><mn>2</mn></msubsup><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msubsup><mi>x</mi><mi>i</mi><mn>17</mn></msubsup><mo>,</mo><msubsup><mi>y</mi><mi>i</mi><mn>17</mn></msubsup><mo>]</mo><mo>,</mo></mrow></math>]]></maths>其中<img file="FSB00001168535200000218.GIF" wi="45" he="88" />和<img file="FSB00001168535200000219.GIF" wi="49" he="88" />是关键帧<img file="FSB00001168535200000220.GIF" wi="102" he="71" />第j个关键点的x与y坐标;针对二维卡通关键帧序列<img file="FSB00001168535200000221.GIF" wi="485" he="70" />获得其对应的二维骨骼特征表达式X=[X<sub>1</sub>,X<sub>2</sub>,…X<sub>m</sub>]∈R<sup>m×d</sup>,其中每一帧关键帧<img file="FSB00001168535200000222.GIF" wi="102" he="71" />由对应的二维骨骼特征表达向量X<sub>i</sub>来表示,d为特征的维度;获得属于不同二维卡通动画人物的二维骨骼特征表达式X,形成二维骨骼表达式集合<img file="FSB00001168535200000223.GIF" wi="336" he="72" />其中变量char表示二维卡通动画人物的种类,t表示二维卡通动画人物的数量;将二维骨骼表达式集合<img file="FSB00001168535200000224.GIF" wi="321" he="71" />按照二维卡通人物动作的不同分为r类,从而建立二维卡通人物的动作数据库;所述步骤2)包括:对于某个二维卡通动画人物的二维骨骼特征表达式X,按照如下的目标函数来进行非负风格分解以及求取保持基于语义理解的降维矩阵W:<maths num="0003"><![CDATA[<math><mrow><mi>C</mi><mrow><mo>(</mo><mi>U</mi><mo>,</mo><mi>V</mi><mo>,</mo><mi>W</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>min</mi><mrow><mi>U</mi><mo>,</mo><mi>V</mi><mo>,</mo><mi>W</mi></mrow></msub><mfrac><mn>1</mn><mn>2</mn></mfrac><msubsup><mrow><mo>|</mo><mo>|</mo><mi>X</mi><mo>-</mo><mi>UV</mi><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup><mo>+</mo><mi>&alpha;</mi><msub><mi>&Sigma;</mi><mi>ij</mi></msub><msub><mi>V</mi><mi>ij</mi></msub><mo>+</mo><mi>&beta;</mi><msubsup><mrow><mo>|</mo><mo>|</mo><mi>W</mi><mover><mi>V</mi><mo>~</mo></mover><mo>-</mo><mi>Y</mi><mo>|</mo><mo>|</mo></mrow><mi>F</mi><mn>2</mn></msubsup><mo>-</mo><mo>-</mo><mo>-</mo><mn>2</mn></mrow></math>]]></maths>其中权值α≥0和β≥0为复杂平衡度系数;矩阵U=[u<sub>1</sub>,u<sub>2</sub>,…,u<sub>d</sub>]∈R<sup>m×d</sup>以它的每个列向量作为风格基向量,矩阵V=[v<sub>1</sub>,v<sub>2</sub>,…,v<sub>m</sub>]<sup>T</sup>∈R<sup>d×d</sup>包含每个风格基向量所对应的隐组件,在该目标函数中所要遵循的约束条件是U<sub>ij</sub>≥0且V<sub>ij</sub>≥0,并且||u<sub>i</sub>||=1;矩阵Y=[y<sub>1</sub>,y<sub>2</sub>,…,y<sub>m</sub>]<sup>T</sup>∈{0,1}<sup>m×r</sup>为分类信息真实值矩阵,r为分类的数量,其中当X<sub>i</sub>属于第l类的时候,那么Y<sub>il</sub>的值为1,否则为0;矩阵<img file="FSB00001168535200000310.GIF" wi="44" he="69" />为矩阵V=[v<sub>1</sub>,v<sub>2</sub>,…,v<sub>m</sub>]<sup>T</sup>的重构矩阵,重构过程如下:定义矩阵<img file="FSB0000116853520000032.GIF" wi="421" he="99" />集合<img file="FSB0000116853520000033.GIF" wi="160" he="66" />为矩阵M的前r个的特征向量,则矩阵<img file="FSB0000116853520000034.GIF" wi="39" he="55" />为集合<img file="FSB0000116853520000035.GIF" wi="158" he="66" />按照如下定义方式的线性组合:<img file="FSB0000116853520000036.GIF" wi="1696" he="73" />其中<img file="FSB0000116853520000037.GIF" wi="369" he="61" />为线性组合中的非负权值;求解最优的U和V的解法需要通过迭代来完成,算法如下:1.初始化:初始U<sup>0</sup>和V<sup>0</sup>,按照前面的约束条件,这里U<sup>0</sup>和V<sup>0</sup>必须保持非负,同时||u<sub>i</sub>||=1;2.迭代:按照下面的步骤迭代U<sup>t</sup>和V<sup>t</sup>至收敛:a)U′=U<sup>t</sup>-ε(U<sup>t</sup>V<sup>t</sup>-X)(V<sup>t</sup>)<sup>T</sup>b)如果有U′<sub>ij</sub><0,那么设置U′<sub>ij</sub>=0c)将||u′<sub>i</sub>||缩放至1,同时设置U<sup>t+1</sup>=U′d)V<sup>t+1</sup>=V<sup>t</sup>.*((U<sup>t+1</sup>)<sup>T</sup>X)./((U<sup>t+1</sup>)<sup>T</sup>(U<sup>t+1</sup>)V<sup>t</sup>+ε)e)自增t算法中运算符号.*和./分别表示分子间乘法和分子间除法;在通过迭代算法获得了最优的V以及对应的重构矩阵<img file="FSB0000116853520000038.GIF" wi="41" he="57" />以后,通过二次函数求导的方式,获得对应的保持基于语义理解的降维矩阵W,公式如下:<maths num="0004"><![CDATA[<math><mrow><mi>W</mi><mo>=</mo><mi>Y</mi><msup><mover><mi>V</mi><mo>~</mo></mover><mi>T</mi></msup><msup><mrow><mo>(</mo><mover><mi>V</mi><mo>~</mo></mover><msup><mover><mi>V</mi><mo>~</mo></mover><mi>T</mi></msup><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>-</mo><mo>-</mo><mo>-</mo><mn>4</mn><mo>;</mo></mrow></math>]]></maths>所述步骤3)包括:按照用户指定需要进行生成二维卡通动作的二维卡通动画人物char=1,首先按照步骤1)所述的二维卡通动画人物的动作数据库中提取对应的二维骨骼特征表达式X<sub>char=1</sub>,按照步骤2)所述非负风格分解方法获得对应的隐组件V<sub>char=1</sub>;将该隐组件,与别的二维骨骼特征表达式X<sub>char=2</sub>按照步骤2)所述非负风格分解方法获得的风格基向量U<sub>char=2</sub>进行重合成,形成异构的二维骨骼特征表达式<maths num="0005"><![CDATA[<math><mrow><msub><mover><mi>X</mi><mo>~</mo></mover><mrow><mi>char</mi><mo>=</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>U</mi><mrow><mi>char</mi><mo>=</mo><mn>2</mn></mrow></msub><msub><mi>V</mi><mrow><mi>char</mi><mo>=</mo><mn>1</mn></mrow></msub><mo>;</mo></mrow></math>]]></maths>获得作为结果的二维骨骼特征表达式<img file="FSB0000116853520000042.GIF" wi="186" he="68" />后,即获得了前面定义的17个关键点在<img file="FSB0000116853520000043.GIF" wi="186" he="68" />所定义的m帧关键帧序列中坐标位置;利用如下的公式来基于m帧关键帧中17个关键点的坐标位置来获得在完整的n帧序列中17个关键点的坐标位置:<maths num="0006"><![CDATA[<math><mrow><msubsup><mi>v</mi><mi>i</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>v</mi><mi>i</mi><mi>t</mi></msubsup><mo>+</mo><mfrac><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mi>i</mi><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mi>i</mi><mi>t</mi></msubsup><mo>|</mo><mo>|</mo></mrow><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mi>i</mi><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>|</mo><mo>|</mo></mrow></mfrac><mi>&Delta;</mi><msub><mi>v</mi><mi>i</mi></msub><mo>+</mo><mfrac><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mi>t</mi></msubsup><mo>|</mo><mo>|</mo></mrow><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mi>i</mi><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>|</mo><mo>|</mo></mrow></mfrac><mi>&Delta;</mi><msub><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mn>5</mn></mrow></math>]]></maths><maths num="0007"><![CDATA[<math><mrow><msubsup><mi>v</mi><mi>j</mi><mrow><mi>t</mi><mo>+</mo><mn>1</mn></mrow></msubsup><mo>=</mo><msubsup><mi>v</mi><mi>j</mi><mi>t</mi></msubsup><mo>+</mo><mfrac><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mi>i</mi><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mi>i</mi><mi>t</mi></msubsup><mo>|</mo><mo>|</mo></mrow><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mi>i</mi><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>|</mo><mo>|</mo></mrow></mfrac><mi>&Delta;</mi><msub><mi>v</mi><mi>i</mi></msub><mo>+</mo><mfrac><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mi>t</mi></msubsup><mo>|</mo><mo>|</mo></mrow><mrow><mo>|</mo><mo>|</mo><msubsup><mi>v</mi><mi>i</mi><mn>1</mn></msubsup><mo>-</mo><msubsup><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow><mn>1</mn></msubsup><mo>|</mo><mo>|</mo></mrow></mfrac><mi>&Delta;</mi><msub><mi>v</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mn>6</mn></mrow></math>]]></maths>其中<img file="FSB0000116853520000046.GIF" wi="56" he="71" />和<img file="FSB0000116853520000047.GIF" wi="58" he="81" />为第i和第j个关键点在第t帧非关键帧中的坐标位置,其中t=[1,2,…,(n-m)]为所有的非关键帧的索引值;<img file="FSB0000116853520000048.GIF" wi="420" he="78" />为第i个关键点在第t和第t+1帧非关键帧之间的坐标位移绝对值,同理<img file="FSB0000116853520000049.GIF" wi="416" he="84" />为第j个关键点在第t和第t+1帧非关键帧之间的坐标位移绝对值;由此,获得17个关键点在完整的n帧序列中的坐标位置;采用已有的保持刚性不变的形变方法,以17个关键点作为形变的驱动点,利用这些关键点在完整的n帧序列中的坐标位置作为形变的驱动源,进行形变从而获得基于非负风格分解的风格化二维卡通。
地址 310027 浙江省杭州市西湖区浙大路38号