General kernel function for electronic halftone generation
BACKGROUND TO THE INVENTION 
     1. Field of Invention 
     This invention relates to a general halftone generation method in digital image systems. A type of algorithm is used which is capable of generating conventional halftone screen patterns as well as novel patterns which can have performance advantages. 
     2. Background of the Art 
     Algorithms are needed which can provide a means of simulating a continuous tone image containing a range of gray shades from black to white, or color separation containing a range of densities of some appropriate colorant. The practical implementation of such an algorithm must rely on a dot pattern defined within a fundamental halftone cell or &#34;glyph&#34; which is a relatively small rectangular array of points. 
     In the art of printing, half-tone systems have long been used to represent pictorial subjects where tone graduation is important. This was and frequently still is accomplished by the use of a photomechanical system in which a fine cross-hatch screen covers the pictorial image during exposure at a suitable stage in the photographic process leading to the printing plate. By this means the image is divided up into a multitude of regularly spaced very small (subliminal) dots whose size varies with the image density being reproduced. With the use of full color printing of subjects, three or four printing plates, one for each of the separate primary color images have to be prepared. The use of identical half-tone screens for each of these color separations can result in undesirable interactive visual effects including very pronounced and objectionable Moire patterns when the several successive print impressions are made. These Moire effects can be reduced to imperceptible levels by crossing the screen directions with one another. In the practice of the art it has long been known that a suitable set of screen angles for four color printing is 45°, 0°, +15°, and -15° (See reference to this art in Chapter 13 of &#34;Principles of Color Reproduction&#34;, by J. A. G. Yule, John Wiley &amp; Sons Inc. N.Y., 1967). 
     In the conventional half-tone system, the original continuous tone picture is represented in the print by regularly spaced high density dots of ink. The dots are sufficiently closely spaced that the unaided human eye cannot distinguish them. The changing size of the dots give the impression of changing tone, and by suitable control of the process the original tones can be reproduced faithfully. With full color originals, suitable control of the process of making the individual half-tone color separations can give faithful reproductions in full color. These photomechanical processes are slow and painstaking, particularly when high quality results requiring considerable manual correction and human judgment are involved. 
     The transmission of images over telegraph wires based on a process of photoelectric raster scanning was introduced early in the twentieth century. It was also applied to transmitting color images (U.S. Pat. Nos. 2,185,806; 3,413,706). The application of this technique to half-tone plate making by Hardy and others (U.S. Pat. Nos. 2,136,340; 3,190,185; 2,294,644) heralded an era of faster and more automatic plate making and correction. Methods were developed for scanning colored originals (U.S. Pat. Nos. 2,165,168; 2,253,086; 2,571,322) and treating the readings and output by analog devices to produce color separations suitable for color printing plate making with a considerable saving in time. 
     The combination of these two techniques for the making of color half-tone images was found to suffer from interactive visual effects including the Moire pattern problem known earlier to photomechanical plate makers. Wurzburg (U.S. Pat. No. 2,185,139) made color half-tone separations by the photoelectric raster scanning devices to give different equivalent screen angles for the different colors. Screen angle choice was based on the photomechanical art already existing. 
     In the photoelectric raster scanning systems, conversion of analogue scanning signals to digital form was found to facilitate manipulation of the signals by computing circuits, as in the electronic formation of half-tone dot patterns (U.S. Pat. No. 3,629,496). Such methods gave color originals suffering from interactive visual effect such as Moire patterns in the resulting prints. Patterns of dots of equal size but with separation distances depending on density in the original were found to reduce the Moire patterns (U.S. Pat. Nos. 3,197,558; 3,580,995) because of the absence of repeating patterns of dots. Direction simulation of the use in color work of four contact screens at different screen angles has been achieved by computing techniques coupled with four different dot generators (U.S. Pat. No. 3,911,480). Choice of the angles used is based on earlier experience with contact screens. 
     A different approach has been taken to the problems presented by photoelectric scanning methods. This involves the representation of a variable size half-tone dot by a matrix of smaller dots whose number in the matrix is varied to provide half-tone dot size changes and therefore density changes. (U.S. Pat. Nos. 3,604,486; 4,439,789). No change of size or optical density of these smaller dots is involved. Only their presence or absence is considered. This system therefore lends itself to the use of digital signals and their attendant high speed computing means. Enhanced tonal reproduction has been achieved by using a variable pixel area (the area assigned to a single matrix unit) in such matrix systems (U.S. Pat. No. 4,084,259). 
     In four color printing the separations have been represented by matrix pixels in which the distribution of dots for the same density is varied from one separation to another. This is said to reduce Moire effects (U.S. Pat. No. 3,922,484). This technique of Moire reduction has been expanded by randomizing the distribution of dots in the pixel matrix (U.S. Pat. No. 4,468,706) building on earlier monochrome work (U.S. Pat. No. 3,629,496). 
     The randomized pixel matrix method of reducing Moire effects has been approached in a separate manner often termed &#34;ordered dither&#34;. The raster scan identifies signals corresponding to all the dot positions in the pixel matrix but the presence or absence of a dot in the reproduction is determined by a predetermined matrix of threshold values--one for each dot position in the pixel matrix (U.S. Pat. Nos. 4,193,096; 4,342,051; 4,496,987). 
     As was reported above, U.S. Pat. Nos. 2,185,139 and 3,911,480 describe raster scan methods to reduce Moire effects which generate half-tone screen dots with different screen angles for the different color separations. This method has been enhanced in U.S. Pat. No. 4,419,690. A variation to this method has been taught in U.S. Pat. No. 4,443,060 wherein quadratic raster meshes of adjacent dots are expanded to contracted in their two diagonal directions. Different expansions/contractions are used for the different color separations. 
     The non-patent literature contains considerable detailed discussion of the application of raster scanning to half-tone image production. The following papers are representative: &#34;Half-tone method with Edge Enhancement and Moire Suppression&#34;, P. G. Roetling, JOSA 66, 985 (1976). In this method, detail corresponding to the spatial frequency of the half-tone screens is suppressed. &#34;Random Nucleated Halftone Screen,&#34; J. P. Allebach, PS &amp; E 22.89 (1978). These screens suppress Moire effects by the introduction of random elements. 
     &#34;An Optimum Algorithm for half-tone Generation for Displays and Hard Copies,&#34; T. M. Holladay, Proc. Soc. for Information Display, 21., 185 (1980). This describes electronically produced screens with different screen angles. 
     &#34;A New Evaluation Method of Image Quality of Digital Halftone Images Obtained by Ordered Dither Method&#34;, K. Kinoshita et al., J. Imaging Technology, 10.181 (1984). 
     U.S. Pat. No. 4,758,886 approaches the problem of Moire fringes in color half-tone images from the standpoint that the mathematical functions describing the half-tone patterns for the individual separations should be orthogonal with one another. These appears to have been no earlier disclosure of such an approach and none of the mathematical investigations in the literature suggest such an approach. 
     The patent describes a method of designing screen functions for raster-scan generated sets of image comprising two or more color separation images, which sets of generated images have reduced Moire patterns or are free from Moire pattern problems. The method does not use the equivalent of different screen angles for the separations nor is the technique of ordered diether used. The half-tone dot matrixes in a given separation are disposed at a single uniform pitch not at variable pitch as taught in some of the known art. 
     SUMMARY OF THE INVENTION 
     The invention offers a method of general halftone generation using an algorithm which is capable of generating conventional halftone screen patterns as well as novel patterns which may have performance advantages in some situations. Halftone patterns are made up of &#34;rows&#34; and &#34;columns&#34; of dots where traditional patterns keep the rows and columns perpendicular to one another and with equal spatial dot densities (&#34;dots per unit length&#34;) along the corresponding directions. The algorithm in this invention is based on direct modification of the &#34;x&#34; and &#34;y&#34; frequency components of halftone dot patterns, is very flexible in allowing independent adjustment of the row and column directions and while these angles are still restricted to those with rational tangents they need not be perpendicular, and also allows unequal densities along those directions. The halftone dot centers of this invention do not necessarily have to be located at the intersections of integral numbers of pixels. 
     This algorithm provides a means of simulating a continuous tone image containing a range of gray shades from black to white, or a color separation containing a range of densities of some appropriate colorant on a printing engine capable of only bilevel control of density at discrete points in a Cartesian grid that is typically addressed by scanning in a raster fashion. The heart of the process begins with the given coordinates of any addressable point on the page, calculates a threshold gray value that is compared to the desired local image value to determine whether that particular point should be &#34;on&#34; (by placing a full-density mark on the page at that location) or &#34;off&#34;. Which points (spots) are &#34;on&#34; and which are &#34;off&#34; is determined by the function that assigns a &#34;threshold&#34; value (the shade at which a pixel changes from &#34;off&#34; to &#34;on&#34;) based on a pixels &#34;x&#34; and &#34;y&#34; coordinates. 
     The algorithm used in this invention provides a basis for halftone dot generation in a variety of styles using a fairly simple function which could be adapted to implementation in several Raster Image Processor (RIP) architectures. While capable of generating several halftone patterns currently used in the art, an advantage of this invention is the ability to produce new halftone patterns which have improved performance. 
     The algorithm in this invention is very flexible in allowing independent adjustment of the row and column directions (which need not be perpendicular), and unequal densities along those directions. As one particular special case, the algorithm allows implementation of the halftone patterns described in the 3M patent: &#34;Optimal Color Halftone Patterns for Raster-scan Images&#34; (U.S. Pat. No. 4,758,886). The algorithm in this invention also contains a parameter to set the &#34;eccentricity&#34; of dots to produce patterns with &#34;elliptical&#34; dots that will &#34;link&#34; or &#34;chain&#34; along one direction (row or column) before the other to minimize the &#34;optical jump&#34; in midtone shades. 
     This invention offers an algorithm technique and is capable of implementation into standard PostScript-compatible printers, without the need for specialized halftone generation hardware. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIGS. 1a, 1c, 2a, 3a, 4a, 4c, 5a, and 5c show fundamental half-tone cells used in multicolor printing. 
     FIGS. 1b, 1d, 2b, 3b, 4b, 4d, 5b, and 5d show arrays of fundamental half-tone cells used in multicolor printing. 
     FIGS. 6a-c show dot patterns demonstrating the effect of the Ecc parameter. 
     FIGS. 7a-c show dot patterns having the same row and column patterns and Ecc parameter of FIG. 6, but having different dot shapes. 
     FIGS. 8a-b show dot patterns having the same row and column patterns of FIG. 6, but having different dot shapes. 
    
    
     DEFINITION OF TERMS 
     Pixel: An abbreviation for &#34;Picture-Element&#34;. A photographic image is continuous spatially and tonally. Once &#34;digitized&#34; the image is quantized tonally into discrete gray levels, and spatially into discrete &#34;pixels&#34;. A &#34;pixel&#34; is related only to the sampling of the original image, it does not necessarily have any fixed relationship to &#34;Dots&#34; or &#34;Spots&#34; or &#34;Points&#34; in a printer or display device. 
     Point: A mathematical construct. A &#34;point&#34; is simply a location in space (in a two-dimensional plane here since we are talking about images) described by a pair of coordinates. Printer &#34;resolution&#34; is typically specified in &#34;dpi&#34; (dots per inch), but this number is really just the addressability of the printer (i.e., the &#34;Points per inch&#34; in the x and y directions the printer can address). True printer resolution depends not only on its addressability, but on the size of printed dots placed at those addressable points in an image. 
     Spot: A &#34;point&#34; that has been turned &#34;on&#34; or &#34;imaged&#34; by printing a small black disk (typically) at the &#34;point&#34; coordinates on a page. A printer&#39;s addressability might be specified in &#34;spots per inch&#34;, but its true resolution is more properly given in &#34;resolvable spots per inch&#34; (which might be considerably less if the imaged &#34;spot&#34; size (diameter) is much greater that the addressability (distance to the next addressable &#34;point&#34;). 
     Dot: A &#34;Halftone Dot: made up of a multiplicity of &#34;points&#34; or &#34;spots&#34;. The &#34;dot&#34; is not a fixed size or number of spots/points but changes as a function of gray shade to be simulated. 
     Halftone Cell: An array of points that is used to control the geometric arrangement and relative numbers of &#34;on&#34; (&#34;black&#34;) and &#34;off&#34; (&#34;white&#34;) &#34;spots&#34; in a halftone image. A halftone cell can be thought of as a small, usually square matrix of threshold values that are compared to some local pixel shade to determine which &#34;spots&#34; within the &#34;cell&#34; are &#34;on&#34; and which are &#34;off&#34; for a particular shade representation. For a &#34;cell&#34; made up of n×n &#34;elements&#34; (or &#34;spots&#34; or &#34;Points&#34;), there will be n 2  +1 shades that may be represented (from &#34;black&#34;=all spots on, to &#34;white&#34;=all spots off, inclusive). 
     Glyph: A full halftone pattern would then consist of n 2  +1 bitmap representations of the cell with an individual representation called a &#34;glyph&#34;. The &#34;glyphs&#34; increase the speed of the halftoning process by precomputing the patterns of &#34;on&#34; and &#34;off&#34; spots within a &#34;cell&#34; for all possible shades. 
     Depending on the final scale of the halftone image and the number of pixels in its digitized representation, individual pixels may correspond to entire &#34;glyphs&#34; or multiple glyphs, or each glyph may be subdivided so that only a portion of an appropriate glyph for the local pixel shade is used in that region of the image bitmap. 
     In any case, the portions of subdivided glyphs, or combinations of multiple glyphs are arranged so that the underlying threshold values correspond to a uniform edge-to-edge tiling of the original halftone cell over the entire image area. 
     DETAILED DESCRIPTION OF THE INVENTION 
     A desired algorithm provides a means of simulating a continuous tone image containing a range of gray shades from black to white, or a color separation containing a range of densities of some appropriate colorant on a printing engine capable of only bilevel control of density at discrete points in a Cartesian grid that is typically addressed by scanning in a raster fashion. The heart of the process is a &#34;threshold equation&#34; that, given the coordinates of any addressable point on the page, calculates a threshold gray value that is compared to the desired local image value to determine whether that particular point should be &#34;on&#34; (by placing a full-density mark on the page at that location) or &#34;off&#34;. 
     The end result of this invention is an algorithm capable of generating patterns better suited to the nature of raster-scan devices, and flexible enough to allow optimizing the patterns for particular printers or specific images. While capable of reproducing halftone screens currently used in the art, this algorithm is not limited to patterns that rely on simple rotation of conventional screens. The algorithm of the present invention can be used in many various raster scanned or laser addressed imaging systems to improve image quality. The image information is first accessed, either from stored information or direct reading from a reader. The accessed information is then reviewed by the algorithm so that improved image pattern data is obtained. This improved image pattern data is then used to drive a printing engine, e.g., a laser printer, laser imager (for full color silver halide images as in U.S. Pat. No. 4,619,892), e-beam images, etc. Either developable (e.g., latent silver halide or latent electrostatic) images may be generated or actual direct visible images (leuco dye bleach, dye bleach, direct print out) may be created. 
     The invention is a process for automatically generating halftone dot images, or &#34;glyphs&#34;, which are particular arrangements of white and black spots in a square n×n array of bilevel spots, simulating various intermediate shades. Which pixels are &#34;on&#34; and which are &#34;off&#34; for a particular shade is determined by the function that assigns a &#34;threshold&#34; value based on spots x and y coordinates. 
     The particular threshold equation described here produces a final bilevel, halftone image made up of an array of &#34;dots&#34; (clusters of &#34;on&#34; or black points) of varying size as in a conventional halftone process, but with a unique and very flexible means of controlling the orientation and spacing of the &#34;rows&#34; and &#34;columns&#34; of dots making up the image. The great variety of halftone dot patterns that may be generated by this equation has particular application in color printing where the various halftone color separations are reproduced with a mixture of patterns in an effort to minimize moire effects and color changes due to registration errors in the printing process. 
     A practical implementation of this algorithm relies on a dot pattern defined within a fundamental halftone cell or &#34;family of glyphs&#34; which is a relatively small rectangular array of points addressable by a raster scan printing engine (e.g., a laser scanner, ink jet printer, thermal printer, or other printer or imaging device that forms an image by controlling the densities of discrete points in a Cartesian grid). The threshold equation is used to assign a gray value to each addressable point in the fundamental halftone cell and a full set of glyphs for a particular pattern is created by finding all the &#34;on&#34; points within the cell for varying levels of gray. 
     The threshold equation produces patterns that have multiple dots per cell arranged in &#34;rows&#34; and &#34;columns&#34; oriented and spaced to form a proper continuation of the pattern as a half-tone image is formed by tiling appropriate glyphs edge-to-edge. 
     A typical halftone fundamental cell will be a small square array of addressable points where the &#34;x&#34; and &#34;y&#34; coordinates of the points within the cell are scaled so that the cell itself extends from -1 to 1 in both the &#34;x&#34; and &#34;y&#34; directions. 
     The points within the fundamental cell are ranked to determine the order in which spots at those locations change from &#34;off&#34; to &#34;on&#34; as shade values vary from white to black according to their &#34;x&#34; and &#34;y&#34; coordinates through the threshold equation: 
     
         Threshold(x,y)=Comb(Row.sub.-- fn(A.sub.x *x+A.sub.y *y),Col.sub.-- fn(B.sub.x *x+B.sub.y *y)) 
    
     The &#34;Comb()&#34; function is some rule for combining the inner &#34;Row --  fn()&#34; and &#34;Col --  fn()&#34; functions such as summation, multiplication, or comparison (taking the maximum or minimum of the two). The &#34;Row --  fn()&#34; and &#34;Col --  fn()&#34; functions are periodic functions with period [-1,1] matching that of the fundamental halftone cell. The arguments to the &#34;Row --  fn()&#34; and &#34;Col --  fn()&#34; functions, (A x  *x+A y  *y) and (B x  *x+B y  *y), respectively, determine how the &#34;rows&#34; and &#34;columns&#34; of halftone dots are arranged within the cell. 
     The basic geometry of the &#34;Threshold (x, y)&#34; equation applied to raster points within the fundamental halftone cell is a sinusoidal modulation of threshold values along &#34;rows&#34; and &#34;columns&#34; that are defined in terms of their spatial frequency components in the x and y directions. For example, if the parameters Bx and By are both zero, there will be only a &#34;row-wise&#34; modulation of threshold values producing halftone patterns that shade by means of parallel lines of varying thickness. 
     The slope of the lines will be given by A x  /A y  with a path from x=-1 to x=1 (holding y=0) intersecting A x  halftone pattern lines, and a path from y=-1 to y=1 (holding x=0) intersecting A y  halftone pattern lines. In FIG. 1 below, the shade value is a 50% gray; half of the addressable points within the halftone cell are &#34;on&#34; (black) and half are &#34;off&#34; (white). In the fundamental halftone cell of 1a), A x  =2, A y  =1, B x  =0, B y  =0. In the fundamental halftone cell of 1c), A x  =3, A y  =2, B x  =0, B y  =0. 
     Similar patterns may be produced by setting A x  and A y  equal to zero, varying just B x  and B y  (patterns with only &#34;columns&#34;), or by keeping A x  =B x  and A y  =B y  (&#34;rows&#34; and &#34;columns&#34; coincident). 
     More interesting patterns are those that have intersecting &#34;rows&#34; and &#34;columns&#34; producing separated dots within the halftone cell. In this case, the number of dots per cell is given by: 
     
         dots per cell=|A.sub.x *B.sub.y -A.sub.y *B.sub.x | 
    
     For example, in FIGS. 2a and 2b, the fundamental halftone cell is A x  =3, A y  =1, B x  =1, B y  =-2. 
     The dots per cell for this example is 7 (6 &#34;inside&#34; the cell and one at the corners). The same equation holds for all cases though in the previous &#34;row-only&#34; or &#34;column-only&#34; line patterns the result will always be zero &#34;dots per cell&#34; as there are no separated &#34;dots&#34;. 
     The basic threshold equation is very flexible allowing completely new and unique dot patterns to be generated. It can also be used to simulate prior art halftone patterns by imposing certain restrictions on the relationships of the parameters A x , A y , B x , and B y . For example, the halftone screens described in U.S. Pat. No. 4,084,183 (approximating a traditional halftone screen where the rows and columns of dots have the same dot density, are perpendicular, but are rotated with respect to the Cartesian grid of addressable points by an angle with a rational tangent) may be produced by restricting A x  =B y  and A y  =-B x  (or equivalently, A x  =-B y  and A y  =B x ). This restriction forces the slope of the rows to be the negative reciprocal of the column slope (ensuring orthogonality), and results in the same dot density along the rows and along the columns, as in FIGS. 3a) and 3b): 
     In FIG. 3, the fundamental halftone cell is A x  =-2, A y  =1, B x  =1, B y  =2. 
     Two advantages this method has over that shown in U.S. Pat. No. 4,084,183 is that the fundamental halftone cell can be made larger (containing more addressable points, thus allowing more shades of gray to be simulated) while maintaining the same effective dot pitch or density since cells with multiple dots are produced, and the fact that the centers of gravity of neighboring dots do not necessarily have to be separated by integral numbers of &#34;rise&#34; and &#34;run&#34; addressable points (an added degree of freedom in these &#34;conventional&#34; patterns). 
     Another prior art class of halftone patterns is that described in U.S. Pat. No. 4,758,886. Here the emphasis is on mixtures of halftone patterns for color printing that are spatially decoupled through various combinations of spatial frequencies within the dot patterns rather than relying on the more traditional method of screens rotated at specific angles. Halftone patterns for various colors may be placed at the same angle (in particular 0° which is particularly well suited to raster scan devices), but with different dot spatial densities in the x and y directions to vary the dot overlap between colors and minimize sensitivity to color-to-color registration. These patterns may be produced by this threshold equation by setting A y  =0 and B x  =0 so that the rows and columns of dots are strictly horizontal (along the x axis) and vertical (along the y axis). 
     As shown in FIG. 4, the fundamental halftone cells of 4a) and 4b) are A x  =1, A y  =0, B x  =0, B y  =2 and A x  =3, A y  =0, B x  =0, B y  =2, respectively. 
     An alternate pattern described in U.S. Pat. No. 4,084,183 produces a familiar &#34;checkerboard&#34; dot arrangement, but with different frequencies in the x and y directions. These patterns are produced by restricting A x  =B x  and A y  =B y  (or equivalently, A x  =-B x  and A y  =B y ). Here in FIG. 5, the slope of the rows of dots is always the negative of the column slope. 
     In FIG. 5a the fundamental halftone cell is A x  =1, A y  =2, B x  =1, B y  =-2. 
     In FIG. 5c) the fundamental halftone cell is A x  =3, A y  =2, B x  =3, B y  =-2. 
     The glyph tiling process that generates a full halftone image need not necessarily assign a complete glyph (full fundamental halftone cell) to each pixel (discrete sample of a continuous tone image). Depending on the resolution (number of discrete pixel samples) of the continuous tone image, the mapping of halftone glyphs to the final bilevel image may require multiple glyphs per pixel, or if enough continuous tone image pixels are available, the glyphs themselves may be subdivided for a multiple pixel per glyph mapping. 
     A typical halftone fundamental cell will be a small square array of addressable points where the x and y coordinates of the points within the cell are scaled so that the cell itself extends from -1 to 1 in both the x and y directions. The points within the fundamental cell are ranked to determine the order in which spots at those locations change from &#34;off&#34; to &#34;on&#34; as shade values vary from white to black according to their &#34;x&#34; and &#34;y&#34; coordinates through the threshold equation: 
     
         Threshold(x,y)=Comb(Row.sub.-- fn(A.sub.x *x+A.sub.y *y),Col.sub.-- fn(B.sub.x *x+B.sub.y *y)) 
    
     The &#34;Comb()&#34; function is some rule for combining the inner &#34;Row --  fn()&#34; and &#34;Col --  fn()&#34; functions such as summation, multiplication, or comparison (taking the maximum or minimum of the two). The &#34;Row --  fn()&#34; and &#34;Col --  fn()&#34; functions are periodic functions with period [-1,1] matching that of the fundamental halftone cell. The arguments to the &#34;Row --  fn()&#34; and &#34;Col --  fn()&#34; functions, (A x  *x+A y  *y) and (B x  *x+B y  *y), respectively, determine how the &#34;rows&#34; and &#34;columns&#34; of halftone dots are arranged within the cell. An example threshold function using the well-known cosine function is: 
     
         Threshold(x,y)=Ecc*cos (π*(A.sub.x *x+A.sub.y *y))+cos (π*(B.sub.x *x+B.sub.y *y)) 
    
     where the arguments to the cosine functions have been scaled by π to make the function&#39;s period match the [-1,1] cell size. 
     The &#34;A x  &#34; and &#34;A y  &#34; parameters determine the &#34;x&#34; and &#34;y&#34; spatial frequency components (respectively) of the &#34;rows&#34; of halftone dots, and the &#34;B x  &#34; and &#34;B y  &#34; parameters determine the &#34;x&#34; and &#34;y&#34; spatial frequency components (respectively) of the &#34;columns&#34; of halftone dots (spatial frequencies here being given in terms of &#34;cycles per cell&#34;). 
     The combining function in this case is simple summation with the &#34;Ecc&#34; scale factor determining the influence of the &#34;Row --  fn()&#34; contribution relative to the &#34;Col --  fn()&#34;. &#34;Ecc&#34; is normally equal to 1.0, but if set to a value slightly greater or less that 1.0, the dot shapes will be distorted, causing a &#34;linking&#34; or &#34;chaining&#34; of the dots along the &#34;row&#34; or &#34;column&#34; direction for midtone shades, minimizing the &#34;optical jump&#34; that is sometimes seen as an abrupt change in density at the 50% dot where the transition from separated &#34;dots&#34; to separated &#34;holes&#34; occurs. 
     The threshold equation requires a periodic function similar to the well known cosine function, but with a fundamental period from -1 to 1 (matching the range of coordinates within the fundamental halftone cell). 
     The cosine function itself with a period of 2π (which can be taken as the interval [-π, π]) could be used if its arguments are scaled by a multiplication by π, but a preferred implementation uses a simple quadratic function, &#34;para(x)&#34; which approximates the cisine function and has a natural fundamental period in the interval [-1, 1]. This is much easier to calculate in practice and can be defined as a splicing of simple parabolic sections as: ##EQU1## 
     Once the periodic &#34;para(x)&#34; function has been defined, the threshold equation can be given by: 
     
         Threshold(x,y)=Ecc*para(A.sub.x *x+A.sub.y *y)+para(B.sub.x *x+B.sub.y *y) 
    
     The parameter &#34;Ecc&#34; controls the eccentricity of dots (&#34;Ecc&#34; not equal to 1.0 generates elliptical dots), the parameters A x  and A y  control the slope (given by A x  /A y  since the &#34;A&#34; and &#34;B&#34; parameters are in units of reciprocal length [&#34;cycles per cell&#34;]) and spacing of &#34;rows&#34; of dots (there will be A x  &#34;rows&#34; of dots in the x interval [-1,1], and A y  &#34;rows&#34; of dots in the y interval [-1,1]), and the parameters B x  and B y  similarly control the slope and spacing of &#34;columns&#34; of dots. The &#34;Ecc&#34; parameter is a real number (usually close to 1.0), but the parameters A x , A y , B x  and B y  must be integers for proper matching of the dot patterns from glyph to glyph. This restricts the effective angles of the &#34;rows&#34; and &#34;columns&#34; to those with rational tangents, but they need not bear any special relationship to the actual number of addressable points within the fundamental halftone cell. More importantly, the &#34;rows&#34; and &#34;columns&#34; need not be perpendicular to one another and they need not have the same spatial frequency. 
     The Threshold Equation for Modifying the Dot Shape 
     
         Threshold(x,y)=Ecc*para(A.sub.x *x+A.sub.y *y)+para(B.sub.x *x+B.sub.y *y) 
    
     with the &#34;Ecc&#34; parameter set equal to 1.0 produces halftone patterns where the dots progress from small circular or elliptical disks (depending on the relative x and y spatial frequency components) in the highlight shades to parallelograms with all four vertices touching neighboring dots at the 50% gray midtone to small circular or elliptical holes in the dark shadow tones. Changing &#34;Ecc&#34; to values different from 1.0 will slightly distort the dot shapes causing the midtone dots to join or chain in the &#34;row&#34; (if Ecc&gt;1.0) or &#34;column&#34; (if Ecc&lt;1.0) direction. The following examples in FIG. 6 all use the same pattern parameters: 
     
         A.sub.x =3,A.sub.y =1,B.sub.x =1,B.sub.y =-2. 
    
     In 6a) Ecc is 1.0, in 6b) Ecc is 1.25, and in 6c) Ecc is 0.75. 
     Another way to modify the dot shape is to replace the &#34;para(x)&#34; function in the threshold equation by another periodic function. The &#34;tri(x)&#34; function defined below produces dots that maintain a parallelogram shape from bright highlight to dark shadow tones and still exhibit the &#34;Ecc&#34; controlled distortion that allows chaining along rows or columns. ##EQU2## 
     Redefining the threshold function as: 
     
         Threshold(x,y)=Ecc*tri(A.sub.x *x+A.sub.y *y)+tri(B.sub.x *x+B.sub.y *y) 
    
     the previous dot patterns become those of FIG. 7a), b) and c), with corresponding value of Ecc is 6a) and 7a), 6b) and 7b), and 6c) and 7c). 
     Yet another method to change the shapes of halftone dots is to modify the threshold equation so that instead of taking the sum of the &#34;row&#34; and &#34;column&#34; &#34;tri(x)&#34; functions we compare the two terms and take their maximum or minimum. This leads to dot patterns that have a intaglio-like appearance where the parallelogram shaped dots do not join at their vertices in the midtones, but are oriented so that they are separated by parallel lines of varying thickness. 
     Redefining the threshold equation as 
     
         Threshold(x,y)=Maximum(tri(A.sub.x *x+A.sub.y *y),tri(B.sub.x *x+B.sub.y *y)) 
    
     with the same A x , A y , B x , and B y , parameters as before produces the patterns of FIG. 8a): 
     Or, by taking Threshold(x,y)=Minimum(tri(A x  *x+A y  *y), tri(B x  *x+B y  *y)) we obtain the pattern of FIG. 8b): 
     PostScript™ is an accepted industry standard page description language capable of integrating text, line art, and (continuous tone, sampled) images in a single document. Depending on the characteristics of the particular printer, continuous tone image data is typically converted to a halftone representation for hardcopy output. The PostScript™ halftone mechanism is flexible enough to allow this halftone pattern generation algorithm to be implemented in a standard PostScript™ printer (e.g., the Apple LaserWriter, Linotype Linotronic Lasersetter, etc.) without hardware modifications. Through appropriate choice of the parameters A x , A y , B x , and B y , the printed output of halftone images can be greatly improved, particularly in the case of color images. 
     
         ______________________________________                                    
