Method and apparatus for halftoning of images

Abstract: Internal moire artifacts found in digital halftoning of photographic images are diffused by rearranging the order of grayscale levels in an original screen pattern cell to generate a new screen pattern cell having a different grayscale order of stored screen pattern pixels. The grayscale order of the original cell is modified by the addition of a bump function (216) at each point in the original cell (206) in order of grayscale (212). The new grayscale order is stored (214) in the new cell. Adding the bump function (216) at the chosen point in the original cell (206) influences the choice of the next pixel in the grayscale so that the grayscale order in the new cell is, in general, somewhat different from the grayscale order in the original cell. Errors caused by internal moire effects are thus both diffused in the grayscale dimension, and also diffused isotropically in the spatial dimension. The effect of rearranging the order of the grayscale levels in the screen pattern cell is to diffuse the internal moire artifacts in the final halftone to nearby pixels, thereby rendering the internal moire artifacts less noticeable.

Description: The present invention is concerned with the field of image processing, such as the halftoning of photographic images, and more particularly, the present invention relates to a method and apparatus for generating a halftone screened image from an original. In the processing of images by means of digital techniques, images are typically stored in a memory by representing tone values for each pixel of the original image. For a black and white image, the stored pixels represent the grayscale value corresponding to each pixel. For a color image, each color plane is stored as an array of pixels each representing the tone value for each pixel of the image in each respective color plane. For example, if each of the pixels of a black and white image is represented by an 8 bit digital word, then the tone value for a given image pixel may be one of 256 values between the black level and the white level. Continuous tone images do not print well on most printing devices where typically the absence or presence of the ink on the paper is used to represent the printed image. In order to represent halftones (shades between the presence or absence of the printed ink), the original image is screened to produce a pattern, such as a variable size dots which appear to the human eye as a halftone image. To prepare a photograph for printing, it is first necessary to perform the step of halftone screening, which converts the continuous gray shades of the original into dots of varying size and shape. Typically, these dots are arranged on a regular grid of approximately 100 dots per inch. This spatial frequency is known as the screen ruling. Thus, one square inch of the final printed photograph will be composed of approximately 10,000 dots. Screening to produce halftone images is well known. The screen consists of an array of dots, or halftone cells, each of which represents one section of continuous tone in the original image as a single dot of variable size and shape. A halftone cell, in turn, consists of an array of smaller screen pixels, or samples, each having individual values against which the input pixels derived from the original image will be compared. The individual values of the smaller screen pixels, or samples, of the repeating halftone cell which form the variable dots is referred to herein as a spot function. The halftone screening step consists of a screen pattern generating step, and a comparison step between the input image and the screen pattern. The screen is usually stored as a fairly small pattern that repeats itself or is repeatedly generated by programming. At any point where the original image is greater than the screen pattern, the output is marked. At any point where the image is not greater than the screen pattern, the output is not marked. In other words, if the value of the image pixel is greater than corresponding value of the screen cell, a mark is generated by the marking engine, whereas if the value of the image pixel is less or equal to the screen cell value, then no mark is generated by the marking engine, or vice versa. In this way, the final screened image, composed of dots, is produced. In color printing, there are four separate steps of halftone screening, one each for the cyan, magenta, yellow, and black inks. Much prior art work has been devoted to producing screens which will produce good results and avoid artifacts in the final image. One such artifact to be avoided is the moire pattern which results from the interaction between the original image and the screen pattern. To counteract the tendency for moire patterns to result, color screens are angled at 0 (yellow), 15 (cyan), 75 (magenta) and 45 degrees (black). If these angles are adhered to precisely, as well as the screen ruling being precisely identical for all four planes, then optimum results (minimum moire) are achieved. Screening at these angles presents no special problem in photomechanical screening systems (achieved by simply rotating the photographic screen carrier). In digital screening devices and digital raster scan imaging devices there is some difficulty reproducing irrational numbers, such as the tangent 15 or tangent 75 degrees. Rational numbers can be represented as the ratio of two integers; irrational numbers are endless non-repeating decimals. Both rational tangent and irrational tangent digital screening systems are known. In particular, many screening methods make use of a screen pattern cell, which can be a one dimensional strip, a band, or any two dimensional area, such as a square, that contains a section of the final screen. The screening method will repeatedly generate the screen pattern cell, resulting in a final screen of the desired ruling and angle. The critical step in halftone screening is the generation of the screen pattern cell which will be repeated to form the final screen covering the entire input image area. Examples of prior art techniques include rational tangent (US-A-4, 149,194 to Holladay), rational supercell (EP-A-0 427 380 - Schiller) irrational tangent (US-A-4,499,489 to Gall et al, and US-A-4,350,996 to Rosenfeld). In addition, three alternative screening techniques are described in EP-A 0 531 129 published 10/03/93 and EP-A-0 540 169 published 05/05/93. As indicated, objectionable moire patterns result from the interaction of the original image and the screen, which could be called external moire. However, in digital raster scan screening systems, there is another source of artifacts, which could be termed internal moire, which results from the interaction between the screen and the finite resolution of the output image forming device. Internal moire occurs only in digital raster scan screening systems, whereas external moire occurs in all screening systems, including photomechanical. Internal moire artifacts are particularly objectionable when using fine screen rulings, low output resolutions, or a combination of both. As a result, it is typical to use a 3500 dot per inch (dpi) output resolution to minimize internal moire artifacts and obtain a quality image. However, a 3500 dpi printer system has both cost and speed disadvantages as compared to a 1270 dpi printer. The present invention has particular application to reducing internal moire artifacts, thereby permitting a faster, less expensive digital screening system to produce high quality halftone images. A first screen pattern cell is created by any suitable prior art technique. Whatever first screen pattern cell is chosen, it will contain screen pattern pixel values arranged in some first grayscale order between lightest to darkest. That is, one screen pixel will be the lightest pixel in the cell, another pixel will be the second lightest, and so on. It is possible that two pixels will be exactly the same gray shade, but because pixels in the cell are calculated with trigonometric functions (for angled irrational screens) and 24 bit arithmetic for example, it would be the exception rather than the rule for two pixels to have equal gray shade values. If, by some rare chance two pixels do have the same gray shade, then the first one encountered is assigned the next place in the grayscale order. Then, in accordance with the teachings of the present invention, a second screen pattern cell is created from the first screen pattern cell by rearranging the order of grayscale levels of said stored first screen pattern pixels of said stored first screen pattern cell to generate the second screen pattern cell having a second grayscale order of stored screen pattern pixels. The effect of rearranging the order of the grayscale levels in the screen pattern cell is to diffuse the internal moire artifacts in the final halftone to nearby pixels, thereby rendering the internal moire less noticeable. Also, since errors are diffused in the grayscale dimension (rather than along the raster scan spatial dimension), spatial artifacts are diffused equally in all directions, i.e. isotropically. It has been previously proposed to take measures to reduce moire effects. British patent specification GB-A-2,169,171 discloses a method and apparatus for generating a halftone screened image from an original image, in which method and apparatus the generation of a screen for halftone screening an original image includes digitally-generating an initial screen pattern cell of a prescribed height and width comprising an array of pixels having respective grayscale values, and modifying said initial screen pattern cell for reducing moire effects, and using said modified screen pattern cell for the generation of a screen for the halftone screening of said original image. In this specification, the modifying of the initial screen pattern is done by a spatial modification of halftone dot areas or compartments of dot areas whose shape is changed. The spatial modification is achieved by introducing a random element into screen coordinate values. In contrast to this prior proposal, the present invention is directed to modifying grayscale values as already indicated above. According to the invention the method set forth in the preceding paragraph is characterised in that: the modification of said initial screen pattern cell includes the steps of:- storing said array of pixels of said initial screen pattern cell, each pixel having a grayscale value; applying a predetermined function to successive pixels selected in sequence according to their respective grayscale values, said function altering the grayscale value of each selected pixel and adjacent pixels to provide an array of pixels in which the distribution of grayscale values in the pixels of the array is modified as compared to the distribution in the array of the initial screen pattern cell and diffuses internal moire artifacts; and providing said modified screen pattern cell as an array of pixels having said modified distribution of grayscale values. The invention also provides apparatus according to Claim 17. In the embodiments of the invention to be described later, the predetermined function diffuses spatial artifacts isotropically. The pixels of the modified screen pattern cell are assigned grayscale values according to the second order and this assignment may be used to achieve a normalized distribution of grayscale values. The function applied in the described embodiments is a bump function, more particularly a Gaussian-shaped distribution function. It is expressed in terms of grayscale value and is applied to the initial screen pattern cell by addition to each of the selected pixels and its adjacent pixels. As will be explained, the selection of the next pixel in sequence after an application of the bump function is done on the grayscale value order of the pixels of the initial screen pattern cell as altered by the previous application of the bump function, this selection excluding previously selected pixels. The procedure is continued for all pixels in the array forming the initial screen pattern cell. In practice, the selection of pixels is in the order of ascending grayscale value, that is starting from the lightest. To effect a rearranging of the grayscale levels in the initial screen pattern cell, the following process may be carried out: 1. A reference cell is initially set equal to the original old screen pattern cell. A separate new cell is reset to an initial state. 2. The location of the lightest screen pattern pixel (i.e. white) in the reference cell is identified, and the corresponding pixel in the new cell is marked as the first gray shade in the new cell. 3. A bump function, such as a Gaussian bell-shaped curve, is added to the chosen pixel in the reference cell, which has the effect of increasing (darkening) the chosen pixel and the nearby pixels. Typically the bump function covers several halftone dots. 4. The next darker screen pattern pixel in the reference cell is identified, and the corresponding pixel in the new cell is marked as the second gray shade in the new cell. 5. The bump function is again added to the reference cell at the newly chosen pixel. 6. The next darker screen pattern pixel in the reference cell in identified, and so on until all the pixels have been identified in grayscale order from the lightest to the darkest. 7. The reference cell is discarded and the new cell used to screen the input image. Adding the bump function at the chosen point in the reference cell influences the choice of the next pixel so that the grayscale order in the new cell is, in general, somewhat different from the grayscale order in the old cell. The grayscale order in the reference cell, on the other hand, remains the same after the bump function has been added to all pixels in the cell. Because the new cell is assigned values in uniform grayscale increments, the new cell has a normalized distribution of grayscale values, even if the old cell was not normalized. The present invention can be used with screen pattern cells produced by a variety of different screening techniques, including rational supercells (Schiller), irrational cells (Gall et al), and alternative screen pattern cells. It is expected that the present invention will be applicable to other screening techniques as well. The preferred practice of the invention, already outlined above, will be more fully described with reference to the accompanying drawings, in which: Figure 1 is a block diagram of a system for halftone screening of images using internal moire error diffusion in accordance with the present invention; Figure 2 is a flow chart illustrating the method for generating a new screen pattern cell from a prior art screen pattern cell in accordance with the present invention; Figure 3a illustrates a gray shade halftone equivalent to the second incremental gray shade; Figure 3b shows the screen pattern cell, in this case a rational supercell, processed in accordance with the present invention, and used to make the halftone of Figure 3a. ; Figure 4a shows a section of a screen, for use with a rational supercell, in which a bump function is superimposed and centered upon each chosen pixel in the cell in accordance with the preferred practice of the present invention; Figure 4b illustrates a screen pattern cell, and the manner in which a bump function is added to the cell in accordance with the preferred practice of the present invention; Figure 5 illustrates the bump function as a three dimensional plot, used in conjunction with the present invention; Figure 6 shows a flowchart detailing an embodiment of the present invention as a software program running on a general purpose computer; Figure 7 shows a three dimensional plot of a halftone screen containing several halftone dots, which may be used in conjunction with the present invention; and Figure 8 shows a section of a screen, for use with a plurality of strips of an ideal irrational angled screen. The artifacts produced by- internal moire, and the manner in which the present invention is implemented to diffuse such artifacts, may be understood by considering a simple case where a section of the input image is a solid shade of gray. Internal moire can be seen most clearly when the original image contains little or no fine detail, for example smooth gradations and solid blocks of tone. Internal moire also appears in images with much detail, but is not as clearly visible, because it is masked by the image detail (and perhaps external moire as well). Assume that the original image is a constant 20% of grayscale, and one counts the number of pixels that are marked in every dot appearing in the final halftone. Ideally, for a uniform shade of gray, the number of pixels marked in each dot should be equal. If the output resolution is 1270 dpi, and the screen ruling is 133 lines per inch, each dot would ideally be 18.24 darkened pixels. In a digitally produced halftone, however, the dots in the final halftone can consist only of an integral number of pixels. Using a prior art screen pattern cell, with the original grayscale order of stored screen pattern pixels, the final halftone will have dots with 16, 17, 18, 19, and 20 pixels. Further, the varying dot sizes will tend to cluster in well defined regions, making the variation more objectionable to the eye. Using the screen pattern cell now proposed in accordance with the present invention, the final halftone will have dots almost entirely of 18 and 19 pixels, resulting in a higher quality halftone. In addition, the pattern of 19 pixel dots versus 18 pixel dots will be dispersed or diffused. Specifically, most 19 pixel dots will be surrounded by 18 pixel dots, to the greatest extent possible. Large clusters of 18 pixel dots or clusters of 19 pixel dots will not be present in the final halftone. As indicated, starting with grayscale order in the original prior art cell, the bump function is added to each successive pixel thereby darkening the nearby pixels in the pattern. The bump function has a center maximum with decreasing values at all distances from the center. Therefore, it is most likely that the next chosen pixel (next in order of grayscale) will not be near, i.e. will be some distance away from the present chosen pixel. As a result, each halftone cell (dot) in the screen pattern cell is chosen in succession, causing an even distribution of pixels as the dots in the screen pattern cell grow in size along the grayscale from lightest to darkest. The grayscale values in the new cell can thus be characterized by the fact that small grayscale increments are distant, i.e. spatially separated. In prior art cells, small grayscale increments have an equal chance of being near or distant. Counting the number of darkened pixels in each dot is not meaningful when the dots are not individually distinguishable, for example, exactly at the 50% gray with a conventional square dot shape, or with gray values between 40% and 60% using an elliptical shape, or with any gray value in a straight line screen. The preferred method of the present invention, however, because it is based on a novel isotropic error diffusion technique, will produce halftones of greatly increased quality under all conditions. Internal moire can also be understood in terms of sampling theory. In a typical prior art halftone, each pixel is the result of a comparison between the original image and the spot function. One comparison occurs for each output pixel. The final halftone image can be regarded as a sampling of an ideal halftone at which the comparisons are performed at all points in the image plane, i.e. infinite resolution. The sampling frequency is equivalent to the spatial resolution of the output device. Prior art photomechanical systems do not have a similar problem because the spatial resolution of the output device is equivalent to the much finer resolution of the film grain. According to sampling theory, only spatial frequencies up to the Nyquist frequency, which is half the sampling frequency, are accurately encoded in the sampled image (i.e. the actual halftone presented to the output device). All spatial frequencies contained in the ideal halftone that fall above the Nyquist frequency are aliased, which is to say that they appear in the final halftone as artifacts. The spatial frequencies of these unwanted artifacts are always below the Nyquist frequency. In most signal processing applications, such as audio, it is possible to remove the aliasing by using a low-pass filter. In halftone screening, however, low-pass filtering is not practical, because the halftone pixels are constrained to be either on or off, not shades in between. At any given point in the preferred implementation of the present invention, the reference cell contains the sum of the old cell and a lowpass filtered version of the error arising from previous pixel choices. The lowpass filtered version of the error is substantially the same as the artifacts in the corresponding final halftone. Suppose, for example, that the choices of pixels so far have led to an area in the final halftone which is slightly darker than the average. The lowpass filtered error will thus be greater in that area than in other areas. Since the addition of the bump function darkens the area around the present pixel, the next pixel chosen will be in an area other than the overly dark area. Thus, successive pixel choices will counteract the error from previous pixel choices. As a result of this error diffusion process, substantial artifacts are not allowed to form. The spatial frequency content of the ideal halftone is qualitatively similar to that of a square wave or pulse wave. Quantitatively, the artifact level in the final halftone is proportional to the reciprocal of the square of the screening ratio. The screening ratio is the output resolution divided by the screen ruling. For example, if the output resolution is 1270 dpi, and the screen ruling is 133 lines per inch, then the screening ratio is 9.549, and the internal moire artifacts are about ±0.011 of the entire tone range. A system for making a halftone is shown in figure 1 where a spot function 102 is used to create an "old" cell 104, which is used in turn as the input to an internal moire diffusion process 106. The result of the internal moire process 106 is new cell 108, which in turn is used by screen generation process 110 to produce screen pattern 112. Original image 114 is compared against screen pattern 112 by comparator 116, producing final halftone 118. Final halftone 118 is conveyed to marking engine 120, which records the final halftone as an image on film or paper or some other imaging carrier. A flow chart illustrating the process for generating a new cell from an old cell is shown in figure 2. First, the desired screen ruling and angle are input in step 202. Then, the screening parameters are determined in step 204. The nature of screening parameters depends on the screening technique used. For example, in rational supercell screening (EP-A-0 0 427 380 - Schiller), the screening parameters include the width and height of the cell, as well as the horizontal. shift of each successive row of cells. In EP-A-0 531 129 published 10/03/93, the screening parameters include the width and height of the cell, as well as the jt, ut, and vt tables used for error vector calculations. A different screen pattern cell would be created for each combination of screen ruling and angle. Thereafter, the prior art screen pattern cell is created in step 206 as the old cell using a suitable spot function, and provided to an internal moire diffusion process, to create a new cell. To create a new cell, the lightest pixel in the old cell is identified in step 212. The incremental grayscale value is stored in the corresponding pixel in the new cell. A bump function is then added to the reference cell at the chosen (lightest) pixel. The process continues sequencing up the grayscale excluding previously chosen pixels, until all pixels in the old screen pattern cell have been processed at step 220. Steps 212, 214, 216 and 218 for creating the new cell from the old cell are further detailed in figure 6. Figures 3a and 3b illustrates the use of the present invention in a rational supercell, i.e. a screen pattern cell containing a section of a final screen with a plurality of whole or fractional halftone dots at a prescribed angle and screen ruling, and repeated with rows offset to tile a complete halftone screen. For rational tangent angles, the halftone dots in the screen pattern substantially match up to form a continuous halftone dot pattern. Halftone 302 is a solid shade of gray consisting of consisting of the repetition of a halftone cell with two black pixels 306 and 308, which shade corresponds the second increment along the grayscale. Figure 3b shows the screen pattern cell 304 (which is, in this case, a 24 x 8 cell of 192 pixels) used to generate halftone 302. The lightest pixel, 0, corresponds to pixel 306 in the halftone. The next lightest pixel, 1, corresponds to the pixel 308 in the halftone. The screen pattern cell 304 in figure 3b illustrates a typical order of grayscale resulting from the use of the present invention. After pixel 1, it is noted that the next pixel 2 (next along the grayscale) is near (near in the spatial dimension) to pixel 0, while next pixel 3 is near to pixel 1. Similarly, next pixel 4 is near to pixel 0. The alternation of pixels in grayscale order between the halftone dots centered at pixels 306 and 308 results in more uniform dot formation as the input shade varies along the grayscale. The darkest pixel 191 and next darkest pixel 190 are also uniformly placed in the spatial dimension. The order in which pixels are chosen in the new cell is equivalent to the order in which pixels are darkened in the final halftone as the input image goes from lightest to darkest. The exact order of the choices of pixels determines the dot shapes of the various shades of gray, as well as the presence or absence of artifacts. Error diffusion The error diffusion step used in the practice of the present invention consists of adding a bump function, centered upon the chosen pixel, to the reference cell. The bump function is typically represented as a 61 x 61 square matrix. Figure 4a shows that a square area 404 where the bump function will be added is centered on pixel 406 in the halftone cell 402. If the square area 404, positioned so that its center coincides with the chosen pixel 406, were to fall entirely within the cell, then it could be added to the cell unambiguously. However, as shown, the square area 404 falls partially outside the halftone cell 402, and a decision must be made on how to account for the portions A, B and C that fall outside the cell and overlap the neighboring halftone cells. The portion D of square area 404 which falls inside halftone cell 402 can be simply added to the contents of the reference cell. One alternative is simply to discard portions A, B and C not contained within the cell. However, the latter alternative does not lead to the highest quality, and it potentially allows artifacts to accumulate near the edges of the cell. Therefore, it is preferable to wrap around areas A, B and C so that the effect of adding the bump function takes into account areas extending into the neighboring cells. Figure 4b illustrates how the bump function centered at pixel 406, is added to the screen pattern cell 408. Area D is added directly. Area C wraps around to the opposite side of screen pattern 408, and areas A and B wrap around to the opposite side of screen pattern 408 with suitable offsets to compensate for the shift between adjacent rows of the supertile making up the complete halftone screen. Figure 5 is an isometric view of the bump function 504 with a maximum value or peak value 502. A typical maximum 502 may be 20% of grayscale. Figure 7 is an isometric view of a halftone screen 702 containing several halftone dots. The height of the surface shown represents the grayscale value of the screen pixels. For example, peak values 704, 706 represent the darkest pixel values of the spot function in the halftone screen 702. Rational supercell screens In a rational supercell halftone of figure 4, the screen pattern consists of periodic repetitions of the cell. Therefore, any sections of the square area 404 falling outside the cell 408 would fall unambiguously within an adjoining cells. Therefore, the preferred method is to add the portions of the square matrix that fall outside the cell to the regions corresponding to those regions in adjoining cells in the screen pattern. The relation between adjoining regions can be expressed mathematically, as follows. If one begins at point (x, y) in a cell in the screen pattern, and moves dx pixels to the right and dy pixels down, then one will arrive at the point (x1, y1) in a cell, perhaps within the same cell, perhaps a different cell. The method for determination of the x1 and y1 depends on the exact nature of the rational supercell. Here, it is given for a supercell constructed according to U.S. Patent 4,149,194 (Holladay). Assume that the width of the cell is w, and the height is h. Also assume that the horizontal shift from one row of cells to the next is s. Then, x1 = (x + dx + (((y mod h) + dy) div h) · s) mod w and y1 = (y + dy) mod h Here, div represents integer division, i.e. truncating the fractional part. Here is pseudocode representing the algorithm for rational supercells: where: bump(dx,dy) is the square matrix representing the error diffusion bump function, and is described in the next section dx and dy iterate over all values of the square matrix representing the bump function. g is the grayscale value to be assigned to the chosen pixel in the new cell h is the height of the cell i counts the number of iterations of the main loop new[x,y] represents the new cell reference[x,y] represents the reference cell w is the width of the cell x and y are the coordinates of the chosen pixel x1 and y1 are the coordinates at which the bump function is to be added to the reference cell The step of choosing an x,y pixel with a minimum reference[x,y] value must exclude any x,y pixel that has been previously chosen. The bump function The preferred practice of the present invention makes use of a bump function to perform the error diffusion step. Typically, this bump function is a two-dimensional Gaussian bell function, and is thus mathematically determined by the equation: bump ( dx,dy ) = eg · e - am ·( dx 2+ dy 2) , where am and eg are parameters that determine the extent and height, respectively of the bump function. Experiment has determined that optimum values for eg and am can be determined as follows: am = 1 sr 2 eg= 2 sr where sr is the screening ratio. Therefore, for the previous example of a 133 line screen halftone on a 1270 dpi resolution device, the screening ratio is 9.549, and optimum values are am= 0.011, and eg= 0.21. The two-dimensional Gaussian bell function is radially symmetrical, which is to say that is not changed by a rotation about the origin. Therefore, the error diffusion process used in the present invention is isotropic, which is to say the same in all directions. No one dimension is preferred. Known prior art error diffusion techniques are anisotropic, which is to say that some directions are preferred above others. Specifically, error can not be propagated upward, in other words contrary to the secondary scanning direction, because all pixels above the present scan line have already been determined, and cannot be changed, as a result of processing the image in raster scan order. The error diffusion process of the present invention iterates through grayscale values, rather than in raster scan order, and is thus capable of using an isotropic error distribution, such as the two-dimensional Gaussian bell function. Other functions than the two-dimensional Gaussian bell can be used, as can other values for the parameters than those recommended here. However, the recommendations in this section have been determined by experiment to be optimum. Irrational angled screens The present invention can also be practiced in conjunction with irrational angled screens such as can be generated by Gall et al (US-A-4,499,489) and also by the alternative screening techniques, cited above. However, adding a bump function to an irrational angled screen, when the bump function falls outside the screen pattern cell, is more complex than adding a bump function to a rational angled screen under the same conditions. The reason for the added complexity is that the screen values in adjacent cells used to determine wrap around values are not deterministic in an irrational angled screen, but occur with appear with some relative probability. In such case, the bump function is distributed to each of the possible pixels values in accordance with the relative probability of occurrence of that particular pixel value. The following treatment is presented in a general fashion, so that it will work with all screening methods that share the important basic properties. In the final screen pattern of irrational angled screens, as in rational angled screens, a specific pixel in the cell, say (x,y), is repeated many times in the final screen pattern. However, because irrational screens cannot be formed from exact periodic repetitions of the cell, if one were to move (dx,dy) pixels relative to any of these occurrences, one would not always find the same (x1,y1) cell pixel. Rather, if one starts at one specific point in the final screen pattern occupied by cell pixel (x,y), and moves (dx,dy) pixels relative to that occurrence, one will find one of several possible cell pixels (x1,y1). In the case of Gall et al, the number of possible (x1,y1) values is typically 4. In the alternative screening methods cited above, the number of possible (x1,y1) values is typically less than 16. The main loop described with reference to Fig. 2 - and to be further explained with reference to Fig. 6 - is modified so as to distribute some portion of the error (i.e. bump function) to each of the (x1,y1) pixels. The exact portion is based on the relative probability of occurrence of that particular (x1,y1) found at offset (dx,dy) to the original pixel (x,y). The relative probability of finding pixel (x1,y1) at an offset (dx,dy) from (x,y) is denoted as p(x,y, dx,dy, x1,y1). The function p can be calculated as follows: scan through the entire final screen pattern, and count the number of occurrences of screen pixel (x,y). Also, for each point in the final halftone in which screen pixel (x,y) is found, compare the point offset by (dx,dy) to determine if it is occupied by screen pixel (x1,y1), and count the number of occurrences. The ratio of the latter divided by the former is equal to the value of p(x,y, dx,dy, x1,y1). To distribute the error, we will actually use the value of p(x1,y1, -dx,-dy, x,y). For screening methods (such as tall et al) in which all cell pixels have an equal frequency of occurrence in the final halftone, this quantity is equal to p(x,y, dx,dy, x1,y1). However, in the alternative screening methods, where not all screen pixels have equal frequency of occurrence, the use of the former rather than the latter probability value prevents excessive error from accumulating in relatively more frequent screen pixels. Excessive error accumulation is prevented due to the property of p that, for all values of x1, y1, dx, and dy: Thus, after running all iterations of the main loop, each pixel in the reference cell has received an equal amount of error. In general, the exact values of p(x,y, dx,dy, x1,y1) depend on the screening technique, as well as the screen ruling and angle. Here is pseudocode representing the most general algorithm for all types of irrational angled screens: where: bump(dx,dy) is the square matrix representing the error diffusion bump function, and is described in a previous section dx and dy iterate over all values of the square matrix representing the bump function. g is the grayscale value to be assigned to the chosen pixel in the new cell h is the height of the cell i counts the number of iterations of the main loop new[x,y] represents the new cell p(x,y, dx,dy, x1,y1) is the relative probability of finding screen pixel (x1,y1) at an offset of (dx,dy) from all occurrences of screen pixel (x,y) in the final screen pattern reference[x,y] represents the reference cell w is the width of the cell x and y are the coordinates of the chosen pixel x1 and y1 are the coordinates at which the bump function is to be added to the reference cell It is worth noting that the rational tangent version is a special case of the above treatment. In the rational supercell case, only one (x1,y1) value results from any combination of x, y, dx, and dy. Since there is only one possibility, its relative probability, p(x,y, dx,dy, x1,y1) is always unity. Thus, the above algorithm reduces to that presented for the rational supercell case. It should also be noted that in the case of Gall et al, the nature of the screening method and its corresponding p() function will cause the bump function to be added in very fragmented form. Specifically, the bump function will be primarily added to screen pixels that will be nearby in the final screen pattern, rather than pixels that are nearby in the cell. In the alternative screening methods, the bump function will in general not be highly fragmented, since nearby pixels in the cell also tend to be nearby in the final screen pattern, especially if the height of the cell is comparable to the extent of the bump function. Figure 8 shows a section of an irrational screen, assembled from a plurality of strips of an ideal angled screen as disclosed in EP-A-0 531 129. Screen pattern cells 804, 806 and 808 represent different length strips of an ideal angled screen having a given height. Similarly, screen pattern cells 810, 811 and 813 represent shorter height, and different length strips of an ideal angled screen. A bump function represented by area 815 is to be added to a pixel in strip 801, which bump function overlaps the different height and different length strip 802 above. In general, different length and height strips appear in a number of different relative positions, creating the complexity in calculating wrap around bump function in terms of probabilities. Figure 6 shows a flowchart of the internal moire diffusion process, corresponding to steps 212, 214, 216 and 220 in Figure 2. Processing begins with step 602, in which the contents of a reference cell are initialized to duplicate the contents of the old cell 104, which contains pixel values generated from a spot function. Then, in step 604, the variables g, representing the gray shade to be assigned the next chosen pixel, and i, an index variable for counting the number of iterations through main loop (consisting of steps 606 through 626) are both initialized to zero. Upon every iteration of the main loop, step 606 checks to determine whether all iterations have been performed. If so, processing is complete. If not, processing continues with step 608, in which minimum pixel is chosen in the reference cell, and the coordinates of the chosen pixel are stored in the variables x and y. In addition, the corresponding chosen pixel in the new cell is set to the value of g. Step 608 excludes from consideration all pixels that have been chosen in previous iterations, thus ensuring that, upon completion, each pixel will have been chosen exactly once. Steps 610, 612, 614, 616, 622, and 624 effectively iterate steps 618 and 620 over all combinations of values of dx and dy, each within a range from -30 to 30. In step 610, the variable dy is initialized to -30. In step 612, the value of dy is compared with 30, and if the former does not exceed the latter, processing continues with step 614, in which dx is initialized to -30. Step 616, correspondingly, compares the value of dx with 30, and if the former does not exceed the latter, continues with step 618. In step 618, all combinations of (x1,y1) are determined from moving an offset (dx,dy) from an occurrence of screen pixel (x,y) in the screen pattern 112. Then, in step 620, for each such combination of (x1,y1), the quantity bump(dx,dy) · p(x1,y1, -dx,-dy, x,y) is added to the contents of the reference cell pixel addressed by the coordinates (x1,y1). Steps 618 and 620 add the bump function to the reference cell, with wrap around areas and relative probabilities of occurrence of pixel values in the wrap around areas taken into account. After performing steps 618 and 620 for one combination of values of dx and dy, the next value of dx is determined in step 622. If, in step 616, it is then determined that dx does not exceed 30, then steps 618 through 622 are repeated until dx does in fact exceed 30. Then, the next value of dy is determined in step 624. If, in step 612, dy does not exceed 30, then steps 614 through 624 are repeated until dy does exceed 30. Processing then continues at step 626, at which point all combinations of dx and dy, each in the range of -30 to 30, will have been iterated. In step 626, the next incremental gray shade is determined, and stored in the variable g. In addition, the main loop counter i is incremented, and the main loop is repeated, beginning at step 606, until all iterations of the main loop have been performed, at which point processing is complete. The net result is a new screen pattern cell with having a grayscale order of stored screen pattern pixels different from the grayscale order of the old screen pattern cell. Speed improvements The foregoing algorithm is fairly simple to implement, and is general for use with a variety of screening techniques. A screen pattern cell, once created, may be used to screen any number of halftones. As long as the screening speed is adequate, the speed of creation of the screen pattern cell may be relatively slow. However, a variety of optional techniques to improve the calculation speed of the p(x,y, dx,dy, x1,y1) function is briefly described. The first optimization is to store the values of the p() function in a look-up table. If the entire p() function were to be stored, the look-up table would be extremely large. Consequently, a simplifying assumption is made that the cell is repeated whole across the scan line. This assumption can be expressed mathematically as: p(x,y, dx,dy, x1,y1) = p(0,y, 0,dy, (x1-x-dx) mod w,y1) where w is the width of the cell. While the assumption might not be strictly true, it has been found not to significantly degrade the quality of the final halftone when adopted for the purpose of processing the cell according to the preferred practice of the present invention, at least with the alternative screening methods, cited above. Thus, it is sufficient to store, for every combination of y and dy, a list of xb,y1 values, and their relative probabilities p(0,y, 0,dy, xb,y1). The xb values stored are the x1 values assuming that x and dx are both zero. From the xb value, it is possible to determine x1 from the formula x1=(x+dx+xb) mod m. For the alternative type of screening methods, there are typically less than 16 possible (xb,y1) values for each combination of y and dy. The number of (xb,y1) values is stored as well. For example, if the height of the cell is 40, and if the range of values of dy is -30..30 (for a total of 61 total values), then there are 2440 (40 times 61) total combinations. An array is constructed that contains the number of (xb,y1) values for each of the 2440 combinations. Then, a maximum of 39040 (2440 times 16) values for xb,y1 are stored in a separate array. To construct the above tables, the (x,y) coordinates of the first cell pixel of each scan line of the final screen pattern are determined, then tabulated. In addition, because the p(...) values do not change with dx, it is possible to increase the speed by interchanging the order of the inner two loops. Thus, the revised pseudocode: where: bump(dx,dy) is the square matrix representing the error diffusion bump, and is described in the next section dx and dy iterate over all values of the square matrix representing the bump function. g is the grayscale value to be assigned to the chosen pixel in the new cell h is the height of the cell i counts the number of iterations of the main loop new[x,y] represents the new cell p is the relative probability of finding screen pixel (x1,y1) at an offset of (dx,dy) from all occurrences of screen pixel (x,y) in the final screen pattern reference[x,y] represents the reference cell w is the width of the cell x and y are the coordinates of the chosen pixel xb is the relative x1 coordinate retrieved from the table x1 and y1 are the coordinates at which the bump function is to be added to the reference cell Another potentially time consuming operation is the search for the (x,y) pixel with the minimum reference[x,y] value. A literal implementation would require time proportional to w · h for each iteration of the loop. The technique described in this section can help to improve the speed of this step. Before the main loop begins, a table of pointers to the reference cell is constructed. Each pointer is numbered from 0 to w · h - 1. The table of pointers is then sorted in order of the addressed values in the reference cell. Any well known efficient sorting algorithm, such as quicksort, may be used. Then, for iteration number i, the pointers numbered from i to i+1000 (or the end of the table, whichever comes first) are searched for the minimum addressed value in the reference cell. The minimum so determined almost always corresponds to the minimum in the entire reference cell. To update the table of pointers for the next iteration, the chosen pointer is replaced by the pointer numbered i in the table. Thus, every pointer will be chosen exactly once. Yet another time consuming step is the evaluation of the bump function. Even if the bump function were to be stored in a lookup table, it would still be necessary to multiply by the value of p once per inner loop. The optimization described below eliminates both these steps, making use of the "separability" of the bump function, which is to say that eg · e - am ·( x 2+ y 2) = eg · e - am · x 2 · e - am · y 2 · Prior to the main loop, a two dimensional look up table is constructed, called "the separated bump function table," containing the values eg · e - am · dx 2 · z 1024 , for all values of dx in the range -30..30, and all values of z in the range 0..1024. As described in above, eg and am are parameters to the bump function. Instead of storing merely p(x,y, dx,dy, x1,y1) in the tables, rather int(1024· e - am · dy 2 · p ( x , y , dx , dy , x1 , y1 )) is stored instead. The function int(x) denotes the largest integer that is still not greater than x, for any x, i.e. truncating the fractional part. Then, during operation of the main loop, a value from this new table would be read into the variable z, replacing the step in which the value from the old table was read into the variable p. Also, for each iteration of the inner loop, instead of computing the bump function and multiplying by p, it suffices to merely look up the value addressed by dx and z in the separated bump function table.

