Object optimized printing system and method
First Claim
1. A method for generating object optimized print data of an output image, comprising:
- inputting document data defining a document, the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type, each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects; and
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object.
3 Assignments
0 Petitions
Accused Products
Abstract
An object optimized printing system and method comprises a page description language decomposing system, a command instruction and data generating system and an image output terminal controller. The PDL decomposition system inputs a print file defining a plurality of pages in the page description language and locates the plurality of objects forming each page and their object types. Based on the determine object types and any explicit rendering commands in the PDL file, the PDL decomposition system automatically generates rendering tags for each of the objects. The rendering tags are used to control the command instruction and data generating system, the IOT controller and/or the image output terminal to optimize the printing by the IOT on an object-by-object basis. Based on the objects and the generated rendering tags, the command instruction and data generating system generates the differing types of data and the command instructions on a scanline-by-scanline basis. The generated command instructions and data are output to the IOT controller scanline-by-scanline. The data output to the IOT controller includes metabit data which is generated from the rendering tags. The metabit data output to the IOT controller is used to control various subsystems of the IOT controller and the IOT to optimize the printing characteristics of the IOT for each differing object on each scanline. The metabits can optimize such processing subsystems as halftone generation, halftone screen size and angle, color space transformation, tone reproduction curve, IOT output correction, and the like. Using this system, each page output by the IOT has the printing characteristics for each object within the page optimized to the object'"'"'s types.
101 Citations
44 Claims
-
1. A method for generating object optimized print data of an output image, comprising:
-
inputting document data defining a document, the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type, each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects; and
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object. - View Dependent Claims (2, 3)
selecting a current one of the plurality of independent image objects;
determining whether at least one user specified rendering tag has been specified for the current independent image object;
generating at least one object optimized rendering tag for the current independent image object from each at least one user specified rendering tag; and
generating at least one object optimizing rendering tag for the current independent image object based on the object type of the current independent image object when at least one user specified rendering tag has not been specified.
-
-
3. The method of claim 2, further comprising the step of repeating the steps of claim 2 for each one of the plurality of independent image objects.
-
4. The method of 1, further comprising the step of compressing at least one of the plurality of independent image objects based upon at least one of the corresponding object type and the at least one object optimized rendering tag.
-
5. A method for generating object optimized print data of an output image, comprising:
-
inputting document data defining a document, the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects; and
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object;
wherein the object optimized print data comprises a plurality of separate data channels including at least one of a print data channel, a render control commands channel and a printer controller commands channel, the print data comprising a plurality of separate print data channels. - View Dependent Claims (6, 7, 8, 9, 10, 11, 29, 30, 31, 32, 33, 34)
selecting at least one object optimized processing procedure for the print data based on the render control command data, printer controller data and printer characteristic data; and
applying the selected at least one object optimized processing procedure to the print data;
wherein the at least one object optimized processing procedure is selected from an object optimized color space transformation procedure, an object optimized half-tone generating procedure, an object optimized spatial filtering procedure, an object optimized trapping procedure, and an object optimized printer artifact suppression procedure.
-
-
9. The method of claim 5, further comprising the steps of:
-
compressing the print data based on the data channel;
compressing the render control commands and the printer controller commands based upon their data structures;
transmitting the compressed print data, render control commands, and printer controller commands to a printer controller;
decompressing the print data based on the data channel;
decompressing the render controller data and printer controller data based upon their data structures; and
combining and processing the print data based on the render control command data, the printer controller data and the print data.
-
-
10. The method of claim 9, further comprising the step of storing, after the print data compressing step, the compressed print data in a memory, wherein the transmitting step comprises transmitting the compressed data from the memory.
-
11. The method of claim 5, further comprising the steps of:
-
inputting real-time print data from an external source; and
selecting the real-time print data based on the object optimized print data, the object type and the render control command data.
-
-
29. The method of claim 5, wherein the scanline runs list flattening step comprises the steps of:
-
generating a current segment;
setting the current segment'"'"'s start point and end point, respectively to a start point and an end point of the current scanline;
setting a foreground pointer and a background color pointer of the current segment to a white object;
setting a current position pointer to the start point of the current scanline;
determining if the current position pointer points to the end point of the current scanline;
locating a next visible segment of a run on the current scanline when the current position pointer does not point to the end point;
determining if a foreground color and corresponding at least one rendering tag and a background color and corresponding at least one rendering tag of the next visible segment are, respectively, the same as the foreground and background colors and corresponding rendering tags of the current segment;
if not, generating command data and print data for the current segment, and selecting the next visible segment as the current segment;
if so, setting the end point of the current segment to the end point of the next visible segment to combine the segments;
setting the current position pointer to the end point of the current segment;
repeating the current position pointer determining step through the current segment end point setting step until the current position pointer points to the end point of the current scanline; and
generating command data and print data for the current segment when the current position pointer points to the end point of the current scanline.
-
-
30. The method of claim 29, wherein the command and print data generating step comprises the steps of:
-
determining if the foreground color of the current segment is transparent;
if so, processing a background chain of segments possibly visible beneath the foregound color, eliminating the transparent portions from a mask bitmap, and producing printer controller commands and the print data using the mask bitmap;
if not, determining if the foreground object is a sweep object;
producing normal print controller commands and print data when the foreground object is not a sweep object; and
producing sweep print controller commands and sweep print data when the foreground object is a sweep object.
-
-
31. The method of claim 30, wherein the step of producing the printer controller commands and the print data using the mask bitmap comprises the steps of:
-
determining if at least one of the foreground color and the background color of the current segment is a sampled image;
if so, validating sample color render control data for the mask bitmap, and generating printer controller commands and print data based on the mask bitmap and the validated sample color render control data;
if not, determining if both the foreground color and background color of the current segment need to be activated;
if the foreground and background colors both need to be activated, validating the foreground color and the background color selected by the mask bit map, generating a one-pixel-long printer controller command and print data to activate one of the foreground color and the background color, and generating printer controller commands and print data to activate the other of the foreground and the background colors based on the mask bitmap;
if the foreground and background colors do not both need to be activated, determining if one of the foreground and background colors needs to be activated;
if one of the foreground and background colors needs to be activated, generating printer controller commands and print data to activate the one of the foreground and the background colors which needs to be activated based on the mask bitmap; and
if neither of the foreground and background colors needs to be activated, generating the printer controller commands and print data based on the mask bitmap.
-
-
32. The method of claim 31, wherein the step of producing sweep command and sweep print data comprises the steps of:
-
determining if a rate-of-change of color of the sweep object along the scanline is above a predetermined rate;
if not, generating a plurality of sweep printer controller commands and sweep print data for each scanline; and
if so, generating a single sweep printer controller command and a plurality of sweep print data for each scanline.
-
-
33. The method of claim 30, wherein the step of producing normal printer controller commands and print data comprises the steps of:
-
determining if the color of the current segment is sampled image color;
if so, determining a sample data set to be output, and generating printer controller commands, render control commands and print data to output the sample data set; and
if not, validating a color to be printed, and generating printer controller commands and print data based on the validated color.
-
-
34. The method of claim 29, wherein the next visible segment creating step comprises the steps of:
-
setting a run pointer to point to a next run on the sorted runs list;
setting the end point of the current segment to an actual end point of the current segment;
determining if the sorted runs list is empty;
if the sorted runs list is not empty, determining if the start point of the next run is after the end point of the current segment;
if either the sorted runs list is empty or the start point of the next run is after the end point of the current segment, identifying the current segment as the next visible segment;
if the start point of the next run is before the end point of the current segment, determining if a layer of an object corresponding to the next run is above a foreground of a highest object on the current scanline;
if the layer is not above the foreground of the highest object, processing the object corresponding to the next run as an underneath run, selecting a new run from the sorted runs list, and returning to the sorted runs list is empty determining step;
if the layer is above the foreground of the highest object, determining if the start point of the next run is after the start point of the current segment;
if the start point of the next run is not after the start point of the current segment, processing the next run as the highest run;
if the start point of the next run is after the start point of the current segment, setting the end point of the current segment to the start point of the next run; and
identifying the current segment as the visible run.
-
-
12. A method for generating object optimized print data of an output image, comprising:
-
inputting document data defining a document, the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type, each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects; and
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object, comprising;
generating an intermediate object list, the intermediate object list comprising, for each scanline of the output image, an ordered list of at least one of the plurality of independent objects appearing on each scanline, and generating the object optimized print data for each page of the output image based on the intermediate object list, the object type and the at least one object optimized rendering tag corresponding to each image object on the intermediate object list. - View Dependent Claims (13, 14, 15)
outputting the object optimized print data for the document to a printer; and
controlling the printer based on the object optimized print data to print an object optimized version of the document, the object optimized print data comprising color data and render control commands.
-
-
15. The method of claim 14, further comprising the steps of:
-
analyzing an appearance of the object optimized document;
generating at least one edit to the intermediate object list based on the analysis;
repeating the analyzing and editing steps until the appearance of the object optimized document reaches a desired state;
generating a script in the page description language indicating the at least one edit to the intermediate object list; and
revising the page description language document based on the script.
-
-
16. A method for generating object optimized print data of an output image, comprising:
-
inputting document data defining a document the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type, each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects;
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object;
printing a calibration document having at least one object on a printer;
measuring an appearance of the at least one object in the calibration document;
adjusting the object optimized print data generation based on the appearance measurements; and
repeating the printing, appearance measuring and adjusting steps until the appearance of the at least one object in the calibration documents reaches a desired state.
-
-
17. A method for converting a page image of a set of page images into object optimized print data, each page image of the set of page images defined by a portion of document data, the method comprising the steps of:
-
generating an object list of independent image objects within the page image from the corresponding portion of the document data;
generating scanline data from the object list of independent image objects and at least one rendering tag, the scanline data comprising a plurality of raster scanlines of print data and corresponding command data; and
separating the print data and corresponding command data into a plurality of independent data sets comprising a command data set, a metabit data set and at least one of a constant color data set, a mask data set, and a sample color data set. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 35, 36, 37, 38, 39, 40, 41, 42)
determining, after the object list generating and rendering tag appending steps, if the plurality of independent image objects within the page exceeds current resources; and
if current resources are exceeded, forming the scanline data using a fallback process instead of the scanline data generating and print data separating steps.
-
-
20. The method of claim 17, wherein the step of generating the list of independent image objects comprises the steps of:
-
inputting the corresponding portion of the document data defining the page image, the document data comprising a plurality of document elements;
selecting a document element of the page image as a current document element;
determining if the current document element is one of an end-of-page element, a color-operator element, a masking-operator element, and a state-operator element;
outputting an error indication if the current document element is not one of the end-of-page element, the color-operator element, the masking-operator element and the state-operator element;
processing the document element if the current document element is one of the color-operator element, masking-operator element and state-operator element;
repeating the selecting, parsing, determining, outputting and processing steps until the current document element is the end-of-page element; and
validating any clipping regions when the current document element is the end-of-page element.
-
-
21. The method of claim 20, wherein when the document element is a color-operator element, the processing step comprises the steps of:
-
determining if the document element indicates a sampled color; and
if so, determining an image resolution factor for the sampled color based on an image data resolution and a printer resolution, scaling the sampled color based on the image resolution factor, defining a new sampled color palette entry based on the sampled color, determining a palette index for the new sampled color palette entry, storing the new sampled color palette entry into memory based on the palette index, and assigning a current color variable to the new sampled color palette entry.
-
-
22. The method of claim 20, wherein when the document element is a color-operator element, the processing step comprises the steps of:
-
determining if the document element indicates a constant color;
if so, determining if a palette entry exists in memory corresponding to a color for the constant color, locating the existing palette entry, and assigning a current color variable to the existing color palette entry; and
if a palette entry corresponding to the color for the constant color object does not exist, defining a new constant color palette entry based on the color of the constant color, determining a new palette index for the new constant color palette entry, storing the new constant color palette entry to memory based on the new palette index, and assigning the current color variable to the new constant entry.
-
-
23. The method of claim 20, wherein when the document element is a masking-operator element, the processing steps comprises the steps of:
-
determining if at least one user-supplied rendering tag is provided;
if so, determining at least one object optimized rendering tag for a current object from the at least one user-supplied rendering tag;
if not, determining at least one object optimized rendering tag for the current object based on an object type of the current object;
updating a list of the object optimized rendering tags for a current color variable;
converting the current object into at least one primitive masking object; and
processing the at least one primitive masking object.
-
-
24. The method of claim 23, wherein the at least one primitive masking object processing step comprises the steps of:
-
determining if the current primitive masking object is a bitmap primitive;
if the current primitive is a bitmap primitive, blitting the current primitive into a mask bitmap;
determining if a clipping region is active;
if a clipping region is not active, adding the current primitive masking object to a scanline object list at a point corresponding to a first scanline of current primitive masking object;
if a clipping region is active, determining if the current primitive masking object is part of an existing incomplete sweep;
if the current primitive masking object is not part of an incomplete sweep, adding the current primitive masking object to an inside list of a current clipper object; and
if the current primitive masking object is part of an incomplete sweep, adding the current primitive masking object to a sweep sub-item of the current clipper objects, and updating a completeness attribute of the current clipper object.
-
-
25. The method of claim 20, wherein, when the language element is a state-operator element, the processing step comprises the steps of:
-
determining if the document element indicates a new clipping region is to be created;
if so, determining if a current complete clipper object exists; and
if a current complete clipper object exists;
converting the current complete clipper object to a sweep object, setting an outline of the sweep object to a current clipping region, setting a fill region of the sweep object to an underlying sweep object of the current clipping region, inserting the object indicated by the current document element into a scanline object list at a first scanline upon which the object appears, and setting the current clipping region to the new clipping region.
-
-
26. The method of claim 20, wherein, when the document element is a state-operator element and a current clipper object does not exist, the processing step comprises the steps of:
-
determining of the document element indicates a new renderig hint is to be set;
if so, setting a rendering hint to the new rendering hint indicated by the document element; and
if not, setting at least one other graphical state variable based on the document element.
-
-
27. The method of claim 17, wherein the scanline data generating step comprises the steps of:
-
initializing an active object list;
setting a scanline counter to 1;
inputting a scanline indicated by the scanline counter as the current scanline;
adding any objects from a current scanline object list corresponding to the current scanline, the current scanline object list comprising objects first appearing on the current scanline, into a sorted active object list;
sorting the active object list based on a starting position of each object;
generating a scanline runs list for the current scanline;
flattening the scanline runs list for the current scanline;
generating a sorted runs list of ordered commands and palette references for the current scanline from the flattened scanline runs list;
removing any objects from the active object list which will not appear after the current scanline;
determining if the current scanline is a last scanline;
incrementing the scanline counter by 1 if the current scanline is not the last scanline; and
repeating the inputting step through the incrementing step until the current scanline is the last scanline.
-
-
28. The method of claim 27, wherein the step of generating the current scanline runs list comprises the steps of:
-
selecting a first object on the active object list as a current object;
determining if the current object is a valid object;
if the current object is a valid object, determining if the current object is a sweep object;
if the current object is a sweep object, adding a run for each segment of an outline of the current object on the current scanline into the sorted runs list for the current scanline;
if the current object is not a sweep object, determining if the current object is a clipper object;
if the current object is a clipper object, clipping each object on an inside list of objects held by the current object based on a clipping region held by the current object, and adding each resulting run into the sorted runs list;
if the current object is not a clipper object, adding a run for each segment of the current object on the current scanline into the sorted runs list;
selecting a next object as the current object; and
repeating the valid object determining step through the next object selecting step until the current object is not a valid object.
-
-
35. The method of claim 17, wherein the step of separating the print data and corresponding command data comprises the steps of
extracting command data from the scanline data into the command data set; -
extracting constant color data from the scanline data into the constant color data set;
extracting metabit data from the scanline data into the metabit data set;
extracting mask pointers and mask data from the scanline data into the mask data set; and
extracting sample color pointers and sample color data from the scanline data into the sample color set.
-
-
36. The method of claim 35, wherein the step of extracting the constant color data comprises the steps of:
-
selecting a next color reference as a current color reference;
extracting the constant color data from a palette entry corresponding to the current color reference;
extracting pixel data from the corresponding palette entry;
storing the pixel data in a next memory location of a pixel data portion of a memory;
determining if the current color reference is a last color reference;
repeating the selecting step through the determining step until the current color reference is the last color reference;
compressing the extracted constant color data using a compression method which optimally compresses constant color data; and
storing the compressed constant color data to a constant color portion of the memory.
-
-
37. The method of claim 35, wherein the step of extracting the metabit data comprises the steps of:
-
selecting a next color reference as a current color reference;
extracting at least one object optimized rendering tag from a palette entry corresponding to the current color reference;
extracting, for each at least one object optimized rendering tag, corresponding render control commands from a translation look up table, the render control commands controlling hardware components of at least one of a printer and a printer controller based on the corresponding object optimized rendering tag;
storing, for each at least one rendering tag, the corresponding metabit data in a next memory location of a temporary portion of a memory;
determining if the current color reference is a last color reference;
repeating the selecting step through the determining step until the current color reference is the last color reference;
compressing the stored metabit data using a compression method which optimally comprises metabit data; and
restoring the compressed metabit data to a metabit portion of the memory.
-
-
38. The method of claim 17, further comprising the steps of:
-
independently compressing each one of the independent image objects on the objects list with an optimized compression technique selected based on the object type for each independent image object;
independently compressing each one of a plurality of independent data sets with an optimized compression technique selected based on the data set being compressed; and
storing the compressed independent image objects and data sets to a memory, each independent image object and each data set being stored to a separate portion of the memory.
-
-
39. The method of claim 38, further comprising the steps of:
-
selecting a next page image of the set of page images as a current page image;
reading a portion of each of the plurality of compressed data sets corresponding to the current page image from the memory;
decompressing the read portion of each of the plurality of compressed data sets;
combining the decompressed portions of the plurality of data sets based on at least one of the decompressed printer controller command data and the decompressed mask data set to generate object optimized print data, the object optimized print data comprising at least color data and render control command data;
outputting the object optimized print data to a printer, printing one of a plurality of data channels of the color data based on the render control command data;
determining if the current page image is a last page image of the set of page images; and
repeating the selecting step through the determining step until the current page is the last page.
-
-
40. The method of claim 39, further comprising the steps of:
-
determining if another copy of the set of page images is to be printed; and
repeating the selecting step through the another copy determining step until another copy is not to be printed.
-
-
41. The method of claim 17, further comprising appending at least one object optimized rendering tag to at least one independent object of the object list.
-
42. The method of claim 17, wherein the document data is in a page description language.
-
43. A method for generating object optimized print data of an output image, comprising:
-
inputting document data defining a document, the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type, each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects;
appending the at least one object optimized rendering tag generated for each independent image object to that independent image object; and
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object.
-
-
44. A method for generating object optimized print data of an output image, comprising:
-
inputting document data defining a document, the document comprising at least one page;
converting the document data into a plurality of independent image objects, each independent image object having an object type, each page of the document comprising at least one of the plurality of independent image objects;
generating from the document data at least one object optimizing rendering tag for aiding in generating the object optimized print data for at least one of the plurality of independent image objects; and
generating the object optimized print data for each page of the output image based on the at least one independent image object comprising each page, the object type of each independent image object and the at least one object optimized rendering tag generated for the at least one independent image object;
wherein the document is in a page description language.
-
Specification