字符处理装置及其方法

文档序号:6412532阅读:166来源:国知局
专利名称:字符处理装置及其方法
技术领域
本发明涉及字符处理装置及其方法,用于通过将相交笔画数据转换成不相交轮廓数据,以提供高质量字符图案。
在根据相交笔画字符产生大尺寸字符或轮廓字符的情况下,在产生处理之前,相交笔画数据必须被转换成不相交完整轮廓的数据。为此,使用了根据笔画数据产生位映象数据和跟踪这种位映象数据的轮廓以获得整个轮廓坐标数据的处理。
为了改善大尺寸字符或轮廓字符的质量,在所希望的输出尺寸产生位映象之后必须跟踪所述轮廓,从而需要很长的处理时间。
由于位映象显影存储器的限制,产生的位映象有时被限制为某个尺寸。在这种情况下,为了获得大尺寸的字符,不可避免地需要对从所产生轮廓获得的坐标值进行扩展,这样,图象质量的恶化程度必然地依赖于存储器的容量。
另一方面,为了实现高速处理,必须实现一种用于形成小尺寸位映象并跟踪这个位映象的轮廓以获得整个轮廓的坐标和扩展或减少所获得的坐标的方法。在这种情况下,不可避免在大尺寸输出的字符中产生明显的质量失真。
本发明的目的就是要克服上述缺点和提供一种能够根据相交笔画数据高速产生不相交轮廓借此以输出高质量字符或图案的信息处理装置和相关方法。
根据本发明,上述目的可以通过用于根据寄存在可能相互交叉的多个笔画内每一个笔画中的数据产生一个不相交轮廓的信息处理装置来实现。所述信息处理装置包括用于从字符的所有寄存笔画中提取每一对笔画的提取装置;用于鉴别由所述提取装置提取的每一笔画对的笔画段是否相互交叉的相交鉴别装置;用于在所述相交鉴别装置获得肯定结果的情况下计算所述段交点坐标的交点坐标计算装置;用于存储由所述交点坐标计算装置计算的交点坐标的交点坐标存储装置;和用于根据预定法则并在存储在相交坐标存储装置内相交坐标的基础上重新连接所述轮廓的重新连接装置。
根据本发明,还提供了一种图象处理装置,用于根据寄存在可能相互交叉的多个笔画内每一个笔画中的轮廓数据产生不相交轮廓数据,所述装置包括读出装置,用于读出两个笔画的轮廓坐标;整直装置,用于整直由所述轮廓坐标表示的轮廓;鉴别装置,用于根据所述两个笔画的轮廓坐标鉴别两个笔画的的轮廓是否相互交叉;轮廓数据产生装置,用于在由所述鉴别装置识别相互交叉的情况下确定一个交点和改变包括这个交点在内的轮廓点的连接借此以产生不相交轮廓数据;判断装置,用于判断在由轮廓数据产生装置产生的不相交轮廓数据中的曲线部分;和曲线产生装置,用于根据由所述判断装置判断的曲线部分产生一个曲线。