The &#34;para(x)&#34; and &#34;tri(x)&#34; functions can be defined in PostScript         
by /para{                                                                 
0.007 add abs 2 div dup truncate sub 2 mul 1 exch sub abs                 
dup 0.5 lt { dup mul 0.25 sub }                                           
{ 1 sub dup mul 0.25 exch sub } ifelse                                    
} def                                                                     
/tri{                                                                     
0.007 add abs 2 div dup truncate sub 2 mul 1 exch sub abs                 
0.5 mul 0.25 sub                                                          
} def                                                                     
______________________________________                                    
 
    
     These functions expect the argument &#34;x&#34; to be the top element on the operand stack and return the appropriate function value, &#34;para(x)&#34; or &#34;tri(x)&#34;, in its place. 
     Note that in both cases an additive offset (0.007 in these examples, but could be any small number) is used to remove the absolute symmetry of the functions. Since the halftone patterns produced have multiple dots per cell, the slight asymmetry helps avoid redundant threshold values and promotes more homogeneous growth among the dots in a halftone cell. 
     The PostScript halftone cell is defined as having its center at the origin of an x,y coordinate system with corners at ±1 in x and y. Since the cell dimensions match the periodicity of the &#34;para(x)&#34; and &#34;tri(x)&#34; functions, these offsets will not otherwise affect the final halftone pattern appearance. 
     
         ______________________________________                                    
