US20090033995A1 - Print job data processing for multi-head printers - Google Patents
Print job data processing for multi-head printers Download PDFInfo
- Publication number
- US20090033995A1 US20090033995A1 US12/187,155 US18715508A US2009033995A1 US 20090033995 A1 US20090033995 A1 US 20090033995A1 US 18715508 A US18715508 A US 18715508A US 2009033995 A1 US2009033995 A1 US 2009033995A1
- Authority
- US
- United States
- Prior art keywords
- print data
- data
- buffers
- buffer
- 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.)
- Abandoned
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B41—PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
- B41J—TYPEWRITERS; SELECTIVE PRINTING MECHANISMS, i.e. MECHANISMS PRINTING OTHERWISE THAN FROM A FORME; CORRECTION OF TYPOGRAPHICAL ERRORS
- B41J2/00—Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed
- B41J2/485—Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed characterised by the process of building-up characters or image elements applicable to two or more kinds of printing or marking processes
- B41J2/505—Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed characterised by the process of building-up characters or image elements applicable to two or more kinds of printing or marking processes from an assembly of identical printing elements
- B41J2/515—Typewriters or selective printing mechanisms characterised by the printing or marking process for which they are designed characterised by the process of building-up characters or image elements applicable to two or more kinds of printing or marking processes from an assembly of identical printing elements line printer type
Definitions
- the present invention relates to multi-head printers and, more particularly, to techniques for processing print data for printing by multi-head printers.
- printers are well-known in the computer and digital imaging arts. Such printers include, for example, dot-matrix printers, laser printers, inkjet printers, and thermal printers.
- Thermal printers use thermal energy (heat) to produce printed output. More specifically, thermal printers typically contain a linear array of heating elements (also referred to herein as “print head elements”) that print on an output medium by, for example, transferring pigment from a donor sheet to the output medium or by initiating a color-forming reaction in the output medium.
- the output medium is typically a porous receiver receptive to the transferred pigment, or a paper coated with the color-forming chemistry.
- Each of the print head elements when activated, forms color on the medium passing underneath the print head element, creating a spot having a particular density. Regions with larger or denser spots are perceived as darker than regions with smaller or less dense spots. Digital images are rendered as two-dimensional arrays of very small and closely-spaced spots.
- a thermal print head element is activated by providing it with energy. Providing energy to the print head element increases the temperature of the print head element, causing either the transfer of pigment to the output medium or the formation of color in the receiver. The density of the output produced by the print head element in this manner is a function of the amount of energy provided to the print head element.
- the amount of energy providing to the print head element may be varied by, for example, varying the amount of power to the print head element within a particular time interval or by providing power to the print head element for a longer time interval.
- a single thermal printer may include multiple thermal print heads, in which case the data to be printed is divided into a plurality of portions, referred to as “stripes,” each of which is printed by one of the print heads.
- the process of dividing the print data into stripes is referred to as “striping.”
- Multi-head thermal printers can be superior to single-head printers for cost and reliability reasons, particularly when wide printing is required. For example, the cost of a single wide head typically is significantly greater than the total cost of multiple small heads having the same aggregate width as the single wide head. Furthermore, the manufacturing yield for wide heads is very low compared to that of small heads.
- a pixel fails in one print head in a multi-head printer only the failing print head need be replaced, while the failure of a single printer in a single large print head requires the entire print head to be replaced at a much higher cost.
- the print heads in a multi-head printer may be staggered with respect to each other.
- This kind of printer is described in U.S. Pat. No. 4,660,052 to Kaiya et al., and is described as a heat-sensitive recording apparatus with multiple thermal heads disposed in a staggered arrangement along two platen rollers.
- the apparatus has alternate image segments printed on a first platen roller by a first set of print heads.
- the intervening segments are filled in by a second set of print heads printing on a second platen roller.
- the heads are arranged such that the printing of the second set of print heads overlaps the printing of the first set of print heads, forming “stitching” regions between each pair of adjacent segments in which the printing may be adjusted to obscure the presence of a transition from one to the other.
- stitching regions may create undesirable visible artifacts in the printed image if adequate preventative steps are not taken.
- Various techniques have been employed to “stitch” image segments within stitching regions so that the presence of the stitching regions is imperceptible to the greatest extent possible.
- Stitching techniques include techniques for performing image processing on stitched image segments prior to printing, mechanical techniques for properly printing stitched image segments with proper alignment, and combinations thereof.
- Particular examples of stitching techniques may be found, for example, in a commonly-owned patent application Ser. No. 10/374,847, filed on Feb. 25, 2003, and entitled “Image Stitching for a Multi-Head Printer.”
- Striping and stitching are merely two examples of kinds of processing that may need to be performed on print data before it is provided to the print heads for printing. As the speed of multi-head printers continues to increase and as price competition among printer manufacturers continues to increase, it is becoming increasingly important that techniques for performing striping, stitching, and other image processing techniques be capable of processing print data both quickly and inexpensively.
- Subsets of the print data may be stored in multiple stages of buffers and processed in parallel to increase processing efficiency.
- Print data representing digital photographs may be processed sufficiently rapidly to enable continuous printing of digital photographs at high speeds.
- Parameters of the system such as print buffer size and interrupt frequency, may be varied in response to design requirements such as overall system cost.
- FIG. 1 is a flowchart of a method that is used in one embodiment of the present invention to perform a print job
- FIG. 2 is a functional block diagram of a system that performs the method of FIG. 1 according to one embodiment of the present invention
- FIG. 3 is a diagram illustrating the layout of a plurality of print heads according to one embodiment of the present invention.
- FIGS. 4A-4F are flowcharts of methods that are used by the printer of FIG. 2 to print a print job according to one embodiment of the present invention
- FIG. 5 illustrates the flow of print data through the printer of FIG. 2 according to one embodiment of the present invention
- FIG. 6 is a diagram of a print data file as it may be stored on a disk or other medium according to one embodiment of the present invention.
- FIG. 7A is a diagram illustrating a system for performing striping on print data according to one embodiment of the present invention.
- FIG. 7B is a diagram illustrating striped print data according to one embodiment of the present invention.
- FIG. 8 is a flowchart of a method that is used to perform striping on print data according to one embodiment of the present invention.
- FIG. 9 is a functional block diagram illustrating techniques for performing staggering on print data according to one embodiment of the present invention.
- FIG. 10 is a flowchart of a method for performing staggering on print data according to one embodiment of the present invention.
- FIG. 1 a flowchart is shown of a method 100 that is used in one embodiment of the present invention to perform a print job.
- FIG. 2 a functional block diagram is shown of a system 200 that includes a multi-head printer 202 that may perform the method 100 of FIG. 1 .
- the printer 202 receives print data 204 to be printed in a print job (step 102 ).
- the print data 204 may be any kind of data to print on an output medium.
- the print data 204 may, for example, be one or more color digital photographs or other digital images represented in a format suitable for input to the printer 202 .
- the printer 202 includes a striper 206 which receives the print data 204 and stripes it to produce striped print data 208 (step 104 ). Examples of particular techniques that may be used for performing striping will be described below with respect to FIG. 8 .
- the printer 202 includes a staggerer 210 which staggers the striped print data 208 to produce staggered print data 212 (step 106 ). Examples of particular techniques that may be used to performing staggering will be described below with respect to FIGS. 9-10 .
- the printer 202 also includes a stitcher 214 which receives the staggered print data 212 and stitches it to produce stitched print data 216 (step 108 ). Examples of particular techniques that may be used to performing stitching are described in the above-referenced patent application entitled “Image Stitching for a Multi-Head Printer.”
- the printer 202 also includes a thermal history control engine 218 which performs thermal history control on the stitched printer data 116 to produce thermal history control-adjusted print data 220 (step 110 ). Examples of particular techniques that may be used to performing thermal history control are described in commonly-owned patent application Ser. No. 09/934,703, filed on Aug. 22, 2001, entitled “Thermal Response Correction System.”
- the printer 202 also includes a print engine 222 which renders and prints the thermal history control-adjusted print data 220 , thereby producing printed output 224 .
- a print engine 222 which renders and prints the thermal history control-adjusted print data 220 , thereby producing printed output 224 .
- Examples of the print engine 222 are described in the above-referenced patent application entitled “Image Stitching for a Multi-Head Printer.”
- the printed output 224 may, for example, be one or more color digital photographs or other image printed on a wide-format output medium.
- FIG. 3 a diagram is shown of the layout of a plurality of print heads 304 a - f and 306 a - f according to one embodiment of the present invention.
- the print heads 304 a - f and 306 a - f may, for example, be part of the print engine 222 ( FIG. 2 ).
- magenta/yellow (M/Y) print heads 304 a - f and six cyan (C) print heads 306 a - f there are six magenta/yellow (M/Y) print heads 304 a - f and six cyan (C) print heads 306 a - f .
- the techniques disclosed herein may, however, be used in conjunction with any number of print heads of any kind. For example, there may be separate magenta and yellow print heads, rather than the combined magenta/yellow print heads 304 a - f shown in FIG. 3 .
- the print 304 a - f and 306 a - f are described herein as having particular dimensions, resolutions, and other properties, embodiments of the present invention are not limited to use in conjunction with print heads having such properties.
- Print heads 304 a - f and 306 a - f print output on an output medium 302 which passes underneath the print heads 304 a - f and 306 a - f in down-web direction 308 a .
- the output medium is 37 inches wide (i.e., in cross-web direction 308 b ).
- each of the print heads 304 a - f and 306 a - f prints on the portion of the output medium 302 that is underneath the print head at that time.
- the output medium 302 moves in the down-web direction 308 a at a speed of 0.5 inches per second.
- each of the print heads 304 a - f and 306 a - f is 6.4 inches wide and has a resolution of 300 dots per inch (dpi).
- each of the print heads 304 a - f and 306 a - f includes 1920 print head elements and therefore prints lines of pixels that are 1920 pixels wide (i.e., in cross-web direction 308 b ).
- Print heads 304 a - f and 308 a - f are arranged in rows 316 a - d . More specifically, row 316 a contains magenta/yellow print heads 304 a , 304 c , and 304 e ; row 316 b contains cyan print heads 306 a , 306 c , and 306 e ; row 316 c contains magenta/yellow print heads 304 b , 304 d , and 304 f ; and row 316 d contains cyan print heads 306 b , 306 d , and 306 f.
- Print heads 304 a - f and 306 a - f are also arranged in columns 318 a - f More specifically, column 318 a contains magenta/yellow print head 304 a and cyan print head 306 a ; column 318 b contains magenta/yellow print head 304 b and cyan print head 306 b ; column 318 c contains magenta/yellow print head 304 c and cyan print head 306 c ; column 318 d contains magenta/yellow print head 304 d and cyan print head 306 d ; column 318 e contains magenta/yellow print head 304 e and cyan print head 306 e ; and column 318 f contains magenta/yellow print head 304 f and cyan print head 306 f.
- a pixel “line” refers herein to a single row of 11,100 pixels.
- Print heads 304 a - f and 306 a - f are distributed within columns 318 a - f such that each pixel in a line is printed by at least one of the magenta/yellow print heads 304 a - e and at least one of the cyan print heads 306 a - f.
- Print heads 304 a - f and 306 a - f are also arranged so that there is some cross-web overlap between the output of the print heads 304 a - f and 306 a - f .
- columns 318 e and 318 f overlap in region 310 .
- Region 310 includes 84 pixels (0.28 inches) in the cross-web direction 308 b in which the output of heads 304 e and 306 e overlaps with the output of heads 304 f and 306 f .
- Region 310 is an example of a stitching region in which stitching techniques, such as those disclosed in the above-referenced patent application entitled “Image Stitching for a Multi-Head Printer,” may be employed.
- Print heads in each of the columns 318 a - f are separated from each other by one inch in the down-web direction 308 a .
- magenta/yellow head 304 c is separated by one inch 314 a from cyan head 306 c in the down-web direction 308 a
- magenta/yellow head 304 d is separated by one inch 314 b from cyan head 306 d in the down-web direction 308 a.
- Print heads of the same color in different ones of the rows 316 a - d are separated from each other by four inches in the down-web direction.
- magenta/yellow head 304 e (in row 316 a ) is separated by four inches 312 a from magenta/yellow head 304 f (in row 316 c )
- cyan head 306 a (in row 316 b ) is separated by four inches 312 b from cyan head 306 b in the down-web direction 308 a .
- the particular arrangement of the print heads 304 a - f and 303 a - f illustrated in FIG. 3 is provided merely for purposes of example and does not constitute a limitation of the present invention.
- the print engine 222 may stop and restart at various times during the print job, thereby increasing the total time required to print the job. Furthermore, starting and stopping the print engine 222 causes “banding” to appear in the printed output 224 as the result of thermal bleed caused by the stalled print heads. Such banding typically makes the printed output 224 unacceptable for use, thereby requiring the print data 204 to be reprinted. As the speed of print engines continues to increase it is becoming increasingly necessary to perform processing on print data (such as the processing performed by the method 100 illustrated in FIG. 1 ) as efficiently as possible to ensure that print data may be provided continuously to the print engine 222 .
- FIG. 5 a functional block diagram is shown of a system 250 which includes the printer 202 of FIG. 2 . While FIG. 2 illustrates the image processing steps that may be performed on the print data 204 , FIG. 5 illustrates the flow of the print data 204 through the printer 202 in a manner intended to maximize the efficiency of printing according to one embodiment of the present invention. Referring to FIGS. 4A-4F , flowcharts are shown of methods that are used by the printer 202 to perform printing according to one embodiment of the present invention.
- the system 250 includes a print source 252 which provides the print data 204 to the printer 202 .
- the print source 252 may be a personal computer, digital camera, scanner, or any other source of the print data 204 .
- the printer 202 includes a receive controller 254 , a front end 258 , and a back end 262 . Functions performed by the print source 252 , receive controller 254 , front end 258 , and back end 262 will now be described with respect to FIGS. 4A-4F .
- the print job includes a plurality of digital images, although the print job may include any kind of print data.
- Each of the images may, for example, be a distinct page in a multi-page document.
- each of the images may be an image in a single-image document, such as a digital photograph, in which case the “print job” described below may include multiple distinct print jobs (one for each digital image) or a single print job which includes each of the images as a separate page.
- Various techniques for generating and formatting print jobs are well-known to those having ordinary skill in the art, and the particular examples just described do not constitute limitations of the present invention.
- the print source 252 enters a loop over each image I in the plurality of images to print (step 402 ).
- the print source 252 transmits image I (in the form of print data 204 ) to the printer 202 (step 404 ).
- the print source 252 waits for an acknowledgement 266 from the printer 202 that the printer 202 has received the print data 204 (step 406 ).
- the print source 252 repeats steps 404 - 406 for the remaining images (step 408 ).
- the printer 202 may begin printing one or more of the images in the print job before the print source 252 has finished transmitting all of the images to the printer 202 .
- the receive controller 254 includes a first receive buffer 256 a and a second receive buffer 256 b .
- the receive controller 254 stores incoming print jobs in alternating ones of the receive buffers 256 a - b .
- the receive controller 254 initializes a variable ReceiveBuf to a value of 1 (step 412 ), indicating that the next print job is to be stored in the first receive buffer 256 a.
- the receive controller 254 receives the next image (in the form of print data 204 ) from the print source 252 over connection 264 a (step 414 ) and stores the image in the receive buffer indicated by the value of ReceiveBuf (step 416 ).
- the receive controller 254 transmits receipt acknowledgement 266 to the print source 252 (step 418 ).
- the receive controller 254 initializes a variable OldReceiveBuf to be equal to the value of ReceiveBuf (step 420 ).
- the function performed by the variable OldReceiveBuf will be described in more detail below.
- the receive controller 254 toggles the value of ReceiveBuf (step 422 ).
- the receive controller 254 may begin to receive the next image from the print source 252 after step 422 , concurrently with execution of the remaining steps of method 410 .
- the receive controller 254 resumes execution of the method 410 beginning with step 414 .
- the method 410 stripes, staggers, and stitches the print data in the receive buffer indicated by the value of OldReceiveBuf and stores the stitched print data back in the receive buffer indicated by OldReceiveBuf (step 424 ).
- Step 424 may be performed by the receive controller 254 or other component of the printer 202 , and may be performed, for example, using the techniques described above with respect to steps 104 - 108 of method 100 .
- the receive controller 254 transmits the stitched print data to the front end 258 over bus 264 b (step 426 ), where it is further processed as described below with respect to FIGS. 4C and 4E .
- step 426 is performed after an entire image is received from the print source 252 , this is not a requirement of the present invention.
- the receive controller 254 may, for example, begin transmitting the stitched print data to the front end 258 before the entire image is received if the print source 252 is known or expected to be capable of providing data to the receive controller 254 as quickly as such data can be consumed by the printer 202 .
- the front end 258 includes two front end buffers 260 a - b and that the back end 262 includes two back end buffers 264 a - b .
- the receive controller 254 , front end 258 , and back end 262 may, for example, be software programs, and the receive buffers 256 a - b , front end buffers 264 a - b , and back end buffers 264 a - b may, for example, be regions of memory (e.g., RAM) or a hard disk or other persistent storage medium.
- the front end 258 and back end 262 are coupled over a high-speed link 264 c , such as a PCI bus.
- the front end 258 receives two buffers of print data from the receive controller 254 , stores the data in the first and second front end buffers 260 a - b , and transmits the data to the first and second back end buffers 264 a - b , before the printer 202 begins printing.
- the frond end 258 receives a first set of print data from the receive controller 254 (transmitted in step 426 , FIG. 4B ) and stores the first set of print data in the first front end buffer 260 a (step 442 ).
- the front end 258 may receive print data from the receive controller 254 and continuously store it in the first front end buffer 260 a until the buffer 260 a is full.
- the front end 258 or other component of the printer 202 performs thermal history control on the first set of print data (using, for example, the techniques described above with respect to step 110 in FIG. 1 ) (step 444 ) and transmits the resulting set of print data to the back end 262 (step 446 ), where it is stored in the first back end buffer 264 a.
- the front end 258 then processes the second set of print data from the receive controller 254 in the same way. More specifically, the front end receives the second set of print data from the receive controller 254 and stores it in the second front end buffer 260 b (step 448 ). The front end 258 performs thermal history control on the second set of print data (step 450 ) and transmits the resulting processed print data to the back end 262 (step 452 ), where it is stored in the second back end buffer 264 b.
- a flowchart is shown of a method 460 that is performed by the back end 262 at the beginning of a print job, i.e., before the print engine 222 has begun printing.
- the back end 258 receives the first two sets of print data from the front end 258 , stores them in the back end buffers 264 a - b , and then transmits them to the print engine 222 for printing.
- the back end 262 receives a first set of print data from the front end 258 (transmitted in step 446 , FIG. 4C ) and stores the first set of print data in the first back end buffer 264 a (step 462 ).
- the back end 262 receives a second set of print data from the front end 258 and stores the second set of print data in the second back end buffer 264 b (step 464 ).
- the back end 262 then begins transmitting the first set of processed print data 266 to the print engine 222 , which begins printing the processed print data 266 .
- FIGS. 4E-4F flowcharts are shown of method 470 and 480 which are performed by the front end 258 and back end 262 , respectively, after the initiation of printing (i.e., after performance of methods 440 and 460 ) according to one embodiment of the present invention.
- Method 480 will be described first.
- the back end 262 begins transmitting print data 266 to the print engine 222 for printing after the front end 258 has filled both buffers 264 a - b .
- the back end 262 continues providing print data 266 from the first buffer 264 a to the print engine 222 .
- the back end 262 finishes providing print data from the first back end buffer 264 a to the print engine 222 (step 482 )
- the first buffer 264 a will be empty.
- the back end 262 transmits a request (over bus 264 c ) to the front end 258 for the next set of print data to print (step 484 ).
- the back end 262 begins printing the set of print data stored in the other buffer 264 b (step 486 ). Note that step 486 may be performed while the back end 262 is receiving the next set of print data from the front end 258 .
- the method 480 is described with respect to printing from the first buffer 264 a , the method 480 applies more generally to printing from either of the buffers 264 a - b.
- the front end 258 when the front end 258 receives a request from the back end 262 (transmitted in step 484 ) for the next set of print data (step 472 ), the front end 258 transmits the next set of print data (from the current one of the front end buffers 260 a - b ) to the back end 262 (step 474 ), where the set of print data is stored in the empty one of the back end buffers 264 a - b .
- the front end 258 may toggle between the front end buffers 260 a - b as the source of the next set of print data to transmit to the back end 262 .
- the receive controller 254 receives two buffers of print data, performs striping, staggering, and stitching on them, and transmits the print data to the front end 258 , which stores the print data in front end buffers 260 a - b .
- the front end 258 performs thermal history control on the print data and transmits the print data to the back end 262 , where it is stored in the back end buffers 264 a - b .
- the back end 262 begins transmitting processed print data 266 to the print engine 222 , which begins printing the print data 266 .
- the back end 262 transmits a request (e.g., interrupt) to the front end 258 , in response to which the front end 258 transmits another buffer of data to the back end 262 , where the data is stored in the empty back end buffer.
- a request e.g., interrupt
- the front end 258 receives additional data from the receive controller 254 and stores it in the empty front end buffer.
- the techniques described above with respect to FIGS. 4A-4F may therefore be used to perform image processing steps such as striping, staggering, stitching, and thermal history control on a print job in a manner which enables processed print data 266 to be provided efficiently to the print engine 222 , so that such print data 266 may always be available for printing by the print engine 222 during execution of the print job.
- the print engine 222 may print the entire print job without stopping, thereby minimizing the total time required to print the print job.
- FIG. 6 a diagram is shown of a print data file 600 as it may be stored on a disk or other medium.
- Examples of data which may be represented in the format shown in FIG. 6 include the print data 204 that is transmitted to the printer 202 ( FIG. 2 ) and the print data stored in the receive buffers 256 a - b , front end buffers 260 a - b , and back end buffers 264 a - b ( FIG. 5 ).
- the print data 204 are stored in the format shown in FIG. 6 .
- Print data are arranged in the print data file 600 in alternating lines of cyan, magenta, and yellow pixels. Although only a select number of lines 702 a - 1 are shown in FIG. 6 , in practice the print data file 600 may include as many lines as are needed to represent all of the print data 204 . Each of the lines 702 a - 1 represents a full line (i.e., row) of pixels in the cross-web direction 308 b ( FIG. 3 ). For example, if the output medium 302 of FIG. 3 were used, each of the lines 702 a - l would contain 11,100 pixels.
- line 702 a contains the first line of cyan pixels in the print data 204
- line 702 b contains the first line of magenta pixels in the print data 204
- line 702 c contains the first line of yellow pixels in the print data 204
- Line 702 d contains the second line of cyan pixels in the print data 204
- line 702 e contains the second line of magenta pixels in the print data 204
- line 702 f contains the second line of yellow pixels in the print data 204 .
- Line 702 g contains the 300 th line of cyan pixels in the print data 204
- line 702 h contains the 300 th line of magenta pixels in the print data 204
- line 702 i contains the 300 th line of yellow pixels in the print data 204 .
- the intervening lines 2 - 299 of print data 204 are not shown in FIG. 6 .
- line 702 j contains the nth line of cyan pixels in the print data 204
- line 702 e contains the nth line of magenta pixels in the print data 204
- line 702 f contains the nth line of yellow pixels in the print data 204 , where n is the total number of lines in the print data 204 .
- the intervening lines 301 -( n ⁇ 1) of print data 204 are not shown in FIG. 6 .
- the front end buffers 260 a - b and back end buffers 264 a - b are subdivided into smaller buffers, each of which corresponds to one of the print heads 304 a - f and 306 a - f .
- FIG. 7A a diagram is shown illustrating the front end buffers 260 a - b according to one embodiment of the present invention.
- the first front end buffer 260 a includes cyan print buffers 706 a - f , magenta print buffers 708 a - f , and yellow print buffers 710 a - f .
- the second front end buffer 260 b includes cyan print buffers 716 a - f , magenta print buffers 718 a - f , and yellow print buffers 720 a - f.
- Each of the sub-buffers in buffers 260 a - b stores print data for a particular one of the print heads 304 a - f and 306 a - f .
- print buffer 706 a stores print data to be printed by cyan print head 306 a
- print buffer 706 b stores print data to be printed by cyan print head 306 b
- print buffers 708 a and 710 a store print data to be printed by magenta/yellow print head 304 a
- print buffers 708 b and 710 b store print data to be printed by magenta/yellow print head 304 b , and so on.
- the sub-buffers in the second front end buffer 260 b are arranged in the same manner as the sub-buffers in the first front end buffer 260 a . Furthermore, the sub-buffers (not shown) in the receive buffers 256 a - b and the back end buffers 264 a - b may also be arranged in the manner shown in FIG. 7A .
- FIG. 7B a diagram is shown of a particular example of the striped print data 208 as it may be stored by the striper 206 in the print buffers 260 a - b .
- Data in the back end print buffers 264 a - b may be stored in the same arrangement as that illustrated in FIG. 7B .
- the following explanation of the arrangement of striped data illustrated in FIG. 7B will facilitate explanation of techniques that may be used by the striper 206 to generate the striped print data 208 .
- cyan print buffers 706 a - f 300 lines of cyan print data are stored in cyan print buffers 706 a - f , although only buffers 706 a , 706 b , and 706 f are shown for ease of illustration.
- the cyan print data are divided in the cross-web direction among buffers 706 a - f as follows.
- Cyan print buffer 706 a includes pixels 1 - 1920 of each of the 300 lines of cyan print data.
- the first line 752 a of buffer 706 a includes pixels 1 - 1920 of the first line of cyan print data
- the last (300 th ) line 752 b of buffer 706 a includes pixels 1 - 1920 of the 300 th line of cyan print data.
- Cyan print buffer 706 b includes pixels 1837 - 3756 of each of the 300 lines of cyan print data.
- the first line 754 a of buffer 706 b includes pixels 1837 - 3756 of the first line of cyan print data
- the last (300 th ) line 754 b of buffer 706 b includes pixels 1837 - 3756 of the 300 th line of cyan print data.
- the first line 756 a of cyan print buffer 706 f includes pixels 11 , 017 - 11 , 100 of the first line of cyan print data
- the (300 th ) line 756 b of buffer 706 f includes pixels 11 , 017 - 11 , 1000 of the 300 th line of cyan print data.
- both buffers 706 a - b contain pixels 1837 - 1920 of each of the 300 lines of cyan print data.
- This overlap represents the 84-pixel overlap region 310 between cyan print head 306 a and cyan print head 306 b ( FIG. 3 )
- buffers 706 b - f have similar overlaps of duplicated print data.
- the data stored in magenta print buffers 708 a - f and yellow print buffers 710 a - f is arranged in the same manner as just described with respect to cyan print buffers 706 a - f.
- the striper 206 may performing striping on print data 204 to produce striped print data 208 .
- the striper 206 (1) divides the print data 204 into vertical stripes (i.e., columns) of data, each of which is suitable for printing by one of the plurality of print heads 304 a - f and 306 a - f , and (2) stores the striped data in front end print buffers 260 a - b in the arrangement illustrated in FIG. 7B Referring to FIG.
- FIG. 8 a flowchart is shown of a method 800 that is performed by the striper 206 in one embodiment of the present invention to stripe the print data 204 and thereby to produce the striped print data 208 ( FIG. 1 , step 104 ).
- the following description of the method 800 also makes reference to FIG. 7A , which illustrates the striping of print data 204 by striper 206 .
- the method 800 initializes the value LC of a line counter 722 b to an initial value (e.g., 1) (step 802 ).
- the line counter 722 b specifies the line number of the first line of print data 204 that should be stored in the print buffers 260 a - b .
- the method 800 identifies the size 722 c (in lines) of each print head buffer (step 804 ).
- the term “print head buffer” refers to a buffer associated with an individual print head. For example, each of the buffers 706 a - f is a print head buffer.
- the interrupt frequency 722 a is the frequency at which the back end 262 interrupts the front end 258 to request additional print data.
- the value of the size 722 c may be selected to be large enough to hold at least as many lines of print data as may be printed by the print engine 222 between such interrupts.
- the value of the size 722 c may be selected prior to initiation of the method 800 based on the down-web speed 722 g of the output medium 302 , the down-web resolution 722 h of the print heads 304 a - f and 306 a - f , and the interrupt frequency 722 a.
- the down-web speed 722 g of the output medium 302 is 0.5 inch/sec and the down-web resolution 722 h of the print heads 304 a - f and 306 a - f is 300 dpi.
- the interrupt frequency 722 a is one interrupt every two seconds
- the output medium 302 travels 1.0 inches between each pair of interrupts (0.5 inch/sec ⁇ 2.0 seconds)
- 300 lines are printed (300 dpi ⁇ 1.0 inches)
- the print buffer size 722 c should be at least 300 lines if the print buffers 702 a - b are to hold sufficient print data to enable the print heads 304 a - f and 306 a - f to print continuously between interrupts.
- the print buffer size 722 c is equal to 300 lines.
- the method 800 initializes a pixel counter PC 722 i to a value such as one (step 808 ).
- the method 800 identifies the width HW 722 e of each of the print heads 304 a - f and 306 a - f (step 810 ), and the width OW 722 j (in pixels) of the overlap region 310 (step 812 ).
- the method 800 enters a loop over a variable B (buffer) beginning with a value of 1 and ending with a value of HC (step 814 ).
- B buffer
- the buffers for a distinct one of the columns 318 a - f is filled with striped print data.
- the method 800 enters a loop over a variable H (head), which may take on values representing cyan, magenta, and yellow (step 816 ).
- H head
- the method 800 increases the value of the pixel counter 722 i by the width 722 e of a print head minus the width 722 j of the overlap region 310 .
- step 824 will assign the value 1837 (1+1920-84) to PC.
- Such a result comports with the pixel number of the pixels on the left edge of buffers 706 b , 708 b , and 710 b in FIG. 7B .
- the method 800 increments the value of B (step 824 ) and repeats steps 816 - 822 if B is not greater than HC.
- the method 800 thereby fills the next column of print head buffers. It should be appreciated that the remainder of the loop over B fills the remaining columns of print head buffers with print data in the manner illustrated in FIG. 7B .
- the striper 206 may store striped print data alternatively in the first and second print buffers 260 a - b .
- a bank flag 722 f may store a binary value that indicates in which of the two banks 260 a - b the striper 206 is to store striped print data 206 at any particular point in time.
- the bank flag 722 f may be coupled to a switch 724 which directs the output 208 of the striper 206 to the first bank 260 a when the bank flag 722 f is equal to zero, and which directs the output 208 of the striper 206 to the second bank 260 b when the bank flag 722 f is equal to one.
- the method 800 may toggle the value of the bank flag 722 f (step 826 ). The method 800 may then increase the value of the line counter 522 b by the value of S (step 828 ) and return to step 806 . Although not shown in FIG. 8 , the method 800 may not perform step 806 again until the next interrupt is received from the back end 262 , as described above with respect to step 472 of method 470 ( FIG. 4E ).
- the striper 206 stores striped print data 208 in print buffer 260 a on one pass of steps 806 - 824 .
- the bank flag 722 f is toggled (step 826 ) and steps 806 - 824 are next performed, the next set of S lines from the print data 204 will be striped and stored by the striper 206 in print buffer bank 260 b .
- the striper 206 will store striped print data in buffer 260 a . In this way, the striper 206 alternatively stores striped print data 206 in buffers 260 a and 260 b.
- the use of two buffer banks 260 a - b enables a new set of S lines of striped data 208 to be stored in one of the buffers 260 a - b while additional processing or printing is being performed on the striped print data in the other one of the buffers 260 a - b .
- a new set of striped data may always be available for printing immediately after the previous set of striped data has finished printing.
- the print heads 304 a - f and 306 a - f may be provided with data continuously, thereby enabling the printer 202 to print data at maximum efficiency.
- FIGS. 7B and 8 were described above with respect to the operation of the striper 206 , those having ordinary skill in the art will appreciate how to apply similar techniques to the operation of the staggerer 210 , the stitcher 214 , and the thermal history control engine 218 to process and print the print data 204 with a high degree of efficiency.
- staggerer 210 staggers the striped print data 208 to produce staggered print data 212 .
- staggering refers to the process of providing data to the print heads 304 a - f and 306 a - f in a sequence that takes into account the physical staggering of the print heads 304 a - f and 306 a - f in the down-web direction 308 a and which thereby provides the correct print data to the print heads 304 a - f and 306 a - f at the correct times.
- Performing staggering correctly also requires that the down-web print speed and down-web resolution be taken into account.
- magenta/yellow print heads 304 a - f The need for staggering may be appreciated by reference to FIG. 3 .
- the output medium 302 will first pass simultaneously under magenta/yellow print heads 304 a , 304 c , and 304 e , and then pass (8.0 seconds later in the present example) simultaneously under magenta/yellow print heads 304 b , 304 d , and 304 f .
- FIG. 9 a functional block diagram is shown which illustrates the operation of the staggerer 210 in more detail according to one embodiment of the present invention.
- FIG. 10 a flowchart is shown of a method 1000 for performing staggering according to one embodiment of the present invention.
- the method 1000 may, for example, be used by the staggerer 210 to stagger the striped print data 208 and thereby to produce staggered print data 212 ( FIG. 1 , step 106 ).
- a clock 902 outputs a time signal T 904 .
- the clock 902 may, for example, update the time signal T 904 at intervals equal to the period of a print head cycle.
- the staggerer 110 includes a set of time offsets 906 which indicates the amount of time by which the output produced by each of the print head rows 316 a - d ( FIG. 3 ) is offset from the time at which the first row 316 a produces output.
- ⁇ T(R) be the time offset for row R.
- ⁇ T( 0 ) 0 seconds
- ⁇ T( 1 ) 2 seconds
- ⁇ T( 2 ) 8 seconds
- ⁇ T( 3 ) 10 seconds.
- ⁇ T( 0 ) will always be equal to zero, since each value of ⁇ T(R) is relative to the value of ⁇ T( 0 ).
- the method 1000 receives the current value of T 904 (step 1002 ).
- the method 1000 enters a loop over each value of R (e.g., the values 0, 1, 2, and 3) (step 1006 ).
- the method 1000 determines whether T eff (R) ⁇ 0 for the current value of R (step 1008 ). If T eff (R) ⁇ 0, the method 1000 stores null data (e.g., zero values) in the buffers for row R (step 1010 ). Otherwise, the method 1000 stores the striped data 208 for time T eff (R) in the buffers for row R (step 1012 ).
- the striped data 208 for a print head in row R at time T eff (R) may, for example, be the striped print data 208 beginning at line number T eff (R) times the down-web resolution of the print head times the down-web speed of the output medium 302 .
- steps 1008 - 1012 will now be described in more detail with respect to particular examples.
- T 0 seconds.
- Such striped print data would begin at line zero of the striped print data 208 . This is the correct result, since at the beginning of printing the output medium 302 would begin passing under the print heads 304 a , 304 c , and 304 e in row 316 a.
- the method 1000 would determine in step 1008 that T eff ( 1 ) is not less than zero, and therefore would store striped print data for time T eff ( 1 ) (e.g., 0 seconds) in the print buffers for cyan print heads 306 a , 306 c , and 306 e . Such striped print data would begin at line 0 of the striped print data 208 .
- the method 1000 would determine in step 1008 that T eff ( 1 ) is not less than zero, and therefore would store striped print data for time T eff ( 1 ) (e.g., 6 seconds) in the print buffers for cyan print heads 306 a , 306 c , and 306 e . Such striped print data would begin at line 900 of the striped print data 208 .
- steps 1008 - 1012 should be clear from the description above.
- the time signal T 904 may be incremented for every line of striped print data 208 , it may be incremented in larger steps, in which case the number of lines of print data stored in the print buffers in steps 1010 - 1012 may be equal to the number of lines printed between updates of T. For example, if T is updated every 1.0 seconds, then steps 1010 - 1012 may each store 150 lines of print data (0.5 inch/sec*1.0 seconds*300 dots/inch), beginning at the line of print data corresponding to time T eff (R).
- the method 1000 repeats steps 1008 - 1012 for the remaining values of R (step 1014 ), thereby filling the buffers for the remaining rows 316 b - d either with subsets of the striped print data 208 or with null data.
- the method 1000 repeats steps 1004 - 1014 when it receive the next time signal T 904 from the clock 902
- One advantage of techniques disclosed herein is that they enabling image processing steps such as striping and staggering to be performed efficiently by organizing data in buffers having buffer sizes and associated interrupt frequencies selected to ensure that print data is provided continuously to the print heads in a multi-head printer.
- the architecture of such a printer is both modular and scalable and is therefore suitable for use with subsequent generations of printers as they increase in speed.
- RTOS real-time operating system
- the techniques disclosed herein may be employed to enable high-speed printing without the use of a real-time operating system and while keeping the amount of RAM needed in the printer to a minimum, thereby reducing the manufacturing cost of the printer even further.
- the minimum print buffer size is 105 lines (0.7*300*0.5, using the example figures described above).
- the total amount of RAM needed to implement buffers having this size may easily be calculated.
- Known amounts of additional RAM may be required for printer-resident software and other buffers.
- the minimum amount of RAM required to satisfy the minimum print buffer size required may therefore be calculated, allowing a printer which is capable of printing at maximum throughput to be manufactured at the minimum cost.
- the print quality may be improved by providing some data, whether it be actual print data or null data ( FIG. 10 ), to the print heads at all times during printing.
- the thermal history control engine 218 may operate optimally within a range of temperatures and may not perform well when used to produce data that is provided to “cold” print heads (i.e., print heads whose temperature is below the lower limit of the temperature range for which the thermal history control engine 218 is optimized).
- the print heads may be provided with preheat data, rather than null data, in step 1010 ( FIG. 10 ) without requiring any other changes to the method 1000 .
- the print heads may thereby be preheated so that the output of the thermal history control engine 218 is improved.
- null data may be provided to a print head if the print head is already warm (e.g., from a previous print job), while preheat data may be provided to the print head if the print head is cold.
- the techniques described above may be implemented, for example, in hardware, software, firmware, or any combination thereof.
- the techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device.
- Program code may be applied to input entered using the input device to perform the functions described and to generate output.
- the output may be provided to one or more output devices.
- Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language.
- the programming language may, for example, be a compiled or interpreted programming language.
- Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor.
- Method steps of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the invention by operating on input and generating output.
- Suitable processors include, by way of example, both general and special purpose microprocessors.
- the processor receives instructions and data from a read-only memory and/or a random access memory.
- Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays).
- a computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk.
Landscapes
- Record Information Processing For Printing (AREA)
- Electronic Switches (AREA)
- Printers Characterized By Their Purpose (AREA)
Abstract
Description
- 1. Field of the Invention
- The present invention relates to multi-head printers and, more particularly, to techniques for processing print data for printing by multi-head printers.
- 2. Related Art
- Various kinds of printers are well-known in the computer and digital imaging arts. Such printers include, for example, dot-matrix printers, laser printers, inkjet printers, and thermal printers. Thermal printers use thermal energy (heat) to produce printed output. More specifically, thermal printers typically contain a linear array of heating elements (also referred to herein as “print head elements”) that print on an output medium by, for example, transferring pigment from a donor sheet to the output medium or by initiating a color-forming reaction in the output medium. The output medium is typically a porous receiver receptive to the transferred pigment, or a paper coated with the color-forming chemistry. Each of the print head elements, when activated, forms color on the medium passing underneath the print head element, creating a spot having a particular density. Regions with larger or denser spots are perceived as darker than regions with smaller or less dense spots. Digital images are rendered as two-dimensional arrays of very small and closely-spaced spots.
- A thermal print head element is activated by providing it with energy. Providing energy to the print head element increases the temperature of the print head element, causing either the transfer of pigment to the output medium or the formation of color in the receiver. The density of the output produced by the print head element in this manner is a function of the amount of energy provided to the print head element. The amount of energy providing to the print head element may be varied by, for example, varying the amount of power to the print head element within a particular time interval or by providing power to the print head element for a longer time interval.
- A single thermal printer may include multiple thermal print heads, in which case the data to be printed is divided into a plurality of portions, referred to as “stripes,” each of which is printed by one of the print heads. The process of dividing the print data into stripes is referred to as “striping.” Multi-head thermal printers can be superior to single-head printers for cost and reliability reasons, particularly when wide printing is required. For example, the cost of a single wide head typically is significantly greater than the total cost of multiple small heads having the same aggregate width as the single wide head. Furthermore, the manufacturing yield for wide heads is very low compared to that of small heads. In addition, when a pixel fails in one print head in a multi-head printer, only the failing print head need be replaced, while the failure of a single printer in a single large print head requires the entire print head to be replaced at a much higher cost.
- The print heads in a multi-head printer may be staggered with respect to each other. One example of this kind of printer is described in U.S. Pat. No. 4,660,052 to Kaiya et al., and is described as a heat-sensitive recording apparatus with multiple thermal heads disposed in a staggered arrangement along two platen rollers. The apparatus has alternate image segments printed on a first platen roller by a first set of print heads. The intervening segments are filled in by a second set of print heads printing on a second platen roller. The heads are arranged such that the printing of the second set of print heads overlaps the printing of the first set of print heads, forming “stitching” regions between each pair of adjacent segments in which the printing may be adjusted to obscure the presence of a transition from one to the other.
- The use of stitching regions may create undesirable visible artifacts in the printed image if adequate preventative steps are not taken. Various techniques have been employed to “stitch” image segments within stitching regions so that the presence of the stitching regions is imperceptible to the greatest extent possible. Stitching techniques include techniques for performing image processing on stitched image segments prior to printing, mechanical techniques for properly printing stitched image segments with proper alignment, and combinations thereof. Particular examples of stitching techniques may be found, for example, in a commonly-owned patent application Ser. No. 10/374,847, filed on Feb. 25, 2003, and entitled “Image Stitching for a Multi-Head Printer.”
- Striping and stitching are merely two examples of kinds of processing that may need to be performed on print data before it is provided to the print heads for printing. As the speed of multi-head printers continues to increase and as price competition among printer manufacturers continues to increase, it is becoming increasingly important that techniques for performing striping, stitching, and other image processing techniques be capable of processing print data both quickly and inexpensively.
- Techniques are disclosed for performing processing, such as striping, staggering, and stitching, on print data prior to printing by a multi-head printer. Subsets of the print data may be stored in multiple stages of buffers and processed in parallel to increase processing efficiency. Print data representing digital photographs may be processed sufficiently rapidly to enable continuous printing of digital photographs at high speeds. Parameters of the system, such as print buffer size and interrupt frequency, may be varied in response to design requirements such as overall system cost.
- Other features and advantages of various aspects and embodiments of the present invention will become apparent from the following description and from the claims.
-
FIG. 1 is a flowchart of a method that is used in one embodiment of the present invention to perform a print job; -
FIG. 2 is a functional block diagram of a system that performs the method ofFIG. 1 according to one embodiment of the present invention; -
FIG. 3 is a diagram illustrating the layout of a plurality of print heads according to one embodiment of the present invention; -
FIGS. 4A-4F are flowcharts of methods that are used by the printer ofFIG. 2 to print a print job according to one embodiment of the present invention; -
FIG. 5 illustrates the flow of print data through the printer ofFIG. 2 according to one embodiment of the present invention; -
FIG. 6 is a diagram of a print data file as it may be stored on a disk or other medium according to one embodiment of the present invention; -
FIG. 7A is a diagram illustrating a system for performing striping on print data according to one embodiment of the present invention; -
FIG. 7B is a diagram illustrating striped print data according to one embodiment of the present invention; -
FIG. 8 is a flowchart of a method that is used to perform striping on print data according to one embodiment of the present invention; -
FIG. 9 is a functional block diagram illustrating techniques for performing staggering on print data according to one embodiment of the present invention; and -
FIG. 10 is a flowchart of a method for performing staggering on print data according to one embodiment of the present invention. - Examples of techniques will now be described for processing print data in a multi-head print data in accordance with embodiments of the present invention. Referring to
FIG. 1 , a flowchart is shown of amethod 100 that is used in one embodiment of the present invention to perform a print job. Referring toFIG. 2 , a functional block diagram is shown of asystem 200 that includes amulti-head printer 202 that may perform themethod 100 ofFIG. 1 . - The
printer 202 receivesprint data 204 to be printed in a print job (step 102). Theprint data 204 may be any kind of data to print on an output medium. Theprint data 204 may, for example, be one or more color digital photographs or other digital images represented in a format suitable for input to theprinter 202. Theprinter 202 includes astriper 206 which receives theprint data 204 and stripes it to produce striped print data 208 (step 104). Examples of particular techniques that may be used for performing striping will be described below with respect toFIG. 8 . Theprinter 202 includes astaggerer 210 which staggers thestriped print data 208 to produce staggered print data 212 (step 106). Examples of particular techniques that may be used to performing staggering will be described below with respect toFIGS. 9-10 . - The
printer 202 also includes astitcher 214 which receives the staggeredprint data 212 and stitches it to produce stitched print data 216 (step 108). Examples of particular techniques that may be used to performing stitching are described in the above-referenced patent application entitled “Image Stitching for a Multi-Head Printer.” Theprinter 202 also includes a thermalhistory control engine 218 which performs thermal history control on the stitched printer data 116 to produce thermal history control-adjusted print data 220 (step 110). Examples of particular techniques that may be used to performing thermal history control are described in commonly-owned patent application Ser. No. 09/934,703, filed on Aug. 22, 2001, entitled “Thermal Response Correction System.” - The
printer 202 also includes aprint engine 222 which renders and prints the thermal history control-adjustedprint data 220, thereby producing printedoutput 224. Examples of theprint engine 222 are described in the above-referenced patent application entitled “Image Stitching for a Multi-Head Printer.” The printedoutput 224 may, for example, be one or more color digital photographs or other image printed on a wide-format output medium. - Referring to
FIG. 3 , a diagram is shown of the layout of a plurality of print heads 304 a-f and 306 a-f according to one embodiment of the present invention. The print heads 304 a-f and 306 a-f may, for example, be part of the print engine 222 (FIG. 2 ). - In the particular example illustrated in
FIG. 3 , there are six magenta/yellow (M/Y) print heads 304 a-f and six cyan (C) print heads 306 a-f. The techniques disclosed herein may, however, be used in conjunction with any number of print heads of any kind. For example, there may be separate magenta and yellow print heads, rather than the combined magenta/yellow print heads 304 a-f shown inFIG. 3 . Furthermore, although the print 304 a-f and 306 a-f are described herein as having particular dimensions, resolutions, and other properties, embodiments of the present invention are not limited to use in conjunction with print heads having such properties. - Print heads 304 a-f and 306 a-f print output on an
output medium 302 which passes underneath the print heads 304 a-f and 306 a-f in down-web direction 308 a. In the particular example illustrated inFIG. 3 , the output medium is 37 inches wide (i.e., incross-web direction 308 b). At any particular point in time, each of the print heads 304 a-f and 306 a-f prints on the portion of theoutput medium 302 that is underneath the print head at that time. In the following discussion, it is assumed for purposes of example that theoutput medium 302 moves in the down-web direction 308 a at a speed of 0.5 inches per second. - In one embodiment of the present invention, each of the print heads 304 a-f and 306 a-f is 6.4 inches wide and has a resolution of 300 dots per inch (dpi). As a result, each of the print heads 304 a-f and 306 a-f includes 1920 print head elements and therefore prints lines of pixels that are 1920 pixels wide (i.e., in
cross-web direction 308 b). - Print heads 304 a-f and 308 a-f are arranged in rows 316 a-d. More specifically, row 316 a contains magenta/yellow print heads 304 a, 304 c, and 304 e;
row 316 b contains cyan print heads 306 a, 306 c, and 306 e;row 316 c contains magenta/yellow print heads 304 b, 304 d, and 304 f; androw 316 d contains cyan print heads 306 b, 306 d, and 306 f. - Print heads 304 a-f and 306 a-f are also arranged in columns 318 a-f More specifically,
column 318 a contains magenta/yellow print head 304 a andcyan print head 306 a;column 318 b contains magenta/yellow print head 304 b andcyan print head 306 b;column 318 c contains magenta/yellow print head 304 c andcyan print head 306 c;column 318 d contains magenta/yellow print head 304 d andcyan print head 306 d;column 318 e contains magenta/yellow print head 304 e andcyan print head 306 e; andcolumn 318 f contains magenta/yellow print head 304 f andcyan print head 306 f. - Assume that pixels are numbered in the
cross-web direction 308 b beginning withpixel 1 on the right-hand side ofFIG. 3 and ending with pixel 11,100 (300 dpi×37 inches) on the left-hand side ofFIG. 3 . A pixel “line” refers herein to a single row of 11,100 pixels. Print heads 304 a-f and 306 a-f are distributed within columns 318 a-f such that each pixel in a line is printed by at least one of the magenta/yellow print heads 304 a-e and at least one of the cyan print heads 306 a-f. - Print heads 304 a-f and 306 a-f are also arranged so that there is some cross-web overlap between the output of the print heads 304 a-f and 306 a-f. For example,
columns region 310.Region 310 includes 84 pixels (0.28 inches) in thecross-web direction 308 b in which the output ofheads heads Region 310 is an example of a stitching region in which stitching techniques, such as those disclosed in the above-referenced patent application entitled “Image Stitching for a Multi-Head Printer,” may be employed. - Print heads in each of the columns 318 a-f are separated from each other by one inch in the down-
web direction 308 a. For example, magenta/yellow head 304 c is separated by oneinch 314 a fromcyan head 306 c in the down-web direction 308 a, just as magenta/yellow head 304 d is separated by oneinch 314 b fromcyan head 306 d in the down-web direction 308 a. - Print heads of the same color in different ones of the rows 316 a-d are separated from each other by four inches in the down-web direction. For example, magenta/
yellow head 304 e (inrow 316 a) is separated by fourinches 312 a from magenta/yellow head 304 f (inrow 316 c), andcyan head 306 a (inrow 316 b) is separated by fourinches 312 b fromcyan head 306 b in the down-web direction 308 a. The particular arrangement of the print heads 304 a-f and 303 a-f illustrated inFIG. 3 is provided merely for purposes of example and does not constitute a limitation of the present invention. - It is desirable to provide print data to the
print engine 222 quickly enough that theprint engine 222 is capable of continuously printing theprint data 204. If theprint data 204 cannot be provided to theprint data 204 sufficiently rapidly, theprint engine 222 may stop and restart at various times during the print job, thereby increasing the total time required to print the job. Furthermore, starting and stopping theprint engine 222 causes “banding” to appear in the printedoutput 224 as the result of thermal bleed caused by the stalled print heads. Such banding typically makes the printedoutput 224 unacceptable for use, thereby requiring theprint data 204 to be reprinted. As the speed of print engines continues to increase it is becoming increasingly necessary to perform processing on print data (such as the processing performed by themethod 100 illustrated inFIG. 1 ) as efficiently as possible to ensure that print data may be provided continuously to theprint engine 222. - Referring to
FIG. 5 , a functional block diagram is shown of asystem 250 which includes theprinter 202 ofFIG. 2 . WhileFIG. 2 illustrates the image processing steps that may be performed on theprint data 204,FIG. 5 illustrates the flow of theprint data 204 through theprinter 202 in a manner intended to maximize the efficiency of printing according to one embodiment of the present invention. Referring toFIGS. 4A-4F , flowcharts are shown of methods that are used by theprinter 202 to perform printing according to one embodiment of the present invention. - Referring to
FIG. 5 , thesystem 250 includes aprint source 252 which provides theprint data 204 to theprinter 202. Theprint source 252 may be a personal computer, digital camera, scanner, or any other source of theprint data 204. Theprinter 202 includes a receivecontroller 254, afront end 258, and aback end 262. Functions performed by theprint source 252, receivecontroller 254,front end 258, andback end 262 will now be described with respect toFIGS. 4A-4F . - Referring to
FIG. 4A , a flowchart is shown of a method 400 that is performed by theprint source 252 to print a print job according to one embodiment of the present invention. Assume for purposes of the following discussion that the print job includes a plurality of digital images, although the print job may include any kind of print data. Each of the images may, for example, be a distinct page in a multi-page document. Alternatively, each of the images may be an image in a single-image document, such as a digital photograph, in which case the “print job” described below may include multiple distinct print jobs (one for each digital image) or a single print job which includes each of the images as a separate page. Various techniques for generating and formatting print jobs are well-known to those having ordinary skill in the art, and the particular examples just described do not constitute limitations of the present invention. - The
print source 252 enters a loop over each image I in the plurality of images to print (step 402). Theprint source 252 transmits image I (in the form of print data 204) to the printer 202 (step 404). Theprint source 252 waits for anacknowledgement 266 from theprinter 202 that theprinter 202 has received the print data 204 (step 406). Theprint source 252 repeats steps 404-406 for the remaining images (step 408). As will be described in more detail below, theprinter 202 may begin printing one or more of the images in the print job before theprint source 252 has finished transmitting all of the images to theprinter 202. - Referring to
FIG. 4B , a flowchart is shown of amethod 410 that is performed by the receivecontroller 254 according to one embodiment of the present invention. As shown inFIG. 5 , the receivecontroller 254 includes a first receivebuffer 256 a and a second receivebuffer 256 b. In general, the receivecontroller 254 stores incoming print jobs in alternating ones of the receive buffers 256 a-b. Referring toFIG. 4B , the receivecontroller 254 initializes a variable ReceiveBuf to a value of 1 (step 412), indicating that the next print job is to be stored in the first receivebuffer 256 a. - The receive
controller 254 receives the next image (in the form of print data 204) from theprint source 252 overconnection 264 a (step 414) and stores the image in the receive buffer indicated by the value of ReceiveBuf (step 416). In the present embodiment, ReceiveBuf=1 indicates receivebuffer 256 a and ReceiveBuf=2 indicates receivebuffer 256 b. The receivecontroller 254 transmitsreceipt acknowledgement 266 to the print source 252 (step 418). - The receive
controller 254 initializes a variable OldReceiveBuf to be equal to the value of ReceiveBuf (step 420). The function performed by the variable OldReceiveBuf will be described in more detail below. - The receive
controller 254 toggles the value of ReceiveBuf (step 422). In the present embodiment, step 422 may be implemented using the assignment ReceiveBuf=(3-ReceiveBuf). More generally, if there are more than two receive buffers, the value of ReceiveBuf may be cycled through its permissible range of values in a round robin fashion or other manner. As a result of toggling or otherwise changing the value of ReceiveBuf, the receivecontroller 254 will store the next received image in a different receive buffer than that indicated by the previous value of ReceiveBuf. - Note that the receive
controller 254 may begin to receive the next image from theprint source 252 afterstep 422, concurrently with execution of the remaining steps ofmethod 410. When the receivecontroller 254 receives the next image from theprint source 252, the receivecontroller 254 resumes execution of themethod 410 beginning withstep 414. - The
method 410 stripes, staggers, and stitches the print data in the receive buffer indicated by the value of OldReceiveBuf and stores the stitched print data back in the receive buffer indicated by OldReceiveBuf (step 424). Step 424 may be performed by the receivecontroller 254 or other component of theprinter 202, and may be performed, for example, using the techniques described above with respect to steps 104-108 ofmethod 100. The receivecontroller 254 transmits the stitched print data to thefront end 258 overbus 264 b (step 426), where it is further processed as described below with respect toFIGS. 4C and 4E . Althoughstep 426 is performed after an entire image is received from theprint source 252, this is not a requirement of the present invention. The receivecontroller 254 may, for example, begin transmitting the stitched print data to thefront end 258 before the entire image is received if theprint source 252 is known or expected to be capable of providing data to the receivecontroller 254 as quickly as such data can be consumed by theprinter 202. - Operation of the
front end 258 andback end 262 will now be described according to one embodiment of the present invention. Note that thefront end 258 includes two front end buffers 260 a-b and that theback end 262 includes two back end buffers 264 a-b. The receivecontroller 254,front end 258, andback end 262 may, for example, be software programs, and the receive buffers 256 a-b, front end buffers 264 a-b, and back end buffers 264 a-b may, for example, be regions of memory (e.g., RAM) or a hard disk or other persistent storage medium. Although two receive buffers 256 a-b, two front end buffers 260 a-b, and two back end buffers 264 a-b are shown inFIG. 5 , the there may be any number of such buffers. In one embodiment of the present invention, thefront end 258 andback end 262 are coupled over a high-speed link 264 c, such as a PCI bus. - Referring to
FIG. 4C , a flowchart is shown of amethod 440 that is performed by thefront end 258 at the beginning of a print job. In general, thefront end 258 receives two buffers of print data from the receivecontroller 254, stores the data in the first and second front end buffers 260 a-b, and transmits the data to the first and second back end buffers 264 a-b, before theprinter 202 begins printing. - More specifically, the
frond end 258 receives a first set of print data from the receive controller 254 (transmitted instep 426,FIG. 4B ) and stores the first set of print data in the firstfront end buffer 260 a (step 442). In practice thefront end 258 may receive print data from the receivecontroller 254 and continuously store it in the firstfront end buffer 260 a until thebuffer 260 a is full. - The
front end 258 or other component of theprinter 202 performs thermal history control on the first set of print data (using, for example, the techniques described above with respect to step 110 inFIG. 1 ) (step 444) and transmits the resulting set of print data to the back end 262 (step 446), where it is stored in the firstback end buffer 264 a. - The
front end 258 then processes the second set of print data from the receivecontroller 254 in the same way. More specifically, the front end receives the second set of print data from the receivecontroller 254 and stores it in the secondfront end buffer 260 b (step 448). Thefront end 258 performs thermal history control on the second set of print data (step 450) and transmits the resulting processed print data to the back end 262 (step 452), where it is stored in the secondback end buffer 264 b. - Referring to
FIG. 4D , a flowchart is shown of amethod 460 that is performed by theback end 262 at the beginning of a print job, i.e., before theprint engine 222 has begun printing. In general, theback end 258 receives the first two sets of print data from thefront end 258, stores them in the back end buffers 264 a-b, and then transmits them to theprint engine 222 for printing. - More specifically, the
back end 262 receives a first set of print data from the front end 258 (transmitted instep 446,FIG. 4C ) and stores the first set of print data in the firstback end buffer 264 a (step 462). Theback end 262 receives a second set of print data from thefront end 258 and stores the second set of print data in the secondback end buffer 264 b (step 464). Theback end 262 then begins transmitting the first set of processedprint data 266 to theprint engine 222, which begins printing the processedprint data 266. - Referring to
FIGS. 4E-4F , flowcharts are shown ofmethod front end 258 andback end 262, respectively, after the initiation of printing (i.e., after performance ofmethods 440 and 460) according to one embodiment of the present invention.Method 480 will be described first. - As described above with respect to
FIG. 4D , theback end 262 begins transmittingprint data 266 to theprint engine 222 for printing after thefront end 258 has filled both buffers 264 a-b. Theback end 262 continues providingprint data 266 from thefirst buffer 264 a to theprint engine 222. When theback end 262 finishes providing print data from the firstback end buffer 264 a to the print engine 222 (step 482), thefirst buffer 264 a will be empty. Upon sensing that thefirst buffer 264 a is empty, theback end 262 transmits a request (overbus 264 c) to thefront end 258 for the next set of print data to print (step 484). Theback end 262 begins printing the set of print data stored in theother buffer 264 b (step 486). Note thatstep 486 may be performed while theback end 262 is receiving the next set of print data from thefront end 258. Although themethod 480 is described with respect to printing from thefirst buffer 264 a, themethod 480 applies more generally to printing from either of the buffers 264 a-b. - Referring to
FIG. 4E , when thefront end 258 receives a request from the back end 262 (transmitted in step 484) for the next set of print data (step 472), thefront end 258 transmits the next set of print data (from the current one of the front end buffers 260 a-b) to the back end 262 (step 474), where the set of print data is stored in the empty one of the back end buffers 264 a-b. Thefront end 258 may toggle between the front end buffers 260 a-b as the source of the next set of print data to transmit to theback end 262. - In summary, at the beginning of a print job, the receive
controller 254 receives two buffers of print data, performs striping, staggering, and stitching on them, and transmits the print data to thefront end 258, which stores the print data in front end buffers 260 a-b. Thefront end 258 performs thermal history control on the print data and transmits the print data to theback end 262, where it is stored in the back end buffers 264 a-b. Once both of the back end buffers 264 a-b are full, theback end 262 begins transmitting processedprint data 266 to theprint engine 222, which begins printing theprint data 266. When either of the back end buffers 264 a-b has been emptied of data, theback end 262 transmits a request (e.g., interrupt) to thefront end 258, in response to which thefront end 258 transmits another buffer of data to theback end 262, where the data is stored in the empty back end buffer. Similarly, when one of the front end buffers 260 a-b has been emptied of data, thefront end 258 receives additional data from the receivecontroller 254 and stores it in the empty front end buffer. - The techniques described above with respect to
FIGS. 4A-4F may therefore be used to perform image processing steps such as striping, staggering, stitching, and thermal history control on a print job in a manner which enables processedprint data 266 to be provided efficiently to theprint engine 222, so thatsuch print data 266 may always be available for printing by theprint engine 222 during execution of the print job. As a result, theprint engine 222 may print the entire print job without stopping, thereby minimizing the total time required to print the print job. - Now referring to
FIG. 6 , a diagram is shown of a print data file 600 as it may be stored on a disk or other medium. Examples of data which may be represented in the format shown inFIG. 6 include theprint data 204 that is transmitted to the printer 202 (FIG. 2 ) and the print data stored in the receive buffers 256 a-b, front end buffers 260 a-b, and back end buffers 264 a-b (FIG. 5 ). In the following discussion it is assumed that theprint data 204 are stored in the format shown inFIG. 6 . - Print data are arranged in the print data file 600 in alternating lines of cyan, magenta, and yellow pixels. Although only a select number of lines 702 a-1 are shown in
FIG. 6 , in practice the print data file 600 may include as many lines as are needed to represent all of theprint data 204. Each of the lines 702 a-1 represents a full line (i.e., row) of pixels in thecross-web direction 308 b (FIG. 3 ). For example, if theoutput medium 302 ofFIG. 3 were used, each of the lines 702 a-l would contain 11,100 pixels. - More specifically, line 702 a contains the first line of cyan pixels in the
print data 204, line 702 b contains the first line of magenta pixels in theprint data 204, and line 702 c contains the first line of yellow pixels in theprint data 204. Line 702 d contains the second line of cyan pixels in theprint data 204, line 702 e contains the second line of magenta pixels in theprint data 204, and line 702 f contains the second line of yellow pixels in theprint data 204. - Line 702 g contains the 300th line of cyan pixels in the
print data 204, line 702 h contains the 300th line of magenta pixels in theprint data 204, and line 702 i contains the 300th line of yellow pixels in theprint data 204. For ease of illustration, the intervening lines 2-299 ofprint data 204 are not shown inFIG. 6 . Finally, line 702 j contains the nth line of cyan pixels in theprint data 204, line 702 e contains the nth line of magenta pixels in theprint data 204, and line 702 f contains the nth line of yellow pixels in theprint data 204, where n is the total number of lines in theprint data 204. For ease of illustration, the intervening lines 301-(n−1) ofprint data 204 are not shown inFIG. 6 . - In one embodiment of the present invention, the front end buffers 260 a-b and back end buffers 264 a-b are subdivided into smaller buffers, each of which corresponds to one of the print heads 304 a-f and 306 a-f. For example, referring to
FIG. 7A , a diagram is shown illustrating the front end buffers 260 a-b according to one embodiment of the present invention. The firstfront end buffer 260 a includes cyan print buffers 706 a-f, magenta print buffers 708 a-f, and yellow print buffers 710 a-f. Similarly, the secondfront end buffer 260 b includes cyan print buffers 716 a-f, magenta print buffers 718 a-f, and yellow print buffers 720 a-f. - Each of the sub-buffers in buffers 260 a-b stores print data for a particular one of the print heads 304 a-f and 306 a-f. For example,
print buffer 706 a stores print data to be printed bycyan print head 306 a,print buffer 706 b stores print data to be printed bycyan print head 306 b, and so on. Similarly, print buffers 708 a and 710 a store print data to be printed by magenta/yellow print head 304 a, print buffers 708 b and 710 b store print data to be printed by magenta/yellow print head 304 b, and so on. The sub-buffers in the secondfront end buffer 260 b are arranged in the same manner as the sub-buffers in the firstfront end buffer 260 a. Furthermore, the sub-buffers (not shown) in the receive buffers 256 a-b and the back end buffers 264 a-b may also be arranged in the manner shown inFIG. 7A . - Before describing an example of a method that the
striper 206 may use to perform striping on theprint data 204, a particular example of striped data will be described. Referring toFIG. 7B , a diagram is shown of a particular example of thestriped print data 208 as it may be stored by thestriper 206 in the print buffers 260 a-b. Data in the back end print buffers 264 a-b may be stored in the same arrangement as that illustrated inFIG. 7B . The following explanation of the arrangement of striped data illustrated inFIG. 7B will facilitate explanation of techniques that may be used by thestriper 206 to generate thestriped print data 208. - In the example shown in
FIG. 7B , 300 lines of cyan print data are stored in cyan print buffers 706 a-f, although only buffers 706 a, 706 b, and 706 f are shown for ease of illustration. The cyan print data are divided in the cross-web direction among buffers 706 a-f as follows.Cyan print buffer 706 a includes pixels 1-1920 of each of the 300 lines of cyan print data. For example, thefirst line 752 a ofbuffer 706 a includes pixels 1-1920 of the first line of cyan print data, and the last (300th)line 752 b ofbuffer 706 a includes pixels 1-1920 of the 300th line of cyan print data. -
Cyan print buffer 706 b includes pixels 1837-3756 of each of the 300 lines of cyan print data. For example, thefirst line 754 a ofbuffer 706 b includes pixels 1837-3756 of the first line of cyan print data, and the last (300th)line 754 b ofbuffer 706 b includes pixels 1837-3756 of the 300th line of cyan print data. Finally, thefirst line 756 a ofcyan print buffer 706 f includes pixels 11,017-11,100 of the first line of cyan print data, and the (300th)line 756 b ofbuffer 706 f includes pixels 11,017-11,1000 of the 300th line of cyan print data. - Note that there is an overlap of 84 pixels between
buffer 706 a andbuffer 706 b. More specifically, both buffers 706 a-b contain pixels 1837-1920 of each of the 300 lines of cyan print data. This overlap represents the 84-pixel overlap region 310 betweencyan print head 306 a andcyan print head 306 b (FIG. 3 ) Although not shown inFIG. 7B , buffers 706 b-f have similar overlaps of duplicated print data. The data stored in magenta print buffers 708 a-f and yellow print buffers 710 a-f is arranged in the same manner as just described with respect to cyan print buffers 706 a-f. - As described above with respect to
FIGS. 1-2 , thestriper 206 may performing striping onprint data 204 to producestriped print data 208. In general, the striper 206: (1) divides theprint data 204 into vertical stripes (i.e., columns) of data, each of which is suitable for printing by one of the plurality of print heads 304 a-f and 306 a-f, and (2) stores the striped data in front end print buffers 260 a-b in the arrangement illustrated inFIG. 7B Referring toFIG. 8 , a flowchart is shown of amethod 800 that is performed by thestriper 206 in one embodiment of the present invention to stripe theprint data 204 and thereby to produce the striped print data 208 (FIG. 1 , step 104). The following description of themethod 800 also makes reference toFIG. 7A , which illustrates the striping ofprint data 204 bystriper 206. - The
method 800 initializes the value LC of aline counter 722 b to an initial value (e.g., 1) (step 802). Theline counter 722 b specifies the line number of the first line ofprint data 204 that should be stored in the print buffers 260 a-b. Themethod 800 identifies thesize 722 c (in lines) of each print head buffer (step 804). The term “print head buffer” refers to a buffer associated with an individual print head. For example, each of the buffers 706 a-f is a print head buffer. - The interrupt
frequency 722 a is the frequency at which theback end 262 interrupts thefront end 258 to request additional print data. The value of thesize 722 c may be selected to be large enough to hold at least as many lines of print data as may be printed by theprint engine 222 between such interrupts. The value of thesize 722 c may be selected prior to initiation of themethod 800 based on the down-web speed 722 g of theoutput medium 302, the down-web resolution 722 h of the print heads 304 a-f and 306 a-f, and the interruptfrequency 722 a. - In the present examples the down-
web speed 722 g of theoutput medium 302 is 0.5 inch/sec and the down-web resolution 722 h of the print heads 304 a-f and 306 a-f is 300 dpi. Assume that the interruptfrequency 722 a is one interrupt every two seconds, Theoutput medium 302 travels 1.0 inches between each pair of interrupts (0.5 inch/sec×2.0 seconds) During this time, 300 lines are printed (300 dpi×1.0 inches), Therefore, theprint buffer size 722 c should be at least 300 lines if the print buffers 702 a-b are to hold sufficient print data to enable the print heads 304 a-f and 306 a-f to print continuously between interrupts. As described above, in the present example, theprint buffer size 722 c is equal to 300 lines. Once theprint buffer size 722 c is calculated, themethod 800 may therefore identify theprint buffer size 722 c instep 804 as the number of lines printed between interrupts. - Letting S be the
print buffer size 722 c, themethod 800 selects S lines of cyan, magenta, and yellow print data (for a total of 3s lines) beginning at the line number LC specified by theline counter 722 b (step 806). For example, if LC=1, then themethod 800 would obtain lines 1-300 of theprint data 204 instep 806. - The
method 800 initializes a pixel counter PC 722 i to a value such as one (step 808). Themethod 800 identifies thewidth HW 722 e of each of the print heads 304 a-f and 306 a-f (step 810), and thewidth OW 722 j (in pixels) of the overlap region 310 (step 812). - Let HC be the number of
heads 722 d of each color. In the present example, HC=6. Themethod 800 enters a loop over a variable B (buffer) beginning with a value of 1 and ending with a value of HC (step 814). As will now be described in more detail, in each iteration of the loop over B, the buffers for a distinct one of the columns 318 a-f is filled with striped print data. - The
method 800 enters a loop over a variable H (head), which may take on values representing cyan, magenta, and yellow (step 816). Themethod 800 identifies the buffer HB specified by the values of H and B. For example, if H=1 and B=1, then HB is buffer 706 a. If H=3 and B=3, then HB isbuffer 710 c. Ifbuffer 260 a is viewed as a two-dimensional array, then H and B may be viewed as indices into a two-dimensional array to identify the corresponding buffer. - The
method 800 fills buffer HB with print data of color H, beginning at pixel PC and ending at pixel PC+HW−1 (step 818). For example, if H=1, B=1, PC=1 and HW=1920, then buffer 706 a may be filled with pixels 1-1920 of the cyan print data obtained instep 806. Similarly, if H=2, B=3, PC=1837, and HW=1920, then buffer 708 c may be filled with pixels 1837-3756 of the magenta print data obtained instep 806. Themethod 800 repeats step 818 for the remaining values of H (step 820). - Upon completion of the loop in steps 816-820, the
method 800 will have filled one set of cyan, magenta, and yellow print head buffers. For example, the first time the loop in steps 816-820 is performed (i.e., when B=1 and PC=1), themethod 800 will fillbuffers - The
method 800 assigns a new value to the pixel counter PC using the formula PC=PC+HW−OW (step 822). In other words, themethod 800 increases the value of the pixel counter 722 i by thewidth 722 e of a print head minus thewidth 722 j of theoverlap region 310. For example, if PC=1, then step 824 will assign the value 1837 (1+1920-84) to PC. Such a result comports with the pixel number of the pixels on the left edge ofbuffers FIG. 7B . - The
method 800 increments the value of B (step 824) and repeats steps 816-822 if B is not greater than HC. Themethod 800 thereby fills the next column of print head buffers. It should be appreciated that the remainder of the loop over B fills the remaining columns of print head buffers with print data in the manner illustrated inFIG. 7B . - As described above, the
striper 206 may store striped print data alternatively in the first and second print buffers 260 a-b. Abank flag 722 f may store a binary value that indicates in which of the two banks 260 a-b thestriper 206 is to storestriped print data 206 at any particular point in time. For example, thebank flag 722 f may be coupled to aswitch 724 which directs theoutput 208 of thestriper 206 to thefirst bank 260 a when thebank flag 722 f is equal to zero, and which directs theoutput 208 of thestriper 206 to thesecond bank 260 b when thebank flag 722 f is equal to one. - After the
striper 206 stores stripeddata 208 in one of the banks 260 a-b (by performing steps 806-824), themethod 800 may toggle the value of thebank flag 722 f (step 826). Themethod 800 may then increase the value of the line counter 522 b by the value of S (step 828) and return to step 806. Although not shown inFIG. 8 , themethod 800 may not performstep 806 again until the next interrupt is received from theback end 262, as described above with respect to step 472 of method 470 (FIG. 4E ). - Assume, for example, that the
striper 206 stores stripedprint data 208 inprint buffer 260 a on one pass of steps 806-824. When thebank flag 722 f is toggled (step 826) and steps 806-824 are next performed, the next set of S lines from theprint data 204 will be striped and stored by thestriper 206 inprint buffer bank 260 b. During the next pass of steps 806-826, thestriper 206 will store striped print data inbuffer 260 a. In this way, thestriper 206 alternatively stores stripedprint data 206 inbuffers - The use of two buffer banks 260 a-b enables a new set of S lines of
striped data 208 to be stored in one of the buffers 260 a-b while additional processing or printing is being performed on the striped print data in the other one of the buffers 260 a-b. As a result, a new set of striped data may always be available for printing immediately after the previous set of striped data has finished printing. In this way, the print heads 304 a-f and 306 a-f may be provided with data continuously, thereby enabling theprinter 202 to print data at maximum efficiency. - Although
FIGS. 7B and 8 were described above with respect to the operation of thestriper 206, those having ordinary skill in the art will appreciate how to apply similar techniques to the operation of thestaggerer 210, thestitcher 214, and the thermalhistory control engine 218 to process and print theprint data 204 with a high degree of efficiency. - As described above,
staggerer 210 staggers thestriped print data 208 to producestaggered print data 212. The term “staggering” refers to the process of providing data to the print heads 304 a-f and 306 a-f in a sequence that takes into account the physical staggering of the print heads 304 a-f and 306 a-f in the down-web direction 308 a and which thereby provides the correct print data to the print heads 304 a-f and 306 a-f at the correct times. Performing staggering correctly also requires that the down-web print speed and down-web resolution be taken into account. - The need for staggering may be appreciated by reference to
FIG. 3 . Consider, for example, the printing of a single line of print data by magenta/yellow print heads 304 a-f. It may be seen fromFIG. 3 that theoutput medium 302 will first pass simultaneously under magenta/yellow print heads 304 a, 304 c, and 304 e, and then pass (8.0 seconds later in the present example) simultaneously under magenta/yellow print heads 304 b, 304 d, and 304 f. If the entire line of pixels to be printed were provided simultaneously to all six magenta/yellow prints heads 304 a-f, the line of pixels would be printed in discontinuous segments on theoutput medium 302 due to the physical staggering of print heads 304 a-f in twodistinct rows output medium 302 - Referring to
FIG. 9 , a functional block diagram is shown which illustrates the operation of thestaggerer 210 in more detail according to one embodiment of the present invention. Referring toFIG. 10 , a flowchart is shown of amethod 1000 for performing staggering according to one embodiment of the present invention. Themethod 1000 may, for example, be used by thestaggerer 210 to stagger thestriped print data 208 and thereby to produce staggered print data 212 (FIG. 1 , step 106). - Referring to
FIG. 9 , aclock 902 outputs atime signal T 904. Theclock 902 may, for example, update thetime signal T 904 at intervals equal to the period of a print head cycle. Thestaggerer 110 includes a set of time offsets 906 which indicates the amount of time by which the output produced by each of the print head rows 316 a-d (FIG. 3 ) is offset from the time at which thefirst row 316 a produces output. Let R be a row number, where R=0 forrow 316 a, R=1 forrow 316 b, R=2 forrow 316 c, and R=3 forrow 316 d. Let ΔT(R) be the time offset for row R. For example, using the relative timings illustrated inFIG. 3 , ΔT(0)=0 seconds, ΔT(1)=2 seconds, ΔT(2)=8 seconds, and ΔT(3)=10 seconds. ΔT(0) will always be equal to zero, since each value of ΔT(R) is relative to the value of ΔT(0). - The
method 1000 receives the current value of T 904 (step 1002). Thestaggerer 210 includessubtractor 908 which subtracts thetime signal T 904 from the time offsets ΔT(R) 906 a-d to produce effective times Teff(R) 910 for each of the rows 316 a-d (step 1004). For example, using the values of the time offsets 806 a-d described above, when T=0, Teff(0)=0, Teff(1)=2, Teff(2)=−8, and Teff(3)=−10. - The
method 1000 enters a loop over each value of R (e.g., thevalues method 1000 determines whether Teff(R)<0 for the current value of R (step 1008). If Teff(R)<0, themethod 1000 stores null data (e.g., zero values) in the buffers for row R (step 1010). Otherwise, themethod 1000 stores thestriped data 208 for time Teff(R) in the buffers for row R (step 1012). Thestriped data 208 for a print head in row R at time Teff(R) may, for example, be thestriped print data 208 beginning at line number Teff(R) times the down-web resolution of the print head times the down-web speed of theoutput medium 302. - The operation of steps 1008-1012 will now be described in more detail with respect to particular examples. Consider, for example, the beginning of a print job, in which case T=0 seconds. Now consider
row 316 a, for which R=0 and ΔT(0)=0 seconds. In this case, Teff(0)=T−ΔT(0)=0−0=0. Therefore, in this case, themethod 1000 would determine instep 1008 that Teff(0) is not less than zero, and therefore would store striped print data for time Teff(0) (e.g., 0 seconds) in the print buffers for magenta/yellow print heads 304 a, 304 c, and 304 e. Such striped print data would begin at line zero of thestriped print data 208. This is the correct result, since at the beginning of printing theoutput medium 302 would begin passing under the print heads 304 a, 304 c, and 304 e inrow 316 a. - Now consider
row 316 b, for which R=1 and ΔT(0)=2 seconds, at the beginning of the same print job (T=0 seconds). In this case, Teff(1)=T−ΔT(0)=0−2=−2. Therefore, in this case, themethod 1000 would determine instep 1008 that Teff(1) is less than zero, and therefore would store null print data in the print buffers for cyan print heads 306 a, 306 c, and 306 e. This is the correct result, since at the beginning of printing theoutput medium 302 would not yet be passing under the print heads 306 a, 306 c, and 306 e inrow 316 b. The same result would obtain for the print heads inrows - Now consider the time at two seconds into the print job, at which T=0 seconds. Now consider
row 316 a, for which R=0 and ΔT(0)=0 seconds. In this case, Teff(0)=T−ΔT(O)=2−0=2. Therefore, in this case, themethod 1000 would determine instep 1008 that Teff(0) is not less than zero, and therefore would store striped print data for time Teff(0) (e.g., 2 seconds) in the print buffers for magenta/yellow print heads 304 a, 304 c, and 304 e. Such striped print data would begin atline 300 of thestriped print data 208. - Now consider
row 316 b, for which R=1 and ΔT(0)=2 seconds. When T=2, Teff(1)=T−ΔT(0)=2−2=0. In this case, themethod 1000 would determine instep 1008 that Teff(1) is not less than zero, and therefore would store striped print data for time Teff(1) (e.g., 0 seconds) in the print buffers for cyan print heads 306 a, 306 c, and 306 e. Such striped print data would begin atline 0 of thestriped print data 208. This is the correct result, since at time T=0, the beginning of the region printed byrow 316 a would just begin to pass underrow 316 b. At time T=0, themethod 1000 would continue to store null data in the print buffers forrows 316 c-d. - Now consider the time at eight seconds into the print job, at which T=8 seconds. Consider
row 316 a, for which R=0 and ΔT(0)=0 seconds. In this case, Teff(0)=T−ΔT(0)=8−0=8. Therefore, in this case, themethod 1000 would determine instep 1008 that Teff(0) is not less than zero, and therefore would store striped print data for time Teff(0) (e.g., 8 seconds) in the print buffers for magenta/yellow print heads 304 a, 304 c, and 304 e. Such striped print data would begin at line 1200 of thestriped print data 208. - Now consider
row 316 b, for which R=1 and ΔT(1)=2 seconds. When T=8, Teff(1)=T−ΔT(1)=8−2=6. In this case, themethod 1000 would determine instep 1008 that Teff(1) is not less than zero, and therefore would store striped print data for time Teff(1) (e.g., 6 seconds) in the print buffers for cyan print heads 306 a, 306 c, and 306 e. Such striped print data would begin at line 900 of thestriped print data 208. - Now consider
row 316 c, for which R=2 and ΔT(2)=8 seconds. When T=8, Teff(2)=T−ΔT(2)=8−8=0. In this case, the method 900 would determine instep 1008 that Teff(2) is not less than zero, and therefore would store striped print data for time Teff(2) (e.g., 0 seconds) in the print buffers for cyan print heads 306 a, 306 c, and 306 e. Such striped print data would begin atline 0 of thestriped print data 208. This is the correct result, since at time T=8, the beginning of the region printed byrow 316 a would just begin to pass underrow 316 c. At time T=8, themethod 1000 would continue to store null data in the print buffers forrow 316 d. - Although additional examples could be provided, the operation of steps 1008-1012 should be clear from the description above. Although the
time signal T 904 may be incremented for every line ofstriped print data 208, it may be incremented in larger steps, in which case the number of lines of print data stored in the print buffers in steps 1010-1012 may be equal to the number of lines printed between updates of T. For example, if T is updated every 1.0 seconds, then steps 1010-1012 may each store 150 lines of print data (0.5 inch/sec*1.0 seconds*300 dots/inch), beginning at the line of print data corresponding to time Teff(R). - The
method 1000 repeats steps 1008-1012 for the remaining values of R (step 1014), thereby filling the buffers for the remainingrows 316 b-d either with subsets of thestriped print data 208 or with null data. Themethod 1000 repeats steps 1004-1014 when it receive the nexttime signal T 904 from theclock 902 - Among the advantages of the invention are one or more of the following. One advantage of techniques disclosed herein is that they enabling image processing steps such as striping and staggering to be performed efficiently by organizing data in buffers having buffer sizes and associated interrupt frequencies selected to ensure that print data is provided continuously to the print heads in a multi-head printer. The architecture of such a printer is both modular and scalable and is therefore suitable for use with subsequent generations of printers as they increase in speed.
- Furthermore, techniques disclosed above can be implemented to provide print data at a sufficient speed using a conventional off-the-shelf operation system such as the Linux operating system, rather than a real-time operating system (RTOS). Although RTOSs typically provide higher bandwidth guarantees than conventional off-the-shelf operating systems, they are also more expensive, often by an order of magnitude. As a result, the ability to process print data at a sufficient speed using a conventional off-the-shelf operating system enables printers to be manufactured at much lower cost than with be possible with a RTOS.
- More generally, the techniques disclosed herein may be employed to enable high-speed printing without the use of a real-time operating system and while keeping the amount of RAM needed in the printer to a minimum, thereby reducing the manufacturing cost of the printer even further. For example, assume a case in which the shortest time between interrupts for a non-real-time operating system is 700 milliseconds. In such a case, the minimum print buffer size is 105 lines (0.7*300*0.5, using the example figures described above). The total amount of RAM needed to implement buffers having this size may easily be calculated. Known amounts of additional RAM may be required for printer-resident software and other buffers. The minimum amount of RAM required to satisfy the minimum print buffer size required may therefore be calculated, allowing a printer which is capable of printing at maximum throughput to be manufactured at the minimum cost.
- Another advantage of techniques disclosed above is that the print quality may be improved by providing some data, whether it be actual print data or null data (
FIG. 10 ), to the print heads at all times during printing. For example, the thermalhistory control engine 218 may operate optimally within a range of temperatures and may not perform well when used to produce data that is provided to “cold” print heads (i.e., print heads whose temperature is below the lower limit of the temperature range for which the thermalhistory control engine 218 is optimized). In such a case, the print heads may be provided with preheat data, rather than null data, in step 1010 (FIG. 10 ) without requiring any other changes to themethod 1000. The print heads may thereby be preheated so that the output of the thermalhistory control engine 218 is improved. Such techniques may, for example, be combined with the use of null data. For example, null data may be provided to a print head if the print head is already warm (e.g., from a previous print job), while preheat data may be provided to the print head if the print head is cold. - It is to be understood that although the invention has been described above in terms of particular embodiments, the foregoing embodiments are provided as illustrative only, and do not limit or define the scope of the invention. Various other embodiments, including but not limited to the following, are also within the scope of the claims For example, elements and components described herein may be further divided into additional components or joined together to form fewer components for performing the same functions.
- Although various embodiments of the present invention are described with relation to thermal printers, the techniques disclosed herein are not limited to use in conjunction with thermal printers. Rather, the techniques disclosed herein may be used in conjunction with any kind of printer Furthermore, the techniques disclosed herein are not limited to use in conjunction with printers having other particular features of the particular examples disclosed, such as the number, color, resolution, or speed of print heads.
- The techniques described above may be implemented, for example, in hardware, software, firmware, or any combination thereof. The techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input entered using the input device to perform the functions described and to generate output. The output may be provided to one or more output devices.
- Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language. The programming language may, for example, be a compiled or interpreted programming language.
- Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor. Method steps of the invention may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the invention by operating on input and generating output. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, the processor receives instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs. Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays). A computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk. These elements will also be found in a conventional desktop or workstation computer as well as other computers suitable for executing computer programs implementing the methods described herein, which may be used in conjunction with any digital print engine or marking engine, display monitor, or other raster output device capable of producing color or gray scale pixels on paper, film, display screen, or other output medium.
Claims (9)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/187,155 US20090033995A1 (en) | 2004-03-23 | 2008-08-06 | Print job data processing for multi-head printers |
US13/232,723 US8427689B2 (en) | 2004-03-23 | 2011-09-14 | Print job data processing for multi-head printers |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/806,627 US7416267B2 (en) | 2004-03-23 | 2004-03-23 | Print job data processing for multi-head printers |
US12/187,155 US20090033995A1 (en) | 2004-03-23 | 2008-08-06 | Print job data processing for multi-head printers |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/806,627 Division US7416267B2 (en) | 2004-03-23 | 2004-03-23 | Print job data processing for multi-head printers |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/232,723 Continuation US8427689B2 (en) | 2004-03-23 | 2011-09-14 | Print job data processing for multi-head printers |
Publications (1)
Publication Number | Publication Date |
---|---|
US20090033995A1 true US20090033995A1 (en) | 2009-02-05 |
Family
ID=34963578
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/806,627 Expired - Fee Related US7416267B2 (en) | 2004-03-23 | 2004-03-23 | Print job data processing for multi-head printers |
US12/187,155 Abandoned US20090033995A1 (en) | 2004-03-23 | 2008-08-06 | Print job data processing for multi-head printers |
US13/232,723 Expired - Fee Related US8427689B2 (en) | 2004-03-23 | 2011-09-14 | Print job data processing for multi-head printers |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/806,627 Expired - Fee Related US7416267B2 (en) | 2004-03-23 | 2004-03-23 | Print job data processing for multi-head printers |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/232,723 Expired - Fee Related US8427689B2 (en) | 2004-03-23 | 2011-09-14 | Print job data processing for multi-head printers |
Country Status (5)
Country | Link |
---|---|
US (3) | US7416267B2 (en) |
EP (1) | EP1735161A2 (en) |
JP (2) | JP2007530318A (en) |
CA (1) | CA2560536A1 (en) |
WO (1) | WO2005095111A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100208278A1 (en) * | 2009-02-17 | 2010-08-19 | Xerox Corporation | Digital printing systems for packaging and document printing with special colors |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008290319A (en) * | 2007-05-24 | 2008-12-04 | Brother Ind Ltd | Printer |
US8576470B2 (en) | 2010-06-02 | 2013-11-05 | E Ink Corporation | Electro-optic displays, and color alters for use therein |
US9055371B2 (en) | 2010-11-19 | 2015-06-09 | Nokia Technologies Oy | Controllable playback system offering hierarchical playback options |
AU2012272483B2 (en) | 2011-06-24 | 2016-06-16 | Lo, Richard W. C. | Multi-container systems and uses thereof |
JP6452346B2 (en) * | 2014-08-20 | 2019-01-16 | キヤノン株式会社 | Inkjet recording apparatus and inkjet recording method |
CN106610802B (en) * | 2016-12-15 | 2019-08-09 | 国网江苏省电力公司淮安供电公司 | The dot chart image file of protective device virtual printer constructs and storage method |
US12020093B2 (en) | 2020-02-27 | 2024-06-25 | Zhuhai Bentsai Electronics Co., Ltd. | Handheld printer, printing method, information processing method and printing device |
CN111301022B (en) * | 2020-02-27 | 2022-02-01 | 珠海奔彩打印科技有限公司 | Printing method, printing device, handheld printer and storage medium |
Citations (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4524368A (en) * | 1983-04-01 | 1985-06-18 | Fuji Xerox Co., Ltd. | Thermal head drive circuit |
US4660052A (en) * | 1986-06-06 | 1987-04-21 | Mitsuhiro Kaiya | Heat-sensitive recording apparatus |
US4997410A (en) * | 1987-05-06 | 1991-03-05 | Ina Walzlager Schaeffler Kg | Hydraulic tightening apparatus |
US5119108A (en) * | 1990-03-29 | 1992-06-02 | Mutoh Industries Ltd. | Method and apparatus for thermal recording with overlapped thermal print heads |
US5450099A (en) * | 1993-04-08 | 1995-09-12 | Eastman Kodak Company | Thermal line printer with staggered head segments and overlap compensation |
US5712890A (en) * | 1994-11-23 | 1998-01-27 | Thermotrex Corp. | Full breast digital mammography device |
US5852683A (en) * | 1996-09-13 | 1998-12-22 | Mustek Systems, Inc. | Method for automatic image merge |
US6269177B1 (en) * | 1997-12-01 | 2001-07-31 | Agfa-Gevaert | Method for reconstructing radiation image of a body from partial radiation images |
US20010014229A1 (en) * | 1999-12-20 | 2001-08-16 | Hironobu Nakata | Digital image forming apparatus |
US20020057306A1 (en) * | 2000-11-14 | 2002-05-16 | In-System Design, Inc. | Real time adaptive inkjet temperature regulation controller |
US6459094B1 (en) * | 2000-12-20 | 2002-10-01 | Eastman Kodak Company | Method for stitching partial radiation images to reconstruct a full image |
US20020191067A1 (en) * | 2001-06-14 | 2002-12-19 | Satoshi Nakajima | Thermal head control method and control apparatus |
US6535293B1 (en) * | 1998-04-28 | 2003-03-18 | Canon Kabushiki Kaisha | Printing system, printing control method, data processing apparatus and method, and storage medium therefor |
US6672697B2 (en) * | 2001-05-30 | 2004-01-06 | Eastman Kodak Company | Compensation method for overlapping print heads of an ink jet printer |
US20040095420A1 (en) * | 2000-07-25 | 2004-05-20 | Yuichiro Ikemoto | Printer and printer head |
US6746103B2 (en) * | 2001-09-17 | 2004-06-08 | Toshiba Tec Kabushiki Kaisha | Recording head and recording apparatus using the same |
US20040119767A1 (en) * | 2002-07-23 | 2004-06-24 | Canon Kabushiki Kaisha | Ink jet printing apparatus, ink jet printing method, program, and printing medium |
US6961084B1 (en) * | 1999-10-07 | 2005-11-01 | Ess Technology, Inc. | Programmable image transform processor |
US7388686B2 (en) * | 2003-02-25 | 2008-06-17 | Zink Imaging, Llc | Image stitching for a multi-head printer |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4622561A (en) * | 1984-04-10 | 1986-11-11 | Ricoh Company, Ltd. | Image forming method for dot matrix printer |
JPH078574B2 (en) | 1986-10-20 | 1995-02-01 | 富士ゼロックス株式会社 | Inkjet printer stitching device |
JPH085188B2 (en) * | 1987-06-25 | 1996-01-24 | セイコー電子工業株式会社 | Print recording device |
JP2854708B2 (en) * | 1990-03-29 | 1999-02-03 | 武藤工業株式会社 | Thermal recording method and apparatus |
GB9517487D0 (en) | 1995-08-25 | 1995-10-25 | Esselte Dymo Nv | Tape printing apparatus and print head |
JP2002248745A (en) * | 2001-02-27 | 2002-09-03 | Ricoh Co Ltd | Ink jet image forming apparatus |
-
2004
- 2004-03-23 US US10/806,627 patent/US7416267B2/en not_active Expired - Fee Related
-
2005
- 2005-03-23 CA CA002560536A patent/CA2560536A1/en not_active Abandoned
- 2005-03-23 EP EP05726098A patent/EP1735161A2/en not_active Withdrawn
- 2005-03-23 WO PCT/US2005/009754 patent/WO2005095111A2/en active Application Filing
- 2005-03-23 JP JP2007505154A patent/JP2007530318A/en active Pending
-
2008
- 2008-03-21 JP JP2008074332A patent/JP2008260281A/en active Pending
- 2008-08-06 US US12/187,155 patent/US20090033995A1/en not_active Abandoned
-
2011
- 2011-09-14 US US13/232,723 patent/US8427689B2/en not_active Expired - Fee Related
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4524368A (en) * | 1983-04-01 | 1985-06-18 | Fuji Xerox Co., Ltd. | Thermal head drive circuit |
US4660052A (en) * | 1986-06-06 | 1987-04-21 | Mitsuhiro Kaiya | Heat-sensitive recording apparatus |
US4997410A (en) * | 1987-05-06 | 1991-03-05 | Ina Walzlager Schaeffler Kg | Hydraulic tightening apparatus |
US5119108A (en) * | 1990-03-29 | 1992-06-02 | Mutoh Industries Ltd. | Method and apparatus for thermal recording with overlapped thermal print heads |
US5450099A (en) * | 1993-04-08 | 1995-09-12 | Eastman Kodak Company | Thermal line printer with staggered head segments and overlap compensation |
US5712890A (en) * | 1994-11-23 | 1998-01-27 | Thermotrex Corp. | Full breast digital mammography device |
US5852683A (en) * | 1996-09-13 | 1998-12-22 | Mustek Systems, Inc. | Method for automatic image merge |
US6269177B1 (en) * | 1997-12-01 | 2001-07-31 | Agfa-Gevaert | Method for reconstructing radiation image of a body from partial radiation images |
US6535293B1 (en) * | 1998-04-28 | 2003-03-18 | Canon Kabushiki Kaisha | Printing system, printing control method, data processing apparatus and method, and storage medium therefor |
US6961084B1 (en) * | 1999-10-07 | 2005-11-01 | Ess Technology, Inc. | Programmable image transform processor |
US20010014229A1 (en) * | 1999-12-20 | 2001-08-16 | Hironobu Nakata | Digital image forming apparatus |
US20040095420A1 (en) * | 2000-07-25 | 2004-05-20 | Yuichiro Ikemoto | Printer and printer head |
US7240986B2 (en) * | 2000-07-25 | 2007-07-10 | Sony Corporation | Printer and printer head |
US20020057306A1 (en) * | 2000-11-14 | 2002-05-16 | In-System Design, Inc. | Real time adaptive inkjet temperature regulation controller |
US6459094B1 (en) * | 2000-12-20 | 2002-10-01 | Eastman Kodak Company | Method for stitching partial radiation images to reconstruct a full image |
US6672697B2 (en) * | 2001-05-30 | 2004-01-06 | Eastman Kodak Company | Compensation method for overlapping print heads of an ink jet printer |
US20020191067A1 (en) * | 2001-06-14 | 2002-12-19 | Satoshi Nakajima | Thermal head control method and control apparatus |
US6746103B2 (en) * | 2001-09-17 | 2004-06-08 | Toshiba Tec Kabushiki Kaisha | Recording head and recording apparatus using the same |
US20040119767A1 (en) * | 2002-07-23 | 2004-06-24 | Canon Kabushiki Kaisha | Ink jet printing apparatus, ink jet printing method, program, and printing medium |
US7388686B2 (en) * | 2003-02-25 | 2008-06-17 | Zink Imaging, Llc | Image stitching for a multi-head printer |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100208278A1 (en) * | 2009-02-17 | 2010-08-19 | Xerox Corporation | Digital printing systems for packaging and document printing with special colors |
US8854686B2 (en) * | 2009-02-17 | 2014-10-07 | Xerox Corporation | Digital printing systems for packaging and document printing with special colors |
Also Published As
Publication number | Publication date |
---|---|
JP2008260281A (en) | 2008-10-30 |
US20050212839A1 (en) | 2005-09-29 |
CA2560536A1 (en) | 2005-10-13 |
JP2007530318A (en) | 2007-11-01 |
WO2005095111A3 (en) | 2006-08-17 |
US20120001969A1 (en) | 2012-01-05 |
WO2005095111A2 (en) | 2005-10-13 |
US7416267B2 (en) | 2008-08-26 |
EP1735161A2 (en) | 2006-12-27 |
US8427689B2 (en) | 2013-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8427689B2 (en) | Print job data processing for multi-head printers | |
JP2005529001A (en) | Improvements related to the print engine | |
JP7414416B2 (en) | Printing devices, printing methods, and programs | |
US10800184B2 (en) | Determining method of density correction value, printing apparatus, printing method, and method of correcting printing density | |
JP2016172396A (en) | Image recording device and control method thereof | |
US7407260B2 (en) | Printer device | |
US20150343812A1 (en) | Control device | |
US7559624B2 (en) | Printer device and control method thereof | |
JP3744273B2 (en) | RECORDING METHOD, RECORDING DEVICE, AND READABLE MEDIUM RECORDING PROGRAM FOR THE SAME | |
JP3528743B2 (en) | Adjustment of dot formation position shift by pixel information that does not form dots | |
JP2003011458A (en) | Printer being set with print mode depending on information contained in image data | |
JP4826099B2 (en) | Printing system, printing method and adjustment method | |
EP1676710B1 (en) | Printing device and control method thereof | |
JP3446710B2 (en) | Reconstruction of raster data when the scan direction for raster recording is reversed | |
US7347521B2 (en) | Printing device and control method thereof | |
JP3528744B2 (en) | Adjustment of dot formation position shift by pixel information that does not form dots | |
JP2002137373A (en) | Record processing method, recording system, information processor and ink jet recorder | |
JP2008006648A (en) | Inkjet recording device | |
JP3531892B2 (en) | Ink jet recording device | |
JP2004050834A (en) | Printing method and apparatus for multipath printing | |
JP5754241B2 (en) | Control device, transfer medium manufacturing method and program | |
JP2004345352A (en) | Method and device for printing with a uniform printing medium transport distance | |
EP1676705A1 (en) | Printing device | |
JP2006103046A (en) | Inkjet recorder | |
JP2006103047A (en) | Inkjet recorder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ZINK IMAGING, LLC, MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:POLAROID CORPORATION;REEL/FRAME:021567/0354 Effective date: 20060105 Owner name: ZINK IMAGING, INC., MASSACHUSETTS Free format text: MERGER;ASSIGNOR:ZINK IMAGING, LLC;REEL/FRAME:021567/0397 Effective date: 20070702 Owner name: POLAROID CORPORATION, MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:PURI, ANISH N.;REEL/FRAME:021567/0265 Effective date: 20040323 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: ZINK HOLDINGS LLC, NEW JERSEY Free format text: BILL OF SALE;ASSIGNOR:ZINK IMAGING, INC.;REEL/FRAME:039379/0798 Effective date: 20150507 |