AU745157B2 - Method and apparatus for generating a geometric skeleton of a polygonal shape - Google Patents

Method and apparatus for generating a geometric skeleton of a polygonal shape Download PDF

Info

Publication number
AU745157B2
AU745157B2 AU52623/99A AU5262399A AU745157B2 AU 745157 B2 AU745157 B2 AU 745157B2 AU 52623/99 A AU52623/99 A AU 52623/99A AU 5262399 A AU5262399 A AU 5262399A AU 745157 B2 AU745157 B2 AU 745157B2
Authority
AU
Australia
Prior art keywords
point
locus
parameter value
list
skeleton
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
AU52623/99A
Other versions
AU5262399A (en
Inventor
Michael Richard Arnold
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AUPP6317A external-priority patent/AUPP631798A0/en
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU52623/99A priority Critical patent/AU745157B2/en
Publication of AU5262399A publication Critical patent/AU5262399A/en
Application granted granted Critical
Publication of AU745157B2 publication Critical patent/AU745157B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Description

S F Ref: 476547
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT
ORIGINAL
V. V a
V.
r r r r Name and Address of Applicant: Actual Inventor(s): Address for Service: Canon Kabushiki Kaisha 30-2, Shimomaruko 3-chome Ohta-ku Tokyo 146
JAPAN
Michael Richard Arnold Spruson Ferguson, Patent Attorneys Level 33 St Martins Tower, 31 Market Street Sydney, New South Wales, 2000, Australia Method and Apparatus for Generating a Geometric Skeleton of a Polygonal Shape Invention Title: ASSOCIATED PROVISIONAL APPLICATION DETAILS [31] Application No(s) [33] Country PP6317 AU [32] Application Date 2 October 1998 The following statement Is a full description of this invention, including the best method of performing It known to me/us:- 5815 -1- METHOD AND APPARATUS FOR GENERATING A GEOMETRIC SKELETON OF A POLYGONAL SHAPE Copyright Notice This patent specification contains material that is subject to copyright protection.
The copyright owner has no objection to the reproduction of this patent specification or related materials from associated patent office files for the purposes of review, but otherwise reserves all copyright whatsoever.
Field of Invention The present invention relates to polygons in general and in particular to the generation of geometric skeletons of polygonal shapes, such as character font outlines and shapes.
Background of Invention The generation of a geometric skeleton is an important step in many imageprocessing tasks such as offset generation, character stroke generation, and artistic effects.
For example, in character stroke generation, the geometric skeleton provides a medial axis transform associating points on the boundary with corresponding points on the other side of the stroke.
SThe publication "Medial Axis Transformation of a Planar Shape", IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. PAM1-4, No. 4, July 1982, by D.T. Lee (hereinafter called Lee) discloses a method for computing a medial axis "of a planar shape represented by an n-edge polygon. Lee defines the transformation as follows: given an object represented, say by a simple polygon G, the medial axis is the set of points internal to G such that there are least two points on the object's boundary that are equidistant from and are closest to Because of its shape, the medial axis of a figure is also called the skeleton or the symmetric axis of the figure. Specifically, Lee defines the skeleton Sp for a polygonal shape P as a set of edges and nodes, where the edges are of the form of loci, and the nodes are the intersections points of these loci (locations in Sp that are closest to more than two points in The skeleton of a polygon is described in Lee as being made up of three types of loci. Namely, the locus between two line segments, which is in this case a line segment, the locus between a point and a line segment, which is in this case a parabolic segment, the locus between two points, which is in this case a line. This method suffers from errors in calculating the CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM skeleton, due to errors in floating point calculations, especially in calculating above.
i Consequently, it is not possible to accurately describe a geometric skeleton in this fashion.
Summary of the Invention It is an object of the present invention to ameliorate one or more disadvantages of the prior art.
According to one aspect of the invention, there is provided a method of generating a component of a geometric skeleton of a polygon, said polygon comprising a plurality of interconnected line segments, the method comprising the step of: determining, for a current line segment of said plurality, a first point on a line perpendicular to said current line segment at a second point corresponding to a parameter value, wherein said first point is a point of a locus between said current line segment and one other of said line segments, which locus point is the closest locus point, on said line, to the current line segment of any locus point of said current line segment and any one of the line segments other than the current line segment, said first point forming a point of said component of said skeleton.
According to another aspect of the invention, there is provided a method of i generating components of a geometric skeleton of a polygon, wherein said polygon comprises a plurality of line segments and one or more concave vertices, the method comprising the step of: determining, for each said concave vertex, a first point on a radial line from the current concave vertex, wherein said radial line has a corresponding parameter value and said first point is a point ofa locus between said current concave vertex and a said line segment, which locus point is the closest locus point on said radial line of any locus point of said current concave vertex and any one of said line segments, oooo said first point forming a point of said components of said skeleton.
According to still another aspect of the invention, there is provided a method of generating a geometric skeleton of a polygonal shape, the method comprising the steps of: determining a parameter value of an edge or concave vertex of the polygonal shape where the distance from said edge or concave vertex to a point of a locus between said edge or concave vertex and another edge of the polygonal shape is a minimum; and storing said parameter value and a label representative of said another edge having said minimum distance as a data signal representative of the geometric skeleton at said parameter value.
CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53476547.doc:PWM y
V
(i -3- According to still another aspect of the invention, there is provided a method of generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the method comprising the steps of: generating, for each said line segment of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; and storing said lists as a representation of said components of said skeleton.
According to still another aspect of the invention, there is provided a method of generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments and one or more concave vertices, the method comprising the steps of: generating, for each concave vertex of the polygon, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex (i) and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" i forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and storing said lists as a representation of said components of said skeleton.
According to still another aspect of the invention, there is provided a method of generating a representation of a geometric skeleton of a polygon, wherein the polygon CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM sfi^ I I comprises a plurality of line segments, the method comprising the steps of: generating, for each said line segment of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; generating, for each concave vertex of the polygon if any, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and storing said lists as a representation of said skeleton.
According to still another aspect of the invention, there is provided a method of generating a representation of skeletal components of a polygon, the method comprising the steps of: selecting a first edge Ni of the polygon; creating a list associated with said first edge for storing k members (tk, Nk), where tk is a parameter value associated with a point on said first edge, and Nk is an edge of the polygon; selecting a second edge Nj of the polygon other than the first edge Ni; determining at least one said parameter value on said first edge Ni so that a locus(Ni, Nj distance function is monotonic moving away from said at least one parameter value; adding said determined parameter value to said list if not already on said list; determining, for each CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 1C-;o~ h ~L~IXr*-~iiL~~ two members of the list (tk, Nk), (tk+l, Nk+l) having adjacent parameter values, if a point of locus(Ni Nj is closer to the first edge than either of a point of locus(Ni ,Nk) and a point of locus(Ni ,Nk+l) at any parameter value intermediate tk and tk+i; adding said determined intermediate parameter value to said list, if not already on said list; (h) replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Ni Nj distance function is less than the locus (Ni, Nk) distance function at the parameter value tk; repeating steps to for each remaining said second edge; repeating steps to for each remaining said first edge; and storing said lists as a data signal representative of said skeletal components.
According to still another aspect of the invention, there is provided a method of generating a representation of skeletal components of a polygon, the method comprising the steps of: selecting a first concave vertex Vi of the polygon; creating a list associated with said first concave vertex for storing k members (tk, Nk), where tk is a parameter value associated with a radial line from said first concave vertex, and Nk is an edge of the polygon; selecting a second edge Nj of the polygon; determining at least one said parameter value associated with said first concave vertex Vi so that a locus(Vi Nj distance function is monotonic moving away from said at least one parameter value; adding said determined parameter value to said list if not already on S* said list; determining, for each two members of the list (tk, Nk), (tk+l, Nk+I) having adjacent parameter values, if a point of locus(Vi, Nj is closer to the first concave vertex than either of a point of locus(Vi ,Nk) and a point of locus(Vi ,Nk+l) at any parameter °value intermediate tk and tk+l; adding said determined intermediate parameter value to said list, if not already on said list; replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Vi, Nj distance function is less than the locus (Vi, Nk) distance function at the parameter value tk; repeating steps to for each i remaining said second edge; repeating steps to for each remaining said first concave vertices; and storing said lists as a data signal representative of said skeletal components.
According to still another aspect of the invention, there is provided apparatus for generating a component of a geometric skeleton of a polygon, said polygon comprising a plurality of interconnected line segments, the apparatus comprising: means for determining, for a current line segment of said purality, a first point on a line perpendicular to said current line segment at a second point corresponding to a parameter CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM II t^ value, wherein said first point is a point of a locus between said current line segment and one other of said line segments, which locus point is the closest locus point, on said line, to the current line segment of any locus point of said current line segment and any one of the line segments other than the current line segment, said first point forming a point of said component of said skeleton.
According to still another aspect of the invention, there is provided apparatus for generating components of a geometric skeleton of a polygon, wherein said polygon comprises a plurality of line segments and one or more concave vertices, the apparatus comprising: means for determining, for each said concave vertex, a first point on a radial line from the current concave vertex, wherein said radial line has a corresponding parameter value and said first point is a point of a locus between said current concave vertex and a said line segment, which locus point is the closest locus point on said radial line of any locus point of said current concave vertex and any one of said line segments, said first point forming a point of said components of said skeleton.
According to still another aspect of the invention, there is provided apparatus for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the apparatus comprising: means for generating, for each said line segment (i of the polygon, a list comprising a plurality of •members where and are any members of the list, t' S 20 and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current S: ••line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" 0••oi forms another point of the skeleton, and for any parameter value immediate t' and t" a Spoint, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; and means for storing said lists as a representation of said components of said skeleton.
According to still another aspect of the invention, there is provided apparatus for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments and one or more concave vertices, the apparatus comprising: means for generating, for each concave vertex (i of the polygon, a CFP1467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -7list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex (i) and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value 0' immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and means for storing said lists as a representation of said components of said skeleton.
According to still another aspect of the invention, there is provided apparatus for generating a representation of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the apparatus comprising: means for generating, for each said line segment (i of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in SI.o "the list, and N and P are said line segments of the polygon other than the current line *segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; means for generating, for each 0 a 0 0 concave vertex (i of the polygon if any, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for CFP1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM any parameter value immediate 0' and 0" a point, being one of a point of locus (i,N) or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and means for storing said lists as a representation of said skeleton.
According to still another aspect of the invention, there is provided apparatus for generating a representation of skeletal components of a polygon, the apparatus comprising: first selection means for selecting a first edge Ni of the polygon; creation means for creating a list associated with said first edge for storing k members (tk, Nk), where tk is a parameter value associated with a point on said first edge, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon other than the first edge Ni; first determination means for determining at least one said parameter value on said first edge Ni so that a locus(Ni, Nj distance function is monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not already on said list; second determination means for determining, for each two members of the list (tk, Nk), (tk+I, Nk+l) having adjacent parameter values, if a point of locus(Ni Nj is closer to the first edge than either of a point of locus(Ni ,Nk) and a point of locus(Ni ,Nk+l) at any parameter value intermediate tk and tk+i; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; replacement means for 20 replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Ni Nj distance function is less than the locus (Ni, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining said second edge; second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, replacement means, and first repetition !means for each remaining said first edge; and storage means for storing said lists as a data signal representative of said skeletal components.
According to still another aspect of the invention, there is provided apparatus for generating a representation of skeletal components of a polygon, the apparatus comprising: first selection means for selecting a first concave vertex Vi of the polygon; CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -9creation means for creating a list associated with said first concave vertex for storing k members (tk, Nk), where tk is a parameter value associated with a radial line from said first concave vertex, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon; first determination means for determining at least one said parameter value associated with said first concave vertex Vi so that a locus(Vi ,Nj distance function is monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not already on said list; second determination means for determining, for each two members of the list (tk, Nk), (tk+l, Nk+l) having adjacent parameter values, if a point of locus(Vi Nj is closer to the first concave vertex than either of a point of locus(Vi ,Nk) and a point of locus(Vi ,Nk+l) at any parameter value intermediate tk and tk+l; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; replacement means for replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Vi Nj distance function is less than the locus (Vi, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining ••said second edge; second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first 20 addition means, second determination means, second addition means, replacement means, S• •and first repetition means for each remaining said first concave vertices; and storage means for storing said lists as a data signal representative of said skeletal components.
According to still another aspect of the invention, there is provided a computer S.program product having a computer readable medium comprising a computer program for generating a component of a geometric skeleton of a polygon, said polygon comprising a plurality of interconnected line segments, the apparatus comprising: means for determining, for a current line segment of said purality, a first point on a line perpendicular to said current line segment at a second point corresponding to a parameter value, wherein said first point is a point of a locus between said current line segment and one other of said line segments, which locus point is the closest locus point, on said line, to the current line segment of any locus point of said current line segment and any one of the line segments other than the current line segment, said first point forming a point of said component of said skeleton.
CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM According to still another aspect of the invention, there is provided a computer program product having a computer readable medium comprising a computer program for generating components of a geometric skeleton of a polygon, wherein said polygon comprises a plurality of line segments and one or more concave vertices, the computer program product comprising: means for determining, for each said concave vertex, a first point on a radial line from the current concave vertex, wherein said radial line has a corresponding parameter value and said first point is a point of a locus between said current concave vertex and a said line segment, which locus point is the closest locus point on said radial line of any locus point of said current concave vertex and any one of said line segments, said first point forming a point of said components of said skeleton.
According to still another aspect of the invention, there is provided a computer program product having a computer readable medium comprising a computer program for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the computer program product comprising:means for generating, for each said line segment (i of the polygon, a list comprising a plurality of members and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; a....and means for storing said lists as a representation of said components of said skeleton.
According to still another aspect of the invention, there is provided a computer o. o.:program product having a computer readable medium comprising a computer program for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments and one or more concave vertices, the computer program product comprising: means for generating, for each concave vertex (i) of the polygon, a list comprising a plurality of members where CEPi1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 4; 'g 22 -11 and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and means for storing said lists as a representation of said components of said skeleton.
According to still another aspect of the invention, there is provided a computer program product having a computer readable medium comprising a computer program for generating a representation of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the computer program product comprising: means for generating, for each said line segment (i of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than S: the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; means for generating, for each concave vertex of the polygon if any, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -12any parameter value immediate 0' and 0" a point, being one of a point of locus (i,N) or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and means for storing said lists as a representation of said skeleton.
According to still another aspect of the invention, there is provided a computer program product having a computer readable medium comprising a computer program for generating a representation of skeletal components of a polygon, the computer program product comprising: first selection means for selecting a first edge Ni of the polygon; creation means for creating a list associated with said first edge for storing k members (tk, Nk), where tk is a parameter value associated with a point on said first edge, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon other than the first edge Ni; first determination means for determining at least one said parameter value on said first edge Ni so that a locus(Ni, Nj distance function is monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not already on said list; second determination means for determining, for each two members of the list (tk, Nk), (tk+l, Nk+l) having adjacent parameter values, if a point of locus(Ni Nj is closer to the first edge i than either of a point of locus(Ni ,Nk) and a point of locus(Ni ,Nk+l) at any parameter value intermediate tk and tk+l; second addition means for adding said determined 20 intermediate parameter value to said list, if not already on said list; replacement means for .replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Ni Nj distance function is less than the locus (Ni, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining said second edge; second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, replacement means, and first repetition means for each remaining said first edge; and storage means for storing said lists as a data signal representative of said skeletal components.
According to still another aspect of the invention, there is provided a computer program product having a computer readable medium comprising a computer program for CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 13generating a representation of skeletal components of a polygon, the computer program 0 product comprising: first selection means for selecting a first concave vertex Vi of the polygon; creation means for creating a list associated with said first concave vertex for storing k members (tk, Nk), where tk is a parameter value associated with a radial line from said first concave vertex, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon; first determination means for determining at least one said parameter value associated with said first concave vertex Vi so that a locus(Vi Nj distance function is monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not already on said list; second determination means for determining, for each two members of the list (tk, Nk), (tk+1, Nk+I) having adjacent parameter values, if a point of locus(Vi Nj is closer to the first concave vertex than either of a point of locus(Vi ,Nk) and a point of locus(Vi ,Nk+l) at any parameter value intermediate tk and tk+I; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; replacement means for replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Vi, Nj distance function is less than the locus (Vi, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for 20 each remaining said second edge; second repetition means for repeating the operations of o• the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, *:replacement means, and first repetition means for each remaining said first concave vertices; and storage means for storing said lists as a data signal representative of said skeletal components.
Brief Description of the Drawings Embodiments of the invention are described with reference to the drawings, in :which: Fig. 1 is a flow diagram of a method for generating a geometric skeleton of a polygonal shape in accordance with a first embodiment; Fig. 2 is a flow diagram of the process of determining t-values as used in the method of Fig. 1; Fig. 3 is a representation of an example of a line segment and three loci; CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -14- Fig. 4A is a representation of another example of a line segment and three loci; Fig. 4B is another representation of an example of a line segment and three loci; Fig. 5 is an example representation of two parallel line segments; Fig. 6 is another example of a representation of the locus of two parallel line segments; Fig. 7 is another example of a representation of the locus of two parallel line segments; Fig. 8A is another example of a representation of the locus of two line segments; Fig. 8B shows the locus distance of the example shown in Fig. 8A; Fig. 9 is another example of a representation of the locus of two line segments; Fig. 10 is a flow diagram of the process of determining 0-values as used in the method of Fig. 1; Fig. 11 is an example of a representation of a concave vertex and a line segment; Fig. 12A is another example of a representation of the locus of a concave vertex and a line segment; Fig. 12B shows the locus distance of the example shown in Fig. 12B; Fig. 13 is another example of a representation of the locus of a concave vertex and a line segment; Fig. 14 is a flow diagram of the three way comparison process as used in the 20 method ofFig. 1; Fig. 15 is a flow diagram of the resetting process as used in the method of Fig. 1; Fig. 16A shows an example of a polygon and a skeleton generated by the method of Fig. 1; Fig. 16B shows another example of a polygon and a skeleton generated by the method of Fig. 1; Fig. 16C shows another example of a polygon and a skeleton generated by the method of Fig. 1; Fig. 16D shows another example of a polygon and a skeleton generated by the method of Fig. 1; Fig. 16E shows a square derived from a character font outline; Fig. 16F shows the square of Fig. 16E and a partial skeleton generated by the method of Fig. 1; CFPI 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM r Fig. 16G shows the square of Fig. 16E and a partial skeleton generated by the method of Fig. 1; Fig. 16H shows the square of Fig. 16E and a partial skeleton generated by the method of Fig. 1; Fig. 161 shows the square of Fig. 16E and a partial skeleton generated by the method of Fig. 1; Fig. 16J shows the square of Fig. 16E and the total skeleton generated by the method of Fig. 1; Fig. 17 shows the polygon of Fig. 16D and an incomplete partial skeleton generated by the method of Fig. 1; Fig. 18 shows the polygon of Fig. 16D and an incomplete partial skeleton generated by the method of Fig. 1; Fig. 19 shows the polygon of Fig. 16D and an incomplete partial skeleton generated by the method of Fig. 1; Fig. 20 shows the polygon of Fig. 16D and an incomplete partial skeleton generated by the method of Fig. 1; Fig. 21 shows the polygon of Fig. 16D and an incomplete partial skeleton generated by the method of Fig. 1; Fig. 22 shows the polygon of Fig. 16D and the completed partial skeleton generated by the method of Fig. 1; and Fig. 23 is a block diagram of a general-purpose computer.
Detailed Description Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the samne function(s) or operation(s), unless the contrary intention appears.
The principles of the preferred methods described herein have general applicability to generating a geometric skeleton of a polygonal shape. However, for ease of explanation, the steps of the preferred methods are described with reference to generating a skeleton of particular character font outlines and shapes. However, it is not intended that the present invention be limited to a method of generating skeletons of these particular character font outlines and shapes. For example, the invention may have application to generating skeletons for general polygons and shapes. In addition, the CEPi 467AU(Open53)476547 (I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -16invention may have application to other applications such as generating offsets. Whilst the
O
present invention has particular application to two dimensional polygonal shapes, it may have also application to other geometric objects which can be decomposed into objects for which the geometric skeleton is easily defined.
Some portions of the detailed descriptions which follow are explicitly or implicitly presented in terms of algorithms and symbolic representations of operations on data within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms, such as locus points, are to be associated with the appropriate physical quantities and are merely •convenient labels applied to these quantities. Unless specifically stated otherwise in the specification it is apparent that terms such as "selecting", "determining", "generating", "creating", and "storing" or the like, refer to the action and processes of a computer Ssystem, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
A further embodiment relates to apparatus for performing the operations of the ooooo preferred methods herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus.
Various general purpose machines may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -17perform the required method steps. The structure of a conventional general purpose computer will appear from the description below.
In addition, a still further embodiment relates to a computer program product having a computer readable medium including a computer program for performing the operations of the preferred methods herein on the above said apparatus. The computer readable medium is taken herein to include any transmission medium for transmitting the computer program between a source and a designation. The transmission medium may include storage devices such as magnetic or optical disks, memory chips, or other storage devices suitable for interfacing with a general purpose computer. The transmission medium may also include a hard-wired medium such as exemplified in the Internet system, or wireless medium such as exemplified in the GSM mobile telephone system. It will be appreciated that a variety of programming languages and implementations thereof may be used to implement the teachings of the invention as described herein.
Before proceeding with a description of the embodiments, a description of a new skeleton representation as used hereinafter is given. In this approach, the geometric skeleton S P is represented for each line segment and concave vertex, X, of the polygonal shape P with respect to P-X (where represents set subtraction) as follows: S {y I 3ae P-X,beX such that d(b, y)VpeP} Eqnl where d(pl,pl) means the distance between points pi and pl. The total skeleton Sp is then the union of all skeletons S P for all line segments and concave vertices X.
As long as the computer representations of the loci with respect to X are well defined, this approach of describing the skeleton is very robust.
25 The preferred methods are based on a method for generating a representation of a geometric skeleton of above-mentioned type.
For illustration purposes only, Figs. 16A, 16B, 16C and 16D show some skeletons of simple polygons in accordance with the above-mentioned skeleton representation. Fig.
16A shows a polygon in the shape of a square 1600A and its corresponding skeleton 1602A. Fig. 16B shows a polygon in the shape of a triangle 1600B and its corresponding skeleton 1602B. Fig. 16C shows a polygon in the shape of a rectangle 1600C and its CFP 1467AU(Open53)476547 []:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -18corresponding skeleton 1602C. Fig. 16D shows a more complex polygon having sides 1601, 1602, 1603, 1604, 1605, 1606, and 1607 and its corresponding skeleton B.
Before proceeding with the description of the embodiments, a brief discussion of the terminlogy used herein is given.
The term "t-value" refers to a parameter value corresponding to a point on a line segment i, which line segment i is represented by a parametric representation having tvalues, with the start of the line segment i having a parameter value (t-value) of zero (0) and the other end of the line segment i having a parameter value (t-value) of one(l). As an illustration, Fig. 5 shows a line segment A which has been parameterized having a zero tvalue at endpoint ao and a t-value of one at endpoint al.
The term "0-value" refers to a parameter value corresponding to the angle of a vector extending from a concave vertex i, which concave vertex i is represented by a parametric representation having 0-values with period 27t. As an illustration, Fig. 11 shows an example of a concave vertex A having start and end 0-values of 01 and 01.
The term "locus refers to the locus of points equidistant from two elements i and j, where i is a line segment or concave vertex and j is a line segment. As one example, Fig. 5 shows the locus(A,R) of the line segment A and line segment R.The locus(A,R) is equidistant from the line segments A and R. Figs. 6,8A, and 9 show other examples of a locus(i,j). As another example, Fig. 12A shows the locus(A,X) of the 20 concave vertex A and line segment X. The locus is equisdistant from the vertex A and the line segment X.
The term "locus(i,j) distance function", in case of a line segment i, refers to a function where the perpendicular distance to the locus(ij) from line segment i is a function of the parameter t. As an illustration, Fig. 8B shows the locus distance(A,U) for a number of parameter values. Namely, the locus distance(A,U) at parameter value ao is dt' and the locus distance(A,U) at parameter value ao is dt" It can be clearly seen that the locus distance is a function of the parameter values t.
In the case of a concave vertex i, the term "locus(ij) distance function" refers to a function where the radial distance to the locus(ij) from concave vertex i is a function of the parameter 0. As an illustration, Fig. 12B shows the locus distance function(A,X) for a number of parameter values. Namely, the locus distance at parameter value 0' is de', at CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM fe~gy,' -19- O parameter value 0" is do", and at parameter value is It can be clearly seen that the locus distance(A,X) is as a function of the parameter values 0.
First Embodiment A brief overview of the first preferred method is described in relation to an example shown in Figs. 16E to 16J. Fig. 16E shows a square 1600E before the commencement of the first preferred method. The first preferred method first compares line segment 1 against each line segment 2, 3, and 4 in turn and builds a partial skeleton S, as shown in Fig 16F. The first preferred method then compares line segment 2 against each line segment 1,3, and 4 and builds a partial skeleton S2 as shown in Fig. 16G. It then compares line segment 3 against line segments 1,2, and 4 and builds a partial skeleton S3 as shown in Fig. 16H. It then further compares line segment 4 against line segments 1, 2, and 3 and 4 and builds a partial skeleton S4 as shown in Fig. 161. Finally, the first preferred method then builds the total skeleton S' by generating the union of the partial skeletons S, S 2
S
3 and S4 as shown in Fig. 16J.
Fig. 1 illustrates a flow diagram of a first preferred method for generating a geometric skeleton of a polygonal shape. The Fig. 1 illustrates in more detail the operations of the first preferred method, particularly on how the partial skeletons are built.
The method commences at step 100 and any necessary processes and parameters 11. 1: are initialized. For instance, counters i and j are initialized to zero.
20 In the next step 102, a character font outline, which may be stored in a quadratic B-spline format, is accessed from memory. Alternatively, the character font outline may be implicitly generated. Next, the character font outline is then approximated to a S• polygonal shape consisting of line segments and vertices for processing by the method.
0 00 Such a polygonal shape can include multiple boundaries which individually are polygons.
These polygons may describe simple connected shapes, disjoint areas and/or complex shapes with excluded sub-areas. The method then labels each line segment and vertex of the polygonal shape in order and stores associated positional information defining each o.5line segment and vertex. Preferably, the line segments are defined by each of their end points in y) co-ordinates. Similarly, the vertices are defined by y) co-ordinates.
After step 102, the processing continues at step 104.
CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 'X In step 104, the method selects an ith line segment or concave vertex of the polygonal shape. Preferably, the ith line segments and concave vertices are selected in a sequential order around the boundary of the polygonal shape. This is achieved by incrementing in order through the labelled line segments and concave vertices by means of counter i. In the method, each selected ith line segment is represented by a parametric representation where the parameter value is zero at the start of line segment i and the parameter value is one at the end of the line segment i. The present description refers to a t-value as being a value of the above-mentioned parameter. Also each selected concave vertex is represented by a parametric representation where the parameter values 0 vary between 00 and 01. In the latter case, a 0-value refers to a value of this parameter.
During step 104, the method also initializes a list L(i) of significant parameter values. The method creates a new and separate list L(i) for each selected line segment or concave vertex i. These lists L(i) are capable of containing a number of members where each member is of the form where B represents ajth line segment in the polygon and t represents a parameter value.
In the case of a selected line segment i, the list L(i) when initialized contains the following entries (0,NULL) and (1,NULL). The NULL value indicates that a line B has not been selected. The values 0 and 1 represent parameter values (t-values).
In the case of a selected concave vertex i, the list L(i) when initialized contains 20 the following entries (01 ,NULL) and (2 ,NULL). The NULL value indicates that a line B has not been selected. The values 01 and 02 represent parameter values (0 -values).
This initialised list L(i) is updated a number of times during processing as will be explained in more detail below with regard to steps 108,110, and 112. In addition, the members of the list L(i) are maintained during processing in order of ascending t-values.
The list L(i) is completed once all jth line segments have been processed. Once completed, the list L(i) describes that portion of the skeleton (see eqn 1) contributed by line segment i or concave vertex i when compared with all the remaining line segments j.
Namely, the completed List(i) for a line segment i contains a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and N and P are line segments of the polygon other than the current line segment The t-values t' and t" are those t-values of the list which are adjacent in value. Preferably, the list is sorted according to t-values, and CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53476547.doc:PWM U. i~.
-21 as such the members and are adjacent in the list. According to this list, the point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton.
In addition, for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton. On the other hand, the completed List(i) for a concave vertex i comprises a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and N and P are said line segments of the polygon. The 0-values 0' and 0" are those 0-values of the list which are adjacent in value. Preferably, the list is sorted according to 0-values, and as such the members and are adjacent in the list.
According to this list, a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton. In addition, for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the 20 current concave vertex forms another point of the skeleton After step 104, the processing continues at step 106, where ajth line segment is selected. Preferably, the jth line segments are selected in sequential order around the boundary of the polygonal shape. This is achieved by incrementing in order through the labelled line segments by means of counter j. Alternatively, any ordering may be used.
Preferably, the jth line segment is selected in sequential order with the additional condition that j i when i is a line segment. Namely, it is not necessary to determine the locus of line i against itself.
During each pass of the next step 108, one or more new significant parameter values of the ith line segment or concave vertex are determined with respect to the jth line segment and added to the list of significant parameter values if not already present in the list The significant parameter value(s) are determined so that the locus(ij) distance function between these significant parameter value(s) is monotonic and the CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM fIj-.s^=Ma& s -22locus(i,j) distance function between the endpoint and startpoint of line segment or vertex i and their closest significant parameter value(s) is also monotonic. In other words, the locus(ij) distance function is monotonic moving away from the significant t-values. In the case of a selected i line segment, only one significant t-value need be selected, that being the t-value associated with the local minimum of the locus distance function. In the event, this locus (ij) distance function is monotonic over all the line segment i, then either the startpoint or endpoint of the line segment i (t-value 0 or t-value =1 respectively) can be selected as the significant parameter value. As these t-values are already in the List it is not necessary to add them.
As mentioned above, the new significant parameter value(s) which are not already present in the list L(i) are added to the list The new significant parameter value(s) are added during step 108 as new members each of the form k or The new member k or k contains the new significant t-value or 0-value n and either line k or k+1. These lines k and k +1 are selected from those two members of the current list L(i) having significant parameter values closest to and on adjacent sides of the significant parameter value of the new member. Whether the new member contains line k or line k+1 is dependent on the values of the locus distance function for lines k and k+1 at the significant parameter value n. The new member will contain line k, if the locus distance function is less than the locus distance function at parameter n.
20 Otherwise, it will contain line k+1. The newly updated list L(i) is then sorted in order of ascending t-values or 0-values as the case may be. At this stage, the newly updated list L(i) does not contain any reference to the current line segment j. The list L(i) defines only the skeleton as far as line segment i or concave vertex i and line segments zero to j -1.
The method will update the newly updated list L(i) for current line segment j, if necessary, in step 112.
,Turning now to Fig. 2, there is shown a flow diagram of the process 108 of determining t-values as used in the method of Fig. 1. Specifically, this process determines the t-values for the selected ith and jth line segments. This process is first explained with reference to Figs. 5,6,7,8A and 9.
Turning now to Fig. 8A there is shown an example of a representation of a selected ith line segment A and a selected jth line segment U. The line segment A has endpoints ao and a, and the line segment U has endpoints uo and ul. The parameter values CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM T,,^llggll~llgg^-^^"Ln^l~i L -23 are zero(0) at ao to one(l) at al. The process 108 selects significant parameter value(s) so that the locus(ij) distance function between the selected significant parameter value(s) is monotonic and the locus(ij) distance function between the endpoints of the ith line segment and their closest significant parameter values(s) is also monotonic. That is, the locus(A,U) distance function is monotonic when moving away from any of the significant t-value(s). Preferably, the t-values 0 and 1 are already present in the list L(i) of significant parameter values. The chosen significant t-value will correspond to the minimum of the locus(A,U) distance function, if it is interior to A. Assuming u is a member of U and is the closest point to A, then unless U and A are parallel, u will be endpoint of U. Thus in this example, the significant t-value will that be that t-value closest to u, namely ao.
Otherwise, locus(A,U) distance function is not monotonic at ao. A new member having this new significant t-value will then be added to the list, if this t-value is not already in the list. The line component of this new member is determined in the manner described above.
Turning now to Fig. 9 there is shown another example of a representation of selected ith line segment A and ajth line segment V. In this example, ao is not within A and the locus(A,V) distance is monotonic across all of A. Thus the significant t-value in this case will be 1 corresponding to endpoint al. As this significant t-value is already in the list L(i) of significant parameter values there is no need to add it.
20 Turning now to Fig. 5, there is shown another example of a representation of selected ith line segment A and a jth line segment R. In this example, A and R are parallel and both ao and al are within A. Thus a significant t-value in the range [ao ar] is required. The t-value ofao is chosen as a significant t-value in this example. A new °member having this new significant t-value will then be added to the list, if this t-value is not already in the list. The line component of this new member is determined in the manner described above.
Turning now to Fig. 6, there is shown another example of a representation of selected ith line segment A and ajth line segment S. In this example, A and S are parallel and only ac is within A. In this example, the locus(A,S) distance function is monotonic across all of A. Thus the significant t-value is 1 in this example. As this significant t-value is already in the list L(i) of significant parameter values there is no need to add it.
CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 1- -24- Turning now to Fig. 7, there is shown another example of a representation of selected ith line segment A and ajth line segment W. In this example, A and W are parallel and both cca and ac are not within A. In this example, the locus(A,W) distance function is monotonic across all of A. No t-values are added to the list in this example.
Returning now to Fig. 2, the method of determining the significant t-values is described. After step 106, the processing continues at decision block 202, where a check is made whether the next selected ith line segment or concave vertex is a line segment. If the decision block returns true, the processing continues at decision block 204. Otherwise the processing continues at step 1002. In decision block 204, a check is made whether d(xo, (ao, a d(xi, (co, al Namely, a check is made whether the distance of the projection of the endpoint xo of selected jth line X onto selected ith line A equals the distance of the projection of the end point x, of the selected jth line X onto the selected ith line A. In this way, it is possible to determine whether the selected ith line A and jth line X are parallel.
If the decision block 204 returns false (no) processing continues at step 206 where the t-value a is set to is set to ao if d(xo, ao) d(xl, al), otherwise the t-value a is set to ac. In this way, the t-value is set to the t-value corresponding to the endpoint of X which has the lessor value of the locus distance function. After step 206, the processing continues at decision block 208, where a check is made whether the t-value a is not in A.
20 If the decision block 208 returns true, then the processing continues at step 110.
:Otherwise, the processing continues at step 210, where a new member having the new significant t-value ao or ac for A will then be added to the list, if this t-value is not already in the list. The line component of this new member is determined in the manner described above. After step 210 the processing continues at step 110.
If the decision block 204 returns true (yes) processing continues at decision block 212 where a check is made whether ao or ao are not in A or there is a significant t-value belonging to A that lies between or including ao and at. If the decision block 212 returns true, the processing continues at step 110. Otherwise the processing continues at step 214, where a new member having either the significant t-value ao or ac will then be added to the list, if this t-value is not already in the list. The line component of this new member is determined in the manner described above. After step 214, the processing continues at step 110.
CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM Turning now to Fig. 10, there is shown a flow diagram of the process 1002 of determining 0-values as used in the method of Fig. 1. In the decision block 202 (Fig. 2) a check is made whether the ith selection is a line segment. If the decision block returns false, the processing continues at step 1004 of Fig. 10. Specifically, this process determines the 0-values for the selected ith convex vertex and jth line segments. This process is first explained with reference to Figs. 11, 12A, and 13.
Turning now to Fig. 11, there is a shown an example of a selected ith concave vertex A and selected jth line segment X. The concave vertex A is formed by line segments B and C, and is concave with respect to the interior of the polygonal shape. The jth line segment X has end points xO and xl. In the case of the selected ith concave vertex A, the vertex is parameterized having 0-values with period 2n. The values 01 and 02 correspond to the angles of the vectors extending from A and which are perpendicular to line segments B and C respectively. The 0-values of the concave vertex A are limited to the range 01 and 02. The significant 0-values are selected within this range so that the locus(ij) distance function between the concave vertex i'and line segment j is monotonic between each pair of adjacent selected 0-values in concave vertex i and monotonic between the endpoint(s) 01 and 02 and the selected 0-values adjacent thereto. In other words, the locus(ij) distance function is monotonic when moving away from any significant t-value. In this case, significant O-values corresponding to minima and maxima 20 in the locus(ij) distance function are selected and may be added to the stored list L(i) in the form of new members, if not already present in the list The line component of this new member is determined in the manner described above.
Fig. 12A shows another example of a selected ith concave vertex A and selected jth line segment X. The line segments B and C, values 01 and 02 are not shown for the sake of clarity. The 0 min value corresponds to that direction having a minimum distance between line segment X and concave vertex A. The values 0xi and 0xo, correspond to the angle of the vectors Axl and Axo respectively. Considering the locus(X,A) as a function of 0, the locus(x,A) has two asymptotes, which are maxima, which correspond to the endpoints xl and xo. These maxima are 0 x1 nr/2 and 6x0 7t/2.
Fig. 13 shows another example of a selected ith concave vertex A and selected jth line segment X. As mentioned above, the significant 0-values correspond to minima and maxima in the locus(x,A) distance function within the range 01 and 02. As can be seen CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -26 the 0min value is within the range 01 and 02, whereas 6xi 7n/2 and 0x0 7t/2 are not. In this example, only 0 min is added to the significant 0 values for A in the list L as a new member, if not already present in the list. The line component of this new member is determined in the manner described above.
Returning to Fig. 10, the process for determining 0-values will now be described.
In step 1004, the values 0 min ,0x2 and 0x1 are determined by coordinate geometry in a known manner. The processing then continues at step 1006. This step 1006 controls the operations of steps 1008 and 1010, whereby the operations of each step 1008 and 1010 are performed for each value min 0 x2 and 06x. Specifically, the variable p is set to each of the values min 0 x2 and 0 x1 in turn. After step 1006, the processing continues at decision block 1008, where a check is made whether p is within the range 01 and 02. If the decision block 1008 returns false, then the processing returns to step 1006. If the decision block 1008 returns true, then the processing continues at step 1010 where p is added to the significant 0-values for A in the list L(i) as a new member, if not already in the list The line component of this new member is determined in the manner described above. After the completion of these operations 1008 and 1010 for each min 0 x2 and 0 x1, the processing continues at step 110.
Returning now to Fig. 1 there is shown the processing step 110 which follows completion of step 108. In step 110, a comparison is made between adjacent significant 20 parameters values associated with loci(ijk) and loci(i,jk+) to determine whether there exists another loci(i,j) having an intermediate parameter value for which the loci(ij) is closer to the line segment i or concave vertex i than either the loci(i, jk or loci(i, jk+1 If there exists another closer locus(ij) then it's intermediate parameter value may be added as a member to the list This process 110 is undertaken on both the line segments i and concave vertices i in functionally the same manner. Thus for ease of explanation, the processing step 110 is described only with reference to a line segment i.
Turning now to Fig. 3, there is shown an example of a line segment and three loci. The selected ith line segment A has two significant t-values tk and tk+1 corresponding to the locus(A,k) and locus(A,k+l) which are representative of the skeleton at those points. However, it does not necessary follow that the skeleton of A between t-values tk and tk+1 ,but exclusive of those values, will consist of locus(A,k) and locus(A,k+l) only.
There may exist another locus(Aj) that is closer to A than either of the other two loci, CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 27 intermediate the t-values tk and tk+1. Such a locus(Aj) is shown in the example of Fig. 3 having an intermediate t-value The existence of such a intermediate t-value is determined by eqn of the following three-way test.
Turning now to Fig 4A, there is shown another example of a line segment and three loci. The selected ith line segment A has two significant t-values tk and tk+l corresponding to the locus(A,k) and locus(A,k+1) which are representative of the skeleton at those points. In this example, contrary to Fig. 3, the locus(Aj) is closer than locus(A,k) at tk but locus(A,k) may have an intermediate value t' where locus(A,k) is closer than both locus(Aj) and locus(A,k+l). The existence of such an intermediate t-value is determined by eqn Turning now to Fig. 4B, there is shown another example of a line segment and three loci. The selected ith line segment A has two significant t-values tk and tk+I corresponding to the locus(A,k) and locus(A,k+1) which are representative of the skeleton at those points. In this example, the locus(Aj) is closer than locus(A,k+l) at tk+1 but locus(A,k+l) may have an intermediate value t' where locus(A,k+l) is closer than both locus(Aj) and locus(A,k). The existence of such an intermediate t-value is determined by eqn. Thus specifically the three-way test is as follows: 20 d(tk,locus(A,k)) d(tk,locus(Aj)) d(tk, locus(A,k and d(tk+l,locus(A,k+l)) d(tk+l,locus(A,j)) d(tk+l, locus(A,k)) (2) or d(tk,locus(A,j)) d(tk,locus(A,k)) d(tk, locus(A,k and d(tk+,locus(A,k+l)) d(tk+i,locus(A,k)) d(tk+l, locus(Aj)) (3) or d(tk,locus(A,k)) d(tk,locus(A,k+l)) d(tk, locus(Aj)) and d(tk+l,locus(A,j)) d(tk+l,locus(A,k+l)) d(tk+l, locus(A,k)) 4) If this test returns true, then there may exist an intermediate t-value having a value tj and locus(Aj). However, this locus may not necessarily be any better in the interval (tk and tk+1), that is any closer to A than either oflocus(A,k) or locus(A,k+l). This is determined by the following "Is it better" test: CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM T -28d(m,locus(A,j)) min (d(m,locus(A,k)), d(m, locus(A,k or d(tk,locus(A,j)) min (d(tk,locus(A,k)), d(tk, locus(A,k+l))) or (6) d(tk+l,locus(A,j)) min (d(tk+1,locus(A,k)), d(tk+l, locus(A,k (7) If this test returns true, then a new member k or k+1) is added to the list of significant parameter values This new member contains the intermediate t-value m and either line k or k+l. These lines k and k +1 are selected from those two members of the current list L(i) having significant parameter values closest to and on adjacent sides of the significant parameter value of the new member. Whether the new member contains line k or line k+1 is dependent on the values of the locus distance function for lines k and k+1 at the intermediate t-value m. The new member will contain line k, if the locus distance function is less than the locus distance function at parameter m.
Otherwise, it will contain line k+1. The newly updated list L(i) is then sorted in order of ascending t-values. At this stage, the newly updated list L(i) does not contain any reference to the current line segment j. The list L(i) defines only the skeleton so far as line segment i and line segments zero to j The method will update the newly updated list L(i) for the current line segment j, if necessary, in step 112.
Turning now to Figure 14, there is shown the three way comparison process 110 as used in the method of Fig. 1. Initially the variable k is set to zero at step 1402 and the 20 processing continues at decision block 1406, where a check is made whether k is less than the number n oft-values in the list If the decision block returns false, then the processing continues at step 112. Otherwise, the processing continues at decision block 1406 where the three-way test, described above, is performed for t-values tk and tk+1. If the three way test returns false, that is there are no potential intermediate t-values, then the process continues at step 1420 where k is incremented by one. In this way, the three-way test is applied to all adjacent t-values tk and tk+l. If the decision block 1406 returns true, then the variable 1 is set to tk and the variable r is set to tk+l. In the next step 1410 of the process, averaging the 1 and r variables derives a potential intermediate t-value. A three way test 1414 is again applied between the t-values l,m and again at 1416 between the values m,r. If both these three way test return false, then the processing continues at decision block 1418. If the decision block 1414 returns true however, the processing continues at step 1422 where r is set to m. Similarly, if the decision block 1416 returns true, then the processing continues at step 1424 where 1 is set to m. After both these steps CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM l ~~iEsx~- -29- 1424 and 1422, the processing returns to step 1410. It is in this way, those t-values between tk and tk+l are continually sub-divided until the potential intermediate t-value is found. After step 1410, a check 1412 is made whether m is substantially the same as 1 or r.
If the decision block 1412 returns true, then processing returns to decision block 1404 via step 1413 where k is incremented by one, otherwise it continues at decision block 1414.
This check in decision block 1412 prevents the process sub-dividing the t-value interval ad infinitum.
After decision block 1416, a "Is it better test" 1418, as described above, is conducted on the potential intermediate t-value m. If the "Is it better test" returns true, then the t-value m will be added to the list as a new member. The line component of this new member is determined in the manner described above. Afterwards the processing continues at step 1428. If the decision block 1418 returns false then, the processing continues at step 1428. In step 1428, the variable k is incremented by one and the processing is returned to decision block 1404, where the process continues for the next adjacent t-values if any.
As mentioned previously, the process 110 is also undertaken for the concave vertices i, that is for the 0-values.
Returning now to Fig. 1, there is shown the processing step 112 which follows the complewtion of step 110. In step 112 all the members of the list L(i) including the 20 newly added members are compared against the current jth line segment and updated if necessary. At the end of this step 112, the updated list L(i) defines the skeleton for line segment i or concave segment i and line segments zero to j.
Turning to Fig. 15, there is shown a flow diagram of the process 112 used in the method of Fig. 1. In step 1502, a loop counter k is set to zero after which the processing continues at decision block 1504. In decision block 1504, a check is made whether the loop counter k is less than the number n of t-values in the list If the decision block 1504 returns true, then the processing continues at decision block 1506. In decision block 1506, a check is made whether the line Bk of current member (tk, Bk) of the list L(i) is "equal to Null or whether locus(ij) distance function at tk is less than the locus(i,Bk) distance function at tk. If the decision block 1506 returns true, then the processing continues at step 1508, where the current member (tk, Bk) of the list L(i) is replaced by the new member (tk, In this way, the method determines for each significant t-value, the CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM loci closest to A. If however, the decision block 1506 returns false, then the processing continues at step 1510. Similarly after step 1508, the process continues at step 1510, where the loop counter k is incremented by one and the process is returned to decision block 1504. If decision block 1504 returns false, the processing continues to decision block 114.
Returning to Fig. 1, there is shown decision block 114 which follows the completion of step 112. In decision block 114, a check is made whether there exists any more jth line segments X. If the decision block 114 returns true, then the processing continues at step 116, where the variable j is incremented by one and then the processing is returned to step 106. It is in this way, that the method determines the contribution to the skeleton with respect to the ith line segment A or concave vertex A of all line segments j.
Of course, the situation where j=i is irrelevant for determining the skeleton. In this particular case, j may be incremented again. If the decision block 114 returns false, then the processing continues at decision block 118. In this decision block 118, a check is made whether there any more ith line segments A or concave vertices A. If the decision block 118 returns true, then the variable i is incremented by one and the processing returned to step 104. Thus the method is able to determine the skeleton of each ith line segment A and concave vertex A. If the decision block 118 returns false, the processing S continues at step 122.
In step 122, the members of each list L(i) are accessed and the distance from the boundary to the skeleton is obtained from the information contained in the List For example, a stored member of the list L(A) indicates that one point of the skeleton is located at the loci(A,B) of lines A and B corresponding to t-value The distance from the boundary at t-value 0 to the skeleton is d(t=0,Locus(A,B)). This distance information can be added to the member of the list L(A).
In step 124, all the Lists L(i) are output as a data signal for further processing by the image processing application. From these lists it is possible to calculate at any userselected t-value the position of the skeleton. The skeleton will be the minimum of the loci associated with the t-values adjacent to the selected t-value. Alternatively, one consolidated list can be produced for all the line segments and concave vertices i. In addition, the lists can be futher processed by removing any superfluous members.
After step 124, the processing terminates at step 126.
CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM ii -ri i -l a 1 -~1 -31 The computer code shown in Appendix A is an example of a class suitable for use in the above-mentioned method. This code does not include the sub-processes for determining significant 0-values associated with locus(ij), e.g. Fig. 10. A person skilled in the art could readily modify the following code to incorporate such sub-processes.
The operation of the method of Fig. 1 will now be briefly explained with reference to Figs. 16D, 17 to 22. Turning now to Fig. 16D, there is shown an exemplary polygon A having sides 1601, 1602, 1603, 1604, 1605, 1606, and 1607 and a skeleton B generated by the method. Figs. 17 to 22 show the construction of that part of skeleton B for the line segment (1601) only and gives the content of the List L(1601) for that line segment.
The method initialises the list L(1601) during step 104. As a result of the initialisation the List L(1601) contains two members as shown in Table A. These members mean that the skeleton is as yet undefined. In addition, the line segment 1601, is parameterised such that the parameter value (t-value) is zero at the line start and one(l) at the line end.
TABLE A List L(1601) Significant t-value Corresponding line 0 NULL 1 NULL Si The method then processes j line segments 1602 to 1607 by selecting those lines in sequence for comparison against line 1601.
:The method first processes line 1602 against line 1601. The list L(1601) remains the same until step 112 where the method (1506) determines that line associated with the first member of the list is NULL. The method then replaces the first member NULL) 0* of the list L(1601) with the member 1602). Similarly, the second member is replaced with new member (1,1602). The updated list L(1601) is shown in Table B which represents the partial skeleton shown in Fig. 17. The skeleton, as so far determined consists of only the single dashed line 1700, of which a portion is only shown.
TABLE B List L(1601) Significant t-value Corresponding line 0 1602 1 1602 CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM I 4k -32- W The method then processes line 1603 against line 1601. No new significant tvalues are added during steps 108 and 110. The method then determines during step 112 that the locus (1601, 1603) distance function is less than the locus (1601, 1602) distance function at t=0. Thus the first member of the list is replaced with the member (0,1603).
On the other hand, the locus (1601,1603) distance function is greater than the locus (1601,1602) distance function at t= 1. Thus the second member of the list is not replaced.
The updated list L(1601) is shown in Table C which represents the partial skeleton shown in Fig. 18. The skeleton, as so far determined consists of the dashed lines 1700 and 1800.
TABLE C List L(1601) Significant t-value Corresponding line 0 1603 1 1602 The method then processes line 1604 against line 1601. During step 108, a significant t-value is determined at t=0.5, which is the local minimum of locus(1601,1604). Thus during step 108, a new member 0.5, 1603) is added to the list.
The member 1603) contains the line 1603 at this step in the processing (instead of line 1604). Namely, step 108 adds one of those lines (1602 or 1603) of the two members of the existing list L(1601) on each side of the new significant parameter value having the lessor locus distance function at t As the locus (1601,1603) distance function is less than the locus (1601,1602) function at the new t-value 0.5, then the new member at t 0.5 will contain line 1603.
4°° The method then determines during step 110 that there is an intermediate t-value between t=0.5 and 1. The method determines that that there is intermediate t-value 0.8, S'.where the locus(1601,1602) at this t-value is closer than both locus(1601,1603) and locus(1601,1604) (see Eqns 3 and Thus during this step, a new member 1602) is added to the list.
The method then proceeds to step 112, where the method considers all the tvalues. As the locus (1601, 1604) distance function at t= 0 is less than the locus distance function (1601,1603), the method replaces the existing member (0,1603) of the list with (0,1604). In addition, as the locus (1601,1604) distance function is less than the locus CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -um -33- (1601,1603) distance function at t 0.5, the method replaces the member 1603) with the member (0.5,1604). On the other hand, as the locus (1601,1604) distance function is greater than the locus (1601,1602) function at t 0.8, the member (0.8,1602) is not replaced. The last member in the list is also unchanged. The updated list L(1601) is shown in Table D which represents the partial skeleton shown in Fig. 19. The skeleton, as so far determined consists of the dashed lines 1700 and 1900. As can be seen the skeleton line 1800 introduced from the processing of line 1603 has already been determined irrelevant and has been eliminated. The value at t=0.5 has been introduced because it has the smallest value for the locus distance function for line 1604.
TABLE D- List L(1601) Significant t-value Corresponding line 0 4 4 0.8 2 1 2 The method then processes line 1605 against line 1601. During step 108, a significant t-value is determined at t=0.5, which is the local minimum oflocus(1601, 1605). As this t-value already exists in the list L(1601), it is not added to the list. The 15 method also determines during step 110 there are no intermediate t-values. During step 112, the method determines that the locus (1601,1605) distance function is less than locus (1601,1604) distance function at t 0 and the method replaces the first member of the list L(1601) with the new member (0,1605). On the other hand, the locus (1601,1605) distance function is greater or equal to the other locus distance functions at the other tvalues in the list and thus remaining members are not replaced. The updated list L(1601) is shown in Table E which represents the partial skeleton shown in Fig. 20. The skeleton, as so far determined consists of the dashed lines 2000, 1900, and 1700. As can be seen, the left hand side of the skeleton has changed from a parabola which was contributed from line 1604 to a straight line 2000 which is contributed by line 1605. This is indicated by the change of value 4 to 5 from Table D to E.
TABLE E List L(1601) Significant t-value Corresponding line CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -i i j!;LZ1~ -34- 0 4 0.8 2 1 2 The method then processes line 1606 against line 1601. During step 108, the significant t-value is determined at t-value t which is already in the list L(1601) and as such is not added to the list.
The method then determines during step 110 that there is an intermediate t-value between t=0 and 0.5. The method determines that there is an intermediate t-value 0.2, where the locus(1601,1605) at this t-value is closer than both locus(1601,1606) and locus(1601,1604) (see Eqns 3 and Thus during this step, a new member 1605) is added to the list.
During step 112, the method determines that the locus (1601,1606) distance function is less than locus (1601,1605) distance function at t 0 and the first member of the list L(1601) is replaced with the new member (0,1606). On the other hand, the locus (1601,1606) distance function is greater or equal to the other locus distance functions at the other t-values in the list and thus remaining members are not replaced. The updated 0 9 15 list L(1601) is shown in Table F which represents the partial skeleton shown in Fig. 21.
The skeleton, as so far determined consists of the dashed lines 2100, 1700, 1900, and 2000.
TABLE F List L(1601) Significant t-value Corresponding line 0 6 0.2 4 0.8 2 1 2 The method then processes line 1607 against line 1601. The method during step 108 determines that the significant t-value of line 1607 is t=0. As this t-value is already in the list L(1601) it is not added to the list.
CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -zr:i 1zz'-A >,zftyrz~ff r, The method then determines during step 110 that there is an intermediate t-value between t=0 and 0.2. The method determines that there is an intermediate t-value 0.1, where the locus(1601,1607) at this t-value is closer than both locus(1601,1606) and locus(1601,1605) (see Eqns 3 and Thus during this step, a new member is added to the list at t-value t= 0.1. This new member is added to the list as 1606) as the locus (1601,1606) distance function is less than the locus (1601,1605) distance function at t=0.1.
During step 112, the method determines that the locus (1601,1607) distance function is less than locus (1601,1606) distance function at t 0 and thus the first member of the list L(1601) is replaced with the new member (0,1607). In addition, the method determines that the locus (1601,1607) distance function is less than the locus (1601,1606) distance function at t=0.1 and thus the new member 1606) is replaced with the member 1607). On the other hand, the locus (1601,1607) distance function is greater or equal to the other locus distance functions at the other t-values in the list and thus remaining members are not replaced. The updated list L(1601) is shown in Table G which represents the partial skeleton shown in Fig. 22. The skeleton, as so far determined consists of the dashed lines 2200, 2000, 1900, and 1700.
As can be seen, lines 1603 and 1606 do not contribute to the final skeleton.
S. @5 S Furthermore the t-values 0.1 and 0.8 are redundant and could be removed in a subsequent ,q 20 pass over the list. From this list L(1601) it is possible to calculate at any user-selected tvalue the position of the skeleton. For example, the skeleton is located at the locus(1601,1607) point at t=0. As another example, the skeleton is located at the locus(1601,1605) point or locus(1601,1604) point at t 0.3 which is closest to line 1601.
TABLE G List L(1601) m* TABLE G List L(1601)
S
Significant t-value Corresponding line 0 7 0.1 7 0.2 4 0.8 2 1 2 FP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM nl -36- W Second Embodiment In this embodiment, the method selects ith line segments and concave vertices in sequential order around the boundary of the polygonal shape in the same manner as the first embodiment. The method also selects the jth line segments in similar manner.
However in this embodiment, the method determines the perpendicular distance from the current ith line segment at an arbitrary point on the current ith line segment to a point of a locus between the current ith line segment and said selected jth line segment. In a similar manner to the first embodiment, the arbitrary point has a corresponding parameter value.
The present embodiment then repeats this operation for each remaining said jth line segments of the polygon for the same arbitrary point. The method then determines the locus point which has the smallest said perpendicular distance at this arbitrary point. This locus point forms a point of the skeleton. The method may then select another arbitrary point on the current line segment. The method continues to the next ith line segment and performs the same operations again.
In this embodiment, the method also determines the distance from a current concave vertex along an aribitrary radial line to a point of a locus between the current concave vertex and the selected line segment. The method repeats this operation for the remaining 0°oO00
S
line segments along said same radial line. The method then determines a locus point o 20 having the smallest distance from the current concave vertex. This locus point forms a o point of the components of the skeleton. The method may then select another arbitrary radial line on the current line segment. The method then continues to the next ith concave vertex and performs the same operations again.
The first embodiment is preferred as it is more efficient and it is able to represent the skeleton in a more compact manner.
ease "TO" Preferred Embodiment of Apparatus(s) The preferred methods of generating a geometric skeleton of a polygonal shape is ro o0 preferably practiced using a conventional general-purpose computer, such as the one shown in Fig. 23, wherein the first and second embodiments and/or the computer code shown in Appendix A may be implemented as software executing on the computer. In particular, the steps of method of generating a skeleton are effected by instructions in the software that are carried out by the computer. The software may be divided into two CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN531476547.doc:PWM r; liZ~ -37separate parts; one part for carrying out the generation methods; and another part to Fmanage the user interface between the latter and the user. The software may be stored in a computer readable medium, including the storage devices described below, for subsequent transmission to the computer. The software may also be directly transmitted to the computer via wire or wireless. The software once transmitted can then executed by the computer.
The computer system 2300 consists of the computer 2302, a video display 2316, and input devices 2318, 2320. In addition, the computer system 2300 can have any of a number of other output devices including line printers, laser printers, plotters, and other reproduction devices connected to the computer 2302. The computer system 2300 can be connected to one or more other computers via a communication interface using an appropriate communication channel such as a modem communications path, a computer network, or the like. The computer network may include a local area network (LAN), a wide area network (WAN), an Intranet, and/or the Internet The computer 2302 itself consists of a central processing unit(s) (simply referred to as a processor hereinafter) 2304, a memory 2306 which may include random access memory (RAM) and read-only memory (ROM), input/output (IO) interfaces 2308, a video •interface 2310, and one or more storage devices generally represented by a block 2312 in S.:i Fig. 23. The storage device(s) 2312 can consist of one or more of the following: a floppy disc, a hard disc drive, a magneto-optical disc drive, CD-ROM, magnetic tape or any other of a number of non-volatile storage devices well known to those skilled in the art.
Each of the components 2304 to 2312 is typically connected to one or more of the other devices via a bus 2314 that in turn can consist of data, address, and control buses.
The video interface 2310 is connected to the video display 2316 and provides 25 video signals from the computer 2302 for display on the video display 2316. User input to operate the computer 2302 can be provided by one or more input devices 2308. For example, an operator can use the keyboard 2318 and/or a pointing device such as the mouse 2320 to provide input to the computer 2302.
The system 2300 is simply provided for illustrative purposes and other configurations can be employed without departing from the scope and spirit of the invention. Exemplary computers on which the embodiment can be practiced include IBM-PC/ATs or compatibles, one of the Macintosh (TM) family of PCs, Sun Sparcstation or the like. The foregoing are merely exemplary of the types of computers with CFP1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -38 which the embodiments of the invention may be practiced. Typically, the processes of the embodiments, described hereinafter, are resident as software or a program recorded on a hard disk drive (generally depicted as block 2312 in Fig. 23) as the computer readable medium, and read and controlled using the processor 2304. Intermediate storage of the program and pixel data and any data fetched from the network may be accomplished using the semiconductor memory 2306, possibly in concert with the hard disk drive 2312.
In some instances, the program may be supplied to the user encoded on a CD-ROM or a floppy disk (both generally depicted by block 2312), or alternatively could be read by the user from the network via a modem device connected to the computer, for example. Still further, the software can also be loaded into the computer system 2300 from other computer readable medium including magnetic tape, a ROM or integrated circuit, a magneto-optical disk, a radio or infra-red transmission channel between the computer and another device, a computer readable card such as a PCMCIA card, and the Internet and Intranets including email transmissions and information recorded on websites and the like. The foregoing are merely exemplary of relevant computer readable mediums. Other computer readable mediums may be practiced without departing from the scope and spirit of the invention.
The method of generating the skeleton may alternatively be implemented in S: 2 dedicated hardware such as one or more integrated circuits performing the functions or sub functions of generating the skeleton. Such dedicated hardware may include graphic S" processors, digital signal processors, or one or more microprocessors and associated memories.
The foregoing only describes a small number of embodiments of the present invention, however, modifications and/or changes can be made thereto art without 25 departing from the scope and spirit of the invention. The present embodiments are, therefore, to be considered in all respects to be illustrative and not restrictive.
In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including" and not "consisting only of'. Variations of the word comprising, such as "comprise" and "comprises" have corresponding meanings.
CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -39i APPENDIX A ©Canon K.K.
skeletonfromline.h #ifndef SKELETONFROMLINE H #define SKELETONFROMLINE H #include <locusref.h> #include <geo-polyline.h> class SkeletonFromLine This class describes the geometric skeleton of a polygonal shape with respect to one of its sides.
INPUT PARAMETERS 20 Client The client is a list of polygons that describe the outline of a shape. It is presumed that the polygons are oriented so that winding numbers achieve only values of+l or 0 N,I: This defines which line segment in the client this object 25 refers to. The segment is the i'th line segment of the n'th polygon in'Client' MAIN FUNCTIONS GetDistanceToSkeletonAt(t) which returns the distance to the geometric skeleton of the client shape from the point corresponding to the parameter value 't' GetSkeletonPointAt(t) this returns the location in the geometric skeleton of the client shape from the point corresponding to CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 40 the parameter value 'T *OTHER FUNCTIONS *Some other basic functions provide easy access to information about *the underlying line segment on which this object is based.
nterpolate(t) Refers the location on the underlying line segment corresponding to the parameter value 'T **GetStartPoint(): Returns to the location at the start of the underlying line segment the point corresponding to parameter value 't **GetEndPointo: Returns to the location at the end of the underlying **line segment the point corresponding to parameter value 't **GetLength(): Returns the length of the underlying line segment.
class SkeletonFromLine
I
public: SkeletoniFromLine(GEO-PolyPolyline const& client, mnt n, int i); GEO-PolyPolyline const& GetClient(void) const; GetN(void) const; GetI(void) const; double GEOPoint GEOPoint GEO Point CEPi1 467AU(Open53)476547 GetDistanceToSkeletonAt(double t) const; GetSkeletonPointAt(double t) const; Interpolate(double t) const; GetStartPoint(void) const; [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 41 GEOPoint double GetEndPoint(void) const; GetLength(void) const; private: LocusReferenceList const& LocusReferenceList& GetReferenceList(void) const; UseReferenceList(void); int double int double int GetSize(void) const; GetTForRefK(int k) const; GetKBelow(double t) const; EvaluateLocusKAtT(int k, double t) const; GetBestlndexAtT(double t) const; BoolValue TncorporateLocus(int n, mnt i); BoolValue ThreeWayCase dobe1,dule(,dul
O
double 10, double rO1, double nO, )const; BoolValue IsNotAThreeWayComparison double 10, double rO, double nO, double 11, double r I, doublen I )const; void void InsertTValueFromThreeWayComparison(int k, mnt n, mnt i); GetMinimumDistanceAndTValueForParabolicLocus GEOPoint const& focus, double& distance, double& t const; double GetDistanceToParabolicLocus(GEOPoint const& focus, double t) const; CEPi1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -42 BoolValue IsConcaveAndAdjacent(int n, int i) const; BoolValue EvaluateDistancelnLineLineLocus(int n, mnt 1, double t, double& dist) const; void void double AddSignificantPointsFor~therLocus(int n, mnt i); AddTValue(double t); GetDistanceToLocus(int n, int i, double t) const; private: GEO-PolyPolyline const& Client; HI boundary LocusReferenceList ReferenceList; #Include <skeletonfromline.inl> #endif HI skeletonfromline.cpp #include <stdafx.h> #Include <floath> #include <skeletonfromline.h> **class SkeletonFromLine constructor **The constructor goes through the steps of the method of generating *the significant t-values for the requested edge of the supplied **client polygon(s).
CEPi 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -43 SkeletonFromLine:: SkeletonFromLine(GEO-PolyPolyline const& client, int n, mnt i) Client(client), N(n), *GEO PolyPolyline is a class which encapsulates an array of polygons.
*In the context of the SkeletonFromLine class: GetCliento[n] returns the nth polygon.
GetCliento[n][i] returns the ith point of the nth polygon.
UseReferenceListo. Add( LocusReference(GetNo,GetIO,0O.O)) UseReferenceListo .Add( LocusReference(GetNo,GetIO, for (int ni 1 0; n I GetCliento.GetSizeo; nlI++) 20 for (mnt 11 0; 11 GetClilento [nlI].GetSizeo; il++) HI make a copy of the reference list LocusReferenceList copy(GetReferenceListo); Inc orporateLocus(n 1 ,i1) copy.GetSizeo GetReferenceListo.GetSizeo HI revert to previous copy UseReferenceListo copy; Bool Value CFP1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 44 SkeletonFromLine:: JncorporateLocus(int n, int 1) AddSignificantPointsFor~therLocus(n,); for (mnt k 0; k+1 GetReferenceListo.GetSizeo; InsertTValueFromThreeWayComparison(k,n,i); HI now attempt to over-ride each location Bool Value success False; for (k 0; k GetReferenceListo.GetSizeo; f{ Ik LocusReference& refK UseReferenceListo[k]; double t GetTForRefK(k); double distAtK GetDistanceToLocus(n,i,t); if (distAtK 0.0) H Ilocus is valid here 20 if
C
C
C. C
C
C.
C C C. C C C
C.
C C
CC..
C C
C
'C
C
C
CCC...
refK.GetN() GetNO refK.GetI() Getl() distAtK EvaluateLocusKAtT(k,t) H Ilocus is an improvement here refK.SetLocus(n,i); success True; I} /k CFP1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\0PEN53]476547.doc:PWM W return success; The following group of functions is concerned with determining the required geometric information (distance and t-value) corresponding to the loci between the underlying line segment, and other line segments and their vertices.
GetMinimumDistanceAndTValueForParabolicLocus determines the distance between a point (the focus of a parabola) and the line through the underlying line segment. This is done by decomposing the vector from the start of the underlying line segment and the intended focus into a basis of the inward perpendicular for the underlying line segment, and the direction of the underlying line segment.
20 void SkeletonFromLine:: 9* GetMinimumDistanceAndTValueForParabolicLocus GEO_Point const& focus, double& distance, double& t const refer to the end points of this line segment as A and B GEO_Point A GetStartPoint(); GEO Point B GetEndPoint); and the focus as P GEOPoint P focus; CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -46- V IH first remove the degenerate case if (A B) distance CEO Point: :Distance(A,P); t=0.0; return; H/to determine the distance from AB to P CEOVector AB B.AsVectoro A.AsVectoro; CEOVector AP P.AsVectoro A.AsVectoro; HI AsVector() Converts a point to the vector from the origin to that point Perp() returns the vector perpendicular to the right of the supplied vector.
HI Unit() reduces the supplied vector to unit length.
distance AB.Perpo.Unito.Dot(A.P); t AB.Unito.Dot(AP) AB.Lengtho; **GetDistanceToParabolicLocus solves the problem of parameterising a **parabola by projecting from the underlying line segment using a basic **pythagoras. approach.
x 1* D I-a CEPi 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -47dl In this diagram, 'D'refers to the shortest distance between the point X (the focus) and the underlying line segment. 'a'refers to the distance between the point referred to by paramter is the distance to the parabola at on the diagram). 'd'is also the distance between and due to how the parabola is defined.
From pythagoras, a.
a d^2 a^2 (D-a)A^2 which can be solved for d.
double SkeletonFroniLine:: GetDistanceToParabolicLocus(GEO Point const& focus, double t) const t if 30 focus ==GetStartPointo 11 focus ==GetEndPoint() return if (GetStartPointo GetEndPointo) CEPi 467AU(Open53)476547 [1:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 4 -48return GEOPoint::Distance(focus,GetStartPoint()); H first obtain the projected point double min_d,mint; GetMinimumDistanceAndTValueForParabolicLocus(focus,min_d,min_t); min_d H find the distance squared from the closest point to projpoint H and the point referred to by t double a GetLength) (t mint); return (a a 4.0 min_d min d) (4.0 min_d); A concave vertex occurs on the boundary where the angle between adjacent line segments in the boundary exceeds PI. In this instance the neighbouring line segments do not have a common locus interior to the shape with the exception of their common point. As a result, this case must be removed.
20 A Here, the join between A and B is concave.
Notice that the perpendicular of A makes an absolute angle greater the PI/2 with the B direction ofB they have a negative dot product.
BoolValue SkeletonFromLine:: IsConcaveAndAdjacent(int n, int i) const GEOPoint A GetClient()[n][i]; GEOPoint B GetClient() CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 49 W IH Perp() returns the vector perpendicular to the right of the supplied vector.
HI AsVector() Converts a point to the vector from the origin to that point GEO_-Vector ABperp (B.AsVectoro A.AsVectoro).Perpo; CEOVector thisDir (GetEndPointo .AsVectoro GetStartPoint().AsVectoro); if (A GetEndPointo) if (thisDir.Dot(ABperp) 0.0) /this is back to front due to the return True; H/order of the edges
I
else if (B GetStartPointo) if (thisDir.Dot(ABperp) 0.0) return True; return False; 20 **DETERMINING THE LINE-LINE LOCUS BETWEEN THE UND)ERLYING LINE
SEGMENT
**AT SOME POINT PAND A LINE SEGMENT AB *If P is a point of one line, and AB is the other line **and Lp and La are the unit perpendiculars, Da is the unit direction then the equal the point equidistant from both lines has the form Q=P+dLp=A+t(B-A)+dLa (I) **Here A t is some point on the line AB **Taking the dot product with La (Dot(B-A,La) 0) Dot(P-A,La) d (Dot(Lp,La)-l) d Dot(P-A,La) (I1-Dot(Lp,La)) (2) CFP1467AU(Open53)476547 CFP147AU(pen5347657 (I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 50 **Taking the dot product of with Da gives Dot(P-A,Da) d Dot(Lp,Da) t Dot(B-A,Da) t Dot(P-A+d*Lp,Da) Dot(B-A,Da) (3) Bool Value SkeletoniFromLine:: EvaluateDistancelnLineLineLocus(int n, int i, double t, double& dist) const HI set default result dist HI first remove self reference if n ==GetNO 1 Getl() 20 return False; H/The case of a the common point of a concave vertex needs to be removed HI as it yields a result of distance 0.0 at the common point, which I/is the only point with non-negative distance.
if (IsConcaveAndAdjacent(n,i)) return False; _Pin00 etletOn[] GEGPoint B GetCliento GEOPoint P hiterpolate(t); II Perp() returns the vector perpendicular to the right of the supplied vector.
II Unit() reduces the supplied vector to unit length.
II AsVector() Converts a point to the vector from the origin to that point GEOVector Lp (GetEndPointo.AsVectoro GetStartPointo.AsVectoro).Perpo.Unito; CEPi 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 51 W GEOVector Da (B.AsVectoro A.AsVectoro).Unito; GEOVector La Da.Perpo; HI remove special cases if P ==A
P==B
dist 0.0; return True; double denom-2 =1.0 Dot(Lp,La); /H denominator for equation 2 if (denom_2 0.0) return False; dist Dot(P.AsVectoro-A.AsVectoro,La) denom-2; double denom_3 Dot(B.AsVectoro-A.AsVectoro,Da); double tX Dot(P.AsVectoro-A.AsVectoro+dist*Lp,Da) /denom_3; return o dist 0.0 0.0 tX tX **DETERMINING THE DISTANCE TO A GIVEN LOCUS FOR THE PARAMETER VALUE It' CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 52 **This function determines whether the t-value corresponds to the parabolic *or linear sections of the locus between the underlying line segment **and the 'other' line segment that corresponds to index in the **client polygonal boundary.
**The first step is to check whether the parameter corresponds to the *linear part via the function 'EvaluateDistanceinLineLineLocus'. If *this fails, the paraboli corresponding to the ends of the 'other' **line segment are compared.
double SkeletonFromLine:: GetDistanceToLocus(int n, mnt i, double t) const H/ remove self case if n GetNo GetI() return 1. 0; double d if(EvaluateDistancelnLineLineLocus(n,i,t,cI)) return d; GEOPoint XO =GetCliento[n] GEOPoint X1 GetCliento[n][i+1]; double DO GetDistanceToParabolicLocus(XO,t); double DI GetDistanceToParabolicLocus(XI,t); CFP 1 467AU(Open53)476547 CFP1467A(Ope53)46547[:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM P' ;777 77 7777-77 7 -53case by case if DO 0.0 D1 0.0 return something to be ignored else if(DO 0.0) return Dl; else if (D 0.0) return DO; else return min(DO,D 20 AddSignificantPointsForOtherLocus(n,i) In the process of incorporating another locus into the 'SkeletonFromLine' sufficiently many t-values must be present in the ReferenceList to ensure the success of 'three-way-comparisons' between each pair of adjacent 25 t-values. For this, it is imperative that any local minima or maxima of the locus being introduced is present. In the case of the locus between o. a line segment (including its end points) and the underlying line segment, the locus is made up of a linear section corresponding to the two lines, plus two parabolic sections corresponding to the end points.
30 In this locus, there can be only 1 true local minima though in the case of parallel lines, its location is ill-defined. By introducing this minima to the list of t-values, the new locus can be assumed to be monotonic between any two adfjacent t-values CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM nn 54 qw void SkeletonFromLine:: AddSignificantPointsFor~therLocus(int n, mnt i) HI determine information about end points GEOPoint XO GetCliento[n][i]; CEOPoint XlI GetCliento 1] double tO,dO,tl,dl; GetMinimumDistanceAndTValueForParabolicLocus( XO,dO,tO) GetMinimumDistanceAndTValueForParabolicLocus( Xl ,dl ,tl check out different cases if 0.0 dO dId 0.0< to to AddTValue(tO); else 0.0 dl dI <dO t CEPi 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 55 AddTValue(t 1); else if 0.0 <do do dl to GetKBelow(tO) !=GetKBelow(tl) H/this locus is parallel and has no t-value in the line-line locus section 20 AddTValue( 25 *dTau inldsa*xr -au n'kltnrmLn'wtotatrn wha itrpeet.I*osti ydtriigwihrfrnei ai at T an*eeae e rfrnefo ht 1* hatireperescecntst doe thsbGetrmnwhreference is valid *a ad enerates54 a new reference from that.47.dc:P -56if (GetTForRefK(k) t) dont duplicate LocusReference refT(refK); refT.SetT(t); UseReferenceList().Add(refT); UseReferenceList().Sort(); ThreeWayCase(..) determines whether this collection of monotonic functions is the special case that is ambiguous and requires extra effort to determine whether an intermediate t-value is required within the interval passed to this function.
Here (10,11),(r0,rl),(n0,nl) refer to the values of three monotonic functions across some interval. refers to the values 20 on the left, refers to the values on the right.
The special case arises when every pair of functions intersects in the interval.
BoolValue SkeletonFromLine:: ThreeWayCase 30 double 10, double rO, double nO, double 11, double rl, double nl const if nO CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM r'v. fl t '-wc i:n VI' ~h l ~a L~~ 57 nO rO ri nl nI 11 return True; if no ri 11 11 nl S. @6 4. S 0 S. 6 S S
S.
S.
d S. S
OS
@6 .6
S
*5 56 5
*.SS
4 0 635 655654
S
20 return True; if nI rl 25 ri 11 10 rO rO nO return True; return False-, CEPi1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -58- IsNotAThreeWayComparison(..) determines whether a collection of three monotonic functions is in fact three distinct functions over a given interval.
This is acheived in two ways. The first is to check that each locus is valid (indicated by positive distances). The second is to check for multiple intersections as these are not possible for distinct monotonic functions.
BoolValue SkeletonFromLine:: IsNotAThreeWayComparison double 10, double rO, double nO, double 11, double rl, double nl const if 10 0.0 rO .0 25 1 nO 0.0 11 0.0 30 rl <0.0 nl 0.0 return True; remove redundant cases CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM *r -XCArn' 59 rO 11 r1 nO 11 =nl rO ==nO n 0. 1.: return True; return False; *InsertTValueFromThreeWayComparison(..) checks for the *'three-way-intersection' cae when introducing the new locus (n,i) *to the section of the underlying line segment in the t-value **range between the k~th and (k+1)^th reference.
*If the special case is present, an intermediate t-value is found *so that the special case is avoided on by introducing the extra **t-value.
void CEPi1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 60 SkeletonFromLine:: JnsertTValueFromThreeWayComparison(int k, mnt n, mnt i) /H first, get left and right references LocusReference const& refLeft GetReferenceListo[k]; LocusReference const& refRight GetReferenceListo[k+ 1]; double 10 =EvaluateLocusKAtT(k,GetTForRefK(k)); double rO EvaluateLocusKAtT(k+1,GetTForRefK(k)); double 11 EvaluateLocusKAtT(k,GetTForRefK(k+1)); double r 1 EvaluateLocusKAtT(k+ 1,GetTForRefK(k+ double nO GetDistanceToLocus(n,i,GetTForRefK(k)); double n 1 GetDistanceToLocus(n,i,GetTForRefK(k+ IsNotAThreeWayComparison(O,rO,nO,l11,rl ,nl) 11 !ThreeWayCase(1O,rO,nO,l11,rl1,n 1) return; H/ proceed to find a suitable mid-t double div-t =(GetTForRefK(k+ 1) GetlForRefK(k) double mid-t =(GetTForRefK(k) GetTForRefK(k+ 1) while (div-t FLTEPSILON) 30 f divt double Im =EvaluateLocusKAtT(k,mid-t); double rm =EvaluateLocusKAtT(k+,midt); double nm GetDistanceToLocus(n,,mid-t); CEPi 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\0PEN531476547.doc:PWM I -61 if S//three way case in lower half mid_t div_t; else if (ThreeWayCase(lm,rm,nm,l1 ,rl,nl)) midt div_t; else have found a suitable escape location only need to add a t-value if the new locus improves on the previous //loci if nl <rl
II
nO
II
nm min(lm,rm) AddTValue(mid_t); return; *The following group of functions are those that interpret the *30 (requested) parameter value T.
int GetKBelow(double t) const 3 The following group of functions are those that interpret the ReferenceList by determining which reference is valid for any given 30 (requested) parameter value int SkeletonFromLine:: GetKBelow(double t) const CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 62 determine k-below int kbelow =0; while kbelow+l GetReferenceListo.GetSizeo GetTForRefK(kbelow+1) t kbelow++; return kbelow; double SkeletonFromLine:: EvaluateLocusKAtT(int k, double t) const LocusReference const& refK GetReferenceListo~k]; return GetDistanceToLocus(refK.GetNo,refK.GetIO,t); int SkeletonFromiLine:: 25 GetBestlndexAtT(double t) const if (t 0.0) return 0; else if (1.0 return GetReferenceListo.GetSizeo- 1; int kBelow GetKBelow(t); double distBelow EvaluateLocusKAtT(kBelow,t); double distAbove EvaluateLocusKAtT(kBelow+l,t); CEPi1 467AU(Open53)476547 [1:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 63 if (distBelow 0.0) return kBelow+1; else if (distAbove 0.0) return kBelow; else if (distBelow distAbove) return kBelow; else return kBelow+1;
I
double SkeletonFromLine:: GetDistanceToSkeletonAt(double t) const return EvaluateLocusKAtT(GetBestlndexAtT(t),t); GEOPoint SkeletonFromLine:: GetSkeletonPointAt(double t) const double distToSkel =GetDistanceToSkeletonAt(t); 25 GEOPoint basePoint Interpolate(t); GEOVector perp (GetEndPointo.AsVectoro GetStartPointo.AsVectoro).Unito.Perpo; return basePoint.DisplaceBy( distToSkel *perp) HI skeletonfromline.inl inline LocusReferenceList const& SkeletonFromLine:: CFP1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 64 GetReferenceList(void) const return ReferenceList; inline LocusReferenceList& SkeletonFrom]Line:: UseReferenceList(void) return ReferenceList; inline GEO-PolyPolyline const& SkeletonFromLine:: GetClient(void) const return Client; inline int SkeletonFromLine:: 25 GetN(void) const return N; inline int SkeletonFromLine:: GetI(void) const return 1; CFP1 467AU(Open53)476547 4* 0* 0000 0* 0*0000 0 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 65 w inline double SkeletonFromLine:: GetTForRefK(int i) const return GetReferenceListo[i] .GetTo; inline GEO Point SkeletonFromLine:: Interpolate(double t) const return GetCliento[GetNo] .hiterpolate(GetIO,t); inline CEOPoint SkeletonFromLine:: GetStartPoint(void) const return GetCliento [GetNO] [Getl()]; *e inline EOPoint SkeletonFromLine:: GetEndPoint(void) const return GetCliento [GetNO] [GetIO)+ 1] inline double SkeletonFrom]Line:: CEP1 467AU(Open53)476547 [1:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 66 GetLength(void) const
I
return GEOPoint:: Distance( GetStartPointo, GetEndPointo) HI Iocusref~h #ifndef LOCUSREFH I#define LOCUSREFH #include <cnt-indexedlist.h> 4 *class LocusReference is individual 'locus markers' used by *class SkeletonFromLine. 'N'and 'I'refer to which line-segment in the **client of SkeletonFron4,ine is the other focus of the locus 20 **corresponding to parameter The line segment is the IPth' segment *in the iN~th' polygonal boundary of the client.
class LocusReference public: LocusReference(void); LocusReference(LocusReference const& ret); LocusReference(int n, mnt i, double t); LocusReference& operator--(LocusReference const& ref); mnt mnt double CFP 1 467AU(Open53)476547 GetN(void) const; GetI(void) const; GetT(void) const; [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 67 void void SetLocus(int n, int 1); SetT(double t); operator<(LocusReference const& ret) const; operator--=(LocusReference const& ret) const; Bool Value Bool Value private: int int double class LocusReferenceList public CNT IndexedList<LocusReference> f public: void Sort(void); 20 #include <locusref inl> #endif Iocusref.cpp #Include <stdafx.h> #Include <locusref.h> #Include <cnt-sortedlist.h> void LocusReferenceList:: Sort(void) f CNTIndexedList<LocusReference> copy(*this); CNTSortedList<LocusReference> sortedCopy(copy); CEPi 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN531476547.doc:PWM 68 w ~for (int I 0; 1 GetSizeo; UseElement(i) =sortedCopy[i]; Ilocusref~inl inline LocusReference:: LocusReference(void) T(0.0) inline LocusReference:: LocusReference(LocusReference const& ref) N(ref.N), I(ref 1), T(ref.T) inline LocusReference:: LocusReference(int n, mnt i, double t) 30 T(t) inline LocusReference& LocusReference:: CEP 1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM ~>k4~r 69 operator--(LocusReference const& ref) N ref. N; I =refl1; T =ref.T; return *this; inline mnt LocusReference:: GetN(void) const return N; inline int LocusReference:: GetI(void) const :0 return inline LocusReference:: inietouinniti CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM A ZtA~~ 70 0 N=n; I= i; inline void LocusReference:: SetT(double t) T =t; inline Bool Value LocusReference:: operator<(LocusReference const& ref) const return GetT() ref.GetTO GetTO ref.GetTO GetNO ref.GetNO 30 GetNO ref.GetNO GetlO) ref.GetIO) CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 71 inline Bool Value LocusReference:: operator--=(LocusReference const& ref) const
I
return GetTo ref GetTo GetNo ref.GetNo Getl() ref.GetIO); CFP 1 467AU(Open53)476547 CE~i467A(Ope53)46547[:\ELEC\CISRA\OPEN\OPEN531476547.doc:PWM

Claims (9)

1. A method of generating a component of a geometric skeleton of a polygon, said polygon comprising a plurality of interconnected line segments, the method comprising the step of: determining, for a current line segment of said plurality, a first point on a line perpendicular to said current line segment at a second point corresponding to a parameter value, wherein said first point is a point of a locus between said current line segment and one other of said line segments, which locus point is the closest locus point, on said line, to the current line segment of any locus point of said current line segment and any one of the line segments other than the current line segment, said first point forming a point of said component of said skeleton.
2. A method as claimed in claim 1, further comprising repeating said determining step for a plurality of said second points corresponding to a plurality of different ones of parameter values to form a plurality of said first points.
3. A method as claimed in claim 2, further comprising: 20repeating said determining step for each said line segment of said polygon to determine a corresponding said component, and combining said components to form said geometric skeleton.
4. A method as claimed in claim 1, wherein said determining step comprises, for each said line segment, the sub-steps of: selecting one of said line segments other than the current line segment; determining that parameter value, where the perpendicular distance from the current line segment to a point of a locus between the current line segment and the selected line segment is a minimum at a second point corresponding to said determined parameter value; determining that line segment, where the perpendicular distance from the current line segment to a point of a locus between said current line segment and the determined line segment at a second point corresponding to said determined parameter value is the minimum of the perpendicular distances from the current line segment to any locus point CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -73- of said current line segment and any one of said line segments other than the current line segment at a second point corresponding to said determined parameter value, storing said determined parameter value, and a label representative of said determined line segment, as a data signal representative of the components of said skeleton; repeating said steps to for each remaining said line segment. A method as claimed in claim 4, wherein said determining step further comprises: generating said points of said components of said skeleton using said stored parameter values and labels.
6. A method as claimed in claim 1, wherein said determining step performs the following sub-steps for each line segment: selecting a line segment other than the current line segment; determining the perpendicular distance from said current line segment at said second point to a point of a locus between the current line segment and said selected line segment; repeating substeps and for the remaining said line segments; and *o o determining a said locus point which has the smallest said perpendicular 20 distance, wherein said determined point forms a point of said components of said skeleton.
7. A method as claimed in claim 6, wherein said method performs said determining O° step for a plurality of said second points corresponding to a plurality of parameter values. S
8. A method of generating components of a geometric skeleton of a polygon, wherein said polygon comprises a plurality of line segments and one or more concave vertices, the method comprising the step of: •determining, for each said concave vertex, a first point on a radial line from the current concave vertex, wherein said radial line has a corresponding parameter value and said first point is a point of a locus between said current concave vertex and a said line segment, which locus point is the closest locus point on said radial line of any locus point CFP 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM
74- of said current concave vertex and any one of said line segments, said first point forming a point of said components of said skeleton. 9. A method as claimed in claim 8, wherein said method performs said determining step for a plurality of radial lines having corresponding parameter values. A method as claimed in claim 8, wherein said determining step performs the following sub-steps for each concave vertex: selecting a line segment; determining a said parameter value, wherein the distance from the current concave vertex to a point of a locus between the current concave vertex and the selected line segment is a minimum along the radial line corresponding to said determined parameter value; determining a said line segment, wherein the distance from the current concave vertex to a point of a locus between said current concave vertex and the determined line segment along the radial line corresponding to said determined parameter value is the minimum of the distances from the current concave vertices to any locus point of said current concave vertex and any one of said line segments along the radial line 4* corresponding to said determined parameter value, 20 storing said determined parameter value, and a label representative of said determined line segment, as a data signal representative of the components of said :skeleton; and repeating said steps to for each remaining said line segment. 11. A method as claimed in claim 10, wherein said determining step further comprises: generating said points of said components of said skeleton using said stored parameter values and labels. ooo°° S" 12. A method as claimed in claim 8, wherein said determining step comprises the sub- steps: selecting a concave vertex of the polygon; determining the distance from said current concave vertex along a radial line to a point of a locus between the current concave vertex and said selected line segment; CFP 1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM ~l lr repeating substeps and for the remaining said line segments along said same radial line; and determining a said locus point having the smallest said distance from the current concave vertex, wherein said determined point forms a point of said components of said skeleton. 13. A method as claimed in claim 12, wherein said method performs said determining step for a plurality of said radial lines corresponding to a plurality of parameter values. 14. A method of generating a geometric skeleton of a polygonal shape, the method comprising the steps of: determining a parameter value of an edge or concave vertex of the polygonal shape where the distance from said edge or concave vertex to a point of a locus between said edge or concave vertex and another edge of the polygonal shape is a minimum; and storing said parameter value and a label representative of said another edge having said minimum distance as a data signal representative of the geometric skeleton at said parameter value. S* 15. A method of generating a representation of components of a geometric skeleton of a 20 polygon, wherein the polygon comprises a plurality of line segments, the method comprising the steps of: generating, for each said line segment of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; and storing said lists as a representation of said components of said skeleton. CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM r r n r- r- i -76- W 16. A method of generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments and one or more concave vertices, the method comprising the steps of: generating, for each concave vertex of the polygon, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and storing said lists as a representation of said components of said skeleton. 17. A method of generating a representation of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the method comprising the 20 steps of: generating, for each said line segment of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM Ar~- 4 77 generating, for each concave vertex (i of the polygon if any, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex (i) forms another point of the skeleton; and storing said lists as a representation of said skeleton. 18. A method of generating a representation of skeletal components of a polygon, the method comprising the steps of: selecting a first edge Ni of the polygon; creating a list associated with said first edge for storing k members (tk, Nk), V00 where tk is a parameter value associated with a point on said first edge, and Nk is an edge "of the polygon; selecting a second edge Nj of the polygon other than the first edge Ni; determining at least one said parameter value on said first edge Ni so that a locus(Ni Nj distance function is monotonic moving away from said at least one parameter value; g- adding said determined parameter value to said list if not already on said list; determining, for each two members of the list (tk, Nk), (tk+l, Nk+l) having adjacent parameter values, if a point of locus(Ni Nj is closer to the first edge than either of a point of locus(Ni ,Nk) and a point of locus(Ni at any parameter value intermediate tk and tk+1; S Coo adding said determined intermediate parameter value to said list, if not already on said list; CFP 1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM n7- 78 replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Ni Nj distance function is less than the locus (Ni, Nk) distance function at the parameter value tk; repeating steps to for each remaining said second edge; repeating steps to for each remaining said first edge; and storing said lists as a data signal representative of said skeletal components. 19. A method as claimed in claim 18, wherein each said list is sorted in ascending order of parameter values. A method of generating a representation of skeletal components of a polygon, the method comprising the steps of: selecting a first concave vertex Vi of the polygon; creating a list associated with said first concave vertex for storing k members (tk, Nk), where tk is a parameter value associated with a radial line from said first concave vertex, and Nk is an edge of the polygon; selecting a second edge Nj of the polygon; determining at least one said parameter value associated with said first o concave vertex Vi so that a locus(Vi Nj distance function is monotonic moving away from said at least one parameter value; adding said determined parameter value to said list if not already on said list; determining, for each two members of the list (tk, Nk), (tk+I, Nk+I) having adjacent parameter values, if a point of locus(Vi Nj is closer to the first concave vertex than either of a point of locus(Vi ,Nk) and a point of locus(Vi ,Nk+I) at any parameter S" 25 value intermediate tk and tk+l; adding said determined intermediate parameter value to said list, if not already on said list; replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if oa..a. the locus (Vi Nj distance function is less than the locus (Vi, Nk) distance function at the parameter value tk; repeating steps to for each remaining said second edge; repeating steps to for each remaining said first concave vertices; and storing said lists as a data signal representative of said skeletal components. CFP1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN531476547.doc:PWM 79 1W 21. A method as claimed in claim 20, wherein each said list is sorted in ascending order of parameter values. 22. Apparatus for generating a component of a geometric skeleton of a polygon, said polygon comprising a plurality of interconnected line segments, the apparatus comprising: means for determnining, for a current line segment of said purality, a first point on a line perpendicular to said current line segment at a second point corresponding to a parameter value, wherein said first point is a point of a locus between said current line segment and one other of said line segments, which locus point is the closest locus point, on said line, to the current line segment of any locus point of said current line segment and any one of the line segments other than the current line segment, said first point forming a point of said component of said skeleton. 23. Apparatus for generating components of a geometric skeleton of a polygon, wherein said polygon comprises a plurality of line segments and one or more concave vertices, the apparatus comprising: means for determining, for each said concave vertex, a first point on a radial line x. from the current concave vertex, wherein said radial line has a corresponding parameter value and said first point is a point of a locus between said current concave vertex and a said line segment, which locus point is the closest locus point on said radial line of any locus point of said current concave vertex and any one of said line segments, said first point forming a point of said components of said skeleton. 25 24. Apparatus for generating a representation of components of a geometric skeleton of polygon, wherein the polygon comprises a plurality of line segments, the apparatus comprising: means for generating, for each said line segment (i of the polygon, a list ~comprising a plurality of members and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of CFP 1 467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; and means for storing said lists as a representation of said components of said skeleton. Apparatus for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments and one or more concave vertices, the apparatus comprising:: means for generating, for each concave vertex of the polygon, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of S...the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a 20 point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex (i) forms another point of the skeleton; and means for storing said lists as a representation of said components of said skeleton. 26. Apparatus for generating a representation of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the apparatus comprising: Smeans for generating, for each said line segment (i of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -81 the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; means for generating, for each concave vertex of the polygon if any, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex (i) and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and means for storing said lists as a representation of said skeleton. 27. Apparatus for generating a representation of skeletal components of a polygon, the 20 apparatus comprising: first selection means for selecting a first edge Ni of the polygon; creation means for creating a list associated with said first edge for storing k members (tk, Nk), where tk is a parameter value associated with a point on said first edge, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon other than the first edge Ni; first determination means for determining at least one said parameter value on said first edge Ni so that a locus(Ni Nj distance function is monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not already on said list; CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM '-S -~llii~-Y
82- second determination means for determining, for each two members of the list (tk, Nk), Nk+1) having adjacent parameter values, if a point of locus(Ni Nj is closer to the first edge than either of a point of locus(Ni ,Nk) and a point of locus(Ni ,Nk+I) at any parameter value intermediate tk and tk+l; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; replacement means for replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (N i Nj distance function is less than the locus (Ni, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining said second edge; second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, replacement means, and first repetition means for each remaining said first edge; and storage means for storing said lists as a data signal representative of said skeletal components. e: 20 28. Apparatus for generating a representation of skeletal components of a polygon, the apparatus comprising: first selection means for selecting a first concave vertex Vi of the polygon; creation means for creating a list associated with said first concave vertex for storing k members (tk, Nk), where tk is a parameter value associated with a radial line from said first concave vertex, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon; first determination means for determining at least one said parameter value associated with said first concave vertex Vi so that a locus(Vi Nj distance function is •monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not already on said list; second determination means for determining, for each two members of the list (tk, Nk), (tk±I, Nk+I) having adjacent parameter values, if a point of locus(Vi Nj is closer CFP 1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM ljn -83- to the first concave vertex than either of a point of locus(Vi ,Nk) and a point of locus(Vi ,Nk+l) at any parameter value intermediate tk and tk+l; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; replacement means for replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Vi Nj distance function is less than the locus (Vi, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining said second edge; second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, replacement means, and first repetition means for each remaining said first concave vertices; and storage means for storing said lists as a data signal representative of said skeletal components. 29. A computer program product having a computer readable medium comprising a Scomputer program for generating a component of a geometric skeleton of a polygon, said S• 20 polygon comprising a plurality of interconnected line segments, the apparatus comprising: means for determining, for a current line segment of said purality, a first point on a line perpendicular to said current line segment at a second point corresponding to a parameter value, wherein said first point is a point of a locus between said current line *segment and one other of said line segments, which locus point is the closest locus point, on said line, to the current line segment of any locus point of said current line segment and any one of the line segments other than the current line segment, said first point forming a point of said component of said skeleton. A computer program product having a computer readable medium comprising a computer program for generating components of a geometric skeleton of a polygon, wherein said polygon comprises a plurality of line segments and one or more concave vertices, the computer program product comprising: CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM ^M -84- means for determining, for each said concave vertex, a first point on a radial line from the current concave vertex, wherein said radial line has a corresponding parameter value and said first point is a point of a locus between said current concave vertex and a said line segment, which locus point is the closest locus point on said radial line of any locus point of said current concave vertex and any one of said line segments, said first point forming a point of said components of said skeleton. 31. A computer program product having a computer readable medium comprising a computer program for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the computer program product comprising: means for generating, for each said line segment of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter 20 value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value which is closest to the current line segment forms another point of the skeleton; and S•means for storing said lists as a representation of said components of said skeleton. 32. A computer program product having a computer readable medium comprising a computer program for generating a representation of components of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments and one or more concave vertices, the computer program product comprising:: means for generating, for each concave vertex (i of the polygon, a list comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex and which are CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -a7W C. t A adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" forms another point of the skeleton, and for any parameter value 0' immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex (i) forms another point of the skeleton; and means for storing said lists as a representation of said components of said skeleton. 33. A computer program product having a computer readable medium comprising a computer program for generating a representation of a geometric skeleton of a polygon, wherein the polygon comprises a plurality of line segments, the computer program product comprising: means for generating, for each said line segment (i of the polygon, a list comprising a plurality of members where and are any members of the list, t' and t" are parameter values of a current line segment and which are adjacent parameter values in the list, and N and P are said line segments of the polygon other than the current line segment whereby a point of locus(i,N) on a line perpendicular to the current line segment at the parameter value t' forms one point of the skeleton and a point of locus(i,P) on a line perpendicular to the current line segment at the parameter value t" forms another point of the skeleton, and for any parameter value immediate t' and t" a point, being one of a point of locus or a point of locus(i,P) on the line perpendicular to the current line segment at the parameter value t' which is closest to the current line segment forms another point of the skeleton; means for generating, for each concave vertex of the polygon if any, a list o9oo99 comprising a plurality of members where and are any members of the list, 0' and 0" are parameter values of a current concave vertex (i) and which are adjacent parameter values in the list, and N and P are said line segments of the polygon, whereby a point of locus(i,N) on a radial line from the current concave vertex at the parameter value 0' forms one point of the skeleton and a point of locus(i,P) on a radial line from the current concave vertex at the parameter value 0" CFP 1 467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM -86- forms another point of the skeleton, and for any parameter value immediate 0' and 0" a point, being one of a point of locus or a point of locus(i,P) on the radial line from the current concave vertex at the parameter value which is closest to the current concave vertex forms another point of the skeleton; and means for storing said lists as a representation of said skeleton. 34. A computer program product having a computer readable medium comprising a computer program for generating a representation of skeletal components of a polygon, the computer program product comprising: first selection means for selecting a first edge Ni of the polygon; creation means for creating a list associated with said first edge for storing k members (tk, Nk), where tk is a parameter value associated with a point on said first edge, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon other than the first edge Ni; first determination means for determining at least one said parameter value on said first edge Ni so that a locus(Ni Nj distance function is monotonic moving away from said at least one parameter value; first addition means for adding said determined parameter value to said list if not 20 already on said list; second determination means for determining, for each two members of the list (tk, Nk), (tk+I, Nk+) having adjacent parameter values, if a point of locus(Ni Nj is closer to the first edge than either of a point of locus(N ,Nk) and a point of locus(Ni ,Nk+i) at any parameter value intermediate tk and tk+i; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; •replacement means for replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Ni Nj distance function is less than the locus (Ni, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining said second edge; CFP1467AU(Open53)476547 [I :\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM 87 second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, replacement means, and first repetition means for each remaining said first edge; and storage means for storing said lists as a data signal representative of said skeletal components. A computer program product having a computer readable medium comprising a computer program for generating a representation of skeletal components of a polygon, the computer program product comprising: first selection means for selecting a first concave vertex Vi of the polygon; creation means for creating a list associated with said first concave vertex for storing k members (tk, Nk), where tk is a parameter value associated with a radial line from said first concave vertex, and Nk is an edge of the polygon; second selection means for selecting a second edge Nj of the polygon; first determination means for determining at least one said parameter value associated with said first concave vertex Vi so that a locus(Vi Nj distance function is monotonic moving away from said at least one parameter value; l first addition means for adding said determined parameter value to said list if not 20 already on said list; I l second determination means for determining, for each two members of the list (tk, Nk), (tk+l, Nk+1) having adjacent parameter values, if a point of locus(Vi Nj is closer to the first concave vertex than either of a point of locus(Vi ,Nk) and a point of locus(Vi o* *ll* at any parameter value intermediate tk and tk+l; second addition means for adding said determined intermediate parameter value to said list, if not already on said list; replacement means for replacing any existing member (tk,Nk) of the list with the member (tk, Nj) if the locus (Vi Nj distance function is less than the locus (Vi, Nk) distance function at the parameter value tk; first repetition means for repeating the operations of the second selection means, first determining means, first addition means, second determination means, second addition means, and replacement means for each remaining said second edge; CFP1467AU(Open53)476547 [I:\ELEC\CISRA\OPEN\OPEN531476547.doc:PWM -88- second repetition means for repeating the operations of the first selection means, creation means, second selection means, first determinion means, first addition means, second determination means, second addition means, replacement means, and first repetition means for each remaining said first concave vertices; and storage means for storing said lists as a data signal representative of said skeletal components. 36. A method of generating a geometric skeleton, the method substantially as described with reference to Figs. 1 to 22 of the accompanying drawings. 37. Apparatus for generating a geometric skeleton, the method substantially as described with reference to Figs. 1 to 23 of the accompanying drawings. 38. A computer program product having a computer readable medium comprising a computer program for generating a geometric skeleton, the computer program product substantially as described with reference to Figs. 1 to 23 of the accompanying drawings. Dated 1 October, 1999 Canon Kabushiki Kaisha Patent Attorneys for the Applicant/Nominated Person SPRUSON FERGUSON S. 44 0 S @4 6 SS iS 5S 5 .55. 5w 5 4. S. 4. *SSS S S 5* CFP 1467AU(Open53)47654 7 [I:\ELEC\CISRA\OPEN\OPEN53]476547.doc:PWM
AU52623/99A 1998-10-02 1999-10-01 Method and apparatus for generating a geometric skeleton of a polygonal shape Ceased AU745157B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU52623/99A AU745157B2 (en) 1998-10-02 1999-10-01 Method and apparatus for generating a geometric skeleton of a polygonal shape

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AUPP6317 1998-10-02
AUPP6317A AUPP631798A0 (en) 1998-10-02 1998-10-02 Method and apparatus for generating a geometric skeleton of polygonal shape
AU52623/99A AU745157B2 (en) 1998-10-02 1999-10-01 Method and apparatus for generating a geometric skeleton of a polygonal shape

Publications (2)

Publication Number Publication Date
AU5262399A AU5262399A (en) 2000-04-06
AU745157B2 true AU745157B2 (en) 2002-03-14

Family

ID=25629775

Family Applications (1)

Application Number Title Priority Date Filing Date
AU52623/99A Ceased AU745157B2 (en) 1998-10-02 1999-10-01 Method and apparatus for generating a geometric skeleton of a polygonal shape

Country Status (1)

Country Link
AU (1) AU745157B2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0320789A (en) * 1989-03-13 1991-01-29 Hitachi Ltd Vector character converting method and document processor
WO1996005574A1 (en) * 1994-08-17 1996-02-22 Laser Products, Inc. Method for generating curves
WO1999057686A1 (en) * 1998-05-07 1999-11-11 3-Dimensional Pharmaceuticals, Inc. System, method, and computer program product for representing proximity data in a multi-dimensional space

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0320789A (en) * 1989-03-13 1991-01-29 Hitachi Ltd Vector character converting method and document processor
WO1996005574A1 (en) * 1994-08-17 1996-02-22 Laser Products, Inc. Method for generating curves
WO1999057686A1 (en) * 1998-05-07 1999-11-11 3-Dimensional Pharmaceuticals, Inc. System, method, and computer program product for representing proximity data in a multi-dimensional space

Also Published As

Publication number Publication date
AU5262399A (en) 2000-04-06

Similar Documents

Publication Publication Date Title
EP0354031B1 (en) Graphical image editing
US6639592B1 (en) Curve network modeling
KR101265810B1 (en) Triangulating procedural geometric objects
JP4012258B2 (en) Progressive mesh adaptive subdivision method and apparatus
US6859202B2 (en) Conversion of a hierarchical subdivision surface to nurbs
Velho et al. A unified approach for hierarchical adaptive tesselation of surfaces
US7502511B2 (en) Shape grammar interpreter
JP2003505800A (en) Geometric design and modeling system using control geometry
US7692652B2 (en) Selectively transforming overlapping illustration artwork
Zanni et al. SCALe‐invariant Integral Surfaces
EP1562138B1 (en) A process for drafting a curve in a computer-aided design system
Robert et al. Fast binary image processing using binary decision diagrams
US8274514B1 (en) Method and apparatus for searching, replacing and modifying explicit and implicit shape in sketch-style drawings of various styles
Deister et al. Fully automatic and fast mesh size specification for unstructured mesh generation
Larsen et al. Converting topology optimization results into parametric CAD models
AU745157B2 (en) Method and apparatus for generating a geometric skeleton of a polygonal shape
Kraemer et al. Extension of half-edges for the representation of multiresolution subdivision surfaces
US6654015B1 (en) Method and apparatus for generating a geometric skeleton of a polygonal shape
Ng et al. Incremental tessellation of trimmed parametric surfaces
Voigtmann et al. A hierarchical model for multiresolution surface reconstruction
Dettori et al. Designing a library to support model-oriented generalization
Zinn et al. Modeling and querying vague spatial objects using shapelets
Alsayed Ahmad et al. CAD Reconstruction of Watertight Surface Meshes Using Polycube Parameterization and Subdivision Surfaces
Kim et al. A new spatial data structure for triangular mesh with toroidal patches
US20050276518A1 (en) Computer graphics system and computer-implemented method for generating coarse-level meshes for multi-resolution surface editing

Legal Events

Date Code Title Description
FGA Letters patent sealed or granted (standard patent)