It is to be understood that the invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the drawings. The invention is capable of other embodiments and of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of “including,” “comprising,” or “having” and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. Unless limited otherwise, the terms “connected,” “coupled,” and “mounted,” and variations thereof herein are used broadly and encompass direct and indirect connections, couplings, and mountings. In addition, the terms “connected” and “coupled” and variations thereof are not restricted to physical or mechanical connections or couplings.
In addition, it should be understood that embodiments of the invention include both hardware and electronic components or modules that, for purposes of discussion, may be illustrated and described as if the majority of the components were implemented solely in hardware. However, one of ordinary skill in the art, and based on a reading of this detailed description, would recognize that, in at least one embodiment, the electronic based aspects of the invention may be implemented in software. As such, it should be noted that a plurality of hardware and software-based devices, as well as a plurality of different structural components may be utilized to implement the invention. Furthermore, and as described in subsequent paragraphs, the specific configurations illustrated in the drawings are intended to exemplify embodiments of the invention and that other alternative configurations are possible.
The term output as used herein encompasses output from any printing device such as a copier, a printer, or a so-called “all-in-one device” which incorporates multiple functions such as scanning, copying, and printing capabilities in one device. Such printing devices may utilize ink jet, dot matrix, dye sublimation, laser, and any other suitable print formats.
One embodiment of the present invention is directed to halftoning an input image using error diffusion so that both the combined and individual color planes meet the pattern quality criteria. In one embodiment, at least two spread error weights and at least two thresholds are based on an input pixel value.
One embodiment of the present invention is based on the following ideas:
(a) The prior art combined color halftone method functions well to produce an optimal pattern of combined dot types. Embodiments of the present invention maintain this desired property. The combined color halftone method has a primary problem of determining how to make an optimal pattern of the sum of the number of dots from the individual dot planes, i.e., when to print a dot independent of the dot type, and a secondary problem of determining which of the dot types to print when it is determined to actually print one of the types of dots.
(b) The prior art standard error diffusion halftone algorithm functions well to produce a pattern of a single dot type. Embodiments of the present invention maintain this desired property to make a pleasing pattern of one, and possibly more, of the individual dot types.
A first embodiment of the present invention, therefore, includes two error diffusion mechanisms (i.e., two “spread” functions to maintain error) to satisfy the primary problem of determining when to print a dot independent of the dot type. The spread functions take as an input the sum of the number of drops in the individual dot planes.
In addition, a first embodiment of the present invention includes a third error diffusion mechanism to satisfy the secondary problem of determining which of the types of dots to print when it is determined to actually print one of the types of dots. The input of the third spread function is the number of drops of one of the individual planes. For example, if the drop types include cyan and magenta drops, and assuming that cyan drops are somewhat more visible than magenta drops, then the third spread function will have as an input the number of cyan drops to be printed to make an optimal pattern of cyan drops, subject to the constraint of making an optimal pattern of the total number of cyan and magenta drops. As another example, if the drop types include large and small drops, the third spread function will have as an input the number of large drops to be printed.
System 60 further includes a pair of comparators 35 and 38. Comparator 38 compares an output of adder 55 (i.e., the sum of input cyan 31 and a previously calculated error diffusion value from an error buffer 52) with the cyan threshold. If the output of adder 55 is greater, comparator 38 outputs a “1” on output A. Otherwise, comparator 38 outputs a “0” on output A.
Comparator 55 compares an output of adder 36 (i.e., the sum of the outputs of adders 53 and 54) with the cyan+magenta threshold. If the output of adder 36 is greater, comparator 35 outputs a “1” on output B. Otherwise, comparator 35 outputs a “0” on output B.
An output decision unit 37 makes a decision to print or not print a cyan or magenta drop based on inputs A and B. A print decision of a cyan drop generates a 255 on output C, line 40, and a no print decision generates a 0 on output C. A print decision of a magenta drop generates a 255 on output D, line 41, and a no print decision generates a 0 on output D. Table 1 below discloses the outputs on C and D based on the inputs on A and B for one embodiment of output decision unit 37.
The outputs on C (i.e., 0 or 255) are subtracted in adders 42 and 43 from the outputs of adders 55 and 54, respectively. The outputs on D (i.e., 0 or 255) are subtracted in adder 55 from the outputs of adder 53, respectively. The outputs of adders 42-44 are then received by error weight application modules 45, 47 and 49, respectively. Weight generation module 46 generates spread error weight values to error weight application module 45. Weight generation module 48 generates spread error weight values to error weight application modules 47 and 49. Both error weight generation modules 46 and 48 are input-dependent. Weight generation module 46 uses cyan 31 as input, while weight generation module 48 uses the sum of cyan 31 and magenta 30 as input. An example of an input-dependent error weigh generation module is disclosed in Ostromoukhov.
The outputs of weight application modules 45, 47 and 49 are stored in error buffers 52, 51 and 50, respectively, to be used in spreading the error in the next pixel calculation.
In
System 70 further includes a pair of comparators 78 and 79. Comparator 78 compares an output of adder 76 (i.e., the sum of input cyan 71 and a previously calculated error diffusion value from an error buffer 85) with cyan threshold. If the output of adder 76 is greater, comparator 78 outputs a “1” on output A. Otherwise, comparator 78 outputs a “0” on output A.
Comparator 79 compares an output of adder 77 (i.e., the sum of the outputs of adder 73 and an error buffer 86) with cyan+magenta threshold. If the output of adder 77 is greater, comparator 79 outputs a “1” on output B. Otherwise, comparator 79 outputs a “0” on output B.
An output decision unit 90 makes a decision to print or not print a cyan or magenta drop based on inputs A and B. A print decision of a cyan drop generates a 255 on output C, line 91, and no print decision generates a 0 on output C. A print decision of a magenta drop generates a 255 on output D, line 92, and a no print decision generates a 0 on output D. Table 2 below discloses the outputs on C and D based on the inputs on A and B for one embodiment of output decision unit 90.
In adder 80, the output on C (i.e., 0 or 255) is added to the output on D (i.e., 0 or 255). In adder 81, the output on C is subtracted from the output of adder 76. In adder 82, the output of adder 80 is subtracted from the output of adder 77. The outputs of adders 81 and 82 are received by error weight application modules 84 and 83, respectively. Two weight generation modules 87 and 88 generate spread error weight values to error weight application modules 84 and 83, respectively. Both error weight generation modules 87 and 88 are input-dependent. Weight generation module 87 uses cyan 71 as input, while weight generation module 88 uses the output of adder 73, the sum of cyan 71 and magenta 72 as input.
The outputs of weight application modules 83 and 84 are stored in error buffers 86 and 85, respectively, to be used in spreading the error in the next pixel calculation.
As disclosed, embodiments of the present invention allow both the combined and individual color planes to meet the pattern quality criteria. In general, embodiments of the present invention are similar to the prior art when deciding when to print a drop, but once it is decided to print a drop, use more intelligence in deciding what type of drop (i.e., cyan or magenta) to print.
The foregoing description of some embodiments of the invention has been presented for purposes of illustration. It is not intended to be exhaustive or to limit the invention to the precise steps and/or forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. It is intended that the scope of the invention be defined by the claims appended hereto.