图1的方框图示出了本发明的一个实施例;图2的方框图示出了图1所示打印机11的结构;图3示出了图1所示RAM3的存储器映象;图4示出了存储在图1所示ROM2中一个控制程序流程的例子;图5示出了由中心线和宽度表示的一个笔画数据的例子;图6示出了笔画单元中的轮廓数据;图7示出了贝塞尔(Bezire)分解的原理;图8A、8B和8C示出了在进入轮廓转换之前笔画数据结构的例子;图9示出了相交线段的一个例子;图10示出了不相交线段的一个例子;
图11示出了不相交笔画的一个例子;图12A、12B和12C示出了在确定相交之后的数据结构;图13A、13B、13C和13D示出了两个笔画的重新连接;图14A、14B和14C示出了两个笔画重新连接之后的状态;图15A和15B示出了笔画转换之后的数据;图16A和16B示出了多个笔画重新连接之后的状态;图17示出了笔画转换之后的状态;图18示出了在计算机图象框上编辑字符或图形的状态;图19示出了在指定全部编辑区域之后的处理;图20和21示出了在指定部分区域之后的处理;图22的流程示出了在构成本发明实施例3的一个信息处理系统中的轮廓数据产生处理;图23的流程示出了来自直线数据的曲线数据;图24示出了由根据曲线数据产生的直线数据组成的一个字符;图25示出了根据直线数据产生曲线数据的模式;和图26A和26B示出了直线数据和曲线数据之间的的区别状态。图1示出了本发明第一实施例的结构。当前实施例可以是由一个信号设备组成的包括多个仪器或装置的系统。本实施例的系统还可以是一个字处理器、工作站或个人计算机。
参看图1,CPU(中央处理单元)1执行整个装置的控制和各种操作。当需要时,CPU1参考存储在外部存储器9中的数据,并将这种数据存储在RAM3中。还提供了一个用于存储用于启动所述系统、字符图案和与字符转换相关的数据的一个程序的ROM(只读存储器)2;用于暂存在CPU1操作中使用的数据和所述操作结果的RAM(随机存取存储器)3;用于向CPU1传输从键盘(KB)5接收的键入数据(字符码和控制码)的键盘控制单元4;用于显示一个位映象图象的CRT(阴极射线管)显示单元7;用于读出从一个字符码转换的位映象图象和将该位映象图象传输给CRT显示单元7的显示控制器(CRTC)6;用于存储程序和数据且最好由软盘(FD)91、硬盘(HD)92和CD-ROM93等组成的外部存储器9,其中,所述硬盘存储操作系统;用于控制外部存储器9数据传输的盘控制器(DKC)8;用于驱动打印机(PRT)11的打印机控制器(PRTC)10,所述打印机最好是激光打印机、热喷射打印机或热传输打印机;和用于在CPU1、ROM2、RAM3、键盘控制器4、显示控制器6、盘控制器8和打印机控制器10之间进行数据交换的系统总线12。
所述程序和相关数据由软盘91或CD-ROM93提供,并且安装到硬盘92中一次,并且从该硬盘装载到RAM3中以便执行。另外,它们也可以直接从软盘91或CD-ROM93装入RAM3执行而不必安装到硬盘92中。
当电源接通时,利用存储在ROM2中基本I/O程序的IPL(启动程序装载)功能通过从硬盘92读出操作系统并加载到RAM3,启动当前系统。当前系统通过执行基本I/O程序、操作系统(如窗口系统)211和应用程序212来产生作用。
图2示出了图1所示打印机的结构。参看图2,这里提供了一个用于控制整个装置和执行各种操作的CPU161;用于存储系统启动程序、字符图案和数据的ROM162;构成在使用中不受限制的数据存储区域并用于在每次处理中装载程序和数据的RAM163;和用于控制记录头1611的打印机控制器(PRTC)1610。上述构件经过系统总线1612相互连接。
图3示出了图1所示RAM3中内存映象的例子。区域210被用于装载基本I/O程序,区域211被用于装载诸如窗口系统的操作系统,区域212被用于装载应用程序,区域213被用于装载相关数据。区域214被用做与装载所述程序相关的工作区域。
图4的流程示出了存储在图1所示ROM2等外部有贮器9中控制程序的一个例子。字符码、输出尺寸、字型、变形信息等被作为所述程序接口传输。
步骤S201根据字符码和字型读出一个目标字符的数据。如此读出的数据是寄存在笔画单元中的字符数据。每个笔画可以由图5所示的中心线和宽度组成的数据或图6所示的轮廓数据表示。在前者的情况下,由所述中心线和宽度表示的数据被转换成每个笔画的轮廓坐标。
步骤S202根据由预先存储在诸如硬盘92或ROM2等外部存贮器9中的数据表示的所述字符的宽度和高度和以及所述接口请求的输出尺寸执行诸如放大/缩小或变形等坐标转换。然后,如果存在曲线数据,步骤S203产生短矢量数据。利用(比方说)三阶贝塞尔函数、三阶B-样条函数、二阶贝塞尔函数和二阶B-样条函数预先规定所述曲线数据。下面解释由图7所示在形成由三阶贝塞尔函数规定的一个曲线的短矢量截断的情况。
通过如图7所示分解由三阶贝塞尔函数规定的原始点A、B、C、D,形成段AB的中点a、段BC的中点b、段CD的中点c、段ab的中点x、段bc的中点z和段xz的中点y,借此,产生了两组Aaxy、yzcD新的贝塞尔点。在这样的新贝塞尔点组Aaxy,yzcD上继续分解,直到满足预定转换状态。新获得的点构成短矢量的多个点。然后,表示由如此确定的贝塞尔曲线获得的短矢量的点组和原来作为直线段寄存的点组以保持原来轮廓顺序的寄存方式被寄存。图8A示出了如此寄存坐标组的模式。寄存内容首先包含有用于指出轮廓信息和包括每个轮廓旋转(顺时针或逆时针)方向、起点号、终点号和轮廓数据最大和最小坐标的轮廓数据管理信息部分(图8B),其次,包含有用于实际存储轮廓坐标的轮廓坐标部分。在轮廓数据管理信息部分中表示的起点和终点号处,存储有所述轮廓的坐标、直接在前点的号和直接在后点的号。图8C示出了轮廓坐标数据表。
然后,步骤S204鉴别一个字符的所有笔画数据是否都已被产生。如果将被处理的一个字符的笔画还有剩余和数据产生还没有完成,所述顺序返回到步骤S202。另一方面,如果一个字符所有笔画曲线数据的坐标转换和弄直都已完成,所述顺序前进到步骤S20S以检查在步骤S204之前寄存的轮廓数据,和如果发现轮廓的交叉点,将这个轮廓重新连接以产生新的轮廓。新连接以产生新的轮廓。
更具体地说,在步骤S205.如图8A所示的初始寄存的轮廓数据被用做基准轮廓数据。下一个步骤S206将接近步骤S205中设置成基准轮廓数据的轮廓数据作为目标轮廓数据。然后,步骤S207在基准轮廓数据和目标轮廓数据的基础上检查是否有线段相交。特别是,在图8A所示轮廓信息的基础上,在基准轮廓数据和目标轮廓数据中较大最大坐标和较小最小坐标之间具有较小最大坐标和较大最小坐标的两个线段被认为是相互交叉。
然后,步骤S208根据被认为相互交叉的两个线段的数据计算相交点,并在步骤S209在所获得交点位于较小最大坐标和较大最小坐标之间的情况下判定存在一个交点。如果如图9所示所述交点被同时包含在两个线段之中,所述交点被最终确定为存在,但是,如果如图10所示,所述交点存在于两个线段的外面,则所述交点被确定为不存在。在基准轮廓数据的线段和目标轮廓数据的线段的所有线段组合中检查相互交叉的线段,然后,在所有基准轮廓数据线段和目标轮廓数据线段上检查是否存在交点,和计算任一存在交点的坐标。
在步骤S209识别至少存在一个交点的情况下,步骤S210执行重新连接处理。特别是,在两个线段彼此相交的情况下,通过加上步骤S208确定的交点使两个轮廓数据被重新连接。
图12A到图12C和图13A到图13D示出了这种重新连接的模式。在图12A所示的例子中,基准轮廓数据线段DA和目标轮廓数据线段EF的交点被取做α,位于线段BC和EF之间的交点被取做β,位于线段BC和GH之间的交点被取做γ,位于线段DA和GH之间的交点被取做δ。由于例如在重新连接具有交点Z的线段AB和CD的情况下,这些交点被被以每两个一组的形式存储在轮廓坐标数据表(图12C)中,所以,需要诸如A→Z→D和C→Z→B的新坐标组。另外,在轮廓数据重新连接后由于只需要一个轮廓的起点和终点,所以,目标轮廓数据通过在轮廓坐标数据表中删除在号9处的终点并将其连接到起点上以回路形式重新连接,如图12C所示。实际上,两个轮廓被如图13A到13D所示重新连接。
下面的描述给出了图13A的详细解释。当基准轮廓数据的线段DA和目标轮廓数据的线段EF在交点α处相交时,通过将基准轮廓数据的线段起点D经过交点α1连接到目标轮廓数据线段终点F,所述连接为D→α1→F。通过将目标轮廓数据的线段起点E经过交点α2连接到基准轮廓数据线段的终点A可以获得另一种连接E→α2→A。根据这种重新连接改变下一个点的号和前一个点的号。在下面的描述中,将参照图13B解释图12所示基准轮廓数据的线段BD和目标轮廓数据的线段EF的重新连接。由于线段EF已经被分成线段Eα2和α1F,所以包含有交点的线段α1F被选择作为目标轮廓数据的线段。然后,线段BC、α1F和交点β被重新连接为B→β1→F和α1→β2→C。然后,根据这种重新连接改变下一个点的号和前一个点的号。
在下面的描述中将结合图13C解释基准轮廓数据的线段BC和目标轮廓数据线段GH的重新连接。具有交点γ的基准轮廓数据线段β2C和目标轮廓数据线段GH被重新连接为β2→γ1→H和G→γ2→C。另外,根据这种重新连接修改轮廓坐标表。最后,结合图13B解释基准轮廓数据线段DA和目标轮廓数据线段GH的重新连接。基准轮廓数据线段Dα1和目标轮廓数据线段γ1H被重新连接为D→δ1→H和γ1→δ2→α1,根据这个重新连接修改轮廓坐标数据表。图13D示出了在步骤S20重新连接操作之后的轮廓坐标数据表。
然后,步骤S211执行通过在步骤S210消除的轮廓寄存的删除和新产生的轮廓寄存的添加。当在步骤S210产生如下的连接A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A(见图14A)时,目标轮廓数据E→F→G→H被吸收在基准轮廓数据中。然后,为了指示已经被消除的基准轮廓数据,如图14B所示,将起点号和终点号改成(-1)。另外,还产生了不属于上述轮廓的新轮廓α1→β2→γ1→δ2(见图14A)。由于图13D所述的状态是一个没有起点或终点的回路,所以通过选择多个点中的一个作为起点并加上一个终点寄存该新轮廓。所述寄存是在轮廓数据管理信息部分的末端进行的。然后,检查和寄存这个轮廓的旋转方向和最大和最小坐标,如图14A和14C所示。步骤S207到步骤S211用于检查基准轮廓数据和目标轮廓数据的连接状态,然后,完成一个目标轮廓数据的处理。
然后,步骤S212例如通过检查在步骤S211的目标轮廓数据处理之后是否存在其它的轮廓数据来搜索下一个侯选目标轮廓数据。然后,步骤S213鉴别所述目标轮廓数据是否以被用尽,如果不是,步骤S214将在步骤S212搜索到的目标轮廓数据寄存为将被新检查的轮廓数据,然后所述顺序前进到步骤S207。另一方面,如果所述目标轮廓数据不再存在,即如果对一组基准数据的处理已经完成,所述顺序前进到步骤S215。步骤S215通过检查在步骤S214之前处理的基准轮廓数据之后是否存在下一个数据来搜索新的基准轮廓数据。
然后,步骤S216鉴别所述基准轮廓数据是否被用尽,如果不是,步骤S217将在步骤S215搜索到的基准轮廓数据寄存为将被新检查的基准数据,然后所述顺序返回到步骤S206。另一方面,如果基准轮廓数据不再存在,所述顺序前进到步骤S218。(在步骤S212或S215搜索目标或基准轮廓数据的过程中,如果起点和终点值不是(-1),则这个值被判断为存在)。在这些值是(-1)的情况下,所述轮廓数据被识别为已经被消除和继续搜索下一个轮廓数据。步骤S218输出在步骤S216之前确定的轮廓数据,以作为不包括交点的完整轮廓数据。这种不相交完整轮廓数据不必包括所有寄存在轮廓数据管理信息部分中的轮廓。在图14A所示的例子中,轮廓A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A是将被最终寄存的轮廓,但是,轮廓α1→β2→γ1→β2不是将被最终寄存的轮廓。这种轮廓的区别是由下述方式执行的。
最初寄存在轮廓数据信息部分中的轮廓数量被存储,并且,最终寄存在所述位置中的轮廓数据的量不超过这个数量,不表示旋转方向(图14A举例所示的A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A)相反方向的轮廓将被判断为将被寄存的数据。在超过上述数量的位置内寄存的这些轮廓数据当中,即在这些被新寄存的轮廓数据当中,只有表示相反旋转方向的轮廓数据被判断为将被寄存的轮廓数据。在图14A所示的例子中,没有数据与这种规定对应。
下面将解释图15A和15B所示的轮廓数据组的例子。在这个例子中,轮廓的最初数量是4。根据上述解释算法,这些轮廓数据的处理最终提供如图16A和16B所示的数据。在这种情况下,由于最初轮廓的数量是4,所以被寄存在没有超过最初数量位置处且不表示旋转方向相反方向的状态仅由最初轮廓满足。另外,被寄存在超过最初数量位置处和表示旋转方向相反方向的状态仅由最终轮廊满足。然后,这两个轮廓只是在最后被寄存,并能够产生不相交完整轮廓数据,如图17所示。
因此,可以通过检测轮廓交点、重新连接相互交叉的轮廓和最终提取所需数据根据包括轮廓数据在内的交点产生不相交轮廓数据。
另一方面,如果在步骤S207识别出基准轮廓数据和目标轮廓数据确实不相交,所述顺序前进到步骤S212。
另外,如果在步骤S209识别出在基准轮廓数据和目标轮廓数据之间确实没有交点,所述顺序前进到步骤S212。特别是,在步骤S207判断所述交点存在而实际在步骤S208的线段检查中识别为不存在这个交点(如图11所示)的情况下,所述顺序前进到步骤S212。本发明的第二实施例在可由用户规定字型编辑图象框或图形编辑图象框的基础上根据用户的指令执行相交笔画交点的删除。
图18示出了在图1所示CRT显示单元7上显示的字符-图形编辑对话框。当由用户选择这个对话框中的集体转换171时,设置一个用于将包括交点的轮廓数据转换成不相交轮廓数据的集体转换模式,适用于在编辑图象框上显示的所有数据。另外,当用户在这个对话中选择部分转换172的情况下,设置一个部分转换模式,其中,由用户指定转换目标区域和从包括交点的轮廓数据到不相交轮廓数据的转换仅对涉及这些区域的笔画执行。
如果用户选择集体转换171以用于字符“吉”(发音为“kichi”意思是“lucky”(幸运)),以图19所示模式对所有的笔画或编辑图形框上的图形进行集体转换。在这个操作中,如第一实施例所解释,对所有被编辑的数据检查是否有交点,如果存在有任何一个交点,转换到不相交轮廓数据。
在对图18所示的字符“吉”进行部分转换的情况下,用户选择字符-图形编辑对话的部分转换172并指定一个部分区域。作为一个例子,如图20左侧所示,利用鼠标敲击出由虚线框图出的一个部分区域190,并检查是否存在与部分区域190相关的笔画。如果存在,识别这个相关笔画。在图20所示的例子中,笔画191和192被识别为与部分区域190相关,但是,其它笔画193到197被识别为无关。在每个这种相关笔画上设置一个用于表示这种关系的标记,且这个标记对于那些无关笔画被清除。然后,提取设置有这种标记的笔画并且这种笔画被单独执行第一实施例所解释的处理。因此,对于包括被显示包含交点的笔画来讲,在部分编辑区域内执行产生不相交轮廓的处理,和如果用于产生不相交轮廓的区域被规定,提取与这个区域相关的笔画,并且鉴别每对如此提取的线段是否相互交叉。如果交点被识别为存在,计算并存储交点的坐标,并根据预定法则在所存储交点坐标的基础上重新连接所述轮廓。利用这种方式,可以实现与部分区域相关笔画的从包含交点轮廓数据到不包含交点轮廓数据的转换。
作为一个例子,如图21左手侧所示,通过鼠标的敲击用虚线框圈出一个部分区域200,检查是否存在与部分区域200相关的任何一个笔画。如果存在,识别这种相关笔画。在图21所示的例子中,笔画204、205和207被识别为与部分区域190相关,但是,其它笔画201到203和206被识别为无关。在与部分区域200相关的每一个这种笔画上设置一个用于表示这种关系的标记,对于每个无关笔画则清除这种标记。然后,提取具有这种标记的笔画并以图20所示相关解释的方式单独进行处理。利用这种方式,可以实现与所述部分区域相关笔画从包含交点轮廓数据到不包含交点轮廓数据的转换。
在用于字符或图形编辑操作的过程中用户产生笔画交点的情况下,可以通过指令删除这些交点,随时可以自动删除两个或多个轮廓的这种交点,而不必由用户做烦琐的工作。
如在前面所解释的,本实施例允许在高图象质量和高速执行情况下根据包含交点的坐标数据产生不相交完整轮廓的坐标数据。图22的流程示出了本发明第三实施例中执行的处理。与这个处理对应的程序被作为应用程序212存储。
首先,步骤S1接收字符代码,输出它的尺寸、字型和变形信息,并在这些字符码和字型的基础上获得目标字符数据。这时读出的数据是寄存在笔画单元中的字符数据。每个字符可以由图5所示中心线和宽度组成的数据表示或如图6所示的轮廓数据表示。在前者情况下,由中心线和宽度表示的数据被转换成每个笔画的轮廓数据。图5和图6表示与同一个轮廓对应的笔画,其中,O表示一个终点和Δ表示一个中点。
步骤S2在由预先存储在诸如硬盘92或ROM2的外部存储器9中的数据表示的字符高度和宽度以及在开始当前处理之前由接口请求的输出尺寸的基础上执行诸如放大/缩小或变形的坐标转换。
然后,如果存在曲线数据,步骤S3则产生短矢量数据。例如,预先利用三阶贝塞尔函数、三阶B-分离函数、二阶贝塞尔函数或二阶B-分离函数规定曲线数据。在当前的情况下,如图7所示由三阶贝塞尔函数规定的最初点A、B、C和D被分解以形成线段AB的中点a、线段BC的中点b、线段CD的中点c、线段ab的中点x、线段bc的中点z和线段xz的中点y,借此产生贝塞尔点的两个新组Aaxz、yzcD。在这新贝塞尔点组Aaxz、yzcD上继续执行分解,直到满足预定的转换条件。新获得的点构成短矢量的点。然后,表示由如此确定贝塞尔曲线获得的短矢量的点组和作为直线段最初寄存的点组被寄存以保持所述轮廓的原来顺序。
图8A到图8C示出了如此寄存坐标组的模式。
图8A示出了所述轮廓的例子,图8B示出了对于每个轮廓来讲都包括每个轮廓旋转方向(顺时针或逆时针)、起点和终点号的轮廓数据管理信息部分的数据结构,图8C示出了轮廓坐标数据部分的数据结构。
寄存的内容首先包含用于指出轮廓信息和包括每个轮廓旋转方向(顺时针或逆时针)、起点号(对应于轮廓坐标数据表的地址)、终点号(对应于轮廓坐标数据表的所述地址)和所述轮廓数据最大值和最小值的轮廓数据管理信息部分(图8B),然后是用于实际存储轮廓坐标的轮廓坐标数据部分(图8C)。在轮廓数据管理信息部分中表示的起点和终点号处,存储有“轮廓的坐标”、“直接在前点的号”和“直接随后点的号”。
然后,步骤S4鉴别一个字符所有笔画的轮廓是否都已产生,如果一个字符所有笔画的坐标转换和曲线整直都已完成,顺序前进到步骤S5,但是,如果仍然剩有需要被处理的笔画,所述顺序返回到步骤S2。
从步骤S5开始,执行对在步骤S4之前寄存的轮廓数据的检查,如果发现轮廓交点,重新连接这些轮廓以产生新的轮廓。特别是,在步骤S5,最初寄存的轮廓数据被取做如图8A所示的基准轮廓数据。
下一个步骤S6将接近步骤S205中设置成基准轮廓数据的轮廓数据设置成目标轮廓数据。然后,在步骤S7根据基准轮廓数据和目标轮廓数据鉴别所述线段是否相交。在图8A所示轮廓信息的基础上通过检查基准轮廓数据(轮廓ABCD)的最大和最小坐标和目标轮廓数据(轮廓EFGH)的最大和最小坐标并判断是否相互重叠、即在其它轮廓数据的最大或最小值之间是否存在所述轮廓数据的最大和最小值在这个步骤中实现所述鉴别。如果存在,交点被识别为存在和所述顺序前进到步骤S8,但是,如果不存在,交点被识别为不存在,所述顺序前进到步骤S12,以便搜索下一个目标轮廓数据。
步骤S8搜索基准轮廓数据(ABCD)和目标轮廓数据(EFGH)相互交叉的线段,计算每一个被发现交点的交点坐标。对基准轮廓数据每一个线段和目标轮廓数据每一个线段所有的结合检查线段的这种交点。如果在目标轮廓数据一个线段最大和最小坐标之间存在基准轮廓数据一个线段的最大或最小坐标,即如果两个线段相互重叠,则暂时判断所述线段具有一个交点,在这种情况下,两个线段的交点被确定。
如果如图9所示所述交点被包含在两个线段之中,那么,最终判断存在所述交点。另一方面,如果如图10所示所述交点被置于所述线段外面,那么,这个交点是不合格的。对基准轮廓数据的所有线段和目标轮廓数据的所有线段进行交点检查,对于所有被如此发现的交点,计算该交点的坐标值。
然后,步骤S9鉴别步骤S8在基准轮廓数据和目标轮廓数据之间是否发现了交点。在发现至少一个交点的情况下,所述顺序前进到步骤S10以便执行重新连接处理。另外,在步骤S7识别存在交点但在步骤S8实际检查线段过程中被识别为不存在所述交点的情况(类似于图11所示情况)下,所述顺序也前进到步骤S12。
在基准轮廓数据和目标轮廓数据具有交点的情况下,步骤S10通过加在步骤S8确定的交点执行两个轮廓数据的重新连接。
图12A到12C和图13A到13D示出了这种重新连接的模式。
在图12A所示的例子中,基准轮廓数据(ABCD)线段DA和目标轮廓数据(EFGH)线段EF的交点被取做α,线段BC和线段EF之间的交点被取做β,线段BC和线段GH之间的交点被取做γ,和线段DA和线段GH之间的交点被取做δ。由于例如在重新连接具有交点Z的线段AB和CD的情况下,在诸如A→Z→D和C→Z→B的每一个坐标新组中需要这个交点A,所以,这些交点以每两个为一组的形式(例如α1、α2、β1、β2、γ1、γ2等)存储在轮廓数据坐标表(图12C)中。另外,由于在重新连接所述轮廓数据之后的轮廓只需要起点和终点,所以,通过删除在轮廓坐标数据表中号9处的终点和将其连接到所述起点上以回路形式重新连接所述目标轮廓数据,如图12C所示。实际上,两个轮廓的重新连接如图13A到13D所示。
图13A示出了重新连接在α处相交的基准轮廓数据(ABCD)的线段DA和目标轮廓数据(EFGH)的线段EF的方法。通过经过交点α(α1)连接基准轮廓数据所述线段的起点D和目标轮廓数据所述线段的终点F,形成D→α1→ F连接。通过经过交点α(α2)连接目标轮廓数据所述线段的起点E和基准轮廓数据所述线段的终点A形成另外一个连接E→α2→A。另外,根据这种连接改变下一个点和前一个点的号。
特别是,在图13A所示的例子中,用于点D的“下一个点号”被变成“10”以指示点α1,同时,用于点α1的“前一个点号”变成“3”以指示点D,“下一个点号”被类似地变成“6”以指示点F,和用于点F的“前一个点号”被变成用于指示点α1的“10”。类似的,用于点E的“下一个点号”变成“11”以指示点α2,同时,用于点α2的“前一个点号”被变成“5”以指示点E,“下一个点号”被类似的变成“4”以指示点A,和用于点A的“前一个点号”被变成用于指示点α2的“11”。
图13B所述了如图12A所示基准轮廓数据的线段BC和目标轮廓数据的线段EF的连接。由于线段EF已经被分成线段Eα2和α1F,所以,包含所述交点的线段α1F被选择为目标轮廓数据的线段。线段BC、α1F和交点β被重新连接为B→β1→F和α1→β2→C。然后,根据这个重新连接改变下一个点号和前一个点号。
与此类似,图13C示出了基准轮廓数据的线段BC和目标轮廓数据的线段GH的重新连接。具有交点γ的基准轮廓数据的线段β2C和目标轮廓数据的线段GH被重新连接为β2→γ1→H和G→γ2→C。另外,根据这个重新连接修改轮廓坐标数据表。最后,如图13D所示,执行基准轮廓数据线段DA和目标轮廓数据线段GH的重新连接。基准轮廓数据的线段Dα1和目标轮廓数据的线段γ1H被重新连接为D→δ1→H和γ1→δ2→α1,和根据这个重新连接修改轮廓坐标数据表,如图13D所示,该图示出了在步骤S10重新连接操作之后的轮廓坐标数据表。
然后,步骤S11执行删除在步骤S10通过重新连接消除的轮廓的寄存操作或加上新产生的轮廓的的寄存操作。在上述解释过的实例中,当步骤产生连接A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A,目标轮廓数据E→F→G→H被吸收在基准轮廓数据中。然后,为了指出基准轮廓数据已经被消除,目标轮廓数据的起点号和终点号被变成“-1”,如图14B所示。
另外,还产生了不属于上述轮廓的新轮廓α1→β2→γ1→δ。由于图13D所示的状态是没有起点和终点的一个回路,所以,通过选择所述多个点中的任何一个点作为起点和终点寄存所述新的轮廓。这种新轮廓的寄存是在轮廓数据管理信息部分的终点处进行的。然后,这个轮廓的旋转方向和最大、最小值被检查和寄存,如图14B和14C所示。步骤S7到S11用于改变基准轮廓数据(ABCD)和目标轮廓数据(EFGH)的连接和完成一个目标轮廓的数据处理。
然后,步骤S12例如通过检查在步骤S11中处理的目标轮廓数据之后是否存在其它的轮廓数据来搜索目标轮廓数据的下一侯选数据。如果存在,步骤S13识别所述目标轮廓数据没有被用尽,所述顺序前进到步骤S14。另一方面,如果不存在,步骤S13识别目标轮廓数据已经被用尽,所述顺序前进到步骤S15。步骤S14将在步骤S12搜索到的目标轮廓数据作为新检测到的轮廓数据寄存,和然后所述顺序返回到步骤S7,以便检查与基准轮廓数据的交点并执行重新连接(如果存在所述交点的话)。在步骤S12或步骤S15搜索目标或基准轮廓数据的过程中,如果所述起点和终点不是“-1”,则这种交点被判断为存在。在这些值是“-1”的情况下,所述轮廓数据被识别为被消除和搜索下一个轮廓数据。
步骤S17将在步骤S15搜索到的基准轮廓数据作为将被新检查的轮廓数据寄存,所述顺序返回到步骤S6,以便检查与目标轮廓数据的交点和如果发现交点的话执行重新连接。最后,步骤S18将在步骤S16之前确定的轮廓数据作为不包括交点的完整轮廓数据输出。这个不包括交点的完整轮廓数据确实不需要包括寄存在轮廓数据管理信息部分中的所有轮廓。在图14A所示的例子中,轮廓A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A是最后寄存的轮廓,而轮廓α1→β2→γ1→δ2不是最后被寄存的。
这种轮廓的识别是以下述方式执行的。
在轮廓数据信息部分中最初寄存的一定数量的轮廓被存储,和最后在多个位置处寄存的轮廓数据当中不会超过这个数量,不表示所述旋转方向(图14A所示例中A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A)相反方向的这些轮廓将被判断为将被寄存的数据。在这些超过上述数量位置中寄存的轮廓当中,即在这些新寄存的轮廓当中,只表示旋转方向相反方向的这些轮廓数据判断为将被寄存的数据。在图14A所示的例子中,没有数据与与这种规定对应。
作为另一个例子,图15A和15B所示的轮廓数据组最初具有的轮廓数量是4。第一个轮廓数据由点号0到4组成,第二个轮廓数据由点号5到9组成,第三个轮廓数据由点号10到14组成和第四个轮廓数据由点号15到19组成。根据上述算法对这些轮廓数据的处理最终提供图16A和16B所示的数据。在这种情况下,由于最初轮廓数量是4,所以,只有利用最初轮廓才能满足在不超过最初数量和不表示旋转方向相反方向的一个位置处寄存的条件。另外,只有利用最后轮廓才能满足在超过最初数量和表示所述旋转方向相反方向的一个位置处寄存的条件。因此,只有这两个轮廓被最后寄存和能够产生不相交完整轮廓数据,如图17所示。
步骤S19执行将在后面根据图23所示流程表示的一个处理,用于从在步骤S18提取的直线数据组中提取将被转换成曲线数据的数据并将如此提取的数据转换成曲线数据。
因此,通过检测轮廓的交点、重新连接相互交叉的轮廓和最终只提取所需数据可以从包含交点的轮廓数据中产生不相交数据。
下面,为图23所示流程设置一个基准,用于解释图22中步骤S19执行的向曲线数据的转换。
步骤S21从作为直线组寄存的数据中提取曲线区域和直线段区域。在所述直线段的长度超过某个阈值的情况下,通过将该线段末端处的点识别为终点来实现对这个直线段区域识别。在图24所示的例子中,矩形被判断为直线段的终点。在从目标轮廓的点中提取所述直线段之后,所述顺序前进到步骤S22,该步骤识别在所述曲线区域中能够被曲线方程表示的区域。执行处理以提取拐弯位置,在该拐弯位置处,所述点的方向表示曲线区域中的一个急剧变化。该处理是通过检测两个相邻点之间的方向和提取其中这个被检测方向不同于到一个阈值角以外下一个相邻点的方向的点实现的。在图24所示的例子中,黑色圆表示曲线的终点。曲线区域和直线区域以这种方式提取。在图24所示的例子中,从点A到点B的区域被判断为是一个曲线区域,从B到C的区域被判断为是一个曲线区域,从C到D的区域被判断为是一个直线区域,从D到E的区域被判断为是一个直线区域,从E到F被判断为是一个直线区域,从F到G被判断为是一个曲线区域,从G到A被判断为是一个曲线区域。
步骤S23利用一个所希望的曲线等式执行到在前述处理中被判断为直线数据的近似。这种近似可以使用诸如二阶B-分离曲线等式、二阶贝塞尔曲线等式等各种等式,一个回路的等式是三阶分离曲线等式或三阶贝塞尔曲线等式。例如,在如图7所示直线段组由三阶贝塞尔曲线等式表示的情况下,如图25所示首先确定经过终点和直接相邻点的一个直线,计算在这个直线延伸到第三阶曲线控制点的位置。在如图7所示的这个例子中,贝塞尔分解提供7个点,同时,两次分解提供13点,和n次分解提供(3x2n+1)个点。这样,对于包含在一个单一曲线区域中的x数量个点来讲,确定满足一个整数n的关系(3x2n-1+1)<x<(3x2n+1),所述控制点被放置在经过终点和直接相邻点的所述直线延伸上与这两个点之间距离的2n倍距离对应的距离处。
在图25所示的例子中,x=10,所以满足上述关系的整数n被确定为“2”。然后,控制点被放置在与所述终点和所述相邻点之间距离4倍对应的位置(口)处,借此,可以实现从直线段组到曲线控制点的转换。步骤S24提供了一个由在步骤S22确定的直线段的终点和在步骤S23确定的曲线区域的的终点和控制点构成的用于规定所述轮廓的新点组。当产生所述直线段数据和曲线数据时,必须将一个识别标记加到所述数据上以便进行识别。
当作为控制点x的终点O被提供用于图16A所示的曲线时,标记“0”被附加到所述终点和标记“1”被附加到所述控制点上,如图26B所示。
然后,步骤25鉴别需要被处理的轮廓数据是否仍然存在,如果存在,所述顺序返回到步骤S1以再次执行直线数据组到直线和曲线数据组的转换。如果这样的数据不存在,顺序结束。
如前所述,可以根据直线轮廓数据发现曲线轮廓数据。
本发明不仅可以应用于由多个仪器(诸如主计算机、接口设备、阅读器和打印机等)组成的系统,而且可以应用于由一个仪器(诸如复印机或传真机等)构成的装置。
另外,本发明的目的还可以通过提供一个具有用于存储实现前述实施例功能的软件程序码的存储介质的系统或装置并利用这种系统或装置的计算机(或CPU或MPU)读出和执行存储在这个存储介质上的程序码来实现。
在这种情况下,从所述存储介质读出的程序码本身实现前述实施例的功能,用于存储程序码的存储介质构成本发明。
用于提供程序码的存储介质例如可以是软盘、硬盘、光盘、光磁盘、CD-ROM、CD-R、磁带、非易失存储卡或ROM。
除了利用计算机读出程序码实现前述实施例功能以外,本发明还可以根据上述程序码的指令利用操作系统或类似的功能实现实际处理或部分处理。
此外,本发明还包括下述情况,即从所述存储介质中读出的程序码被存储在在插入到所述计算机中一个功能扩展板内提供的存储器中或其中的一个功能扩展单元的存储器中,和根据这些程序码的指令利用在这个功能扩展板或单元内的CPU执行实际或部分处理,以便实现前述实施例的功能。
如在前面所解释的,本发明前述实施例在根据曲线数据产生直线段之后执行交点的检测,借此根据包含交点笔画的坐标数据高速产生不相交完整轮廓的轮廓数据。
还可以根据由笔画单元轮廓数据构成的包含交点的笔画数据高速产生高图象质量的不相交轮廓坐标。
还可以根据由中心线和宽度表示的数据构成的包含交点的笔画数据高速产生高图象质量不包含交点的轮廓坐标。
如在前面所解释的,本发明允许从包含交点的笔画中产生不相交完整轮廓数据。
另外,本发明还提供了一个优点,即可以高速和高质量地产生一个图象图案。
权利要求
1.一种用于根据在可能相互交叉的多个笔画的一个笔画中寄存的数据产生不相交轮廓数据的信息处理装置,包括;读出装置,用于读出两个笔画的轮廓坐标;整直装置,用于整直由所述两个轮廓坐标表示的轮廓;鉴别装置,用于在所述轮廓坐标被所述整直装置整直的基础上鉴别所述两个笔画的轮廓是否相互交叉;和轮廓数据产生装置,用于确定由所述鉴别装置识别的交点和改变包括所述交点的轮廓点的连接,借此以产生不相交轮廓数据。
2.根据权利要求1所述的装置,还包括判断装置,用于判断由所述产生装置产生的不相交轮廓数据的曲线部分;和曲线产生装置,用于在由所述判断装置判断的曲线部分的基础上产生一个曲线。
3.根据权利要求1所述的装置,还包括输出装置,用于在由所述轮廓数据产生装置产生的轮廓数据的基础上输出一个模式。
4.根据权利要求3所述的装置,其特征是所述输出装置是一个打印机。
5.根据权利要求3所述的装置,其特征是所述输出装置是一个显示器。
6.根据权利要求1所述的装置,其特征是所述笔画的轮廓座标表示所述笔画的轮廓。
7.根据权利要求1所述的装置,其特征是所述笔画的轮廓座标是表示一个中心线和宽度的数据。
8.根据权利要求1所述的装置,其特征是所述鉴别装置被用于在所述两个笔画轮廓座标的最大和最小值的基础上鉴别所述两个笔画是否相交。
9.根据权利要求1所述的装置,其特征是所述轮廓产生装置被用于通过确定经过所述两个笔画交点的的连续轮廓和连接相同旋转方向的连续轮廓产生所述轮廓数据。
10.根据权利要求9所述的装置,其特征是所述轮廓数据产生装置被用于产生组成旋转方向不同于所述第一轮廓旋转方向的第二独立轮廓的轮廓数据。
11.一种用于从寄存在可能相互交叉的多个笔画的一个笔画中的数据产生不相交轮廓数据的信息处理方法,包括读出步骤,用于读出两个笔画的轮廓数据;整直步骤,用于整直由所述轮廓座标表示的轮廓;鉴别步骤,用于在被整直轮廓座标的基础上鉴别所述两个笔画座标的轮廓是否相交;和轮廓数据产生步骤,用于确定由所述鉴别步骤识别的一个交点和改变包括所述交点在内多个轮廓点的连接,借此产生不相交轮廓数据。
12.根据权利要求11所述的方法,还包括判断步骤,用于判断由所述产生步骤产生的不相交轮廓数据的曲线部分;和曲线产生步骤,用于在由所述判断步骤判断的曲线部分的基础上产生一个曲线。
13.根据权利要求11所述的方法,其特征是所述笔画的轮廓座标表示所述笔画的轮廓。
14.根据权利要求11所述的方法,其特征是所述笔画的轮廓座标是表示中心线和宽度的数据。
15.根据权利要求11所述的方法,其特征是所述鉴别步骤被用于在所述两个笔画轮廓座标最大值和最小值的基础上鉴别所述两个笔画是否相交。
16.根据权利要求11所述的方法,其特征是所述轮廓数据产生步骤被用于通过确定经过所述两个笔画交点的连续轮廓和连接相同旋转方向的连续轮廓产生所述轮廓数据。
17.根据权利要求16所述的方法,其特征是所述轮廓数据产生步骤被用于产生组成旋转方向不同于所述第一轮廓旋转旋转方向的第二独立轮廓的轮廓数据。
18.一种用于执行用于从可能相互交叉的多个笔画的一个笔画中寄存的轮廓数据中产生不相交轮廓数据的信息处理方法的程序,包括整直步骤模块,用于整直由所述轮廓座标表示的轮廓;鉴别步骤模块,用于在被整直轮廓座标的基础上鉴别所述两个笔画的轮廓是否相交;和轮廓数据产生步骤模块,用于确定由所述鉴别步骤模块识别的一个交点和改变包括所述交点在内的多个轮廓点的连接,借此,产生不交叉轮廓数据。
19.根据权利要求18所述的程序,还包括判断步骤模块,用于判断由所述产生步骤产生的不相交轮廓数据的曲线部分;和曲线产生步骤模块,用于在由所述判断步骤模块判断的曲线部分的基础上产生一个曲线。
全文摘要
本发明旨在以高速从包含交点的笔画数据中产生不相交完整轮廓数据,借此高速输出高质量的字符和图象。从寄存字符的所有笔画中提取每一对笔画,然后,被提取笔画的曲线数据被整直,并鉴别每一对被提取笔画的线段是否相互交叉,如果存在交点,这个交点的坐标被计算和存储。然后,在所存储交点坐标的基础上根据一个预定法则重新连接所述轮廓。
文档编号G06T11/20GK1188274SQ9712259
公开日1998年7月22日 申请日期1997年10月10日 优先权日1996年10月11日
发明者吉田政幸 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1