AU744628B2 - One line store geometrically reducing influence halftoning - Google Patents
One line store geometrically reducing influence halftoning Download PDFInfo
- Publication number
- AU744628B2 AU744628B2 AU40891/00A AU4089100A AU744628B2 AU 744628 B2 AU744628 B2 AU 744628B2 AU 40891/00 A AU40891/00 A AU 40891/00A AU 4089100 A AU4089100 A AU 4089100A AU 744628 B2 AU744628 B2 AU 744628B2
- Authority
- AU
- Australia
- Prior art keywords
- pixel
- value
- current pixel
- error
- image
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Landscapes
- Facsimile Image Signal Circuits (AREA)
- Image Processing (AREA)
Description
S&F Ref: 504667
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT
ORIGINAL
Name and Address of Applicant: Actual Inventor(s): Address for Service: Canon Kabushiki Kaisha 30-2 Shimomaruko 3-chome Ohta-ku Tokyo 146 Japan Peter William Mitchell Ilbery Mark Pulver Spruson Ferguson St Martins Tower 31 Market Street Sydney NSW 2000 One Line Store Geometrically Reducing Influence Halftoning Invention Title: ASSOCIATED PROVISIONAL APPLICATION DETAILS [33] Country [31] Applic. No(s) AU PQ1174 [32] Application Date 23 Jun 1999 The following statement is a full description of this invention, including the best method of performing it known to me/us:- 5815c -1- ONE LINE STORE GEOMETRICALLY REDUCING INFLUENCE HALFTONING TECHNICAL FIELD OF THE INVENTION The invention relates to the field of digital image processing, and in particular, to apparatus and method for digital halftoning continuous tone images.
BACKGROUND ART Error diffusion is a traditional halftoning method based on a "neighbourhood process", in that a combined error at a current pixel, being the sum of the error at the current pixel and the error distributed to the current pixel, is in turn distributed to neighbouring pixels, where the neighboring pixels are as yet unprocessed. This is seen in Fig. 1, where the combined error at the current pixel 100 is distributed to neighbouring pixels 102-104 which are on the same scanline as pixel 100, and to neighbouring pixels 106-112 which are on the next scanline. It is noted that the combined error from the oooo, current pixel 100 is distributed to the aforementioned neighbouring pixels 102-112 by applying a set of weights to the combined error, which in the present illustration are the weights 2/8, 1/8, 1/8, 1/8, 2/8, and 1/8 for the neighbouring pixels 102-112 respectively.
The sum of the weights is unity.
For error diffusion, the halftone output at the current pixel is a function of the combined errors associated with the neighbouring pixels which have already been processed. This is seen in Fig. 2, where in considering a current pixel 200, a first set of I Spreviously processed pixels 202-208 which are on a previous scanline and a second set of previously processed pixels 210-212 which are on the same scanline (in this case, 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -2processing is being performed from left to right), all contribute combined error to the current pixel 200.
In a previous patent application "Geometrically Reducing Influence Halftoning" (AU Patent Application 28558/97, attorney references CFP0474AUA, FLCD21, 357317D1), an alternative class of neighbourhood process halftoning methods is described. This class of methods differs from traditional error diffusion as previously described, in that determination of the halftone output of a current pixel is performed by gathering the error of neighbouring previously processed pixels using a recursive calculation of a weighted error sum. These methods are capable of producing excellent halftone patterns in regions of low or high intensity. Such regions are typically handled poorly by traditional error diffusion as described in relation to Figs. 1 and 2. The halftoning methods described in the aforementioned patent application process a continuous tone image, scanline by scanline, and store three error values for each pixel on the scanline. This requires significant memory and processing power for implementation.
In US patent No. 4,339,774 entitled "Apparatus and method for generating a S.dispersed dot half tone picture from a continuous tone picture" (Temple), weighted sector and column sums determined from previously processed picture elements are used in determining a binary print value for a grey scale picture element. Temple cites complexity of computation and significant memory requirements as problems with traditional error diffusion. Arrangements disclosed by Temple require multiple line stores to achieve halftoning.
DISCLOSURE OF THE INVENTION It would be desirable to perform geometrically reducing influence halftoning in a manner which is less demanding in terms of storage and processing requirements.
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -3- It is an object of the present invention to ameliorate one or more disadvantages of the prior art.
According to one aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel, the steps of: determining a neighborhood error for the current pixel using a local store value and a single line store, a length of said line store being substantially a scan line of the image; said neighborhood error being determined using at least one value retrieved from the line store; said line store value being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including at least a set of pixels which are in advance of the current pixel and which extend to an edge of the image; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and determining and storing a new line store value.
According to another aspect of the invention, there is provided a method of oooo halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel, the steps of; 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -4determining a neighborhood error for the current pixel using a local store value and a single line store, a length of said line store being substantially a scan line of the image; said neighborhood error being determined using at least one value retrieved from the line store; said line store value being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including all previously halftoned pixels which are in advance of the current pixel; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and determining and storing a new line store value.
According to another aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having an input r gvalue and an assignable output value, the method comprising, for a current pixel of the image, the steps of: determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from a line store, a length of said line store being substantially S 20 a scan line of the image, said line store value being dependent on errors associated with previously halfioned pixels, each said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel, said neighborhood error depending on all previously halftoned pixels; 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc determining a halftone output value for the current pixel dependent upon at least the current input pixel value, a threshold and the neighborhood error; determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel.
According to another aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel of the image, the steps of: determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from a line store, a length of said line store being substantially a scan line of the image, said line store value being dependent on first errors associated with leading previously halftoned pixels which extend to a first edge and towards a second adjacent edge of the image, said first edge being parallel to a scan direction and posterior to the current pixel, each said first error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel, said local store value being dependent on second errors associated with lagging previously halftoned pixels which extend to the 20 first edge and a third edge of the image, said third edge being opposite the second edge; determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold and the neighborhood error; determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -6determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel.
According to another aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel, the steps of; allocating a single line store for halftoning said image, a length of said line store being substantially a scan line of the image, said line store storing a value for each pixel of the scan line, and a value store corresponding to the current pixel being dependent on errors associated with at least one previously halftoned pixel of a quadrant in advance of said current pixel, and each said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; allocating, in addition to said single line store, at least one local store, said at least one local store storing a value used in processing the current pixel and said each local store being updated before processing a pixel succeeding said current pixel on a present scanned line; determining a neighborhood error for the current pixel using at least one local store value and at least one value retrieved from the line store; determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; :::determining and storing a new local store value; and determining and storing a new line store value, said new line store value including a contribution from a current pixel error, wherein said current pixel error is a difference between the input value and said output value of the current pixel.
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -7- According to another aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said method is characterised by: processing the image scanline by scanline from the top to the bottom of the image; processing a scanline pixel by pixel either left to right or right to left; where the processing for each pixel comprises the steps of: determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of geometrically reducing weighted sums, each with principal pixel on the current or immediately previous scanline; where, a geometrically reducing weighted sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces geometrically with increasing distance from a principal pixel of the set; said neighborhood error being dependent on errors associated with previously halftoned pixels; said previously halfioned pixels including at least a set of pixels which *are in advance of the current pixel, and which extend to an edge of the image; (ii) calculating for the purpose of determining the output value of succeeding pixels, a geometrically reducing weighted sum with principal pixel being the current pixel; where, said calculation includes a multiplication of a geometrically reducing weighted sum by a weight reducing factor less than 1; and where said method is further characterised in that: one and only one geometrically reducing weighted sum with principal pixel being the current pixel is used in determining the output value of pixels of succeeding scanlines.
According to another aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having an input 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -8value and an assignable output value that can take on one of at least two output values, O and where said method is characterised by: processing the image scanline by scanline from the top to the bottom of the image; processing a scanline pixel by pixel either left to right or right to left, where the processing direction alternates for successive scanlines; where, the processing for each current pixel comprises: determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a leading quadrant sum; where said leading quadrant sum is read from a memory store containing one value per pixel of a scanline; (ii) calculating a column sum with principal pixel being the pixel above the current pixel, by using two leading quadrant sums; (iii) calculating a lagging quadrant sum for the next pixel of the current scanline and a leading quadrant sum for the pixel in the column of the current pixel and on the next scanline, by using the lagging quadrant sum for the current pixel, the said column i sum and the current pixel error; and (iv) writing the said leading quadrant sum to the said memory store; o* •.where the leading quadrant sums written to the said memory store during processing of a current scanline are the only error data for pixels of the current scanline used in determining the output value of pixels of the succeeding scanline.
According to another aspect of the invention, there is provided a method of halftoning an image, said image comprising a plurality of pixels each having for a plurality of colour components, an input value and an assignable output value, that can take on one of at least two output values, where said method is characterised by: 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -9processing each colour component of the image scanline by scanline from the top to i the bottom of the image; processing a scanline pixel by pixel either left to right or right to left, where the processing direction for a scanline may vary for different colour components; where, the processing for each colour component of a current pixel comprises: determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a plurality of column sums; where said column sums are read from a memory store for the colour component, being storage for one value per pixel of a scanline; (ii) calculating a lagging quadrant sum for the next pixel of the current scanline by using the lagging quadrant sum for the current pixel, the column sum with principal pixel above the current pixel, and the current pixel error; (iii) calculating a column sum for the pixel by using the column sum for the pixel above the current pixel and the current pixel error; and writing the said calculated column sum to the said memory store; where the column sums written to the said memory store during processing of a current scanline are the only error data for pixels of the current scanline used in determining the output value of pixels of the succeeding scanline.
20 According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising: a single line store, a length of said line store being substantially a scan line of the image; 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc first determining means for determining a neighborhood error for the current O pixel using a local store value, said neighborhood error being determined using at least one value retrieved from the line store; said line store value being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including at least a set of pixels which are in advance of the current pixel and which extend to an edge of the image; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; second determining means for determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; third determining means for determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and fourth determining means for determining and storing a new line store value.
According to another aspect of the invention, there is provided an apparatus for °..halftoning an image, said image comprising a plurality of pixels each having an input "value and an assignable output value, the apparatus comprising; *999 S.a single line store, a length of said line store being substantially a scan line of the image; 99 20 first determining means for determining a neighborhood error for the current pixel using a local store value, said neighborhood error being determined using at least :one value retrieved from the line store; said line store value being dependent on errors associated with previously halfioned pixels; said previously halftoned pixels including all .99..
previously halftoned pixels which are in advance of the current pixel; each said error making a contribution to the said line store value which reduces substantially 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -11 geometrically with increasing distance of the associated previously halftoned pixel from Sthe current pixel; second determining means for determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; third determining means for determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and fourth determining means for determining and storing a new line store value.
According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising: a single line store, a length of said line store being substantially a scan line of the image; first determining means for determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from the line store, said line store value being dependent on errors associated with previously halftoned pixels, each *said error making a contribution to the line store value which reduces substantially
CS
9606 geometrically with increasing distance of the associated previously halftoned pixel from °o0o the current pixel, said neighborhood error depending on all previously halftoned pixels; o S S 20 second determining means for determining a halftone output value for the current *fSS pixel dependent upon at least the current input pixel value, a threshold and the .000 neighborhood error; third determining means for determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and first pixel succeeding said current pixel on a present scan line; and 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -12fourth determining means for determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel.
According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising: a single line store, a length of said line store being substantially a scan line of the image; first determining means for determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from the line store, said line store value being dependent on first errors associated with leading previously halftoned pixels which extend to a first edge and towards a second adjacent edge of the image, said first edge being parallel to a scan direction and posterior to the current pixel, each said first error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel, said local store value being dependent on second errors associated with lagging previously halfioned pixels which extend to the first edge and a third edge of the S image, said third edge being opposite the second edge; second determining means for determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold and the neighborhood error; ~third determining means for determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 13fourth determining means for determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel.
According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising; a single line store, a length of said line store being substantially a scan line of the image; said line store being allocated for halftoning said image, said line store storing a value for each pixel of the scan line, and a value store corresponding to the current pixel being dependent on errors associated with at least one previously halftoned pixel of a quadrant in advance of said current pixel, and each said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; at least one local store, said at least one local store storing a value used in processing the current pixel and each said at least one local store being updated before i processing a pixel succeeding said current pixel on a present scanned line; first determining means for determining a neighborhood error for the current pixel using at least one local store value and at least one value retrieved from the line store; second determining means for determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the !neighborhood error; third determining means for determining and storing a new local store value; and fourth determining means for determining and storing a new line store value, said new line store value including a contribution from a current pixel error, wherein said 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 14current pixel error is a difference between the input value and said output value of the O current pixel.
According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said apparatus is characterised by: first processing means for processing the image scanline by scanline from the top to the bottom of the image; second processing means for processing a scanline pixel by pixel either left to right or right to left; where the second processing means comprises: determining means for determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of geometrically reducing weighted sums, each with principal pixel on the current or immediately previous scanline; where, a geometrically reducing weighted sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces geometrically with increasing distance from a principal pixel of the set; said neighborhood error being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including at least a set of pixels which are in advance of the current pixel, and which extend to an edge of the 20 image; (ii) calculating means for calculating for the purpose of determining the output value of succeeding pixels, a geometrically reducing weighted sum with principal pixel being the current pixel; where, said calculation includes a multiplication of a geometrically reducing weighted sum by a weight reducing factor less than 1; and where said apparatus is further characterised in that: 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc one and only one geometrically reducing weighted sum with principal pixel being the current pixel is used in determining the output value of pixels of succeeding scanlines.
According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said apparatus is characterised by: first processing means for processing the image scanline by scanline from the top to the bottom of the image; second processing means for processing a scanline pixel by pixel either left to right or right to left, where the processing direction alternates for successive scanlines; where, the processing means for each current pixel comprises: determining means for determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a leading quadrant sum; where said leading quadrant sum is read from a memory store containing one value per pixel of a scanline; (ii) first calculating means for calculating a column sum with principal pixel being the pixel above the current pixel, by using two leading quadrant sums; (iii) second calculating means for calculating a lagging quadrant sum for the next pixel of the current scanline and a leading quadrant sum for the pixel in the column of the oooo current pixel and on the next scanline, by using the lagging quadrant sum for the current pixel, the said column sum and the current pixel error; and (iv) writing means for writing the said leading quadrant sum to the said memory store; where the leading quadrant sums written to the said memory store during 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -16processing of a current scanline are the only error data for pixels of the current scanline Sused in determining the output value of pixels of the succeeding scanline.
According to another aspect of the invention, there is provided an apparatus for halftoning an image, said image comprising a plurality of pixels each having for a plurality of colour components, an input value and an assignable output value, that can take on one of at least two output values, where said apparatus is characterised by: first processing means for processing each colour component of the image scanline by scanline from the top to the bottom of the image; second processing means for processing a scanline pixel by pixel either left to right or right to left, where the processing direction for a scanline may vary for different colour components; where, the second processing means for processing each colour component of a current pixel comprises: determining means for determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a plurality of column sums; where said column sums are read from a memory store for the colour component, being storage for one value per pixel of a scanline; (ii) first calculating means for calculating a lagging quadrant sum for the next pixel of the current scanline by using the lagging quadrant sum for the current pixel, the column sum with principal pixel above the current pixel, and the current pixel error; (iii) second calculating means for calculating a column sum for the pixel by iii! using the column sum for the pixel above the current pixel and the current pixel error; and (iv) writing means for writing the said calculated column sum to the said memory store; where the column sums written to the said memory store during processing 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -17of a current scanline are the only error data for pixels of the current scanline used in Sdetermining the output value of pixels of the succeeding scanline.
BRIEF DESCRIPTION OF THE DRAWINGS Embodiments of the invention are described with reference to the following drawings, in which: Fig. 1 depicts how the error from a current pixel is distributed to neighbouring pixels in prior art error diffusion; Fig. 2 illustrates how errors from neighbouring pixels contribute to the error in a current pixel in prior art error diffusion; Fig. 3 depicts quadrant-sum halftoning, when scanning from left to right; Fig. 4 illustrates quadrant-sum halftoning when scanning from right to left; Fig. 5 depicts column-sum halftoning; Fig. 6 is a flow diagram of a method of performing geometrically reducing influence halftoning in accordance with a preferred embodiment; Fig. 7 illustrates a column-sum in accordance with a preferred embodiment; Fig. 8 shows a left quadrant-sum in accordance with a preferred embodiment; Fig. 9 depicts an upper right quadrant-sum in accordance with a preferred embodiment; Fig. 10 illustrates the neighbourhood influence of processed pixels from quadrant-sums and upper quadrant-sums in accordance with a preferred embodiment; *i!r rFig 11 illustrates recursive calculation of quadrant-sums in accordance with a preferred embodiment; Fig. 12 shows recursive calculation of upper quadrant-sums in accordance with a preferred embodiment; 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -18- Fig. 13 depicts reading from a line store in accordance with a preferred embodiment; Fig. 14 illustrates writing to a line store in accordance with a preferred embodiment; Fig. 15 depicts a basic threshold process in accordance with the preferred embodiment; Fig. 16 illustrates the uncorrected average output intensity; Fig. 17 presents an overview of halftone processing based upon the basic process; Fig. 18 depicts a section of continuous tone black and white image consisting of two regions; Fig. 19 represents an image grey value along a scan line in the aforementioned Figure; Fig. 20 depicts average neighbourhood error as a function of input grey value; Fig. 21 shows a C language representation of a method of halftoning including tunable sharpening, and mixing with optimised dot patterns; Fig. 22 shows a flow diagram representation of Fig. 24; and Fig. 23 shows a general purpose computer upon which an embodiment of the present invention may be practiced.
DETAILED DESCRIPTION INCLUDING BEST MODE In the context of this specification and claims, the word "comprising" means "including principally but not necessarily solely". Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings.
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -19- Traditional error diffusion halftoning has been described in relation to Figs. 1 and O 2, which illustrate the distribution of combined error from a current pixel to neighbouring unprocessed pixels, and the contribution of combined error from neighbouring processed pixels to a current pixel.
Ouadrant Processing Fig. 3 considers a quadrant processing embodiment, and shows a current pixel 300 where scanline processing is being performed from left to right as indicated by an arrow 302. In this case, a lagging left quadrant 304 which is composed of pixels exemplified by a pixel 306 contributes a left quadrant-sum of errors to the current pixel 300, this contribution being depicted by an arrow 308. More detail in regard to composition and calculation of the lagging left quadrant sum is presented below in relation to Fig. 8. Furthermore, a leading upper right quadrant 310 which is composed of pixels exemplified by a pixel 312 contributes an error in the form of an upper right quadrant sum to the current pixel 300, this error contribution being depicted by an arrow 314. Further detail on the composition and calculation of the leading upper right quadrant sum is presented below in relation to Fig. 9 It is found that improved halftone patterns are generated when the influence of the leading quadrant of pixels is reduced as compared to the influence of the lagging quadrant of pixels. This is explained in more detail in relation to Fig. 10 below.
20 Fig. 4 shows a further scanline quadrant processing embodiment being "P performed from right to left as depicted by an arrow 402 in relation to a current pixel 400.
In this instance, a lagging quadrant 404 is on the right hand side, and a right quadrant-sum error is contributed to the current pixel 400 as indicated by an arrow 408. An upper left quadrant 410 is a leading quadrant in this case, and the upper left quadrant sum error which results from the upper left quadrant 410 is contributed to the current pixel 400 as 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc shown by an arrow 414. Similar comments in regard to the beneficial effects of reducing O the influence of leading quadrant errors apply as were described in relation to Fig. 3.
Column Processing Fig. 5 shows another embodiment, this time using column processing for performing geometrically reducing influence halftoning. In this embodiment, it is necessary to perform a weighted sum of some number of column sums to determine an approximation for the leading quadrant sum. Despite the extra processing required to calculate an approximate value for the leading quadrant sum, this embodiment has an advantage over the aforementioned quadrant processing embodiment in that the algorithm is not restricted to processing alternate scanlines in opposite directions. A current pixel 500 is considered, with scanline processing being performed from left to right as depicted by an arrow 502. Columns 504-512 contribute errors represented by column sums to the current pixel 500, as exemplified by arrows 514-522 respectively. When scanline processing is performed from right to left, a corresponding description of the operation applies, with the various aspects being laterally inverted. Previously processed columns of pixels 524 are shown to the left of the current pixel 500.
ooooo Process Flow In Fig. 6, a flow diagram of a process for performing geometrically reducing influence halftoning is depicted. An input image pixel value 604 is input into a threshold process 606. The input pixel value 604 typically lies between 0 and 255. The threshold process produces a halftone output pixel value 608 which corresponds to the input pixel value 604. The threshold process 606 also outputs an error value associated with the difference between the input pixel value 604 and the output pixel value 608. This error value 610 is input into a neighbourhood process 612, which calculates a neighbourhood error value 614, which in turn is input into the threshold process 606 for determination of 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -21 the halftone output pixel value of succeeding pixels. Halftone output pixel values 608 are calculated, pixel by pixel, and scanline by scanline for an entire image. Furthermore, each output pixel value 608 is calculated using error values at previously processed pixels, these error values being considered by the neighbourhood influence process 612.
For ease of explanation, the preferred embodiment depicted in Fig. 6 is now described for bi-level monochrome halftoning, that is where a monochrome 8 bit per pixel image is halftoned to an output image of 2 levels. For this case, the input image is a single plane or grid of grey values, gx,y (depicted as 604 in Fig. 6) where: 0 gx,y 255 where: gx,y is the intensity value for pixel (x,y) The halftone output image is a grid of values, outx,y (depicted by 608 in Fig. 6) where: outx,y 0 or 255 where: outx,y is the halftone output value for pixel (x,y) Note that throughout the description of the preferred embodiment, pixel positions are defined using an x axis with the positive direction to the right of the image and a y axis with the positive direction down the image as shown in Figs. 7 to 10, and 13 to 16.
The halftone output at a pixel is determined using error values at previously processed pixels. The error value at a pixel position is denoted ex,y (depicted as 610 20 in Fig. 6) and is defined by: S. ex,y inx,y outx,y.
where: outx,y is the halftone output value at pixel (depicted as 610 in Fig. 6) inx,y is a derived input image value at pixel given by: inx,y imap[gx,y] which is a remapping of the input intensity value for pixel (x,y) 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -22imap[] is a 1D lookup table. "imap" is an abbreviation of "input map". The re-mapping of input image grey values via the lookup table imap[] is used to give desirable image sharpening characteristics to the halftone output image while ensuring that for an image region of constant input grey value, the average halftone output value matches that input image grey value.
Geometrically Reducing Weights Fig. 7 shows a sequence of geometrically reducing weights 704-706 and a sequence of error values 708-710 for a "column sum" the column extending to the upper edge of the image. The sequence is shown extending upwards, and the weight values change as a function of distance from the pixel position 712. A column sum e_upx,y corresponding to a pixel position is defined mathematically by the following formula: e_upx,y jj ex,y-j where: e_upx,y is a column sum ex,y-j is the output pixel error at pixel position y-j) Y is a vertical weight reducing factor, typically being a positive real number less than 1.
Fig. 8 shows a quadrant of geometrically reducing weights exemplified by 806- 808 and 806-810 and a quadrant of error values exemplified by 812-814 and 812-816 for 20 a "left quadrant sum" when considering left-to-right scanning. The quadrant is shown extending to the top and left edges of the image, and the weight values change as a function of distance from the pixel position 804. A left quadrant sum e_quadleftx,y corresponding to a pixel position is defined mathematically by the **following formula: e_quad_leftx,y Zi o j o Xi-'Y ex-i,y-j Ei o j o Xj ex-i,y-j 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -23where: e_quad_leftx,y is a left quadrant sum X, Y are horizontal and vertical weight reducing factors respectively, both typically being positive real numbers less than 1.
ex,y is an error value at pixel position Fig. 9 shows a quadrant of geometrically reducing weights exemplified by 906- 908 and 906-910 and a quadrant of error values exemplified by 912-914 and 912-910 for an "upper right quadrant sum" when considering left-to-right scanning. The quadrant is shown extending to the top and right edges of the image, and the weight values change as a function of distance from the pixel position An upper right quadrant sum e_up_quadrightx,y corresponding to a pixel position is defined mathematically by the following formula: e_up_quad_rightx,y i j >0 X'Yj ex+i,y-j where as before: e_up_quad_rightx,y is an upper right quadrant sum X, Y are horizontal and vertical weight reducing factors respectively ex,y is an error value at pixel position Column sums, quadrant sums and upper quadrant sums are used to express the influence of processed pixels on a current pixel. That is, each of the sums eupx,y e_quad_leftx,y, and e_up_quad_rightx,y are used to express the influence of previously 20 processed pixels on a current pixel at position For this reason, in Figs. 7 to 9, arrows 700, 800 and 900 respectively are shown from the pixel at the "apex" of the set of pixels 702, 802 and 902 respectively for which summed error values are determined, to the pixel represented by 712, 804 and 904 respectively.
Quadrant Representation of Previously Processed Pixels 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -24- Fig. 10 depicts how during scanline processing, all previously processed pixels Sform two quadrants of pixels 1002 and 1004 for left-to-right scanning and 1006-1008 for right-to-left scanning. The influence of all processed pixels on a current pixel (1010 for left-to-right and 1012 for right-to-left scanning) is expressed as a single "neighbourhood error" value e_nbrx,y which is defined mathematically by: e_nbrx,y X (e_quad_leftx,y e_up_quad_rightx,y) where: e_nbrx,y is a neighbourhood error Note that in the preferred embodiment, in contrast to the above equation, the multiplication of the sum of e_quad_leftx,y and e_up_quadrightx,y by the factor X is not necessary.
Pixel scanlines are processed alternately left to right and right to left in quadrant processing. Column processing is not subject to this constraint and scan line processing may be performed in left-to-right and/or right-to-left sequences as desired.
Considering right to left scanline processing, "right quadrant sums" and "upper left quadrant sums" are used. These are defined mathematically in a similar manner to the previous definitions of left quadrant sums and upper right quadrant sums as follows: e_quad_rightx,y i o o e+i,y-j i o o Xiy ex+i,y-j e_up_quad_leftx,y o j o XY ex-i,y-j For right to left scanline processing, the influence of all processed pixels on a 20 current pixel is enbrx,y defined mathematically as follows: e_nbrx,y X (e_up_quadleftx,y e_quad_rightx,y Reduced Influence of Leading Quadrant Note that in the weighted sum enbrx,y, the weight value associated with error value ex-l,y is X, and the weight value associated with error value ex,y-1 is XY.
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc In general, the weight value for each pixel of the leading quadrant is reduced by multiplication by the factor X from the value x'y i where i is the x offset of the pixel from position and j is the y offset of the pixel from position (x,y) In the case of scanning from left-to-right, the use of the factor X to decrease the influence of the "leading" quadrant e_up_quad_rightx,y, in relation to the influence of the "lagging" quadrant e_quad_leftx,y, results in much improved halftone patterns.
A corresponding comment applies when scanning from right-to-left.
Recursive Calculation of Quadrant Sums Turning to Fig. 11, a method of calculating quadrant sums recursively is illustrated pictorially, for the case of left to right scanline processing. This can be expressed mathematically as follows: e_quad_leftx+ 1 ,y e_quad_leftx,y X e_upx,y ex,y Fig. 12 depicts calculation of upper quadrant sums recursively for the case of right to left scanline processing. This can be expressed mathematically as follows: e_up_quad_leftx,y+ equad_leftx+,y Y Neighbourhood Influence Processing Figs. 13 and 14 summarise the processing performed by the neighborhood influence process 612 (see Fig. 6) for a left-to-right scan process. It is noted that although use is made of rectangles in the figures to identify various quadrants and columns, the quadrants and columns actually extend to the boundaries of the image as discussed with Sreference to Figs. 7 to 9.
As a general introduction, it is noted that the neighborhood influence process 612 (see Fig. 6) receives as input an error 610 ex,y) for pixel(x,y) and calculates a neighborhood influence 614 for pixel(x+l,y). Considering a left-to-right scan process, 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -26the neighborhood influence for pixel(x+l,y) is derived from e_quad_leftx+i,y (ie. 1316) and e_up_quadrightx+ 1 ,y (ie. 1306). The neighborhood influence process 612 has these quantities in local storage and makes them available to the threshold process 606.
Having processed pixel(x,y) 1310, pixel(x+l,y) 1312 is to be considered.
Firstly, an upper right quadrant sum 1306 (e up_quadrightx+ 1 ,y for the pixel(x+l,y) 1312 is read from a memory location 1300 in a line store 1302. Thereafter, this line store memory location 1300 is available to receive new data. Secondly, using the upper right quadrant sum 1306 (e_up_quad_rightx+i,y) and a previously read upper right quadrant sum e_up_quadrightx,y, for the previous pixel(x,y) 1310, this upper right quadrant sum having been stored in local storage, an upper column sum 1308 (e_upx,y for pixel(x,y) 1310 is calculated according to the following equation: e_upx,y e_up_quad_rightx,y- X e_upquadrightx+,y Thirdly, using the pixel error 610 (see Fig. 6, ex,y), the upper column sum 1308 (e_upx,y), and a previously determined left quadrant sum 1314 e_quad_leftx,y a new left quadrant sum 1316 (e_quad_leftx+,y is calculated according to the following equation: e_quadleftx+ 1 ,y X e_quadleftx,y eupx,y ex,y Fourthly, an upper left quadrant sum for pixel(x,y+l) 1402 (see Fig. 14) is calculated according to the following equation: e_up_quad_leftx,y+ Y e_up_quad_leftxl+,y Fifthly, the upper left quadrant sum 1404 (e_up_quadleftx,y+ for pixel(x,y+l) 1402 is written to a memory location 1400 (see Fig. 14).
The shaded line store memory locations 1304 (see Fig. 13) depict those error values still to be read in regard to processing the current scan line after reading 1306 (e_upquad_rightx+,y from memory location 1300 in the line store 1302. The shaded 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -27line store memory locations 1406 in Fig. 14 depict those error values having been written I after the processing for pixel has been completed.
It can be thus seen that a single line store is sufficient for accommodating both the line store values still to be read and the line store values written.
It is noted that during left to right scanline processing, upper right quadrant sums are read from the line store memory, left quadrant sums for the current scanline are generated and used, and upper left quadrant sums for the next scanline are generated and stored to the line store memory. Similarly, during right to left scanline processing, upper left quadrant sums are read from the line store memory, right quadrant sums for the current scanline are generated and used while upper right quadrant sums for the next scanline are generated and stored to the line store memory. Thus, the line store memory stores upper left quadrant sums and upper right quadrant sums for alternate lines.
Geometrically Reducing Factors Geometrically reducing influence halftoning is characterised by the recursive calculation of a weighted error sum. This recursive calculation allows the error from previously processed pixels to be gathered efficiently. In the present embodiment, the geometrically reducing factors, X and Y, are simple fractions with denominator being a power of 2, namely X 1/2 and Y 11/16. This allows an efficient implementation of multiplication by these factors using bit shifting.
Basic Decision Rule Turning to Fig. 15, the threshold process 606 (see Fig. 6) is considered. It will be recalled from Fig. 6 that the threshold process 606 effects a process whereby the input pixel value 604 and the neighborhood influence error data 614 are processed to produce the halftone output pixel value 608 and the error value 610. For the purposes of explanation, a basic decision rule for determining the halftone output corresponding to a 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -28current input pixel is described. The decision rule calculates the halftone output for r the current pixel in such a manner as to minimise the absolute value of the sum of the pixel error and the pixel neighbourhood error. This can be expressed mathematically as follows: if I (inx,y 255) e_nbrx,y I (inx,y 0) enbrx,y then outx,y 255 else outx,y 0 Note that this basic process is equivalent to the following process: if(inx,y e_nbrx,y 255 2 then outx,y 255 else outx,y 0 This can be seen by noting that a comparison of the absolute values of 2 quantities is equivalent to a comparison of the squares of the 2 quantities.
Ensuring Constant Average Output Intensity for Constant Input Intensity It is noted that a requirement of a good halftoning algorithm is that the average output intensity for regions of constant input intensity be approximately equal to the input 0 l intensity. The process of deriving an average output intensity for an image region of constant input intensity using the basic process for determination of pixel output with inx,y r** gx,y can be considered as a function "ht_basic". This function maps the segment of the 20 real line 255] into the segment of the real line 255]; expressed mathematically as follows: ht_basic: [0,255] [0,255] Fig. 16 shows the average output intensity for regions of constant input intensity.
It is noted that the dark points on the graph are points ht_basic(g)) for integer grey values, g, in the range 0 to 255. The diagonal grey line in the graph shows points g) 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -29for which the an average output intensity is equal to the input intensity. It is observed that the basic process with in,y gx,y results in undesirable behaviour for a good halftoning algorithm in that the average output intensity is not approximately equal to the image input intensity.
By modifying the basic decision rule so as to incorporate a "grey value dependent", bias value, the average output intensity can be made approximately correct.
This "basic decision rule with bias" can be described as follows: if(gx,y 255 2) e_nbrx,y bias[gx,y]) 0 then outx,y 255 else outx,y 0 where: bias is a function or lookup table which maps each integer grey values, g, 0 g 255 to a grey value dependent bias value.
To appreciate this in general terms, consider a particular grey value, g, and an input image region with constant input grey value, g. Note that provided the horizontal 15 and vertical weight reducing factors, X and Y are positive real numbers less than 1, the value of e_nbrx,y is bounded. If bias[g] is set to a very large negative number, then because e_nbrx,y is bounded, the decision rule will never generate halftone output values of 255. Similarly, if bias[g] is set to a very large positive number, then the decision rule will always generate halftone output values of 255. It is reasonable to expect that 20 increasing bias[g] can only increase the average output intensity; that is, it is reasonable to expect that the average output intensity is a monotonic increasing function of the bias value. A function, f, is monotonic increasing if for all xl x2, f(xl) f(x2).
Consequently, it is expected that a bias table can be prepared so that the "basic decision rule with bias" generates halftone output for which the average output intensity is approximately correct. In practice, this is found to be the case. The method used to 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc prepare the bias table is a "binary chop" iterative method. This method is described briefly.
It is required to find values bias[g] for each integer g such that for an image region of constant input grey value, g, the average output intensity is approximately, g.
For input grey values, g equal to 0 or 255, the basic decision rule delivers the correct average output intensity; so we can set bias[0]= 0 bias[255] 0.
Let us denote the average output intensity generated by the "basic decision rule with bias" with bias[g] b for an image region of constant input grey value, g, as out_av(g, b) For each input grey value g, such that 0 g 255, a set of initial bias values, bias_lo, bias_hi, and bias_best are assigned as follows: bias_lo :=-255 15 bias hi :=255 biasbest It is noted that these initial values bias_lo, bias_hi, bias_best satisfy the following relationships: bias lo biasbest biashi 20 out_av(g, bias_lo) g out_av(g, bias_hi).
For each iteration step, avout(g, (biaslo biashi) 2) is calculated.
Thereafter: if av_out(g, (bias_lo biashi)/2) g then bias_lo (bias_lo bias_hi) 2 else bias_hi (bias_lo bias_hi) 2 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -31 if I av_out(g, (bias_lo bias hi) 2) g I I av_out(g, bias_best) g O then bias_best (bias_lo bias_hi) 2 It is noted that after each iteration, the values of bias_lo, biashi, bias_best, continue to satisfy the relationships: bias lo biasbest bias hi out_av(g, bias lo) g out_av(g, bias_hi) and that (bias_hi bias_lo) is reduced to a half its former value.
In practice, it is found that av_out(bias_best,g) converges towards g. After sufficient iterations, we set bias[g] bias_best Basic Decision Rule with Bias Fig. 17 illustrates an overview of the halftone processing as it relates to the basic process with bias, as bias has been described in relation to Fig. 16.
Some preliminary issues are first addressed prior to commencing with the description of the decision rule. In the first instance, the following definitions are noted: S: Having regard to left to right processing: e_quad_lag e_quadleftx,y e_quad_lead e_up_quadrightx,y e_quad_lead_next e_upquadrightx+,y Having regard to right to left processing: 20 e_quad_lag e_quad_rightx,y e_quad_lead e up_quadleftx,y equad_lead_next e_up_quadleftx+i,y It is further noted that the process requires initialisation at the beginning of each scanline as follows: e_quad_lag 0 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -32e_quad_lead=e_store[0] (for left to right processing) O e_quad_lead=e_store[width 1] (for right to left processing) where: "e_store[x]" denotes the value stored in the line store array at array index "x" Finally, it is noted that the following table is required: bias[256] where: bias is a one dimensional pre-computed intensity-correction array computed, say, using the binary-chop iterative method described in relation to Fig 16.
Returning to Fig. 17, the basic halftone process with bias commences by providing the image pixel value 604 to the basic decision rule with bias 1712. This rule is expressed mathematically as follows: if (gx,y-255/2) +enbrx,y bias 0 then out,y 255 else outx,y 0 Depending on the outcome of the basic rule with bias 1712, the output value 608 15 is either 0 as indicated by dashed line segment 1708, or 255 as indicated by dashed lined segment 1710. The error value 610 for the pixel is calculated in process 1714 as a *function of the input pixel value 604 and the output pixel value 608. The composite aforementioned process can be envisaged as the threshold process 606 as described in Fig. 6. The error value 610 is now input to the neighbourhood influence process 612.
20 The process 612 first updates the leading quadrant error as indicated by 1716. Thereafter, considering left to right scanning, the next leading quadrant error is read from the line store memory location as indicated in 1718. Alternatively, considering right to left scanning, the next leading quadrant error is read from the line store as indicated in 1720.
Thereafter, the column sum error is determined by subtracting the weighted next leading quadrant error from the current leading quadrant error as indicated in 1722. Similarly, the 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -33current lagging quadrant error is determined by adding the weighted lagging quadrant error to the aforementioned calculated column sum error and to the previously calculated error value 610 as indicated in 1724. Finally, a new line store value is calculated by multiplying the lagging quadrant error by a weighting factor and this value is written to line store 1700 as indicated by arrow 1702. It is noted that in setting the next leading quadrant errors indicated by 1718 and 1720, line store values are read from line store 1700 as indicated by arrows 1706 and 1704. Completing the process, quantities e_quadlag and e_quadlead are supplied to the basic decision rule 1712 as depicted by arrow 614, this providing the threshold process 606 with the required data for performing the next required calculation.
"Mixing" with a Halftone Output of Other Processes An extension to the basic rule for pixel halftone output determination is now described. This rule allows the halftone output to be "mixed" with the halftone output of another halftoning process.
.:.ooo 15 The "mixing" decision rule is that the halftone output for a current pixel is chosen to be the halftone output of some other halftoning process if and only if the o absolute value of the sum of: 1. the current pixel error with the halftone output according to the other algorithm 20 2. the pixel neighbourhood error 0000 is less than absolute value of the sum of: 0o the current pixel error resulting with the halftone output not according to the other algorithm output, 2. the pixel neighbourhood error, and 3. a small positive "pattern bias" value.
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -34- This "pattern bias" value favours the halftone output result of the other i halftoning process, but only when the increase in image quality cost, as measured-by the absolute value of the sum of the pixel error and the pixel neighbourhood error, is small. It is helpful to make the small "pattern bias" value a function of the input pixel grey value, gx,y.
That is, if I inx,y out_otherx,y e_nbrx,y I inx,y (255 out_otherx,y) enbrx,y pattern_bias[gx,y] then outx,y outotherx,y else outx,y 255 out_otherx,y where: pattern_bias is a one dimensional array Provided the pattern bias value is small (in fact, provided pattern_bias[g] 255) and ignoring cases where the compared quantities are equal, this rule can be shown to be equivalent to the following rule: 1. assign a threshold adjustment value at position thresh_adjx,y as follows if (out_otherx,y 255) then thresh_adjx,y patternbias[gx,y] 2 else threshadjx,y patternbias[gx,y] 2 20 2. if (inx,y 255/2) e_nbrx,y thresh_adjx,y 0 then outx, 255 else outx,y 0 The above description serves as background to underpin the next extension to be incorporated which is now described.
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc Decision Rule Including Optimised Dot Patterns SThe halftone output is "mixed" with dot patterns optimised for each grey level as follows.
For each grey level, gx,y, in the range 0 to 255, an optimised pattern of on and off pixels is pre-calculated for a rectangle of pixels. This set of 256 grey level patterns can be represented as a 3D bit array.
The optimised dot pattern halftone method can be expressed mathematically as follows: if pattem[y tile_height] [x tile_width][gx,y] 1 then outx,y 255 else outx,y 0 where: "tile_height" is the height of the pattern rectangle "tile_width" is the width of the pattern rectangle "pattern" is a 3 dimensional array of values equal to 0 or 1 15 tile_height]" is the array y index, modulo the tile height the array y index is constrained to be less than or equal to the tile height) tile_width]" is the array x index, modulo the tile width the array x index is constrained to be less than or equal to the tile width).
For each grey level, gx,y, the fraction of values pattern[y tile_height][x 20 tile_width][gx,y] equal to 1 is arranged to be approximately gx,y 255. That is, the average output intensity for an image region of constant input intensity is approximately equal to o *that input intensity.
For this halftone method it can be seen that the halftone output for an image of constant input value repeats in rectangular tiles. The patterns are optimised taking into account the pattern across tile boundaries, with the intention that when the pattern 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :51 PM 504667AU.doc -36extending over many tiles is viewed, no pattern discontinuity or "seam" is observed at tile boundaries. Tiles of 32 by 32 pixels allow excellent quality halftone patterns for each grey level and the memory required to store a pattern for each of the 256 grey levels is modest, being 32 x 32 x 256 bits 32 K bytes. The halftone method corresponding to the optimised dot patterns produces excellent halftone patterns within image regions of constant input value.
The decision rule including optimised dot patterns can be expressed mathematically as follows: 1. if pattern[y tile_height][x tilewidth][gx,y] 1 then thresh_adjx,y patternbias[gx,y] 2 else threshadjx,y -patternbias[gx,y] 2 2. if(inx,y 255/2) e_nbrx,y thresh_adjx,y bias [gx,y] 0 then outx,y 255 15 else outx,y 0 Note that this halftoning method also includes use of a bias lookup table (distinct from the "pattern bias" table) to generate halftone output which has approximately correct average output intensity. The threshold adjustment values, that is the "pattern bias" values, used must be chosen carefully too small a value will not deliver the advantage of 20 the optimised dot patterns within regions of constant input grey value too large a value will result in artifacts outside regions of constant input grey value. This method can be considered an extension ofhalftoning using the "basic decision rule with bias".
130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -37- The procedure for determining the tables, pattern_bias[] and bias[], is as follows: O 1. calculate the bias[] table using, say, the binary chop method described previously; 2. prepare optimised dot patterns for each grey value, pattern[][][]; 3. assign values for each grey value for the table pattern_bias[] by observing the halftone output for each grey value, and for image blends; 4. if required, re-calculate the bias[] table to ensure correct average output intensity.
Decision Rule Including Image Sharpening A further extension to the basic rule for pixel halftone output determination allows image sharpening to be performed. Fig. 18 represents a rectangular section of a black and white continuous tone image which consists of 2 regions each of constant input grey value. The grey values 1800, 1802 are labelled, gl and g2, and by arbitrary definition gl g2. To enhance the visibility of the edge 1804 between the 2 regions 1800 and 1802 in the halftoned image, it is desirable that in the vicinity of the edge 1804 the o 15 intensity difference is accentuated.
Fig. 19 represents the input image grey value along the horizontal dotted line 1806 in Fig. 18 with a thin black line 1900. Fig. 19 also shows, with a wide grey line 1902, 1904, typical average halftone output intensities which are desirable for enhancing the visibility of the edge.
20 Let us recall the basic decision rule for determining halftone pixel output: o. if ((inx,y 255/2) e nbrx,y) 0 then outx,y 255 else outx,y 0.
Each of the decision rules so far described for determining halftone pixel output 130600; 15:49; 14/06/00; 01:51 pM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -38- (namely: S- the basic decision rule, or the basic decision rule with bias, or the decision rule for mixing with optimised dot patterns with bias) generates an average value of e_nbrx,y for image regions of constant input grey value.
This average neighbourhood error is a function of the input grey value, g, and we denote it as: e_nbrav(g).
Consider processing a scanline which runs along the dotted line 1806 in Figure 18. When the current pixel is in the vicinity of the edge 1804, because the current pixel neighbourhood includes pixels with both input grey values, the neighbourhood error, e_nbrx,y, will vary around an average value, enbravedge, which is between e_nbrav(gl) and enbrav(g2). Provided e_nbrav(g) is a strictly monotonic decreasing function, the following inequalities hold 15 e_nbrav(gl) e nbr av edge e nbrav(g2) This means that in the gl region (ie. 1800), in the vicinity of the edge 1804, the neighbourhood error contribution is on average less than e_nbrav(gl) and it is less likely that the result of the decision rule comparison will generate a halftone output of 255 so in the vicinity of the edge 1804, on the gl region side (ie. 1800), the average halftone 20 output intensity is reduced as shown by the downward curve in 1902. Similarly, in the g2 region (ie. 1802), in the vicinity of the edge (1804), the average neighbourhood error contribution is greater than e_nbr av(g2)) and it is more likely that the result of the decision rule comparison will generate a halftone output of 255 so in the vicinity of the edge 1804, on the g2 region side (ie. 1802), the average halftone output intensity is increased as shown by the upward curve in 1904. This leads to the conclusion that, for 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -39the decision rules to enhance edges it is sufficient that e_nbr av(g) is a strictly monotonic decreasing function; that is for all gl g2, enbrav(gl) enbrav(g2).
"Tunable" Sharpening Consider the following "tunable sharpening" halftone output decision rule: if(inx,y 255 2) fsharp[gx,y] enbrx,y bias[gx,y]) 0 then outx,y 255 else outx,y 0 where inx,y imap[gx,y].
where: fsharp[] and imap[] are one dimensional arrays used to effect tunable sharpening while preserving correct average output intensity.
The tunable sharpening decision rule uses, in addition to the bias[] lookup table, two further lookup tables, fsharp[] and imap[], which, like the bias[] table, are indexed by the input pixel grey value. "fsharp" is an abbreviation of "sharpening factor" and "imap" 15 is an abbreviation of "input map". The value (inx,y 255 2) fsharp[gx,y] in the tunable 4* sharpening decision rule can be thought of as the contribution for the current pixel the o"o "self error". The value e_nbrx,y is the contribution from neighbouring pixels the °neighbourhood error. The neighbourhood error, e_nbrx,y, is the sum over all processed pixel positions of the product of the weight at the pixel position and the error value at the 20 pixel position. For the tunable sharpening decision rule, the error at a pixel position is given by ex,y inx,y outx,y where inx,y imap[gx,y].
That is both the self error and the neighbourhood error are determined using modified or "mapped" input grey values. Note that, if: 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc fsharp[g] 1 and imap[g] g for all grey values, g, then the tunable sharpening decision rule reverts to the basic decision rule with bias. That is, the tunable sharpening decision rule is a generalisation of the basic decision rule with bias. The lookup tables fsharp[] and imap[], are used to make e_nbrav(g), a strictly monotonic decreasing function, in order to give desirable image sharpening, while preserving correct average output intensity.
Sum of Geometrically Reducing Weight for All Process Pixels It is noted that the sum of geometrically reducing weights for all processed pixel positions can be determined as follows. The neighbourhood error, e_nbrx,y, from above is the sum over all processed pixel positions of the product of the pixel position weight and pixel position error value: e_nbrx,y =i x j y X Ixl Y ei X i Z Xj y X Iy-i eij The sum of geometrically reducing weights corresponding to all processed pixel positions, which we denote C, is given by: C -i x j X Ixil Y lY-Jl X -i Yj y X Ix-il Y lyj l 00.. Yi oj X i yj X Y i>=o j>o X i Yj Assuming we are summing over all processed pixel positions in the plane and that 0 X,Y 1, the above formula is equivalent to: C X (1 Y)) 20 =X (1 Y) X) Y)) For, X 1/2 and Y 11/16, C 27 Tunable Sharpening Condition for Correct Average Output Intensity In performing tunable sharpening, it is desirable to maintain the correct average output intensity. The bias[] table has been determined so that the basic decision rule with 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:51 PM 504667AU.doc -41bias generates an average output intensity of g for an image region of any constant input grey value, g.
We require that, fsharp[] and imap[] are set in such a way that the tunable sharpening decision rule also generates an average output intensity of g for an image region of any constant input grey value, g. Consider halftoning an image region of constant input grey value, g. The basic decision rule with bias determines halftone output according to the comparison: (g 255 2) e_nbr_biasx,y bias[g]) 0 where: e_nbr_biasx,y represents the neighbourhood error for the basic decision rule with bias While the tunable sharpening decision rule determines halftone output according to the comparison: (imap[g] 255 2) fsharp[g] enbrsharpeningx,y bias[g]) 0 where: enbrsharpeningx,y represents the neighbourhood error with tunable sharpening 15 The notation, e_nbr_biasx,y and e_nbrsharpeningx,y represent respectively the neighbourhood error for the basic decision rule with bias and the neighbourhood error for the tunable sharpening decision rule. The pixel error and in turn the neighbourhood error depends on the value of g for the basic decision rule with bias, whereas, for the tunable sharpening decision rule, they depend on imap[g]. Provided that enbrbiasx,y and e_nbrsharpeningx,y represent neighbourhood error sums for the same pattern of halftone S*output for all previously processed pixels, we can write: e_nbrsharpeningx,y= e_nbr_biasx,y Cx,y (imap[g] g) where: Cx,y is the sum of the geometrically reducing weights for pixels processed before the current pixel 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -42- This follows from the definitions of ex,y for the two decision rules. Let us denote ex,y for the basic decision rule with bias as e_biasx,y and ex,y for the tunable sharpening decision rule as e_sharpeningx,y, then we have: e_sharpeningx,y imap[gx,y] OUtx,y (imap[gx,y] g) (g outx,y) (imap[gx,y] g) e_biasx,y The comparison for determining the halftone result at pixel according to the basic decision rule with bias and the comparison for the tunable sharpening decision rule are the same provided: (imap[g] 255 2) fsharp[g] enbrsharpeningx,y (g 255 2) enbrbiasx,y Assuming identical halftone output prior to pixel this condition can be rewritten as: (imap[g] 255/2) fsharp[g] Cx,y (imap[g] g) (g 255 2) Provided we are considering a current pixel well removed from the edges of the image, Cx,y is approximately equal to C. With the approximation of Cx,y as C, the condition becomes: ((imap[g] g) (g 255/2)) fsharp[g] C (imap[g] g) (g 255 and (g 255/2) (fsharp[g] 1) (C fsharp[g]) (imap[g] g) 0 20 This leads to the conclusion that for an image region of constant input grey value, g, provided fsharp[g] and imap[g] satisfy the following condition (g 255/2) (fsharp[g] 1) (C fsharp[g]) (imap[g] g) 0 the halftone output of the tunable sharpening rule approximates the halftone output of the basic decision rule with bias and, as a consequence, the tunable sharpening rule generates average output intensity approximately equal to g.
130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -43- Derivation of fsharpl[ and imap[] The following section presents an overview of how fsharp[] and imap[] are defined. For the decision rules to sharpen halftone images we require that e_nbr av(g) is a strictly monotonic decreasing function; that is for all gl g2, e_nbr_av(gl) enbrav(g2).
This is achieved by setting values of fsharp[] and imap[] for each grey value, g.
As described above, for correct average output intensity, for each grey value, g, fsharp[g] and imap[g] are not set independently but satisfy the condition: (g 255/2) (fsharp[g] 1) (C fsharp[g]) (imap[g] g) 0 From the definitions of e,y and e_nbrx,y for the basic decision rule with bias and for the tunable sharpening decision rule, we can write: e_nbr avsharpening(g) e_nbr av bias(g) C (imap[g] g) where: enbravbias(g), e_nbr_av_sharpening(g) are the average neighbourhood error for the two decision rules, for an image region of constant input grey value, g.
It is observed that, for the basic decision rule with bias and for the decision rule for mixing with optimised dot patterns with bias, for an image region of constant input grey value, g, the average neighbourhood error, enbravbias(g) is close to zero. Fig. shows a graph of average neighbourhood error as a function of input grey value. The grey points on the graph, clustered along the x axis, are the (near zero) average 20 neighbourhood error values for the decision rule for mixing with optimised dot patterns with bias 2000. Therefore if we set imap[g] so that (imap[g] g) is a monotonic decreasing function with sufficient slope, the average neighbourhood error will be a monotonic decreasing function and the tunable sharpening decision rule will have the desired characteristic for image sharpening. The condition for correct average output intensity for the tunable sharpening decision rule: 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -44- (g 255/2) (fsharp[g] 1) (C fsharp[g]) (imap[g] g) 0 can be re-written as: imap[g] g (255/2 g) (fsharp[g] 1) (C fsharp[g]) It can be noted from this equation that, by setting fsharp[g] F, a constant value, such that F 1, (imap[g] g) is indeed a monotonic decreasing function. Also increasing F, increases the slope of (imap[g] that is larger values of F produce greater image sharpening. So, one strategy for setting values of fsharp[] and imap[] for each grey value, g, is to set fsharp[g] F, a constant such that F 1 and to determine imap[g] using the condition for correct average output intensity. The resultant image sharpening is observed for the test images and the constant F is adjusted. Once a value ofF is selected providing an overall appropriate degree of sharpening, individual fsharp[] factors are adjusted for selected grey values (and the corresponding imap[] values are re-calculated according to the condition for correct average output intensity) and the resultant image sharpening is observed again.
It is found that setting F 2 gives good overall image sharpening. In order to avoid excessive sharpening around particular input grey values, 1. for input grey values near 0 (or by symmetry near 255) slightly larger values of fsharp[g] are used, and, 2. for input grey values near 255/2 lower values of fsharp[g] are used.
The black points on the graph 2002, decreasing with increasing input grey value, are the average neighbourhood error values for the tunable sharpening decision rule with an F value of 2 and tuned fsharp[] values near 0, 255/2 and 255. Discounting the average neighbourhood error values for g 0 and g 255, the average neighbourhood error is seen to be essentially a monotonic decreasing function of the input grey value.
130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc Essence of Tunable Sharpening Manipulation of the fsharp[] and imap[] values in the tunable sharpening decision rule is one method of making the average neighbourhood error for an image region of constant input grey value, g, a strictly monotonic decreasing function of g.
Moreover, in the tunable sharpening decision rule, fsharp[] and imap[] are set so that, for an image region of constant input grey value, g, the average of the sum of the self error and the neighbourhood error is unchanged compared to the basic decision rule with bias.
This makes halftoning with the tunable sharpening decision rule generate approximately correct average output intensity. It is possible to devise other generalisations of the basic decision rule with bias, apart from the described tunable sharpening decision rule, which provide these two characteristics, namely: 1. essentially monotonic decreasing average neighbourhood error 2. unchanged average sum of self error and neighbourhood error (that is, i*if 1 unchanged comparison in the decision rule) for an image region of constant input oooo 15 grey value.
The key feature provided by the tunable sharpening decision rule is the adjustment of the relative contribution of the self error and the neighbourhood error to the ooo• decision rule comparison, while maintaining the combined contribution of the self error and the neighbourhood error, for an image region of any constant input grey value, in such a way that the average neighbourhood error for an image region of constant input grey value, g, becomes a strictly monotonic decreasing function of g.
It is very convenient to change the decision rule for determining halftone pixel output so as to manipulate the average neighbourhood error while essentially preserving correct average output intensity. This allows a rapid cycle for tuning image sharpening in which the average neighbourhood error values are manipulated and the image sharpening 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -46is observed. If the correct average output intensity is not preserved when the average neighbourhood error is manipulated, then a time consuming process of recalculating bias[] values for each change in average neighbourhood error would be necessary in order to properly view test images halftoned with new trial average neighbourhood error values.
Overview of Preferred Decision Rule Fig. 21 depicts a process for implementing the preferred embodiment in "C" code. The preferred implementation of 1 line store geometrically reducing influence halftoning extends the basic rule for determining the halftone output of a current pixel to include: 1. intensity correction.
2. mixing with optimised dot patterns 3. tunable sharpening This extended decision rule is expressed mathematically as follows: 1. if pattern[y tile_height] [x tile_width] [gx,y] 1 then threshadj,y patternbias[gx,y] 2 else threshadjx,y pattern bias[gx,y] 2 2. if (imap[gx,y] 255/2) fsharp[gx,y] e_nbrx,y threshadjx,y bias[gx,y] 0 then outx,y= 255 else outx,y 0 S 20 where e_nbrx,y is calculated using current a pixel error value given by ex,y imap[gx,y] outx,y For less run-time computation, the rule can be expressed as: 1. if pattern[y tile_height][x tile_width][gx,y] 1 then e_self eselfon[gx,y] 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -47else e_self e_self_off[gx,y] 2. if e_self+ e_quadlagx,y e_quad_leadx,y 0 then outx,y 255 else outx,y 0 where e_nbrx,y is calculated using current a pixel error value given by ex,y imap[gx,y] outx,y where where: e_selfon and e_selfoff are tables which are pre-calculated to be: 1 255 e_selfon[gx,y] ((imap [gx,y] *fsharp[gx,y] pattern_bias [gx,y] /2 bias[gx,y]) x 2 1 255 eselfofftgx,y] -((imap [gx,y] *fsharp[gx,y] pattern_bias [gx,y] /2 bias[gx,y]) x 2 With this algorithm re-arrangement for less run-time computation, only the following tables are used: pattem[][][] eself_on[], e_selfoff[] 15 imap[].
Table Calculation The preferred embodiment uses the following tables (before re-arrangement for less run-time calculation): bias[] pattern[[][] pattern_bias[] fsharp[] imap[] 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -48- These tables can be calculated in a step by step fashion as follows.
O 1. Calculate the bias[] table to generated correct average output intensity.
2. Determine the 256 optimised dot patterns, pattern[][][].
3. Tune the use of optimised dot patterns by setting values of pattern bias[] and observing test image halftone patterns.
4. If considered necessary, re-calculate the bias[] table to ensure correct average output intensity.
Tune image sharpening by setting values of fsharp[] and also setting values of imap[] (using the formula for obtaining imap[] from fsharp[]) and observing test image halftone sharpening.
6. As a final step, re-calculate the bias[] table to ensure correct average output intensity.
Special Processing for Black and White Inputs The preferred embodiment is further refined by adding special processing for b 4 15 pixels with input grey value equal to 0 or 255 oo..IG Fig. 20 shows a graph of average neighbourhood error as a function of input grey value. As noted previously, the black points on the graph 2002, which decrease in value with increasing input grey value, are the average neighbourhood error values for the tunable sharpening decision rule with fsharp[] and imap[] values set as described to 20 previously. For the tunable sharpening decision rule, the average neighbourhood error values for input grey value, g, equal to 0 and 255 are both zero (ie. 2004, 2006 respectively). These zero average neighbourhood error values for g equal to 0 and 255 are counter to the previously expressed requirement for desirable image sharpening that the average neighbourhood error should be a strictly monotonic decreasing function. This 130600; 15:49; 14/06/00, 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 49 explains the presence of the following unwanted artefacts in images halfioned using the O tunable sharpening decision rule.
Artifact 1. When an image has fine text, of a light grey value, g_light, on a white background the resulting image generated by halftoning using the tunable sharpening decision rule shows the light grey text rendered lighter than it should be and for some values of g_light the text may even be rendered as white that is, the text has disappeared.
Artifact 2. When an image contains white text on a background of a light grey value, g_light, the resulting image generated by halftoning using the tunable sharpening decision rule shows the white text swollen (thicker than it should be).
Both these artifacts can be considered as examples of the edge between the light grey region and the white region being blurred, instead of being enhanced that is, the average output intensity of pixels in the vicinity of the edge which are in the light grey area is increased above the light grey value towards white. An effective correction of such artefacts is to use error diffusion style processing for those pixels with input grey value equal to 0 or 255. The particular style of error diffusion is described in the patent ooooo "Geometrically Reducing Mask Error Diffusion". The correction is: "•for those pixels for which the input grey value, gx,y, equal to 0 or 255, we set: oeoo OUtx,y gx,y o ex,y e_nbrx,y C In this way, pixels with input grey value of 0 or 255 instead of biasing the average neighbourhood error of neighbouring, yet to be processed pixels towards zero, contribute to the average neighbourhood error of those pixels according to their own neighbourhood error. It is important that the neighbourhood error is divided by exactly the value C so that across a region of pixels with input grey value of 0 or 255, the average neighbourhood error does not build up or fade away. With this correction, for both the 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc light grey text on a white background, and the white text on a light grey background, the average neighbourhood error throughout the light grey area and the white area becomes the average neighbourhood error of the light grey area and the edge between the 2 areas is neither sharpened or blurred. As a consequence, with the correction, artefacts 1 and 2 are no longer observed.
This processing for those pixels, for which the input grey value is equal to 0 or 255, is a particular case of geometrically reducing mask error diffusion. This statement is now clarified.
In error diffusion: 1. the halftone output of a current pixel, outx,y, is determined according to whether the sum of the pixel input grey value, gx,y, and an error value from its neighbourhood being the pixel input error value, e_nx,y, is above or below a threshold; 2. an output error value for the pixel, e_outx,y, is calculated according to the equation: e_outx,y gx,y e_inx,y OUtx,y 3. the pixel output error value is distributed to the input error values of 20 neighbouring as yet unprocessed pixels.
In halftoning using the tunable sharpening decision rule and with the special processing for those pixels for which the input grey value equals 0 or 255, let us define a pixel's input error and output error by the equation e_inx,y eOutx,y enbrx,y C.
For a current pixel with input grey value of 0 or 255: 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -51 1. the halftone output value of 0 or 255 is the same as that generated by error diffusion with a threshold of 255/2; this is because Iein,y lenbr,y C 255; 2. the pixel output error value, eout,y e_inx,y is the same as that generated by error diffusion; 3. the pixel output error value contributes to the input error of as yet unprocessed pixels, corresponding to an error diffusion mask consisting of 2 quadrants of geometrically reducing coefficients with the sum of the coefficients equal to 1.
That is the correction processing performed for pixels with input grey value of 0 or 255 conforms to the error diffusion model. Moreover, the effective error diffusion mask coefficients, being 2 quadrants of geometrically reducing weight values conform to those described in the patent "Geometrically Reducing Mask Error Diffusion".
Overview of Preferred Embodiment.
Fig. 22 presents a process flow diagram corresponding to the preferred embodiment depicted in code in Fig. 21. In broad terms, it is seen that the input pixel 15 value 604 is input into the threshold process 606, whereafter the error value 610 is input ooooo into the neighbourhood influence process 612, which provides neighbourhood error values 614 in a feedback loop back to the threshold process 606. The dashed boxes 606 oooo and 612 correspond to the threshold process and the neighbourhood influence process respectively as depicted in Fig. 6. The input pixel value 604 is directed to a decision 20 process 2210 which determines whether the input pixel value 604 is one of the extreme values 0 or to 255. If the input pixel value 604 is in fact one of these extreme values, the process is directed to block 2212 which determines the output value 608 and the pixel error value 610 as explained in the description in relation to Fig. 20. If the input pixel value 604 is not one of the aforementioned extreme black or white values, the process is directed to decision block 2216 which performs the decision rule incorporating optimised 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -52dot patterns. The outcome of the aforementioned decision rule sets the variable eself to one of two values as shown process blocks 2218 and 2220 respectively. Thereafter, process block 2222, using the sum e_self, e_quad lag and e_quadlead (the latter two values having been provided by the neighbourhood influence process 612 as depicted by the arrow 614) determines whether the halftone output pixel value 608 is black or white according to process blocks 2224 and 2226 respectively. The pixel error value 610 is determined by process block 2214 as a function of the aforementioned halftone output pixel value 608 and the re-mapped input image value by "imap" which is used to give desirable image sharpening characteristics. Turning to the neighbourhood influence process 612, e_quad_lead is updated using the value e_quad_lead_next as shown in process block 2228. The value e_quad_lead is also provided as shown by line segment 614 to the decision block 2222. Thereafter, for left-to-right scanning, e_quad_lead_next is updated to be the value in the line store which is depicted as e_store[x+l] as shown in the process block 2230. A corresponding definition is shown in the same process block for right-to-left scanning. Thereafter, the column sum e_upx,y is calculated in the process block 2232. The following process block 2234 calculates e_quad_lag as a weighted sum of e_quad_lag, the aforementioned column sum e_upx,y, and the pixel error ex,y,. Finally, in process block 2236 the line store value e_store[x] is calculated.
Extension to Colour Halftoning 20 In another embodiment, the above descriptions of monochrome halftoning can be extended to colour halftoning by processing each colour component independently. In this case, when halftone output at a current pixel is determined by mixing with other halftoning, the other halftoning method can be used to anti-correlate the output values of different colour components. For example, consider mixing with optimised dot patterns for Cyan Magenta Yellow Black (CMYK) halftoning. In this case, one set of 256 dot 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -53patterns can be used for the Cyan colour component and each of the 256 dot patterns can be shifted to provide dot patterns for the other colour components.
Column Processing With 1 line store geometrically reducing influence halftoning, an alternative is to store column sums rather than quadrant sums in the error line store. It is then necessary to perform a weighted sum of some number, LEAD_COLS, of column sums, to determine an approximation for the leading quadrant sum. Despite the extra processing to calculate an approximate value for the leading quadrant sum this alternative has the advantage that the algorithm is then no longer restricted to processing alternate scanlines in opposite directions.
In particular, anti-correlation of output values of different colour components can be achieved by using differing patterns of left to right and right to left scanline processing for the different colour components.
Embodiment using a General Purpose Computer 15 The preferred embodiment of the system can be implemented using a conventional general-purpose computer 2300 as illustrated in Fig. 23. The various *.processes described are implemented as software executing on the computer 2300. In o ""particular, the various process steps are effected by instructions in the software that are carried out by the computer 2300. The software can be stored in a computer readable 20 medium, is loaded onto the computer 2300 from the medium, and then executed by the computer 2300. The use of the computer program product in the computer preferably performs half-tone processing, and produces a half-tone signal for output to an output device. The computer system 2300 includes a computer module 2302, an image input card 2316, and input devices keyboard 2318 and pointing device 2320. In addition, the computer system 2300 can have any of a number of other output devices including a 130600; 15:49; 14/06/00, 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -54display 2324. The computer system 2300 is connected to one or more other computers using an appropriate communication channel such as a modem communications path, a computer network, or the like. The computer network can include a local area network (LAN), a wide area network (WAN), an Intranet, and/or Internet. Thus, for example, image signals are input via image input card 2316, control commands are input via keyboard 2318, and the desired half-tone signal is output via image output card 2310.
The computer 2302 itself includes at least one central processing unit 2304 (simply referred to as a processor hereinafter). It also includes a memory 2306 which can include random access memory (RAM) and read-only memory (ROM), an input/output (IO) interface 2308, an image input interface 2322. It further includes one or more storage devices generally represented by a block 2312. The storage device(s) 2312 can include one or more of the following: a floppy disk, a hard disk drive, a magneto-optical disk drive, CD-ROM, magnetic tape or any other of a number of non-volatile storage devices well known to those skilled in the art. In the present embodiment, external RAM 1302 (see Figs. 13 and 14) would be incorporated here. Each of the components 2304, 2306, 2308, 2312 and 2322, is typically connected to one or more of the other devices via a bus 2314 that in turn can include data, address, and control buses. The image interface 2322 is connected to the image input 2316 and video output 2310 cards, and provides video input from the image input card 2316 to the computer 2302 and from the computer 2302 20 to the image output card 2310.
i ~The preferred embodiment of the invention can, alternatively, be implemented on one or more integrated circuits. This mode of implementation allows incorporation of the halftone apparatus into individual pieces of equipment where the functionality provided by such apparatus is required.
130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc It will be apparent from the foregoing that the present invention provides a 0 method of halftoning an image using a single line store and a neighborhood error depending on all previously halftoned pixels. This contrasts, for example, with Temple, who teaches away from the present invention, by disclosing halftoning using a single line store by neglecting a neighborhood error contribution from those previously processed pixels in columns leading the column of the present pixel.
The foregoing describes only a number of embodiments of the present invention, and modifications can be made thereto without departing from the scope of the invention.
130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc
Claims (6)
1. A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel, the steps of: determining a neighborhood error for the current pixel using a local store value and a single line store, a length of said line store being substantially a scan line of the image; said neighborhood error being determined using at least one value retrieved from the line store; said line store value being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including at least a set of pixels which are in advance of the current pixel and which extend to an edge of the image; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; determining a halftone output value for the current pixel dependent upon at least S. "the current pixel input value, a threshold value and the neighborhood error; determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and determining and storing a new line store value.
2. A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel, the steps of; determining a neighborhood error for the current pixel using a local store value and a single line store, a length of said line store being substantially a scan line of the 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -57- image; said neighborhood error being determined using at least one value retrieved from O the line store; said line store value being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including all previously halftoned pixels which are in advance of the current pixel; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and determining and storing a new line store value.
3. A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel of the image, the steps of: determining a neighborhood error for the current pixel using at least a local store ***value and a value retrieved from a line store, a length of said line store being substantially d..o a scan line of the image, said line store value being dependent on errors associated with -to previously halftoned pixels, each said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated 1. previously halftoned pixel from the current pixel, said neighborhood error depending on Sall previously halftoned pixels; determining a halftone output value for the current pixel dependent upon at least the current input pixel value, a threshold and the neighborhood error; 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc
58- determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel. 4. A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel of the image, the steps of: determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from a line store, a length of said line store being substantially a scan line of the image, said line store value being dependent on first errors associated with leading previously halftoned pixels which extend to a first edge and towards a second adjacent edge of the image, said first edge being parallel to a scan direction and posterior to the current pixel, each said first error making a contribution to the line store iff 15 value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel, said local store value being dependent :i on second errors associated with lagging previously halftoned pixels which extend to the first edge and a third edge of the image, said third edge being opposite the second edge; "determining a halftone output value for the current pixel dependent upon at least 20 the current pixel input value, a threshold and the neighborhood error; determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel. 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 59 A method according to any of claims 1 to 4, whereby the determination of the halftone output value is further dependent upon a grey dependent bias, said bias ensuring that average output intensity of a halftoned image substantially matches input intensity of said image for an image region of constant input intensity. 6. A method according to any of claims 1 to 5, whereby an average of the neighbourhood error determined for the image region of constant input intensity decreases substantially strictly monotonically with increasing input intensity. 7. A method according to any of claims 1 to 5, whereby the neighbourhood error is further dependent upon a sharpening value and an input mapping value, both sharpening and input mapping values being dependent upon a current pixel input value, said sharpening and input mapping values being selected to simultaneously ensure both that the average neighbourhood error for the image region of constant input eeeee 15 intensity decreases substantially strictly monotonically with increasing input intensity, and that an average output intensity substantially matches the input intensity for regions of constant input intensity. 8. A method according to any of claims 1 to 7, whereby said neighborhood 20 error determination comprises the further step of: according a reduced influence to the retrieved line store value relative to the local store value. 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 9. A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the method comprising, for a current pixel, the steps of; allocating a single line store for halftoning said image, a length of said line store being substantially a scan line of the image, said line store storing a value for each pixel of the scan line, and a value store corresponding to the current pixel being dependent on errors associated with at least one previously halftoned pixel of a quadrant in advance of said current pixel, and each said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; allocating, in addition to said single line store, at least one local store, said at least one local store storing a value used in processing the current pixel and said each local store being updated before processing a pixel succeeding said current pixel on a present scanned line; determining a neighborhood error for the current pixel using at least one local store value and at least one value retrieved from the line store; determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; determining and storing a new local store value; and 20 determining and storing a new line store value, said new line store value including a contribution from a current pixel error, wherein said current pixel error is a difference between the input value and said output value of the current pixel. 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -61- A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said method is characterised by: processing the image scanline by scanline from the top to the bottom of the image; processing a scanline pixel by pixel either left to right or right to left; where the processing for each pixel comprises the steps of: determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of geometrically reducing weighted sums, each with principal pixel on the current or immediately previous scanline; where, a geometrically reducing weighted sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces geometrically with increasing distance from a principal pixel of the set; said neighborhood error being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including at least a set of pixels which .ooooi 15 are in advance of the current pixel, and which extend to an edge of the image; (ii) calculating for the purpose of determining the output value of succeeding oooo pixels, a geometrically reducing weighted sum with principal pixel being the current pixel; where, said calculation includes a multiplication of a geometrically reducing oo weighted sum by a weight reducing factor less than 1; 20 and where said method is further characterised in that: one and only one geometrically reducing weighted sum with principal pixel being the current pixel is used in determining the output value of pixels of succeeding scanlines. 11. A method as claimed in claim 10, where the one and only geometrically reducing weighted sum, with principal pixel being the current pixel, which is used in 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :53 PM 504667AU.doc 62 determining the output value of pixels of succeeding scanlines, is a geometrically O reducing quadrant sum; where a geometrically reducing quadrant sum is either a geometrically reducing left quadrant sum or a geometrically reducing right quadrant sum; and where a geometrically reducing left quadrant sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces geometrically with increasing distance from a principal pixel of the set and where the pixels of the said set are those pixels which are: on the scanline of the principal pixel or on scanlines above the principal pixel, and in the column of the principal pixel or in columns to the left of the principal pixel; and where a geometrically reducing right quadrant sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces geometrically with increasing distance from a principal pixel of the set and where the pixels of the said set are those pixels which are: S 15 on the scanline of the principal pixel or on scanlines above the principal pixel, and in the column of the principal pixel or in columns to the right of the principal pixel. S12. A method as claimed in claim 11, where each geometrically reducing quadrant sum is a sum over a set of pixels of the product of a weight value and a pixel S S 20 error value, where the pixel weight value is substantially equal to a first weight factor raised to the power of the horizontal distance of the pixel from the principal pixel multiplied by a second weight factor raised to the power of the vertical distance of the pixel from the principal pixel. 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -63- 13. A method as claimed in claim 12, where a neighbourhood error value used in determining the output value of a current pixel is the sum of a lagging quadrant sum and a leading quadrant sum; where, in the case where the current scanline is being processed left to right, the lagging quadrant sum is a geometrically reducing left quadrant sum with principal pixel to the left of the current pixel and the leading quadrant sum is a geometrically reducing right quadrant sum with principal pixel above the current pixel; and where, in the case where the current scanline is being processed right to left, the lagging quadrant sum is a geometrically reducing right quadrant sum with principal pixel to the right of the current pixel and the leading quadrant sum is a geometrically reducing left quadrant sum with principal pixel above the current pixel. 14. A method as claimed in claim 13, where the weight value of the principal pixel of the leading quadrant sum is less than the weight value of the principal pixel of the lagging quadrant sum. 15. A method as claimed in claims 10 to 14, where the pixels of a scanline are processed either left to right or right to left, and the processing direction alternates 2 between left to right and right to left for successive scanlines. 16. A method of halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said method is characterised by: processing the image scanline by scanline from the top to the bottom of the image; 130600; 15:49; 14/06/00, 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :53 PM 504667AU.doc
64- processing a scanline pixel by pixel either left to right or right to left, where the processing direction alternates for successive scanlines; where, the processing for each current pixel comprises: determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a leading quadrant sum; where said leading quadrant sum is read from a memory store containing one value per pixel of a scanline; (ii) calculating a column sum with principal pixel being the pixel above the current pixel, by using two leading quadrant sums; (iii) calculating a lagging quadrant sum for the next pixel of the current scanline and a leading quadrant sum for the pixel in the column of the current pixel and on the next scanline, by using the lagging quadrant sum for the current pixel, the said column sum and the current pixel error; and (iv) writing the said leading quadrant sum to the said memory store; where the leading quadrant sums written to the said memory store during processing of a current scanline are the only error data for pixels of the current scanline used in determining the output value of pixels of the succeeding scanline. 17. A method as claimed in claim 10, where the one and only geometrically 20 reducing weighted sum, with principal pixel being the current pixel, which is used in determining the output value of pixels of succeeding scanlines, is a geometrically reducing column sum; where, a geometrically reducing column sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 65 geometrically with increasing distance from a principal pixel of the set and where the O pixels of the said set are those pixels which are: on the scanline of the principal pixel or on scanlines above the principal pixel, and in the column of the principal pixel. 18. A method as claimed in claim 17, where a neighbourhood error value used in determining the output value of a current pixel is the sum of a lagging quadrant sum and a plurality of column sums where the principal pixel of each column sum is in the preceding scanline and where, either, if the scanline is being processed left to right, the said principal pixel is in the current pixel column or a column to the right of the current pixel column, or, if the scanline is being processed right to left, the said principal pixel is in the current pixel column or in a column to the left of the current pixel column. 19. A method as claimed in claim 18, where the weight value for the contribution of the error of the principal pixel of each column sum to the neighbourhood error of a current pixel, is less than the weight value for the contribution to the said S neighbourhood error of the error of a pixel horizontally opposing the said principal pixel; where, a pixel horizontally opposing a principal pixel is a pixel, distinct from the principal pixel, on the same scanline as the principal pixel, and with the same horizontal displacement from the current pixel as the principal pixel. A method of halftoning an image, said image comprising a plurality of pixels each having for a plurality of colour components, an input value and an assignable output value, that can take on one of at least two output values, where said method is characterised by: 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :53 PM 504667AU.doc -66- processing each colour component of the image scanline by scanline from the top to O the bottom of the image; processing a scanline pixel by pixel either left to right or right to left, where the processing direction for a scanline may vary for different colour components; where, the processing for each colour component of a current pixel comprises: determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a plurality of column sums; where said column sums are read from a memory store for the colour component, being storage for one value per pixel of a scanline; (ii) calculating a lagging quadrant sum for the next pixel of the current scanline by using the lagging quadrant sum for the current pixel, the column sum with principal pixel above the current pixel, and the current pixel error; i (iii) calculating a column sum for the pixel by using the column sum for the pixel 15 above the current pixel and the current pixel error; and ooeo (iv) writing the said calculated column sum to the said memory store; S where the column sums written to the said memory store during processing of a current scanline are the only error data for pixels of the current scanline used in determining the output value of pixels of the succeeding scanline. 21. A method as claimed in claims 10 to 20, where the halftone output of a current pixel is determined by comparison against a threshold value, and where the threshold value is modified by a bias value being a value retrieved from a look up table using the input value as table index, and where by use of the look up table, the average 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01 :53 PM 504667AU.doc
67- output intensity of an image region of a constant input value is rendered approximately O equal to that input value. 22. A method as claimed in claims 10 to 21, where the halftone output of a current pixel is determined by comparison against a threshold value and where the threshold value is adjusted according to a threshold adjustment value determined using the halftone result of an other halftoning method. 23. A method as claimed in claim 22, where the determination of the halftone output of a current pixel includes use of a threshold adjustment value, where the sign of the threshold adjustment value is determined using the halftone result of another method and where the magnitude of the threshold adjustment value is retrieved from a look up table, which is indexed by the current pixel input value. 24. A method as claimed in claims 10 to 21, where the halftone output of a current pixel is determined by comparison against a threshold value and where the threshold value is adjusted according to a threshold adjustment value, where the sign of the threshold adjustment value is the result of a table look up using current pixel x and y co-ordinates and current pixel input value and where the magnitude of the threshold adjustment value is retrieved from a look up table, which is indexed by the current pixel input value. A method as claimed in claims 10 to 24, where the error of each previously processed pixel which contributes to the neighbourhood error of a current unprocessed pixel is calculated as the difference between: 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 68 a modified input value being a value retrieved from a look up table using the previously processed pixel input value as table index; and the output value of the previously processed pixel; and where, by use of the look up table, the average neighbourhood error for an image region of constant input value is substantially a monotonic decreasing function of input value. 26. A method as claimed in claims 10 to 25, where for a current pixel with input value equal to a halftone output value, the current pixel error value for contributing to the neighbourhood error of succeeding unprocessed pixels is determined using the neighbourhood error of the current pixel; and whereby the average neighbourhood error, of an image region where the input value equals a halftone output value, tends to assume the average neighbourhood error value of surrounding image regions. a.. 27. A method as claimed in claims 10 to 25, where for a current pixel with input value equal to a halftone output value, the current pixel error value for contributing to the neighbourhood error of succeeding unprocessed pixels is determined as the neighbourhood error of the current pixel divided by a constant value substantially equal to 20 the sum of the weight values of pixel errors contributing to the neighbourhood error of a current pixel in the interior of the image. 28. An apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising: 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -69- a single line store, a length of said line store being substantially a scan line of the image; first determining means for determining a neighborhood error for the current pixel using a local store value, said neighborhood error being determined using at least one value retrieved from the line store; said line store value being dependent on errors associated with previously halfioned pixels; said previously halftoned pixels including at least a set of pixels which are in advance of the current pixel and which extend to an edge of the image; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; second determining means for determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; S"third determining means for determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and fourth determining means for determining and storing a new line store value. 29. An apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus 20 comprising; a single line store, a length of said line store being substantially a scan line of the image; first determining means for determining a neighborhood error for the current pixel using a local store value, said neighborhood error being determined using at least one value retrieved from the line store; said line store value being dependent on errors 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc associated with previously halftoned pixels; said previously halftoned pixels including all O previously halftoned pixels which are in advance of the current pixel; each said error making a contribution to the said line store value which reduces substantially geometrically with increasing distance of the associated previously halfioned pixel from the current pixel; second determining means for determining a halftone output value for the current pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; third determining means for determining and storing a new local store value for a pixel succeeding said current pixel on a present scan line; and fourth determining means for determining and storing a new line store value. An apparatus for halftoning an image, said image comprising a plurality .•of pixels each having an input value and an assignable output value, the apparatus 15 comprising: a single line store, a length of said line store being substantially a scan line of the image; first determining means for determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from the line store, said line 20 store value being dependent on errors associated with previously halftoned pixels, each S* said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel, said neighborhood error depending on all previously halftoned pixels; 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -71- second determining means for determining a halftone output value for the current pixel dependent upon at least the current input pixel value, a threshold and the neighborhood error; third determining means for determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and fourth determining means for determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel. 31. An apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising: a single line store, a length of said line store being substantially a scan line of the image; first determining means for determining a neighborhood error for the current pixel using at least a local store value and a value retrieved from the line store, said line store value being dependent on first errors associated with leading previously halftoned pixels which extend to a first edge and towards a second adjacent edge of the image, said first edge being parallel to a scan direction and posterior to the current pixel, each said S 20 first error making a contribution to the line store value which reduces substantially 0 geometrically with increasing distance of the associated previously halftoned pixel from the current pixel, said local store value being dependent on second errors associated with lagging previously halftoned pixels which extend to the first edge and a third edge of the image, said third edge being opposite the second edge; 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -72- second determining means for determining a halftone output value for the current a pixel dependent upon at least the current pixel input value, a threshold and the neighborhood error; third determining means for determining and storing a next local store value for a first pixel succeeding said current pixel on a present scan line; and fourth determining means for determining and storing only a single next line store value for a second pixel of a succeeding scan line corresponding in pixel position to said current pixel. 32. An apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value, the apparatus comprising; ~a single line store, a length of said line store being substantially a scan line of the image; said line store being allocated for halftoning said image, said line store storing a 15 value for each pixel of the scan line, and a value store corresponding to the current pixel being dependent on errors associated with at least one previously halftoned pixel of a "quadrant in advance of said current pixel, and each said error making a contribution to the line store value which reduces substantially geometrically with increasing distance of the associated previously halftoned pixel from the current pixel; at least one local store, said at least one local store storing a value used in processing the current pixel and each said at least one local store being updated before processing a pixel succeeding said current pixel on a present scanned line; first determining means for determining a neighborhood error for the current pixel using at least one local store value and at least one value retrieved from the line store; 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -73- second determining means for determining a halftone output value for the current 9 pixel dependent upon at least the current pixel input value, a threshold value and the neighborhood error; third determining means for determining and storing a new local store value; and fourth determining means for determining and storing a new line store value, said new line store value including a contribution from a current pixel error, wherein said current pixel error is a difference between the input value and said output value of the current pixel. 33. An apparatus for halfioning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said apparatus is characterised by: I(a) first processing means for processing the image scanline by scanline from the top to the bottom of the image; 15 second processing means for processing a scanline pixel by pixel either left to right or right to left; where the second processing means comprises: determining means for determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error 00 value being a sum of geometrically reducing weighted sums, each with principal pixel on .000 the current or immediately previous scanline; where, a geometrically reducing weighted sum is a sum over a set of pixels of the product of a weight value and a pixel error value where the weight value reduces geometrically with increasing distance from a principal pixel of the set; said neighborhood error being dependent on errors associated with previously halftoned pixels; said previously halftoned pixels including at least a set of 130600; 15:49; 14/06/00, 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 74 pixels which are in advance of the current pixel, and which extend to an edge of the O image; (ii) calculating means for calculating for the purpose of determining the output value of succeeding pixels, a geometrically reducing weighted sum with principal pixel being the current pixel; where, said calculation includes a multiplication of a geometrically reducing weighted sum by a weight reducing factor less than 1; and where said apparatus is further characterised in that: one and only one geometrically reducing weighted sum with principal pixel being the current pixel is used in determining the output value of pixels of succeeding scanlines. 34. An apparatus for halftoning an image, said image comprising a plurality of pixels each having an input value and an assignable output value that can take on one of at least two output values, and where said apparatus is characterised by: 0000 first processing means for processing the image scanline by scanline from the top to 15 the bottom of the image; second processing means for processing a scanline pixel by pixel either left to right or right to left, where the processing direction alternates for successive scanlines; where, the 0000 processing means for each current pixel comprises: determining means for determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a leading quadrant sum; where said leading quadrant sum is read from a memory store containing one value per pixel of a scanline; (ii) first calculating means for calculating a column sum with principal pixel being the pixel above the current pixel, by using two leading quadrant sums; 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc (iii) second calculating means for calculating a lagging quadrant sum for the next pixel of the current scanline and a leading quadrant sum for the pixel in the column of the current pixel and on the next scanline, by using the lagging quadrant sum for the current pixel, the said column sum and the current pixel error; and (iv) writing means for writing the said leading quadrant sum to the said memory store; where the leading quadrant sums written to the said memory store during processing of a current scanline are the only error data for pixels of the current scanline used in determining the output value of pixels of the succeeding scanline. 35. An apparatus for halftoning an image, said image comprising a plurality of pixels each having for a plurality of colour components, an input value and an assignable output value, that can take on one of at least two output values, where said apparatus is characterised by: S. first processing means for processing each colour component of the image scanline by 15 scanline from the top to the bottom of the image; second processing means for processing a scanline pixel by pixel either left to right or right to left, where the processing direction for a scanline may vary for different colour components; where, the second processing means for processing each colour component of a current pixel comprises: 20 determining means for determining the output value of a current pixel of a current scanline using the input value of the current pixel and a neighbourhood error value being a sum of a lagging quadrant sum and a plurality of column sums; where said column sums are read from a memory store for the colour component, being storage for one value per pixel of a scanline; 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc 130600; 15:49; 14/06/00; 01:53 PM 504667AU.doc -76- (ii) first calculating means for calculating a lagging quadrant sum for the next t pixel of the current scanline by using the lagging quadrant sum for the current pixel, the column sum with principal pixel above the current pixel, and the current pixel error; (iii) second calculating means for calculating a column sum for the pixel by using the column sum for the pixel above the current pixel and the current pixel error; and (iv) writing means for writing the said calculated column sum to the said memory store; where the column sums written to the said memory store during processing of a current scanline are the only error data for pixels of the current scanline used in determining the output value of pixels of the succeeding scanline. 36. A method of halftoning an image, substantially as described herein with reference to any one of the embodiments, as that embodiments is shown in the accompanying drawings. 15 37. An apparatus for halftoning an image, substantially as described herein with reference to any one of the embodiments, as that embodiments is shown in the l accompanying drawings. DATED this Fourteenth Day of June, 2000 20 Canon Kabushiki Kaisha Patent Attorneys for the Applicant SPRUSON FERGUSON 130600; 15:49; 15/06/00; 03:14 PM 504667AU.doc 130600; 15:49; 15/06/00; 03:14 PM 504667AU.doc
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU40891/00A AU744628B2 (en) | 1999-06-23 | 2000-06-16 | One line store geometrically reducing influence halftoning |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AUPQ1174 | 1999-06-23 | ||
AUPQ1174A AUPQ117499A0 (en) | 1999-06-23 | 1999-06-23 | One line store geometrically reducing influence halftoning |
AU40891/00A AU744628B2 (en) | 1999-06-23 | 2000-06-16 | One line store geometrically reducing influence halftoning |
Publications (2)
Publication Number | Publication Date |
---|---|
AU4089100A AU4089100A (en) | 2001-01-04 |
AU744628B2 true AU744628B2 (en) | 2002-02-28 |
Family
ID=25625356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
AU40891/00A Ceased AU744628B2 (en) | 1999-06-23 | 2000-06-16 | One line store geometrically reducing influence halftoning |
Country Status (1)
Country | Link |
---|---|
AU (1) | AU744628B2 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0375306A2 (en) * | 1988-12-20 | 1990-06-27 | Colgate-Palmolive Company | Monolithic outsole |
US5353309A (en) * | 1992-05-01 | 1994-10-04 | At&T Bell Laboratories | ISDN transmitter |
US5353127A (en) * | 1993-12-15 | 1994-10-04 | Xerox Corporation | Method for quantization gray level pixel data with extended distribution set |
-
2000
- 2000-06-16 AU AU40891/00A patent/AU744628B2/en not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0375306A2 (en) * | 1988-12-20 | 1990-06-27 | Colgate-Palmolive Company | Monolithic outsole |
US5353309A (en) * | 1992-05-01 | 1994-10-04 | At&T Bell Laboratories | ISDN transmitter |
US5353127A (en) * | 1993-12-15 | 1994-10-04 | Xerox Corporation | Method for quantization gray level pixel data with extended distribution set |
Also Published As
Publication number | Publication date |
---|---|
AU4089100A (en) | 2001-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4610802B2 (en) | Gray level image edge enhancement | |
US6804408B1 (en) | Method for enhancing a digital image with noise-dependent control of texture | |
US7116447B2 (en) | Halftone dot-growth technique using a dot edge-detection scheme | |
US5305118A (en) | Methods of controlling dot size in digital halftoning with multi-cell threshold arrays | |
JP4615776B2 (en) | Edge enhancement processing processor and method by adjustable threshold setting | |
US5602943A (en) | Digital halftoning space filling curves | |
JP3222183B2 (en) | Image processing device | |
US6731823B1 (en) | Method for enhancing the edge contrast of a digital image independently from the texture | |
JP4121631B2 (en) | Image data processing system and image data processing method | |
JP2005333657A (en) | Generating method of threshold array | |
US6476934B1 (en) | Geometrically reducing influence halftoning | |
JPH1097618A (en) | Seamless parallel adjacent processing for halftone | |
JP3698541B2 (en) | Pseudo gradation image processing device | |
US6707578B1 (en) | Method and apparatus for improving image presentation in a digital copier | |
AU744628B2 (en) | One line store geometrically reducing influence halftoning | |
US6873437B1 (en) | Image processing method and image processing apparatus | |
JPH0738767A (en) | Image binarizing processor | |
JP4141817B2 (en) | Error diffusion with reduced buffers | |
JP3287717B2 (en) | Image processing device | |
Marcu | Error diffusion algorithm with output position constraints for homogeneous highlight and shadow dot distribution | |
JP2000270210A (en) | Picture processor | |
JP4549306B2 (en) | Image processing method, image processing apparatus, image forming apparatus, and computer program | |
AU729264B2 (en) | Geometrically reducing influence halftoning | |
JP3708465B2 (en) | Image processing method and image processing program | |
AU723183B2 (en) | Force field halftoning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FGA | Letters patent sealed or granted (standard patent) |