The original function &#34;Threshold (x,y)&#34; is defined in PostScript by       
/threshold{                                                               
2 copy mul 0 lt {0.001}{-0.001} ifelse 3 1 roll                           
0.003 add exch 2 copy Ax mul exch Ay mul add para Ecc mul                 
3 1 roll Bx mul exch By mul add para add                                  
} def                                                                     
______________________________________                                    
 
    
     The &#34;threshold&#34; function expects the x and y arguments to be the top two elements on the operand stack (which are removed in the calculation) and returns a single threshold value as the top element. An additive offset of 0.001 is added to or subtracted from the threshold value computed depending on whether the original x and y arguments represented a point in an even or odd quadrant of the coordinate plane and an additional additive offset of 0.003 is applied to the y argument only (again, to intentionally reduce symmetry and promote more homogeneous dots within the multiple dot per cell pattern). The &#34;para&#34; function in the above example is simply replaced by &#34;tri&#34; to alter the dot shape as described earlier. The parameters Ax, Ay, Bx, By, and Ecc are PostScript variables which are set to the desired values by (for example): 
     
         /Ax3def/Ay1def/Bx1def/By-2def/Ecc1.0def 
    
     One other parameter must be set and that is the &#34;pitch&#34; of the fundamental halftone cell (cells per linear inch in the printer device space). The effective halftone pattern pitch, since this algorithm produces patterns with multiple dots per cell, will be the product of this &#34;cell pitch&#34; with the square root of the number of dots per cell (given by |Ax*By-Ay*Bx|). The dots per cell for the above example parameter values is seven. If the cell pitch is set to 30 per inch (for example) with 
     
         /pitch30def 
    
     the effective halftone pitch will be 30*√7≈79.3725. After setting the parameters to their desired value, a halftone screen is &#34;set&#34; with the PostScript statement: 
     
         pitch0{threshold}setscreen 
    
     The second parameter &#34;0&#34; refers to the rotation angle of the fundamental halftone cell. Since the orientations of the rows and columns of dots are specified within the fundamental halftone cell, no rotation of the cell itself is required. 
     The intaglio-like dot patterns (where the parallelogram shaped dots do not join at their vertices in the midtones, but are separated by parallel lines of varying thickness) may be produced by modifying the threshold function to take the maximum of the row and column &#34;tri(x)&#34; functions: 
     
         ______________________________________                                    
