620 likes | 753 Views
面向多图符的 在线草图理解方法研究. 郑文涛 2007 年 3 月. 提纲. 绪论 系统框架 笔画分割 草图解析 草图文档 总结与展望. 引言. 草图 草图由于采用了笔式交互方式,有着高效、自然、便捷等优点 草图理解 将草图引入到人际交互中的一个关键问题式草图理解 定义:草图理解就是从用户绘制的草图中识别出具有领域语义的符号以及符号之间的组成关系. 相关背景. 从应用角度看,草图理解技术可以分为如下几类 手势识别 单个符号的识别 多个符号的连续草图识别 从流程看,草图理解技术又包含如下几个环节 笔画分割 笔画成组 草图解析 草图文档.
E N D
面向多图符的在线草图理解方法研究 郑文涛 2007年3月
提纲 • 绪论 • 系统框架 • 笔画分割 • 草图解析 • 草图文档 • 总结与展望
引言 • 草图 草图由于采用了笔式交互方式,有着高效、自然、便捷等优点 • 草图理解 将草图引入到人际交互中的一个关键问题式草图理解 定义:草图理解就是从用户绘制的草图中识别出具有领域语义的符号以及符号之间的组成关系
相关背景 • 从应用角度看,草图理解技术可以分为如下几类 • 手势识别 • 单个符号的识别 • 多个符号的连续草图识别 • 从流程看,草图理解技术又包含如下几个环节 • 笔画分割 • 笔画成组 • 草图解析 • 草图文档
相关背景 • 手势识别 • 单笔画手势识别 • [Rubine 1991] 通过对笔画特征(比如面积)的分析达到手势识别的目的 • [Long 2001] 设计了一个系统,帮助人们在实际应用中选择容易区分的手势 • 多笔画手势识别 • [Cohen 1997] 提出了基于多个笔画的手势识别方法
相关背景 • 单个符号的识别 • 南京大学MAGIC研究组 • 模板匹配 • [YinJF 2005] • 机器学习 • [JiangW 2005] HMM,[SunZX 2005] SVM • 相关反馈 • [WangQ 2004] • 草图检索
相关背景 • 多个符号的连续草图识别(草图解析) • Design Rationale Group @ MIT • [Alvarado 2004] 提出了一种可以应用于多个领域的草图识别引擎 • [Hammond 2005] 提出了一种可以用于描述草图应用领域的语言LADDER • Smart Tool Lab @UCR & CMU • [Kara 2004] 利用网络类草图(电路图)中的箭头作为关键符号对草图进行成组,再进行识别 • Group for User Interface Research @ UCB • [Landay 2001] 提出了一种交互式的草图绘制工具SILK,使得设计者可以很快的设计用户界面并转换成完全可操作的系统 • MAGIC @ NJU • [ZhengWT 2005] 提出了一种基于领域知识的草图理解方法 • [FengGH 2006] 提出了一种基于LR文法的草图识别方法
相关背景 • 笔画分割 • 国外 • [Sezgin 2001] 提出了一种结合曲率、速率的笔画分割方法 • [Stahovich 2004] 提出了一种基于速率的笔画分割方法 • [Kim 2006] 提出一种基于曲率的笔画分割方法 • 国内(MAGIC@NJU) • [YinJF 2005]
相关背景 • 草图文档 • InkML (Ink Markup Language) InkML is an XML data format for representing digital ink data that is input with an electronic pen or stylus as part of a multimodal system http://www.w3.org/2002/mmi/ink • SVG (Scalable Vector Graphics) SVG is a language for describing two-dimensional graphics and graphical applications in XML http://www.w3.org/Graphics/SVG/
问题 • 笔画分割 • 基于速率的分割方法对绘制习惯、用户的思维停顿敏感 • 基于曲率的分割方法中曲率计算对噪音敏感 • 草图解析(多个符号的连续草图) • 对用户绘制方法做了约束 • 只能识别具有固定形状的符号,符号之间的链接关系识别效果不佳 • 草图文档 • 现有的技术SVG、InkML不能满足草图应用的需求
本文工作与贡献 • 本文提出了一种面向连续绘制的在线草图理解方法 • 基于相对曲率的笔画分割方法 • 对噪音不敏感 • 对绘制习惯、思维停顿不敏感 • 基于领域知识的草图解析方法 • 对绘制习惯没有约束 • 能够识别符号以及符号之间的链接关系 • 基于XML的草图文档SketchML • 弥补了InkML和SVG在草图应用中的不足
笔画分割 • 任务:将用户绘制的原始笔画分割为若干个几何特征相对简单的基本图元 • 我们提出的方法的特点 • 相对曲率:计算简便,降低噪音的干扰 • 二次分割:提高整体分割效果 • 参数选择:优化分割参数 • 图元拟合:提高对曲线的分割效果
笔画分割 • 相对曲率计算 • 对于左下笔画,曲率计算结果如右下所示
笔画分割 • k对相对曲率计算结果的影响 • 给定笔画中的点 ,其曲率值 会随着 的变化而变化 • 下图给出了在样本固定的前提下 关系图
笔画分割 • 单次分割 once-seg(S,k,h) 输入:笔画S,参数k、h 输出:分割点集合P 算法: P = 0; Pc = 0; for each pi in S do if(pi,k) > h then Pc = Pc {pi}; else if Pc 0 then assume Pc = {pu, …, pv} P = P p(u+v)/2; Pc = 0; endif endif endfor return P;
笔画分割 • k对分割点查找结果的影响 • 从图中可以看出,单次分割由于k、h值的固定,分割结果不能达到最优 • 尝试结合不同k值下的分割结果可以提高分割效果
笔画分割 • 二次分割 twice-seg(S,k1,h1,k2,h2) 输入:笔画S,参数k1、k2、h1、h2 输出:分割点集合Pf 算法: Pf = 0; P = once-seg(S,k1,h1); Use the points in P to segment S into fragments F = {S1, …, Sn} for each Si in F do Pf = Pf once-seg(Si,k2,h2); endfor Pf = Pf P; return Pf
笔画分割 • 设给定笔画中 • 正确分割点集合为M • 分割算法给出的分割点集合为C 则有 • 分割算法给出的正确分割点集合为 S = MC • 我们定义 • 查全率 recall = S / M • 查准率 precision = S / C
笔画分割 • 分割参数的选择 • 对于第一次分割,一般选取较小的k值,目的是 • 去除噪音分割点 • 找到拐角尖锐的分割点 参数选择依据 • 优先提高precision • 对于第二次分割,一般选取较大的k值,目的是 • 尽量找到更多的分割点 参数选择依据 • 优先提高recall
笔画分割 • 参数选择方法 • 综合查全率、查准率的计算公式 ref = a × precision + b × recall,a、b为权重 • 给定待分割的笔画样本S,对分割点进行人工标注,得到标注的笔画样本T • for k = 1 to MAX_K do • for h = min_h(k) to max_h(k) do • 做单次分割ONCE-SEG(T,k,h) • 计算precision(k,h)和recall(k,h),记录 • endfor • endfor • 令a=2,b=1,选取能够使ref值最大的k和h,作为k1和h1的值 • for k = k1 to MAX_K do • for h = min_h(k) to max_h(k) do • 做二次分割TWICE-SEG(T,k1,h1,k,h) • 计算precision(k,h)和recall(k,h),记录 • endfor • endfor • 令a=1,b=2,选取能够使ref值最大的k和h,作为k2和h2的值
笔画分割 • 利用图元拟合提高对曲线的分割效果 • 分割后的笔画段可以分成两大类 • 直线段:分割点非常理想 • 弧线段:分割点过多 • 为了解决弧线段分割点过多的问题,我们需要 • 图元拟合:将笔画段识别为直线段、弧线段 • 弧线段合并:合并小弧线段为大弧线段或者圆 (尚未完成)
笔画分割 • 分割结果评价 • 主观评价 • 对待分割的笔画样本进行手动标注分割点 • 比较算法给出的分割点和标注的分割点 • 客观评价 • 一个笔画的分割结果是若干个基本图元 • 比较图元和笔画的误差
笔画分割 • 实验 • 笔画模板 |M|=91
笔画分割 • 样本采集 • 用户数:10 • 每用户绘制样本数:20×5 • 样本数:50套×20=1000笔画
笔画分割 • 实验1 相对曲率计算的有效性、抗噪性、速度性能实验 • 有效性:对样本进行相对曲率值计算和绝对曲率值计算,比较计算结果的曲线图 • 抗噪性:比较相对曲率曲线图和绝对曲率曲线图的稳定性 • 速度性能:对于某个采样点,相对曲率计算时间与窗口大小k的关系图;与绝对曲率计算时间比较
笔画分割 • 实验2 二次分割与单次分割的比较实验 • 对样本分别进行单次分割和二次分割 • 比较分割结果
笔画分割 • 实验3 分割算法对用户、画法是否敏感的实验 对10个用户的样本进行二次笔画分割,比较不同用户样本的分割结果
草图解析 • 任务:从图元集合中识别出具有领域语义的符号以及符号之间的关系 • 我们提出了一种基于领域知识的草图解析方法 • 领域知识通过规则表达,通过规则引擎应用 • 方法具有普遍性,能够用于多个领域 • 解析过程分为两个步骤 • 符号识别 • 关系识别
草图解析 • 解析流程 带成组的解析 不带成组的解析
草图解析 • 领域知识表示 • 符号形状知识 • 上下文无关规则 • 上下文关系知识 • 上下文相关规则 • 领域知识的使用 • 符号识别:上下文无关规则 • 关系识别:上下文无关规、上下文相关规则
草图解析 • 上下文无关规则 • 组成部分 • 目标符号:待识别的符号 • 成员符号:可以组成目标符号的符号 • 约束条件:规则成立时成员符号之间满足的约束 • 目标符号初始化:生成目标符号的初始化工作 • 形式 Target = Comp1 c1, Comp2 c2, Comp3 c3, … { constrains } [ initialization ]
草图解析 • 上下文无关规则(例) Rectangle = Line l1, Line l2, Line l3, Line l4 { l1.join(l2); ... l1.isHorizontal(); l1.perpendicular(l2); ... } [ this.upperLeftPoint = l1.startPoint(); this.width = (l1.length + l3.length) / 2; this.height = (l2.length + l4.length) / 2; ]
草图解析 • 上下文相关规则 • 组成部分 • 目标符号:待识别的符号 • 成员符号:可以组成目标符号的符号 • 参考符号:与目标符号构成无关的其他符号 • 约束条件:规则成立时,成员符号与参考符号所必须满足的约束条件 • 目标符号初始化:生成目标符号的初始化工作 • 形式 Target = Comp1 c1, Comp2 c2 , … ; Ref1 r1, Ref2 r2, … { constrains } [ initialization ]
草图解析 • 上下文相关规则(例) LinkEnd = OpenArrowHeadoah ; Rectangle ref { ref.isPointedBy(oah); } [ this.symbol = ref; this.type = “OpenArrow”; this.startPoint = oah.startPoint; this.endPoint = oah.endPoint; this.midPoints = nil; ]
草图解析 • 给定一个应用领域,如何建议一套规则体系,用于符号识别? • 领域概念模型 • 概念集合 • 关系集合 • 符号识别规则生成 • 概念组成关系图 • 利用关系图生成规则、确定优先级
草图解析 • 领域概念模型 • 内容 • 概念:具有一定几何意义的符号 • 关系:概念之间的几何关系,可以分为一元关系、二元关系等等 • 概念集合(C)的内容 • 图元(Primitive) • 容器类符号(Container) • 中间过渡符号:比图元复杂、比容器类符号简单的符号 • 关系集合(R)的内容 • 一元关系:如直线段的水平、垂直 • 二元关系:两条直线段之间的平行、相交 • 等等
草图解析 • 容器类符号识别规则的生成 • 要点 • 生成的规则体系的充分性:每个容器类符号都至少可以由一个规则识别出来 • 规则的优先级:规则引擎处理规则的优先顺序 • 解决 • 根据概念集合C以及概念之间的关系生成概念组成关系图G<V,E> • 利用G<V,E>制定规则以及规则的优先级
草图解析 • 概念组成关系图的生成 • 设有向图G<V,E>,其中V=C,即图中每个节点表示概念集合中的某个符号 • 对于V中的某个结点vi,如果存在vj满足vi为vj的一个组成部分,则添加有向边eij(从vi指向vj) • 重复步骤2直到无法添加有向边为止 • 对于E中的某个边eij,如果存在通过其他结点的通路eix-exy-…-ezj,则删除eij • 重复步骤3知道无法删除有向边为止
草图解析 • 优先级设置 • 对于G<V,E>中每个出度为0的结点,设置其优先级为0 • 对于已经设置了优先级(值为i)的结点,若其入度大于0,则设置所有指向它的结点(本结点除外)的优先级为i+1 • 重复步骤2直到所有的结点均设置了优先级
草图解析 • 最终得到的有向图满足 • 对于领域中的任何一个容器类符号,设其在图中对应的结点为vi,一定存在至少一条从某图元符号对应的结点vj指向vi的通路(充分性) • 每个符号对应结点的优先级即为将来生成的符号识别规则的优先级
草图解析 • 利用概念组成关系图生成容器类符号识别规则 • 对于G<V,E>的每条边eij,生成目标符号为vj的规则(成员符号可能包含vi以外的符号),设置该规则的优先级为vj的优先值 • 删除规则集合中重复的规则
草图解析 • 概念组成关系图(例)
草图解析 • 最后得到如下规则集合 class (0) = rect, line, line rect (1) = line, line, line, line open-arrowhead (1) = line, line, line triangle-arrowhead (0) = open-arrowhead, line triangle-arrowhead (0) = triangle, line triangle (1) = line, line, line diamond-arrowhead (0) = open-arrowhead, line, line diamond-arrowhead (0) = diamond, line diamond (1) = line, line, line, line line (2) = line, line
草图解析 • 关系识别(具有领域独立的特点) • 所有的链接关系都可以用如下规则进行识别 • Link = Link, LinkEnd • Link = LinkEnd, LinkEnd • LinkEnd = component-symbols ; reference-symbols • 但是对于具体的领域 • Link的含义是不一样的,需要借助领域上下文关系进行确定 • 规则3中的成员符号、参考符号不一样
草图解析 • 领域上下文关系模型 • 上下文关系主要指符号之间的链接关系 • 关系从组成来看可以分成二元关系、三元关系等等 • 关系可以描述为一个关系成员序列(简称关系描述relation-description),分有序和无序两类 • 关系成员(relation-component)包含三个内容 • 符号类型(symbol-type) • 链接类型(link-type) • 可复用标识(reusable)
草图解析 • 上下文关系模型(例1,有序关系描述) • UML类图中的某些关系可以描述为 inheritance = < (class, triangle-arrow-head, true), (class, plain, true) > composition = < (class, diamond-arrow-head, true), (class, plain, true) >
草图解析 • 上下文关系模型(例2,无序关系描述) • 电路图中的导线可以描述为 lead = { (ware, plain, true), (ware, plain, true) }
草图解析 • 利用上下文关系确定草图中的链接关系 • 输入:Link,某领域的关系描述集合R • 输出:Link在该领域的关系解释 • 过程 • ForeachLinkEnd in Link do set its states as unused, unexplained; Endfor • ForeachunexplainedLinkEndle in Link do find a matched, unused relation-description r from R; give an explanation of r; Foreach relation-component rc in rdo Ifrc is NOT reusable then set corresponding LinkEnd of rc to used; Endif set corresponding LinkEnd of rc to explained; Endfor Enffor
草图解析 • 实验 • 容器类符号识别:对只包含容器类符号的草图进行识别,验证容器类符号识别效果 • 单个链接类符号识别:对包含链接若干个容器类符号的单个链接类符号进行识别,验证链接类符号识别效果 • 综合识别:对包含多个容器类、链接类符号的草图进行识别,验证整个系统的符号识别效果 • 对不同用户绘制的草图的识别结果比较实验,验证识别算法对用户、画法不敏感