METHOD OF CURVE APPROXIMATION

Abstract: A method of curve approximation comprises a dividing step for dividing a curve into arcs classified into four quadrant directions according to a normal thereof, each having a single-value monotone increasing or decreasing function, and a calculating step for calculating an approximate curve represented by a curve approximation function by using an interval between end points of each arc as a curve approximation interval.

Description: The present invention relates to a curve approximation method for approximating a curved portion of a contour of a character or picture, etc., by using a curve approximation function. The present invention is utilized for approximating the contour of the character, etc., by straight lines and curves to compress and store the pattern data of the character, and may be particularly useful in industry for computers, word-processors, and computerized type-setting. A method in which the total number of dots constituting the pattern of the character are stored is known. However, in this method, too much data must be stored, and when an enlarged pattern and reduced pattern, etc., of the original pattern are produced on the basis of the total number of dots of the pattern, an obligue line and curved stroke (referred to as curved stroke hereinafter) can not be made smooth, and therefore, a high quality pattern can not be obtained. Accordingly, a pattern compressing method in which only a small amount of pattern data of the character and picture, etc., need be stored, and a high quality pattern can be obtained when enlargement and reduction are carried out, has become necessary. A method is known in which the pattern is represented by a contour, and this method is effective for data compression. That is, the contour of the pattern is approximated by straight lines and curves, and only the data relating to the approximated straight lines and curves is stored, thereby reducing the amount of the data to be stored. A high quality pattern for expansion or reduction, etc., can be obtained by this method. A method in which the contour of the character pattern is expressed by an approximated curve is disclosed in UK Patent Application GB No. 2147474A to the Shaken Co., Ltd., entitled "Method of processing character or pictorial image data" and published on 9 May, 1985, and will be explained hereinafter. That is, in this method, the curve approximation is carried out by sequentially changing the segment, using a residual as a evaluation standard, and the segment is approximated by using a spline function on the basis of slopes and coordinates at both end points. The function representing the curve must be a single-value function with respect to one axis, for example, an X-axis, when the contour is approximated by curves. Therefore, these segments traced on the contour of the character are divided into sections wherein only one y-value exists with respect to one X-value. The curved portion is expressed by a polynominal of the n-th degree (n = 2 or 3). The coefficient of the polynominal of the n-th degree is determined on the basis of slopes and coordinates at both end points of an interval to be curve-approximated. To carry out the curve approximation, the slope at each contour point (the point on the contour) is calculated, the approximate curve is determined on the basis of two contour points on the contour, the deviation between the approximate curve and the contour is calculated with respect to each contour point, the contour point is moved forward by one to repeat the same process when the deviation with respect to the curve approximate interval now in question is less than an allowable error, the longest interval (sampling interval) wherein the deviation is within the allowable error is determined, and the contour is divided into these sampling intervals. However, this prior art method has a low processing speed, since the calculation of the approximate curve is repeated until the deviation exceeds the allowable error. Further, this method does not always result in a correct curve approximation, since the method does not consider the curve vibration phenomenon. That is, there is a possibility of occurrence of vibration of the approximated curve obtained by the aforementioned method. This vibration can be detected by determining whether or not the approximated curve has a maximal value and/or a minimal value (referred to hereinafter as an extreme value). But, if the contour is divided according to the method of the prior art, to carry out the curve approximation, a curve having an extreme value may validly exist. Accordingly, it is not easy to detect vibration by detecting extreme values within the approximation interval. A paper by T. Pavlidis et al. in IEEE Transactions on Computers, Vol. C-23, No. 8, August 1974, entitled "Segmentation of Plane Curves", discloses a method of piecewise polynomial approximation of plane curves using a "split-and-merge" algorithm. This invokes merging adjacent segments having similar approximating coefficients, and splitting segments deviating greatly from the plane curve. The above-mentioned GB-A-2 147 474 discloses a method according to the preamble of accompanying claim 1. According to the present invention, there is provided a method of operating a computer to compress image data, representing by a dot pattern an image containing at least one curved portion, by generating coded data defining an outline of the curved portion, the coded data being decodable to reproduce the image, said method involving splitting the outline into straight-line segments capable of being represented by a curve approximation function; characterised by the steps of:- (a) Extracting bending points of the outline from the dot pattern image data, the bending points dividing the outline into the straight-line segments; (b) Classifying the segments according to their direction using a four-quadrant directional classification system, each segment having a single classification associated therewith; (c) Grouping each series of consecutive segments having identical classification into an arc; and (d) Calculating an approximate curve to represent the outline of the curved portion, using a curve approximation function having a curve approximation interval defined by the end points of each arc. Reference is made, by way of example, to the accompanying drawings, in which:- Fig. 1 is a functional block diagram of a data processing system in which an embodiment of the present invention may be executed; Fig. 2 is an example of a Japanese cursive kana character "no"; Fig. 3 shows an example of the bending point attribute table according to an embodiment of the present invention; Fig. 4 shows a four-direction classification according to an embodiment of the present invention; Fig. 5 shows an example of the generation of a nonsmooth portion on the character shown in Fig. 2; Fig. 6 is a flow chart showing the procedure for reestablishing the curve approximation interval; Figs. 7A to 7F are drawings explaining an operation for unifying curved strokes; Figs. 8A and 8B are drawings explaining a new four direction classification for reestablishing a new curve approximation interval; Fig. 9 shows the reestablished curve approximation intervals with respect to the character shown in Fig. 2; Fig. 10 shows the bending point attribute table after reestablishment is carried out; Figs. 11A to 11C show examples of problems of the prior art; Figs. 12A to 12C explain the classification of the shape of the curve; and Figs. 13A to 13C show character patterns produced according to an embodiment of the present invention. A method for obtaining a curve approximation will be described hereinafter using an example of pattern data compression in which this method is used for approximating a contour of a character. An embodiment of the present invention may be carried out by a data processing system comprising a processor and a memory. Figure 1 is a functional block diagram of such data processing system, and shows the many kind of functions executed by the system, as a set of functional blocks. In Fig. 1, 1 denotes a processor or CPU for carrying out a data compressing process by executing a program; 2, a memory comprising a pattern storage element 20 for storing dot pattern data to be compressed, a bending point attribute table 21 for storing extracted bending points and extracted attributes thereof, and a compressed data storage element 22 for storing the compressed data. Numeral 10 denotes a bending point extracting element for extracting a bending point on the contour of a character or pictorial image; 11, a horizontal/vertical line recognition element for extracting a horizontal line portion and a vertical line portion from a contour vector of the character and pictorial pattern obtained from the bending point of the bending point attribute table 21, to add the attribute of the horizontal line and vertical line to the bending point in question in the attribute Table 21; 12, an ornament extraction element for extracting an ornamental part of the character and pictorial pattern from the contour vector of the pattern, to add the attribute of the ornament to the bending point in question in Table 21; 13, curved stroke extraction element for extracting an oblique line and curved stroke (referred to simply as curved stroke hereinafter) with a single-value function from the contour vector by using a four direction classifying method described later; and 14, a curve approximation interval reestablishing element for carrying out a curved stroke extracting function for unifying curved strokes with the single-value function to extract a curved stroke with a multi-value function and a curve approximation interval function for reestablishing a new curve approximation interval with respect to the curved stroke with the multi-value function, to divide the curved stroke with the multi-value function into curved strokes with a single-value function. Numeral 15 denotes a coefficient calculating element for calculating each coefficient of a contour approximation polynominal (n-th spline function) by using bending points with respect to the extracted curved stroke; 16, a residual sum of squares determination element for calculating a residual sum of squares of the coefficients calculated at the coefficient calculating element 15, to determine whether or not the calculated coefficients are correct; 17, a vibration determination element for determining whether or not the calculated polynominal shows the influence of vibration; 18, a contour reproducing part for carrying out a straight line approximation using a digital differential analyzer (DDA) to increase the reference points used for calculation of the coefficient at the coefficient calculating element 15 when the conditions of the residual sum of squares or vibration are not satisfied and the number of bending points is small; 19, a curve approximation compressed data producing element for obtaining the calculated coefficients of the polynominal and coordinates of knots of the polynominal as the compressed data to be stored in the compressed data storage element 22; 30, a straight line approximation compressed data producing element for producing compressed data obtained by a straight line approximation of the horizontal line, vertical line, and an ornament to be stored in the compressed data storage element 22. The data comprising process mainly comprises the bending point extraction process, the stroke extraction process, the curve approximation interval establishing process, curve approximation interval reestablishing process, and the data producing process. These processes will be described hereinafter in sequence, using as an example a Japanese cursive kana character pronounced "no" shown in Fig. 2. Figure 3 shows the bending point attribute table 21 which comprises the extracted bending point including coordinates and attributes thereof, such as a line group number representing a pair of horizontal lines or vertical lines, a position point representing the position of the bending point, i.e., left, right, above or below with respect to the horizontal line and vertical line, the ornament, the curve attribute which is the result of the four direction classification of the vector formed by the bending points P i and P i+1 , a curve group number representing a pair of curved strokes, and the curve approximation interval to which the bending point belongs. Extraction of the bending point First, the bending point on the contour is extracted from the dot pattern stored in the pattern storage element 20 by the bending point extraction element 10. The bending point corresponds to the bending portion on the contour, and in this example as shown in Fig. 2, the bending point is found by tracing the contour from a start point P₁ (i.e., a first bending point) in the direction of the arrow . That is, the contour of the character forms a closed loop. Therefore, assuming that two adjacent points on the contour represented by a set of dots are a start point P s and an end point P e , a point P is traced around the contour from the start point to the end point, and a straight line is generated between the start point P s and the point P by a Digital Differential Analyzer, and a deviation between the straight line and the contour is calculated. If the start point is P₁ , the bending point is found as an anterior point P₂ of a point at which the deviation between the straight line including the start point P₁ and the contour is zero. This point P₂ is then regarded as the start point P s , and the same process is repeated, whereby the next bending point P₃ is found. In this way, all bending points on the contour are found. In the case of the Japanese cursive kana character "no" shown in Fig. 2, bending points P₁ to P₃₀ are extracted, and the bending point number and the coordinates thereof are stored in the bending point attribute table 21 shown in Fig. 3. This method for finding the bending point is disclosed in Japanese Unexamined Patent Publication (Kokai) 61-208184, entitled "Pattern Information Compressing System", filed by the present applicant. Extraction of the stroke The horizontal line, the vertical line, and the ornament are then extracted in such a manner that a segment (a contour vector) obtained by approximating the interval between each bending point (i.e., a segment approximating the contour of the pattern by the straight line) is produced from the coordinates of the bending point, as shown in Fig. 2. That is, the direction of the segment between each bending point is found, and contour numbers E₃ , E₄ , and the like are given to the horizontal segments and contour numbers E₂ , E₅ and the like are given to the vertical segments. A contour number is not given to a segment which is not positioned in the horizontal and vertical direction. Pair are found of the segments having the number E i (i = 1, 2, ---), on the basis of the degree of overlapping and distance thereof, and the line group numbers G₁ to G₄ are given to those pairs. The ornaments are obtained as they are on the end portion of the line group or on the corner formed by two line groups. The horizontal line and the vertical line can be easily detected by using the coordinates of the bending points. For example, assuming that bending points of both ends of the segment are P i (X i , Y i ) and P j (X j , Y j ), if X i = X j and Y i ≠ Y j , the segment is the vertical line, and if Y i = Y j and X i ≠ Xj , the segment is the horizontal line. In this example, as shown in Fig. 2 and Fig. 3, bending points P₄ , P₅ , P₇ , P₈ , P₉ , P₁₀ , P₁₂ , P₁₃ , P₁₇ , P₁₈ , P₂₀ , P₂₁ , P₂₅ , P₂₆ , P₂₈ and P₂₉ are recognized as bending points of the horizontal line or the vertical line, a mark "G" is written into the column of the line group number on the table 21, and at the same time, the same number is given to the pair line group. For example, the vertical line of bending points P₄ and P₅ and the vertical line of bending points P₁₂ and P₁₃ are marked "G₁" as the line group pair. Further, the position of the line group with respect to the central portion of the pair line group is written into the position column. In the case of the Japanese kana character "no" shown in Fig. 2, the character pattern has no ornament, therefore the ornament column is left blank. Extraction of the curved stroke and establishment of the curve approximation interval The extraction of the curved stroke and the establishment of the curve approximation interval are then carried out. (i) First, the direction of the afore-mentioned segment between each bending point is classified into four directions. As shown in Fig. 4, one end point of the segment is positioned at the origin O of the coordinates system, it is determined to which of quadrants I to IV the direction of the segment directed to the other end point belongs, and the curve attribute I, II, III or IV is given to that segment. For example, in Fig. 2, the direction of the segment from point P₂ to point P₃ is in the fourth quadrant direction, and therefore the curve attribute "IV" is given to the start point P₂ of that segment as shown in Fig. 3. (ii) The curved stroke is then extracted by unifying and grouping a series of continuous bending points having the same curve attribute with respect to extracted segments (bending points) of the curve. For example, bending points P₂ and P₃ are unified and grouped to extract the curved stroke, as the bending points P₂ and P₃ are continuous and have the same curve attribute "IV". In this example, curve strokes S₁ to S₁₀ are extracted. As described above, the Japanese kana character "no" is approximated by ten curved strokes S₁ to S₁₀ , four pairs of horizontal and vertical lines G₁ to G₄ , and one horizontal line. Reestablishment of the curve approximation interval When the character pattern is reproduced on the basis of the compressed data produced by carrying out the curve approximation using the curve approximation interval of the extracted curve strokes, a nonsmooth pattern may be obtained. Figure 5 shows an example of this. In Fig. 5, the reproduced Japanese kana character "no" has nonsmooth portions indicated by arrows . The nonsmooth portions of the reproduced pattern occur because of the four direction classification in which the X-Y plane is divided at angles of 0°, 90°, 180°, and 270° is carried out to extract the curved stroke. That is, the curve including the nonsmooth portions shown in Fig. 5 should be originally approximated by the multi-value function. However, in the afore-mentioned four direction classification, the curved stroke with the single-value function is extracted to establish the curve approximation interval. Therefore, with respect to the curved stroke with the multi-value function formed by connecting curved strokes belonging to different quadrants, respectively, the slopes of segments belonging to adjacent quadrants differ at the conjunction point of these segments. As a result, the slope at the conjunction point becomes 0 or ∞, and thus the smoothness is lost at that conjunction point. Therefore, the reestablishment of the curve approximation interval is carried out to produce compressed data with which a smooth pattern can be obtained. This reestablishment is carried out in such a manner that the curved stroke with the multi-value function is extracted from the curved strokes with the single-value function, a new curve approximation interval is reestablished with respect to the extracted curved stroke with the multi-value function, and the curved strokes with the single-value function are again produced by a different four direction classification. Figure 6 is a flow chart showing the procedure for reestablishing the curve approximation interval, Figures 7A to 7F explain an operation for unifying curved strokes, Figures 8A and 8B explain the new four direction classification for reestablishing new curve approximation interval, Figure 9 shows the reestablished curve approximation intervals with respect to the Japanese kana character "no" shown in Fig. 2, and Figure 10 shows the bending point attribute table after the reestablishment is carried out. The extraction of the curve with the multi-value function is carried out on the basis of curve attributes I to IV of the curve approximation interval (curved stroke), the number of bending points between the curved strokes, and the continuity of slopes between the curved strokes. (i) First, the relationship of the direction attributes of the curved strokes is investigated. As shown in Fig. 3, each of the curved strokes S₁ to S₁₀ has curve attributes I to IV, and it is determined whether or not the relationship of the curve attribute shown in the following Table 1 is satisfied between adjacent curved strokes S i and S j . This table shows whether or not the adjacent curved strokes S i and S j belong to the adjacent quadrants shown in Fig. 4. If this relationship is satisfied, these adjacent curved strokes S i and S j with a single-value function may be unified as one curved stroke with a multi-value function. (ii) The number of bending points between adjacent curved strokes is then determined. This operation is explained with reference to Figs. 7A to 7C. In principle, the unification of adjacent curved strokes is possible when the number of bending points existing between adjacent curved strokes is two or less. That is, it is determined that a unification of adjacent curved strokes S i and S j is possible when a short vertical line within a certain threshold length having two bending points exists between adjacent curved strokes S i and S j , as shown in Fig. 7A, when one bending point having no attribute exists between adjacent curved strokes S i and S j as shown in Fig. 7B, and when adjacent curved strokes S i and S j are in direct contact. That is, when the number of bending points between adjacent curved strokes S i and S j is small, the unification to the curved stroke having the multi-value function is easy, since such adjacent curved strokes have been considered from the start as a curved stroke having the multi-value function. (iii) The continuity of slopes of the adjacent curved strokes S i and S j is then determined. Even through the adjacent curved strokes satisfy the afore-mentioned unifying condition, if there is no continuity of slopes between adjacent curved strokes, the adjacent curved strokes S i and S j can not be considered smooth curved stroke having the multi-value function. Figures 7D to 7F explains the continuity of the slopes. These Figs. 7D to 7F correspond to Figs. 7A to 7C, respectively. The continuity of slopes at the unified portion can be quantitatively determined by an inner product of contour vectors, and the result compared with a predetermined threshold ϑ th . Assuming that the curved strokes S i and S j are contour vectors and respectively, and a contour vector therebetween is vector in Figs. 7D and 7E, and curved strokes S i and S j are contour vectors and in Fig. 7F, the unification of the curved strokes S i and S j is possible when the following conditions are satisfied. Here, ϑ ab denotes an angle made by vectors and ; and ϑ bc an angle made by vectors and . That is, when the inner product is more than the threshold ϑth , unification of curved strokes S i and S j becomes possible. (iv) The unification of curved strokes S i and S j is carried out to extract the curved stroke having the multi-value function when the three afore-mentioned conditions are satisfied. When curved strokes are extracted as shown in Fig. 2, strokes S₆ , G₄ , S₇ , S₁ , G₁ and S₂ (i.e., from the bending point P₁₈ to the bending point P₇ in the clockwise direction) are unified to extract a first curved stroke having the multi-value function, strokes S₈ , G₄ and S₉ (i.e., from the bending point P₂₃ to the bending point P₂₈ in the counterclockwise direction) are unified to extract a second curved stroke having the multi-value function, and strokes S₃ , G₁ and S₄ are unified to extract a third curved stroke having the multi-value function. (v) The curved stroke having the multi-value function extracted by the unification is then divided into curved strokes having the single-value function, to reestablish new curve approximation intervals. As afore-mentioned, the extraction of the curved stroke is carried out by using the four direction classification in which the X-Y plane is divided at angles 0°, 90°, 180°, and 270°, as shown in Fig. 4. That is, the curved stroke having the multi-value function is divided into curved strokes having the single-value function at angle positions 0°, 90°, 180° and 270°. The conjunction point of adjacent curved strokes belonging to adjacent quadrants has the slope of 0 or ∞, since these curve strokes are approximated by the single-value function with respect to the X or Y coordinates, and thus the smoothness is lost. If the dividing angles on the X-Y plane are changed, the division at the angle position 0°, 90°, 180° and 270°, where the slope becomes 0 or ∞, is prevented. For this purpose, as shown in Fig. 8B, the division of the curve is carried out at angles 45°, 135°, 225°, and 315° made by the X axis for the multi-value function curve, to reestablish the curve approximation interval. This is carried out in such a manner that bending points closest to angle positions 45°, 135°, 225°, and 315° with respect to the X axis are determined as dividing points for dividing the curve. As shown in Fig. 9, bending points closest to angle positions 45°, 135°, 225°, and 315° among bending points unified to the curved strokes having the multi-value function are points P₃ , P₆ , P₁₁ P₁₄ , P₁₉ , P₂₂ , P₂₄ and P₂₇. When these points are determined as the dividing point, the first curved stroke having the multi-value function is divided into a curved stroke S₈' from the point P₁₈ to P₁₉ , a curved stroke S₉' from the point P₁₉ to P₂₂ , a curved stroke S₁' from the point P₂₂ to the point P₃ , a curved stroke S₂' from the point P₃ to the point P₆ , and a curved stroke S₃' from the point P₆ to the point P₇. These newly divided curve strokes define the new curve approximation interval, respectively. In the same way, the second curved stroke having the multi-value function is divided into a curved stroke S₁₀' from the point P₂₃ to the point P₂₄ , a curved stroke S₁₁' from the point P₂₄ to the point P₂₇ , and a curved stroke S₁₂' from the point P₂₇ to the point P₂₈ , and the third curved stroke having the multi-value function is divided into a curved stroke S₄' from the point P₁₀ to the point P₁₁ , a curved stroke S₅' from the point P₁₁ to the point P₁₄ , and a curved stroke S₆' from the point P₁₄ to the point P₁₅. The curve approximation intervals in the bending point attribute table 21 are rewritten in accordance with curved strokes thus divided, as shown in Fig. 10. Also, the curve group numbers are rewritten as F₁' to F₆' to correspond to the above-mentioned change. As a result, the reestablishment of the curve approximation interval is carried out. The curve approximation interval of the curved stroke which is not unified, for example, strokes S₅ and S₁₀ in Fig. 2, is left as it is, and is represented by strokes S₇' and S₁₃' (corresponding to strokes S₅ and S₁₀ in Fig. 2) in Fig. 9. When the character pattern is reproduced on the basis of the compressed data obtained by using the above-mentioned reestablished curve approximation interval, the pattern having smoothness at the conjunction point between adjacent strokes is obtained. Curve approximation The compressed data is produced on the basis of the content of the bending point attribute table 21 produced as described above, in particular, coordinates of the bending points and attributes of the bending point such as the line group number, the ornament, the curve attribute, the curve group number, and the curve approximation interval are produced. The horizontal line, the vertical line, and the ornament are extracted as the straight line for the straight line approximation, and on the other hand, the extracted curved stroke is used as for the curve approximation. First, the curve approximation of the curve approximation interval will be explained. There are many methods for approximating a proper curve when the curve approximate interval is established. In this example, a smoothing method using a spline function of the n-th degree, particularly a B-spline function which is numerically stable, is adopted. In this method, the coefficient and coordinates of the knots of the polynominal need be stored, instead of a large number of bending points of the curve portion, and therefore, the amount of data to be stored is noticeably reduced. This is, in the smoothing method using the B-spline function, the function is determined by calculating the coefficient and knots of the polynominal on the basis of a condition of a least square approximation. There are two well known method for obtaining a series of knots; a fixed knot method wherein the series of knots is obtained externally, and a knot addition method (sequential dividing method) wherein the series of knots is adaptively obtained internally. Further, there are many methods for obtaining the series of knots in accordance with the shape of the curve. In this example, the knot addition method is adopted. The calculation of the coefficient in the smoothing method of the spline function of the n-th degree is carried out as follows. First, both end points of the curve approximation interval are determined from the point series data of the curved portion, and an observation error is determined on the basis of a general expression (2) for the smoothing method in which the B-spline function is used, shown as follows. Then the coefficient of the polynominal for the curve approximation is calculated. wherein, m is the degree, n t is the number of knots, C j is the coefficient, and N j , m+1(x) is the divided difference of the (m+1) th order. The coefficient C j is found on the basis of a condition of a least-square approximation. Generally, the knots are determined from the curve data, then a weight σ i of the residual sum of squares (referred as an observation error hereinafter) is determined so as to satisfy a condition of a constant relative error of the following expression (3). wherein, σ i is the observation error of the i-th reference point, y i is the y-coordinate of the i-th reference point, and C th is the threshold. The observation error σ i represents the weight of the reference point, i.e., that point which is regarded as important. Here, the degree m of the spline function is set to 3, the observation errors σ i with respect to both end points are set to a smallest value, and the observation error σ i with respect to the other reference point between both end points is set to a value proportional to the slope of the curve corresponding to that reference point. The coefficient of the spline function S(x) is determined to satisfy the following expression (4). wherein, δ² is the residual sum of squares, δ th ² is the threshold of the residual sum of squares, and n is the total number of reference points. On the other hand, when the coefficient of the smoothing method of the spline function is calculated, if the observation error is fixed to a constant value, the following problems arise. 1. both end points can not be fixed. 2. the approximate almost horizontal curve becomes distorted. 3. the approximate almost vertical curve having the steep slope becomes distorted. Item 1. means that both end points are treated in the same way as other reference points with respect to the observation error. Item 2. causes an overlarge observation error with respect to the almost horizontal curve. Item 3. causes a too small observation error with respect to the almost vertical curve, since the observation error is determined in proportion to the slope. Figures 11A to 11C show examples of problems of the prior art, wherein Fig. 11A shows an example of a so called "mustache" produced because both end points are not fixed, as in item 1, Fig. 11B shows an example of an unnatural approximated curve of the almost horizontal curve is produced, as in item 2, and Fig. 11C shows an example of an unnatural approximate curve of the almost vertical curve produced as in item 3. These problems can be solved by determining the observation error with respect to both end points of the curve approximation interval to the smallest value, and determining the observation error with respect to other reference point within the curve approximation interval to a value in proportion to the slope at the point in question. The calculation of the slope, the determination of the observation error, and the selection of the single-value function of the X or Y axis are carried out as follows. (1) Calculation of the slope. Assuming that the X-Y coordinates of the i-th bending point are (X i , Y i ) and the X-Y coordinates of the (i+1)th bending point are (X i+1 , Y i+1 ), the slope D i of the i-th bending point is determined as follows. (2) Determination of the observation error. The observation error σ i is determined as follows, by using the slope D i . i) At both end points, σ i = C th1 ii) At points other than both end points, (a) When Y i+1 - Y i = 0; σ i = C th2 (b) When X i+1 - X i = 0; σ i = C th3 (c) When X i+1 - X i ≠ 0 and Y i+1 - Y i ≠ 0; σ i = C th4 · D i Where, σ i = C th3 when σ i > C th3 , and σ i = C th2 when σ i < C th2 . In the present example, thresholds C th1 to C th4 are determined as follows. C th1 = 0.1 C th2 = 0.5 C th3 = 50 C th4 = 5 (3) Selection of the single-value function of the X or Y axis. The shape of the curve is classified into three types, as shown in Figs. 12A to 12C, on the basis of the calculated slope. When the curve is almost horizontal as shown in Fig. 12A, the curve is approximated as the single-value function of the X axis in the way shown by the afore-mentioned expression (2). When the curve is almost vertical as shown in Fig. 12B, the curve is approximated as the single-value function of the Y axis as shown by the following expression (6), wherein the X and Y of expression (2) are replaced. Further, the coefficient C j of the expression (6) is determined so as to satisfy the following expression (7) in which the X and Y of expression (4) are replaced. The slope D iy with respect to the Y axis is calculated as follows by replacing X and Y. The observation error σ i is determined as follows, by using this slope D iy . i) At both end points, σ i = C th1 ii) At points other than both end points, (a) When X i+1 - X i = 0; σ i = C th2 (b) When Y i+1 - Y i = 0; σ i = C th3 (c) When X i+1 - X i ≠ 0 and Y i+1 - Y i ≠ 0; σ i = C th4 · D iy Where, σ i = C th3 when σ i > C th3 , and σ i = C th2 when σ i < C th2 . When the curve has an almost horizontal portion and an almost vertical portion at the same time, as shown in Fig. 13C, the curve is divided into two portions and the part having the almost horizontal portion is approximated by the single-value function of the X axis and the part having the almost vertical portion is approximated by the single-value function of the Y axis. The classification of the curved shape is carried out as follows. That is, when the number of bending points P i is N (i.e. i = 1, 2, --- N), these bending points are divided into two sections, i.e., one having bending points P i (i = 1, 2, --- N / 2) and the other having bending points P i ( i = N / 2 + 1, --- N). Then the mean value M d of slopes D i of the bending point is calculated at each section. The calculation of the mean value M d carried out as follows, on the basis of an angle ϑ i formed by the vector (X i+1 - X i , Y i+1 - Y i ) and the X axis and a length d i of the vector. When the mean value M d is less than the threshold M th , the curve is considered to be almost vertical. When both mean values M d with respect to two divided sections are greater than the threshold M th , the curve is determined to be the curve shown in Fig. 12A. When both means values M d are less than the threshold, the curve is determined to be the curve shown in Fig. 12B. In each case, the curve approximation is carried out without dividing the curve. In other cases, the curve is determined as shown in Fig. 12C, and the curve is divided into two portions, and the single-value function of the X-axis and the single-value function of the Y-axis are used for these two portions respectively to carry out the curve approximation. In the present example, the threshold M th is 0.3. Figures 13A to 13C show the character pattern produced according to an embodiment of the present invention. Figs. 13A and 13B show character patterns when the observation error is determined according to the afore-mentioned processes (1) and (2), and Fig. 13C shows the character pattern produced by the selection of the single-value function of the X or Y axis shown by the afore-mentioned process (3). Determination of the vibration As afore-mentioned, if the present invention, the number of the extreme values existing within the curve approximation interval is previously known. Therefore, the generation of vibration can be detected by investigating the number of extreme values after the curve approximation is carried out. That is, the curved stroke of the single-value function originally has no extreme value within the curve approximation interval, therefore the generation of vibration can be detected by investigating the existence of the extreme value. First, the method for determining whether or not vibration exists with respect to the curved stroke of the original single-value function will be explained. The extreme value may be detected by finely dividing the obtained approximated curve, and then determining the sign of the differential coefficient at each point. However, in the present example, the detection is carried out as follows, to shorten the time needed for calculating the differential coefficient. That is, each curved stroke is established by classifying the vector between bending points into four directions (i.e., attributes) at intervals of 90° and grouping the vectors having the same curve attribute. Therefore, each curved stroke does not originally have the extreme value. Then, by dividing the curved stroke into a plurality of sections and determining the attribute of each section, the existence of the extreme value can be detected, and thus the generation of vibration can be detected. Assuming that the X-coordinate of the i-th divided point is x i and the Y-coordinate is S(x i ), the curve attribute is found by determining the signs of (x i+1 - x i ) and [S(x i+1 ) - S(x i )] at the interval of the (i + 1) th and i-th points. The process for determining the vibration will be now explained. Step 1: The curve is divided into (N s - 1) segments by N s dividing points. Step 2: The curve attribute of the first dividing point (i = 1) is determined. That is, the attribute is determined by detecting the signs of (x₂ - x₁) and [S(x₂) - S(x₁)] and referring to Table 2, described later. Step 3: The attribute of the second dividing point (i = 2) is determined in the same way, and then determined whether or not it coincides with the attribute of the first dividing point (i = 1). Step 4: If a coincidence of the attributes is obtained, then the attribute of third dividing point (i = 3) is found, and the coincidence with the first dividing point is determined. If the coincidence of the attribute is not obtained, it is determined that vibration is generated, and the process is terminated. Step 5: The same process as in step 4 is carried out for dividing points from i = 4 to i = N s - 1, and if a coincidence of the attributes from the first dividing point through the (N s - 1) th dividing point is confirmed, it is determined that vibration does not exist. Next, the method for determining whether or not the vibration exists with respect to the curved stroke of the original multi-value function will be explained. Each stroke of the unified curved stroke of the multi-value function is obtained by unifying curved strokes of the single-value function then re-dividing the unified curved stroke. Therefore, the directional attribute of each stroke of the unified curved stroke with the multi-value function is obvious from the directional attributes of the curved strokes with the single-value function. For example, in Fig. 9, the reestablished curve approximation interval S₂' includes two directional curve attributes III and IV. The process for determining the vibration with respect to the curved stroke with the multi-value function will be now explained. Step 1': The curve attribute with respect to a certain curve approximation interval is determined from the bending point attribute table. If all of the curve attributes within the interval are the same, it is considered that interval has no extreme value, and the afore-mentioned steps 1 to 5 are carried out to determine the vibration. Otherwise, two kind of attributes are stored in registers AT(1) and AT(2). Step 2': The curve is divided into (N s - 1) portions by N s dividing points. Step 3': The curve attribute of each dividing point is determined by finding the signs (x i+1 - x i ) and [S(x i+1 ) - S(x i )] and referring to Table 2. Step 4': After the curve attributes of all dividing points have been determined, when the number of kinds of curve attributes is N atr , these N atr attributes are stored in registers AT'(1) to AT'(N atr ) respectively. Step 5': If the number N atr is not 2, it is considered that vibration is generated, and the process is terminated. Step 6': When AT(1) = AT'(1) and AT(2) = AT'(2), it is determined that there is no vibration; if not, then the existence of vibration is determined. Reproduction of the contour of the curved stroke The reproduction of the contour of the curved stroke is carried out on the basis of the afore-mentioned expression (2). When the number of bending points is small, it is difficult to obtain a proper curve since the reliability of the error obtained from the afore-mentioned expression (4) is low and the possibility of vibration is high. Therefore, when the number of bending points is small, the curve approximation is carried out in such a manner that the number of reference points is increased by connecting the bending points by a straight line generated by the DDA. Further, even when the number of bending points is large, if the error condition of the expression (4) and afore-mentioned vibration determination condition are not satisfied, the curve approximation is carried out in such a manner that the number of reference points is increased by connecting between bending points by a line generated by the DDA. That is, the coefficient calculating element 15 finds the coordinates of bending points within each curve approximation interval from the bending point attribute Table 21, the contour reproducing element 18 generates a series of notes, coefficient C j and S(x) are calculated on the basis of the expression (2), the residual sum of squares with respect to the S(x) found by the expression (4) is calculated at the residual sum of squares calculating element 16, the coefficient C j is calculated again so that the residual sum of squares satisfies the expression (4), the vibration determination is carried out at the vibration determining element 17, the calculation of the coefficient is again carried out when the vibration determining condition is not satisfied, and thus the coefficient C j satisfying both conditions of the residual sum of squares and the vibration determination is found. As described above, when the coefficient C j of the B-spline function is found, the compressed data producing element 19 stores the coefficient C j and the coordinates of knots of the B-spline function as the compressed data, into the compressed data storage element 22. Also, for the horizontal line, the vertical line, and the ornament, the compressed data producing element 30 stores end points of the straight line as compressed data into the compressed data storage element 22. In the afore-mentioned embodiment, the extraction of the curved stroke with the multi-value function is carried out under the condition shown in Fig. 8. However, the number of bending points between strokes and the threshold ϑ th can be properly selected according to the needed smoothness of the curve. Further, the curve dividing angles for reestablishing the curve approximation interval are not limited to 45°, 135°, 225° and 315°, and other angles may be used for this reestablishment. Further, although the above embodiments of the present invention have been described with reference to Japanese kana characters, it will be obvious to a person skilled in the art the principle of the present invention can be also applied to the correction of Roman alphabet characters, Arabic numerals, and any curved symbol or characteristic displayed on a computer or other screen.