Claims: A method for generating a halftone screened image from an original image, in which method the generation of a screen for halftone screening an original image includes digitally-generating (104: 206) an initial screen pattern cell of a prescribed height and width comprising an array of pixels having respective grayscale values, and modifying (106: 216) said initial screen pattern cell for reducing moire effects, and using said modified screen pattern cell for the generation (110) of a screen for the halftone screening of said original image, characterized in that: the modification of said initial screen pattern cell includes the steps of:- storing (104: 206) said array of pixels of said initial screen pattern cell, each pixel having a grayscale value; applying a predetermined function to successive pixels selected in sequence according to their respective grayscale values, said function altering the grayscale value of each selected pixel and adjacent pixels to provide an array of pixels in which the distribution of grayscale values in the pixels of the array is modified as compared to the distribution in the array of the initial screen pattern cell and diffuses internal moire artifacts; and providing (108: 214) said modified screen pattern cell as an array of pixels having said modified distribution of grayscale values. A method in accordance with Claim 1, in which said predetermined function diffuses spatial artifacts isotropically. A method as claimed in Claim 1 or 2 in which the pixels of said modified screen pattern cell are assigned (214) grayscale values according to said modified distribution. A method in accordance with claim 2 or 3, in which the selection of the next pixel in sequence after an application of said predetermined function is done on the grayscale values of the pixels of said initial screen pattern cell as altered by the application(s) of said function. A method in accordance with Claim 4 in which the selection of the next pixel in sequence excludes each previously selected pixel. A method in accordance with any preceding claim in which said sequence of pixels comprises all pixels (220) of said array. A method in accordance with any preceding claim in which the selection of pixels is in order of ascending grayscale value (212). A method in accordance with any preceding claim wherein said predetermined function comprises a bump function (216). A method in accordance with claim 8, wherein said bump function is substantially a Gaussian-shaped distribution function. A method in accordance with claim 8 or 9, wherein said bump function is expressed in terms of grayscale value and is applied to said initial screen pattern cell by adding said bump function to each of said selected pixels. A method in accordance with any preceding claim, wherein the step of applying said function to said initial, or altered initial, screen pattern cell includes wrapping around (Fig. 4B: Fig. 8) portions of said function extending to areas located outside of said initial screen pattern cell, to modify respective screen pattern pixels inside of said initial screen pattern cell. A method in accordance with claim 11, wherein the wrapping around (Fig. 8) of portions of said function extending to areas located outside of said initial screen pattern cell is done in proportion to the respective probability that each portion of said function located in an area outside of said initial screen pattern cell corresponds to a pixel located inside of said initial screen pattern cell. A method in accordance with claim 1 or 2, wherein: a) said initial screen pattern cell is stored (104: 106) by setting a reference cell equal thereto; b) a new screen pattern cell is set (214) to an initial reset state; c) the application of said predetermined function is effected by selecting (212) the lightest pixel in said reference cell and marking (214) the corresponding pixel in said new cell as the first gray shade in the grayscale order of said new cell; d) said predetermined function is a bump function and is applied by adding (216) it to the chosen pixel in said reference cell, said bump function darkening the chosen pixel and nearby pixels in said reference cell and thereafter; e) selecting (212) the next darker pixel in said reference cell excluding previously selected pixels, and marking (214) the corresponding pixel in said new cell as the second gray shade in the grayscale order of said new cell; f) adding (216) said bump function to said selected next darker pixel in said reference cell, said bump function darkening said next darker pixel and nearby pixels in said reference cell; g) repeating steps e) and f) until all pixels in said reference cell have been selected (220) in grayscale order from the lightest to the darkest; and h) said modified screen pattern cell is stored (214) as the grayscale values of said new cell. A method in accordance with any one of claims 1 to 10, wherein the application of said predetermined function to a selected pixel of said initial screen pattern cell includes, for each of a plurality of modified screen pattern pixels, using the value of said function applied to an offset of said modified screen pattern pixel relative to said each stored initial screen pattern pixel in said generated screen (Fig. 4B: Fig. 8). A method in accordance with claim 14, including using portions of said function applied to a plurality of offsets of said screen pattern pixel relative to said each stored initial screen pattern pixel, said portions being proportional to relative probabilities of said offsets in said generated screen (Fig. 8, Fig. 6). A method in accordance with claim 15, wherein a portion of said function is used for each of said plurality of offsets, said portion being proportional to the relative probability of said offset occurring in said generated screen pattern (Fig. 8, Fig. 6). Apparatus for generating a halftone screened image from an original image, comprising means for generating a screen for halftone screening an original image, said screen-generating means including means (104: 206) for digitally-generating an initial screen pattern cell of a prescribed height and width comprising an array of pixels having respective grayscale values, and for modifying (106: 216) said initial screen pattern cell for reducing moire effects, said screen-generating means using said modified screen pattern cell for the generation of a screen for the halftone screening of said original image, characterized in that: said means for digitally-generating and modifying (104, 106: 206, 216) said initial screen pattern cell includes:- means (104: 206) for storing said array of pixels of said initial screen pattern cell, each pixel having a grayscale value; means (106: 216) for the application of a predetermined function to successive pixels selected in sequence according to their respective grayscale values, said function altering the grayscale value of each selected pixel and adjacent pixels to provide an array of pixels in which the distribution of grayscale values in the pixels of the array is modified as compared to the distribution in the array of the initial screen pattern cell and diffuses internal moire artifacts, and means (108: 214) for providing said modified screen pattern cell as an array of pixels having said modified distribution of grayscale values. Apparatus in accordance with Claim 17, in which said predetermined function diffuses spatial artifacts isotropically. Apparatus as claimed in Claim 17 or 18 in which said means (214) for providing said modified screen pattern cell is operable to assign to the pixels thereof grayscale values according to said modified distribution. Apparatus in accordance with claim 18 or 19, in which said function-application means (106: 216) is operable to select the next pixel in sequence, after an application of said predetermined function is done, on the grayscale values of the pixels of said initial screen pattern cell as altered by the application(s) of said function. Apparatus in accordance with Claim 20 in which said function-application means is operable in selecting the next pixel in sequence to exclude each previously selected pixel. Apparatus in accordance with any one of claims 17-21 in which said sequence of pixels comprises all pixels (220) of said array. Apparatus in accordance with any one of claims 17 to 22 in which the selection of pixels is in order of ascending grayscale value (212). Apparatus in accordance with any one of preceding claims 17-23 wherein said predetermined function comprises a bump function (216). Apparatus in accordance with claim 24, wherein said bump function is substantially a Gaussian-shaped distribution function. A method in accordance with claim 24 or 25, wherein said bump function is expressed in terms of grayscale value and is applied to said initial screen pattern cell by adding said bump function to each of said selected pixels. Apparatus in accordance with any one of Claims 17 to 26, wherein said function-application means is operable in applying said function to said initial, or altered initial, screen pattern cell to wrap around (Fig. 4B: Fig. 8) portions of said function extending to areas located outside of said initial screen pattern cell, so as to modify respective screen pattern pixels inside of said initial screen pattern cell. Apparatus in accordance with claim 27, wherein the wrapping around (Fig. 8) of portions of said function extending to areas located outside of said initial screen pattern cell is done in proportion to the respective probability that each portion of said function located in an area outside of said initial screen pattern cell corresponds to a pixel located inside of said initial screen pattern cell. Apparatus in accordance with claim 17 or 18, wherein: a) said means (104: 106) for storing said initial screen pattern cell is operable to set a reference cell equal thereto; b) said means (214) for providing said modified screen pattern cell is operable to provide a new screen pattern cell set to an initial reset state; said function-application means is operable to: c) select (212) the lightest pixel in said reference cell and mark (214) the corresponding pixel in said new cell as the first gray shade in the grayscale order of said new cell, d) add (216) said predetermined function in the form of a bump function to the chosen pixel in said reference cell, said bump function darkening the chosen pixel and nearby pixels in said reference cell and thereafter, e) select (212) the next darker pixel in said reference cell excluding previously selected pixels, and mark (214) the corresponding pixel in said new cell as the second gray shade in the grayscale order of said new cell, f) add (216) said bump function to said selected next darker pixel in said reference cell, said bump function darkening said next darker pixel and nearby pixels in said reference cell, and g) repeat steps e) and f) until all pixels in said reference cell have been selected (220) in grayscale order from the lightest to the darkest; and wherein h) means (214) for providing said modified screen pattern cell provides said modified screen pattern cell as the grayscale values of said new cell. Apparatus in accordance with any one of claims 17 to 26, wherein said function-application means is operable to apply said predetermined function to said initial screen pattern cell includes, for each of a plurality of modified screen pattern pixels, using the value of said function applied to an offset of said modified screen pattern pixel relative to said each stored initial screen pattern pixel in said generated screen (Fig. 4B: Fig. 8). Apparatus in accordance with claim 30, wherein said function-application means is operable to use portions of said function and to apply said portions to a plurality of offsets of said screen pattern pixel relative to said each stored initial screen pattern pixel, said portions being proportional to relative probabilities of said offsets in said generated screen (Fig. 8, Fig. 6). Apparatus in accordance with claim 31, wherein said function-application means is operable to use a portion of said predetermined function for each of said plurality of offsets, said portion being proportional to the relative probability of said offset occurring in said generated screen pattern (Fig. 8, Fig. 6).

Inventors: LEVIEN RAPHAEL L, LEVIEN, RAPHAEL L.
Applicants: LEVIEN RAPHAEL L, LEVIEN, RAPHAEL L.
Application year: 1992
Main classification: H04N1
IPC codes: G03F5, H04N1