/threshold {                                                              
2 copy mul 0 lt {0.001}{-0.001} ifelse 3 1 roll                           
0.003 add exch 2 copy Ax mul exch Ay mul add tri                          
3 1 roll Bx mul  exch By mul add tri                                      
2 copy lt {pop}{exch pop} ifelse add                                      
} def                                                                     
______________________________________                                    
 
    
     Since the dots do not join at their vertices at middle gray shades for these patterns, there is no need for the eccentricity parameter &#34;Ecc&#34;. The above threshold function produces patterns with &#34;black&#34; (&#34;on&#34;) dots separated by &#34;white&#34; (&#34;off&#34;) lines. The reverse effect (white dots separated by black lines) can be produced by taking the minimum rather than the maximum of the row and column &#34;tri(x)&#34; functions: 
     
         ______________________________________                                    
/threshold {                                                              
2 copy mul 0 lt {0.001}{-0.001} ifelse 3 1 roll                           
0.003 add exch 2 copy Ax mul exch Ay mul add tri                          
3 1 roll Bx mul exch By mul add tri                                       
2 copy gt {pop}{exch pop} ifelse add                                      
} def                                                                     
______________________________________                                    
 
    
     The only change here being a final &#34;greater than&#34; (&#34;gt&#34;) test rather than &#34;less than&#34; (&#34;lt&#34;). 
     In all cases, if a fixed pattern is desired (i.e., for monochrome printing where only one halftone pattern is required), the variables Ax, Ay, etc. in the threshold function definitions may be replaced by literal numeric constants. 
     The Best Experimental Mode 
     The use within a Matchprint™ proof made from separation negatives exposed on a Linotype Linotronic 300 R Lasersetter at a resolution of 2540 dpi. The cell pitch for all colors was 2540/48=52.9167 (48×48 pixel halftone cell) with a &#34;cell angle&#34; of 0°. 
     The black separation used A x  =2, A y  =2, B x  =2, B y  =-2 (a basic 45° pattern). The dots per cell (from |A x  B y  -A y  B x  |) is 8 giving an effective pitch of 52.9167·√8≠149.67 (close to a standard 150 line screen). 
     The cyan separation used A x  =1, A y  =3, B x  =-3, B y  =-1 (a &#34;skewed&#34; pattern with non-perpendicular &#34;rows&#34; and &#34;columns&#34; of dots. SEE top halftone pattern on PAGE 9 of DIAC RI 24.) The dots per cell is 8 giving the same effective pitch of about 149.67. 
     The magenta pattern is the mirror image of the cyan with A x  =-1, A y  =3, B x  =3, B y  =-1. Again dots/cell=8 with the same 149.67 effective pitch. 
     The yellow pattern used A x  =0, A y  =3, B x  =3, B y  =0 (a basic 0° pattern). The dots per cell in this case is 9 giving a slightly different effective pitch of 52.9167·√9=158.75 (but the appearance of the color texture or rosette is primarily determined by the more visible black, cyan, and magenta dot patterns). 
     The image produced from this data exhibits an unconventional rosette, but its appearance is not objectionable and the overall 45° texture orientation helps reduce its visibility. An added feature of these patterns is a reduced sensitivity to registration errors among the various separations (a fundamental claim in the cited U.S. Pat. No. 4,758,886). 
     The primary advantage of this halftone pattern generation algorithm is the ability to independently specify the orientation of and dot frequencies along &#34;rows&#34; and &#34;columns&#34; of halftone dots within a simple, non-rotated square cell of addressable raster points. The algorithm does not require the number of dots to be related to the size (in addressable raster points) of the fundamental cell. While patterns based on relatively small cells may appear less noisy if the dot frequency bears some specific harmonic relationship to the addressable points per cell, patterns with many points per dot can be generated without restrictions. This flexibility allows selection of halftone screens for color printing to be made from a much broader range of patterns. Screens may be chosen to optimize performance with specific hardware as well as improve characteristics such as insensitivity to color-to-color registration errors. 
     The fact that the patterns are defined within a square, non-rotated fundamental cell can greatly simplify the hardware required to implement the algorithm in a halftone RIP (Raster Image Processor). 
     The fact that the patterns have multiple dots per cell is an advantage when printing a large range of gray shades on a relatively low resolution printer. For example: setting A x  =2, A y  =2, B x  =2, and B y  =-2 with a cell pitch of 30/inch will produce the same effective dot density as a pattern using A x  =1, A y  =1, B x  =1, and B y  =-1 with a cell pitch of 60/inch, but with four times as many shades since this depends on the number of addressable points in the fundamental halftone cell which has four times the area when the cell pitch is halved. The penalty for this added dynamic range is a small increase in noise (since all the dots within the cell cannot be identical for all shades of gray). The offsets used in the examples of a PostScript implementation of the algorithm are important in intentionally reducing the symmetry of the threshold matrix, introducing a dither mechanism among the dots in a cell to promote their homogeneous growth. 
     The fact that the algorithm is easily implemented on unmodified PostScript printers gives it immediate application in improving the output from a large number of existing printers.