Abstract:
A system includes a first memory portion storing image data and a second memory portion storing a lookup table having image resolution conversion data. Conversion logic is configured to access the image resolution conversion data and convert the image data, which has a first resolution, to print data, which has a second resolution. The second resolution has a lower pixel count than the first resolution. The second resolution has a higher bit per pixel ratio that the first resolution.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS 
     This application is a continuation of copending application Ser. No. 10/976,937, filed Oct. 29, 2004, which is hereby incorporated by reference in its entirety. 
    
    
     BACKGROUND 
     Printers, such as ink-jet printers and laser printers, are utilizing increasingly higher resolutions to provide higher quality output. Typically, increasing the resolution of a printer results in substantially increasing the cost of the printer. One way to keep the cost of a printer down while still increasing the resolution of the printer is resolution doubling. Resolution doubling allows a printer having a native resolution lower than the resolution of an image to be printed to print the image while maintaining the quality of the higher resolution image. For example, resolution doubling allows a 600 dpi printer to print a 1200 dpi image, or allows a 300 dpi printer to print a 600 dpi image. The higher resolution image is printed on the lower resolution printer without substantially increasing the cost of the printer. In addition, the output of the lower resolution printer provides substantially the same quality output as that which can be provided by a higher resolution printer. 
     Typically, resolution doubling occurs in hardware in the printer. The printer receives an image, such as a 1200 dpi, 1-bit per pixel image, and converts the image into a 1200 dpi horizontal by 600 dpi vertical, multi-bit per pixel image. Resolution doubling is typically performed by analyzing a four row by three column window of pixel data. The windows of pixel data are compared to a small number (16-32) of templates. When a match is found, the center pixel of the window is replaced by a single P-code for controlling the print engine that outputs the image to media. The P-code controls the modulation of the laser in a laser printer during a single pixel period. The P-code represents a single pulse width value along with placement information (left, right, center, or split). In part, resolution doubling is accomplished in the horizontal direction by providing p-codes at twice the print engine&#39;s normal rate. In part, resolution doubling is accomplished in the vertical direction by modulating the laser such that two vertically adjacent pixels do not receive sufficient charge to attract toner by themselves, but the overlapping region between the two pixels does receive sufficient combined charge to attract toner. 
     In the horizontal direction, resolution doubling is typically accomplished by keeping the horizontal resolution at 1200 dpi by increasing the modulation of the laser in the horizontal direction. For a 1200 dpi 8.5 inch wide image using 8-bit P-codes, the resolution doubling hardware produces 10,200 8-bit P-codes for a total of 81,600 bits per pair of input rows. Processing of all these bits in hardware increases the cost of the printer. 
     BRIEF SUMMARY 
     One aspect of the present invention provides a printing apparatus. The printing apparatus comprises a memory storing a lookup table comprising tokens for converting image data having a first dots per inch (dpi) to image data having a second dpi. The printing apparatus comprises a processor configured to access the lookup table to convert an image having the first dpi to the second dpi, and a print engine configured to print the converted image at the second dpi. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1A  is a block diagram illustrating one embodiment of a printing system. 
         FIG. 1B  is a block diagram illustrating another embodiment of a printing system. 
         FIG. 2  is a diagram illustrating one embodiment of a sample of image data processed by the resolution doubling method of the present invention. 
         FIG. 3  is a flow diagram illustrating one embodiment of a method for performing resolution doubling. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     In the following Detailed Description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. In this regard, directional terminology, such as “top,” “bottom,” “front,” “back,” “leading,” “trailing,” etc., is used with reference to the orientation of the Figure(s) being described. Because components of embodiments of the present invention can be positioned in a number of different orientations, the directional terminology is used for purposes of illustration and is in no way limiting. It is to be understood that other embodiments may be utilized and structural logical changes may be made without departing from the scope of the present invention. The following Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims. 
       FIG. 1A  is a block diagram illustrating one embodiment of a printing system  100 A. Printing system  100 A includes a host or computer  102  and printer  120 . In one embodiment, printer  120  is a laser printer or laser print apparatus. Printing system  100 A is configured to perform resolution doubling on image data before the image data is printed. 
     Computer  102  includes processor  104 , memory  108 , and input/output (I/O) interface  116 , which are communicatively coupled together via bus  106 . Driver  110 , data  112  to be printed, and image data  114  are stored in memory  108 . In one embodiment, driver  110  is executed by processor  104  to render data  112  to be printed into image data  114 . Data  112  to be printed may be any type of printable data, such as image files, word processing files, etc. In one embodiment, image data  114  comprises rows and columns, with one pixel defined at the intersection of each row and column. In one form of the invention; image data  114  includes a plurality of pixels, with each pixel being represented by a multi-bit value (i.e., each pixel is represented by an N-bit value, where N is greater than one). In another embodiment, each pixel in image data  114  is represented by a 2-bit value (e.g., black, white, and two gray levels). In another embodiment, each pixel is represented by a 1-bit value (e.g., black and white). 
     Printer  120  includes processor  122 , I/O interface  126 , memory  128 , and laser print engine  130 , which are communicatively coupled together via bus  124 ; In one embodiment, processor  122  is a custom processor for implementing custom instructions for performing resolution doubling. 
     I/O interface  126  of printer  120  is electrically coupled to I/O interface  116  of computer  102  through communication link  118 . In one embodiment, I/O interfaces  116  and  126  are serial interfaces, such as universal serial bus (USB) interfaces, and communication link  118  is a USB cable. In another embodiment, I/O interfaces  116  and  126  are network interfaces, and communication link  118  is a network, such as a local area network. In other embodiments, other suitable types of interfaces and communication links can be used, including those for wireless communications. 
     After rendering data  112  into image data  114 , computer  102  outputs the image data  114  to printer  120  via communication link  118 . In one embodiment, image data  114  is compressed by computer  102  for transferring to printer  120 , which decompresses image data  114  using firmware or dedicated hardware. In one embodiment, image data  114  comprises 1-bit per pixel image data having a dots per inch (dpi) resolution double the native resolution of printer  120 . The received image data  114  is stored in memory  128  of printer  120 . Processor  122  performs resolution doubling on image data  114  by converting the 1-bit per pixel image data having a dpi resolution double the native resolution of printer  120  into multi-bit tokens having a dpi resolution of the native resolution of printer  120 . Processor  122  utilizes lookup table (LUT)  132  to convert the image data, as described in further detail below with reference to  FIGS. 2-3 . In general, lookup table  132  comprises table entries for replacing 1-bit per pixel center portions of windows of the image data with single multi-bit tokens. After resolution doubling is complete, laser print engine  130  retrieves the multi-bit token data from memory  128  and prints the data to media. In another embodiment, processor  104  performs resolution doubling on image  114  and passes the multi-bit token data to printer  120 . 
       FIG. 1B  is a block diagram illustrating another embodiment of a printing system  100 B. Printing system  100 B includes similar hardware as printing system  100 A. In system  100 B, however, image data  114  is rendered by printer  120 , rather than by computer  102 . In one embodiment, driver  140  converts data  112  to be printed into a description file  142 . In one form of the invention, driver  140  is a printer command language (PCL.) driver for converting data  112  into a description file  142  that includes data and high level commands (e.g., place a Helvetica  12  point letter “Q” at location x, y on the page). Computer  102  transfers description file  142  to printer  120  via communication link  118 , and printer  120  stores description file  142  in memory  128 . In one embodiment, description file  142  is compressed by computer  102  for transferring to printer  120 , which decompresses description file  142  using firmware or dedicated hardware. 
     Processor  122  then renders description file  142  into image data  114  using renderer  144 . In one embodiment, printer  120  includes PC1, firmware for rendering description file  142  into image data  114 . In one embodiment, image data  114  comprises 1-bit per pixel image data having a dpi resolution double the native resolution of printer  120 . The image data  114  is stored in memory  128  of printer  120 . Processor  122  performs resolution doubling on image data  114  by converting the 1-bit per pixel image data having a dpi resolution double the native resolution of printer  120  into multi-bit tokens having a dpi resolution of the native resolution of printer  120 . Processor  122  utilizes lookup table  132  to convert the image data, as described in further detail below with reference to  FIGS. 2-3 . After resolution doubling is complete, laser print engine  130  retrieves the multi-bit token data from memory  128  and prints the data to media. 
       FIG. 2  is a diagram illustrating one embodiment of a sample  200  of image data processed by the resolution doubling method of the present invention. In this embodiment, sample data  200  comprises 1200 dpi resolution image data to be processed for printing on a printer having a 600 dpi native, resolution. In other embodiments, any resolution image data can be processed for printing on a printer having a native resolution half of the resolution of the image data. For example, 600 dpi resolution image data can be processed for printing on a printer having a 300 dpi native resolution. 
     Sample data  200  includes 1200×1200 dpi, 1-bit per pixel data. Sample data  200  is divided into scan line N  202  and scan line N+1  204 . Scan line N  202  and scan line N+1  204  each have a 600 dpi beam height. Portions of scan line N  202  and scan line N+1  204  are processed in succession by dividing scan line N  202  and scan line N+1  204  into windows, which are illustrated at  202 A- 202 C and  204 A- 204 C. Windows  202 A- 202 C of scan line N  202  and windows  204 A- 204 C of scan line N+1  204  each comprise four rows and four columns of 1-bit per pixel image data. In one embodiment, windows  202 A- 202 C and  204 A- 204 C each comprise four rows and four columns, excluding the four corner pixels, of 1-bit per pixel image data. Each window includes the four center pixels (indicated by shading) from scan line N  202  and scan line N+1  204 , respectively. 
     Each window  202 A- 202 C and  204 A- 204 C is compared to table entries stored in lookup table  132  to find a match. In one embodiment, the input window data is used as the indexing address into lookup table  132  and the resulting output is the desired replacement token. Lookup table  132  comprises table entries including all possible combinations for the 1-bit per pixel values for windows  202 A- 202 C and  204 A- 204 C. In one embodiment, where a four row by four column window including the corner pixels is used, there are 64k table entries in lookup table  132 . In another embodiment, where the corner pixels are excluded from the windows, there are 4k table entries in lookup table  132 . Reducing the number of table entries may improve the performance and reduce the cost of printer  120  by reducing the size memory of  128 . 
     Each table entry includes a corresponding multi-bit token that replaces the center four 1-bit per pixel values of each window  202 A- 202 C and  204 A- 204 C with a single pixel value. In one embodiment, the token is a 4-bit value, 5-bit value, 6-bit value, 7-bit value, 8-bit value, or other suitable number of bits. The token value controls the modulation of the laser of laser print engine  130  to quality of the original higher resolution image. Each token value represents the laser modulation for a single native-resolution pixel, such as laser off, full laser on, one pulse, two pulses, or a multitude of pulses within the pixel. The number of laser modulation choices can increase as the bit length of the token is increased. 
     In this embodiment, window  202 A is compared to the table entries in lookup table  132  and determined to have a token value of one. The token value of one replaces the center four pixels of window  202 A. The token value is stored in memory  128  for modulating the laser in pixel one for scan line N  202  when the resolution doubled sample data  200  is printed by laser print engine  130 . The token value of one modulates the laser to form a single pulse on the right side of pixel one for scan line N  202 , as indicated at  206 . 
     The center four pixels of window  202 B are adjacent to the center four pixels of window  202 A on scan line N  202 . Window  202 B is compared to the table entries in lookup table  132  and determined to have a token value of six. The token value of six replaces the center four pixels of window  202 B. The token value is stored in memory  128  for modulating the laser in pixel two for scan line N  202  when the resolution doubled sample data  200  is printed by laser print engine  130 . The token value of six modulates the laser to form two pulses in pixel two for scan line N  202 , as indicated at  208  and  210 . 
     The center four pixels of window  202 C are adjacent to the center four pixels of window  202 B on scan line N  202 . Window  202 C is compared to the table entries in lookup table  132  and determined to have a token value of zero. The token value of zero replaces the center four pixels of window  202 C. The token value is stored in memory  128  for modulating the laser in pixel three for scan line N  202  when the resolution doubled sample data  200  is printed by laser print engine  130 . The token value of zero turns the laser off in pixel three for scan line N  202 , as indicated at  212 . 
     The center four pixels of window  204 A are adjacent to the center four pixels of window  202 A. Window  204 A is compared to the table entries in lookup table  132  and determined to have a token value of one. The token value of one replaces the center four pixels of window  204 A. The token value is stored in memory  128  for modulating the laser in pixel one for scan line N+1  204  when the resolution doubled sample data  200  is printed by laser print engine  130 . The token value of one modulates the laser to form a single pulse on the right side of pixel one for scan line N+1, as indicated at  214 . 
     The center four pixels of window  204 B are adjacent to the center four pixels of window  204 A on scan line N+1  204 . Window  204 B is compared to the table entries in lookup table  132  and determined to have a token value of six. The token value of six replaces the center four pixels of window  204 B. The token value is stored in memory  128  for modulating the laser in pixel two for scan line N+1  204  when the resolution doubled sample data  200  is printed by laser print engine  130 . The token value of six modulates the laser to form two pulses in pixel two for scan line N+1  204 , as indicated at  216  and  218 . 
     The center four pixels of window  204 C are adjacent to the center four pixels of window  204 B on scan line N+1  204 . Window  204 C is compared to the table entries in lookup table  132  and determined to have a token value of zero. The token value of zero replaces the center four pixels of window  204 C. The token value is stored in memory  128  for modulating the laser in pixel three for scan line N+1  204  when the resolution doubled sample data  200  is printed—by laser print engine  130 . The token value of zero turns the laser off in pixel three for scan line N+1  204 , as indicated at  220 . 
     Therefore, according the to present invention, a 1200 dpi 8.5 inch wide image is converted to a 600 dpi image using 4-bit tokens, resulting in 5,100 4-bit tokens for a total of 20,400 bits per pair of input rows. This is one fourth the number of bits used by the prior art. In the prior art, 1200×1200×1 bit data is converted to 1200×600×8 bit data, resulting in four times as many bits. In the current invention, 1200×1200×1 bit data is converted to 600×600×4 bit data, resulting in no increase in bits. 
       FIG. 3  is a flow diagram illustrating one embodiment of a method for performing resolution doubling. At  302 , processor  122  begins processing a page of image data  114 . At  304 , the row (Row) of the page of image data  114  is set equal to zero and the column (Col) of the page of image data  114  is set equal to zero. At  306 , processor  122  generates a four Row by four Col data window at the selected Row and Col. In one embodiment, the corner pixels of the four Row by four Col data window are excluded. At  308 , processor  122  matches the data window to a table entry in lookup table  132  and retrieves the corresponding token for the data window. At  310 , processor  122  stores the token in memory  128 . At  312 , processor  122  increments Col by two. 
     At  314 , processor  122  determines whether all the columns of the page of image data  114  have been processed. If all the columns of the page of image data  114  have not been processed, then control returns to block  306  where the next four Row by four Col data window is generated for processing. If all the columns of the page of image data  114  have been processed, then at  316 , Row is incremented by two and Col is set equal to zero. At  318 , processor  122  determines whether all the rows of the page of image data  114  have been processed. If all the rows of the page of image data  114  have not been processed, then control returns to block  306  where the next four Row by four Col data window is generated for processing. If all the rows of the page of image data  114  have been processed, then at  320 , page processing is complete. Once page processing is complete, the stored tokens are passed to laser print engine  130  to print the resolution doubled image data  114 . Although the flow diagram of  FIG. 3  illustrates processing columns of image data  114  first, other processing orientations, such as the rows first, can be used. 
     Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described without departing from the scope of the present invention. This application is intended to cover any adaptations or variations of the specific embodiments discussed herein. Therefore, it is intended that this invention be limited only by the claims and the equivalents thereof.