A method and system for expanding a pixel bitmap mask. The pixel bitmap mask (102) is expanded by the use of a lookup table (104) to create an m*n bit expanded mask, where m is the depth of a screen and n is the number of pixels described by the original pixel bitmap mask (102). The expanded mask is logically ANDed with a foreground screen (106). The inverse of the expanded mask is logically ANDed with existing data in a screen buffer (108). The results of the two AND operations are logically OR'd to create a new screen buffer that is eventually sent to a printer.
|
7. A processor for rendering data into a screened band buffer, said processor comprising:
a memory lookup table for receiving an input mask and outputting an expanded mask; and at least one ALU for merging said expanded mask with said screened band buffer.
1. A method of expanding a pixel bitmap mask, said method comprising the steps of:
providing an n-bit mask; addressing a lookup table using said n-bit mask; reading an expanded mask from said lookup table, said expanded mask comprised of m*n bits, forming n groups of m sequential bits, each bit in a sequential group of m bits corresponding to a bit in said n-bit mask to yield an expanded mask having each of said m bits in a group of m sequential bits within said expanded mask equal to the logical inverse of the corresponding bit in said n-bit mask.
2. The method of
3. The method of
4. The method of
6. The method of
8. The processor of
9. The processor of
|
This application claims priority under 35 USC § 119(e)(1) of provisional application No. 60/100,544 filed Sep. 16, 1998.
This invention relates to the field of printing systems, more particularly to the compilation of pixelated images for printing.
Printing technology is undergoing a revolution as the inexpensive computational power developed for the desktop computer market is applied to the printing industry. Paralleling this growth are the skyrocketing expectations of consumers. While just a few short years ago the goal was to find an acceptable replacement for typewritten text, now the demand is for photographic quality reproduction of both scanned images and computer-generated graphics. Meeting this demand required a significant increase in the resolution of the printed images--both spatial resolution and color depth--that demanded the application of massive amounts of processing power and memory.
While image quality continues to increase, consumers continue to demand higher and higher print speeds from today's desktop printers. This expectation also leads to greater demands on the throughput of the print engine's processor. Thus, there is a need in the art for systems and methods to increase the efficiency and throughput of print engines.
Objects and advantages will be obvious, and will in part appear hereinafter and will be accomplished by the present invention which provides a method and system of efficiently rendering masks/bitmap fonts. The method comprises the steps of providing an n-bit mask, using the n-bit mask to address a lookup table, and reading an expanded mask from the lookup table. The lookup mask is comprised of m*n bits, each bit in a sequential group of m bits in the expanded mask corresponding to a bit in the n-bit mask. Typically each of the n bits in the original mask is replicated m times, but alternate embodiments replicate the logical inverse of the original bit m times.
According to another embodiment of the disclosed invention, a processor for rendering data into a printer buffer is disclosed. The processor comprises a memory lookup table for receiving an input mask and outputting an expanded mask, and at least one ALU for merging said expanded mask with a screened band buffer.
For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
Image rendering processors compile images to be printed by compiling multiple components of the image. This compilation is performed by merging each image component into a printer buffer. The printer buffer is rendered, that is the component images are merged into the printer buffer, by a series of masking and logical ORing operations which add image objects to the information already contained in the print buffer.
For example, text is added to a portion of the print buffer using a mask and information as to where the character of a given font and size is to be located. The mask is a 1 bit per pixel bitmap that specifies whether a particular pixel is to be painted or not. Although easily reversed, for the purposes of this disclosure a logical "1" at a given mask location indicates that pixel is to be printed, or "painted," with the foreground color. Using this example, the value assigned a particular buffer location is equal to:
where background is the characteristic of the image pixels not painted by the text being printed, and foreground is the characteristic of the image pixels that are to be painted by the text being printed. In a simple example, buffer is a 1-bit memory location assigned to a pixel that retains a "0" if a character of text does not cover the pixel, and is assigned a "1" if a character of text does cover the pixel. Multiple bit buffer locations are required to render gray-level and color images.
Once the bitmap representing the image to be printed is rendered, it is transferred to the printer and used to determine how much of each ink color a given location on the document being printed receives. While the amount of ink a given region of a document receives determines how saturated a region will appear, it is difficult to vary the amount of ink applied to a particular region/pixel location. For this reason, printers typically deposit ink in small clumps, or dots, within a region that is to be uniformly shaded. Lightly shaded regions have fewer and smaller dots, while darker areas have larger dots in greater numbers.
A screening pattern is used to translate an intensity value to the ink dot pattern. A screen is a periodic pattern that is fixed for a given gray level. The pattern is typically rectangular, although other shapes have been used. The pattern is usually much smaller than the document to be printed and is replicated, or tiled, across the document. Small screen sizes require less memory to store, but since the irregular dot pattern repeats each screen the smaller screens run the risk of creating more noticeable artifacts.
For the purposes of this disclosure, it is assumed that the screen has a depth of four bits per pixel, although it should be understood that more or less bits per pixel may be used in some applications--although screens that are eight bits deep will not reap efficiency gains as large as the systems with a screen depth of only four bits.
Using a 32-bit processor, such as the multiple video processors (MVP) available in the TMS320C82 digital signal processor, eight pixels must be masked or merged simultaneously in order to maximize the throughput of the processor. However, since the mask is only one bit per pixel, the mask must be expanded by replication before the mask and merge operation. For example, an 8-bit mask equal to 1010 1010{circumflex over ( )}b is expanded to a 32-bit mask equal to 1111 0000 1111 0000 1111 0000 1111 0000{circumflex over ( )}b.
Table 1 is an abbreviated list of expanded bit masks.
TABLE 1 | |
Bit Mask | Expanded Mask |
00000000 | 0x0 |
00000001 | 0xF |
00000010 | 0xF0 |
00000011 | 0xFF |
00000100 | 0xF00 |
. . . | . . . |
11111110 | 0xFFFFFFF0 |
11111111 | 0xFFFFFFFF |
The mask could be expanded using the following algorithm:
for (i=7; i>=0; - - - i) expanded_mask=(expanded_mask<<4)|((mask&(1<<i))?0×f:0);
This approach, however, consumes a large number of ALU clock periods. This is especially true when using 32-bit processors such as the MVP since they do not directly support operations on nibble-sized data words.
According to one embodiment of the disclosed invention, a lookup table is used to store all possible combinations of masks, thereby saving a large number of ALU clock cycles each time the mask must be expanded. Since there are only 256 possible mask patterns (28), each requiring the storage of a 4-byte expanded mask, the lookup table only consumes 1 kilo-byte of memory.
The m*n-bit expanded mask is logically ANDed with a foreground pattern held by register 106. The foreground pattern is m-bits deep for n pixels. The inverse of the m*n-bit expanded mask is logically ANDed with the existing data in the screened band buffer, held in register 108, to eliminate data in the pixels to be overwritten by the mask. The results of the two logical AND operations are logically OR'd to produce the updated screened band buffer. The updated screen buffer now contains foreground data for the pixels indicated by the mask, and background data for the remaining pixels.
This masking and merging operation is described as:
The operation described above is efficiently implemented on a 32-bit processor like the MVP using the following code:
expanded--mask=*(Ga--mask--lut--base+[Gx--mask--lut--index])
Thus, although there has been disclosed to this point a particular embodiment for an efficient method and system for expanding a mask and masking/merging foreground and background patterns, it is not intended that such specific references be considered as limitations upon the scope of this invention except insofar as set forth in the following claims. Furthermore, having described the invention in connection with certain specific embodiments thereof, it is to be understood that further modifications may now suggest themselves to those skilled in the art, it is intended to cover all such modifications as fall within the scope of the appended claims.
Easwar, Venkat V., Ganapathy, Praveen K.
Patent | Priority | Assignee | Title |
10338473, | Oct 30 2013 | Nederlandse Organisatie voor toegepast-natuurwetenschappelijk onderzoek TNO | Method and system for forming a patterned structure on a substrate |
6798420, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with a single-port RAM |
6853385, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video, audio and graphics decode, composite and display system |
6870538, | Nov 09 1999 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with parallel processing of graphics windows |
6879330, | Nov 09 1998 | Broadcom Corporation | Graphics display system with anti-flutter filtering and vertical scaling feature |
6927783, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with anti-aliased text and graphics feature |
6975324, | Nov 09 1999 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Video and graphics system with a video transport processor |
7002602, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Apparatus and method for blending graphics and video surfaces |
7015928, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with color look-up table loading mechanism |
7057622, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with line buffer control scheme |
7071944, | Nov 09 1998 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Video and graphics system with parallel processing of graphics windows |
7098930, | Nov 09 1998 | Broadcom Corporation | Graphics display system with anti-flutter filtering and vertical scaling feature |
7110006, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video, audio and graphics decode, composite and display system |
7184058, | Nov 09 1998 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Graphics display system with anti-aliased text and graphics feature |
7209992, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with unified memory architecture |
7227582, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with video synchronization feature |
7256790, | Nov 09 1998 | Qualcomm Incorporated | Video and graphics system with MPEG specific data transfer commands |
7277099, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an MPEG video decoder for concurrent multi-row decoding |
7310104, | Nov 09 1998 | Broadcom Corporation | Graphics display system with anti-flutter filtering and vertical scaling feature |
7350176, | Jul 17 2003 | Altera Corporation | Techniques for mapping to a shared lookup table mask |
7365752, | Nov 09 1998 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Video and graphics system with a single-port RAM |
7446774, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with an integrated system bridge controller |
7530027, | Nov 09 1998 | Broadcom Corporation | Graphics display system with graphics window control mechanism |
7538783, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with video scaler |
7554553, | Nov 09 1998 | Broadcom Corporation | Graphics display system with anti-flutter filtering and vertical scaling feature |
7554562, | Aug 28 2006 | Broadcom Corporation | Graphics display system with anti-flutter filtering and vertical scaling feature |
7598962, | Nov 09 1998 | Qualcomm Incorporated | Graphics display system with window descriptors |
7911483, | Nov 09 1998 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | Graphics display system with window soft horizontal scrolling mechanism |
7920151, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with video scaler |
7991049, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with video scaling |
8063916, | Oct 22 2003 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics layer reduction for video composition |
8199154, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Low resolution graphics mode support using window descriptors |
8493415, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with video scaler |
8619087, | Oct 06 2009 | Nvidia Corporation | Inter-shader attribute buffer optimization |
8848792, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Video and graphics system with video scaling |
9077997, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with unified memory architecture |
9129441, | Jun 21 2010 | Microsoft Technology Licensing, LLC | Lookup tables for text rendering |
9575665, | Nov 09 1998 | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | Graphics display system with unified memory architecture |
Patent | Priority | Assignee | Title |
6100905, | Jul 03 1995 | Apple Inc | Expansion of data |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 07 1999 | GANAPATHY, PRAVEEN K | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 010237 | /0323 | |
Jun 28 1999 | EASWAR, VENKAT V | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 010237 | /0323 | |
Jul 06 1999 | Texas Instruments India Limited | Texas Instruments Incorporated | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 010237 | /0323 | |
Sep 08 1999 | Texas Instruments Incorporated | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Aug 23 2006 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Aug 24 2010 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Aug 25 2014 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 04 2006 | 4 years fee payment window open |
Sep 04 2006 | 6 months grace period start (w surcharge) |
Mar 04 2007 | patent expiry (for year 4) |
Mar 04 2009 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 04 2010 | 8 years fee payment window open |
Sep 04 2010 | 6 months grace period start (w surcharge) |
Mar 04 2011 | patent expiry (for year 8) |
Mar 04 2013 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 04 2014 | 12 years fee payment window open |
Sep 04 2014 | 6 months grace period start (w surcharge) |
Mar 04 2015 | patent expiry (for year 12) |
Mar 04 2017 | 2 years to revive unintentionally abandoned end. (for year 12) |