Claims: A method of operating a computer to compress image data, representing by a dot pattern an image containing at least one curved portion, by generating coded data defining an outline of the curved portion, the coded data being decodable to reproduce the image, said method involving splitting the outline into straight-line segments capable of being represented by a curve approximation function; characterised by the steps of:- (a) Extracting bending points of the outline from the dot pattern image data, the bending points dividing the outline into the straight-line segments; (b) Classifying the segments according to their direction using a four-quadrant directional classification system, each segment having a single classification associated therewith; (c) Grouping each series of consecutive segments having identical classification into an arc; and (d) Calculating an approximate curve to represent the outline of the curved portion, using a curve approximation function having a curve approximation interval defined by the end points of each arc. A method according to claim 1, further comprising the steps of:- (e) Evaluating an observation error, representing a deviation between the curved portion and the approximate curve, with respect to a reference point on the approximate curve; and (f) Repeating step (d) to calculate a different approximate curve in the event that the evaluated observation error exceeds a predetermined threshold. A method according to claim 2 wherein, in step (e), the observation error is set to a value proportional to the slope of the approximate curve at the reference point. A method in accordance with claim 3, wherein the observation error is set to a fixed value at both end points of the curve approximation interval. A method according to any preceding claim, wherein the curve approximation function is a B-spline function. A method in accordance with any preceding claim, further comprising the steps of:- (g) Combining arcs defined by a single-value function into a combined arc with a multi-value function; (h) Dividing the combined arc with the multivalue function using a new four-direction classification system to reestablish curve approximation intervals; and (i) Carrying out curve approximation for the reestablished curve approximation intervals. A method according to any preceding claim, further comprising the steps of :- (j) dividing the approximate curve into a plurality of sections and for each section, classifying the approximate curve to one of a number of directions, based on its slope in that section; and (k) deciding whether the approximate curve suffers from vibration by examining how the direction of the approximate curve varies among the plurality of sections. A method in accordance with claim 7, further comprising repeating step (d) under a new condition when vibration is detected in step (k). A method in accordance with any preceding claim, wherein step (d) comprises selecting one of a single-value function with respect to an X-axis and a single-value function with respect to a Y-axis for said calculation.

Inventors: INOUE, AKIRA, NAGATA, SHIGEMI SAGINUMA-SUMIREGAOKA, NAOI, SATOSHI, NISHIKAWA, KATSUHIKO DIAMOND-BUILDING 510
Applicants: FUJITSU LIMITED
Application year: 1987
Main classification: G06F15
IPC codes: G06T9, G06K9