1. Field
This patent specification describes a high speed image processing method and apparatus which implements a batch process for a plurality of source image objects. This patent specification also describes a program product of the method, a computer readable medium having the program product, and an image forming system having the apparatus.
2. Discussion of the Background
In response to an increasing demand for a high resolution and speed, improvements to printing systems such as a page printer have been made mainly by implementing advanced CPUs (central processing unit). It has been difficult, however, to satisfy the demand merely by the CPU performances although the development of high performance CPUs has been rapid. Especially, a color printing system such as a color laser printer needs to perform a variety of image processing including an image zoom for C, M, Y and K type images, a dither processing and a color translation processing.
Owing to the recent development of semiconductor technology, a specific hardware accelerator becomes capable of performing a part of the image processing of the printing systems which is conventionally performed by the CPU. For example, some of the printing systems employ the above-mentioned hardware accelerator in a form of an FPGA (field programmable gate array) so that a change of image processing functions may easily be taken place.
However, the performance of the hardware accelerator is still not sufficient to meet the demand for the high resolution and speed on the image processing of the printing system. Accordingly, it is yet difficult to allocate a sufficient number of high speed memories to a halftone generation which particularly requires a high speed
One attempt to respond to the above-described demand for a high resolution and speed uses a threshold-value-matrix page memory and reads. In this attempt, threshold data are stored line by line into registers for a repetitive use when they are read from the threshold-value-matrix page memory. Then, the threshold data are selectively sent to a plurality of comparators and are subjected to a plurality of parallel comparisons. After that, the threshold data stored in the registers are sequentially shifted line by line for a repetitive use.
In this attempt, however, either one of the image zoom and the halftone generation under processing is inevitably required to be stopped in a system having a single main memory system with no extra memory for dither data, when these two functions are performed at the same time.
This patent specification describes a novel image processing apparatus which includes a CPU (central processing unit) configured to control the image processing apparatus, a memory configured to store data and an image processing device configured to read a source image stored in a storage area of the memory and implement a batch processing for a plurality of objects of the source image.
This patent specification further describes a novel method for performing image processing which includes storing data in a storage of a memory, reading a source image stored in a storage area of the memory; and implementing a batch processing for a plurality of objects of the source image in accordance with a command read DMA which reads commands.
Further, this patent specification describes a novel computer program for printing processing which includes means for implementing to read command read DNA which reads commands from a storage, first means for reading a source image data from the storage, means for implementing a rotation DMA which performs rotation of the source image data and storing the results in the storage, means for allowing the implementation of the rotation DMA, means for implementing a gamma & UCR processing DMA which performs gamma & UCR processing and storing the results in the storage, means for allowing the implementation of the gamma & UCR processing DMA, means for implementing image data read DMA, dither read DMA and processing image write DMA at every line after the implementation of the rotation DMA and gamma & UCR processing DMA and means for checking an existence/nonexistence of a complete interruption which is an indication of absence of a following object.
A more complete appreciation of the disclosure and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, wherein:
In describing preferred embodiments illustrated in the drawings, specific terminology is employed for the sake of clarity. However, the disclosure of this patent specification is not intended to be limited to the specific terminology so selected and it is to be understood that each specific element includes all technical equivalents that operate in a similar manner. Referring now to the drawings, wherein like reference numerals designate identical or corresponding parts throughout the several views, particularly to
The IPA 100 reads an image data from a storage area of a main memory 130 and executes a predetermined image processing at the each unit. Then the IPA 100 stores the processed image data into other storage area of the main memory 130 for a next process step.
The image reading unit 101 reads the image data from the main memory 130 and transfers it to the BG/UCR processing unit 102. The BG/UCR processing unit 102 performs a BG processing, an UCR processing and an UCA processing. The BG processing is to convert a CMY image data to a K-type image data (black image), the UCR process is to convert the gray-type image data to the K-type image data (black image) and the UCA process is to convert the CMY image data to a CMYK image data. The BG/UCR processing unit 102 uses the first to the fourth gamma memories 112, 113, 114, 115 and a processing of a gamma correction is performed for each color. In the UCA processing, the first to the third UCA memories 116, 117, 118 are used and the CMY image data is converted to a CMYK image data.
The image data which is processed with a predetermined manner at the BG/UCR processing unit 102 is input to the enlarge/reduce processing unit 103 and the THRU processing unit 105. If an enlarge/reduce processing is requested, the enlarge/reduce processing unit 103 stores the image data line by line in the line memory 108, performs an enlarge/reduce processing and sends the processed image data to the halftone image processing unit 104.
The halftone image processing unit 104 converts the multilevel CMYK image data to binary/four valued image data by a fixed threshold/dither method. During the conversion, the first to third dither memories 109, 110, 111 are used to realize a pseudo-halftone. Four-valued data are created by comparing predetermined threshold values stored in the memories 109, 110, 111. In the case of binary halftone, one dither memory is enough to create data.
The inner register controller 107 controls an inner register in the IPA 100. The THRU processing unit 105 just transmits the image data which is processed in the halftone image processing unit 104 or in the BG/UCR processing unit 102 to the image writing unit 106. The image writing unit 106 writes the processed image data in the previous process steps into a different area of main memory from the area at reading.
The processing shown in
In
123. The memory arbiter 140 is connected to a memory controller 150. And the memory controller 150 is connected to the main memory 130. By this configuration, an access between the IPA 100 and the main memory 130 becomes possible.
A register 122 of the IPA 100 can access the CPU 200 through the CPU interface 120 and can be accessed by the memory arbiter 140 through the memory arbiter interface 123. Similarly, gamma memories, 112 to 115, can access the CPU 200 through the CPU interface 120 and can be accessed by the memory arbiter 140 through the memory arbiter interface 123. The main memory 130 stores command data 131, a source image data 132 which is a data before rotation process, gamma & UCR data 133, source image data 134, dither data 135 and a band region data 136. The IPA 100 can directly access the main memory 130 using the DMA processing with no instruction from the CPU 200. During the DMA processing, a plurality of the commands are read sequentially and are executed with a batch processing.
1) command read DMA
2) rotation DMA
3) gamma & UCR read DMA
4) source image data read DMA
5) dither data read DMA
6) processing image write DMA
The command read DMA (command DMA) is a processing task to connect the a plurality of image data and make a bigger image data. The command DMA is performed at every object and makes it possible to save idle time of the CPU due to interruption. The rotation DMA rotates an image specified by an address by a specified rotation angle and writes it into a storage area of specified addresses. (per 90 degree in this embodiment) The gamma & UCR read DMA performs a gamma correction and an UCR processing at every first object of a page.
The source image data read DMA reads an image data to be processed in a horizontal direction at every line. The dither pattern, which the IPA 100 executes, is read data is read from the dither memory 108 to 111 by the dither data read DMA. The processed image data is written by the processing image write DMA in a horizontal direction at every line. The notations of the processing tasks of 1) to 6) DMA corresponds to the notations 1 to 6 shown in
In the case of
Secondary, the image data which is processed with the rotation processing is read from the source image data 134 by the source image data read DMA and is sent to the image reading unit 101. At the BG/UCR processing unit 102, the IPA 100 performs BG/UCR processing with the source image data sent to the image reading unit 101. Then, the processed image data is sent to the HFT processing unit 104.
The HFT processing unit 104 reads dither data 135 from the main memory 130 by the dither data read DMA. If the dither data is a binary halftone, a threshold value from one of the dither memories, 109 to 111, is used to perform a halftone processing. If the dither data is a four-valued halftone, three threshold values out of the dither memories, 109 to 111, are used. The processed image data with halftone processing is then sent to the image writing unit 106 and stored in a band area 136 of the main memory 130 by the processing image write DMA.
In this exemplary embodiment, one processing to perform for one object is illustrated. A command data for a command DMA is read at the beginning and then following processing tasks are performed. plurality of objects are performed successively (with one instruction) similarly. To perform this successive processing, an interrupt routine is executed at every processing.
The IPA 100 is booted by kicking KICK register as shown in the flowchart of
The rotation DMA 2 is performed when a flag of rotation DMA is “1” (FL=1) and the gamma &-UCR DMA 4 is performed when a flag of rotation DMA is “1” (FL=1). The flags are to be defined by user. In this case, a so-called command chain in which DMA command DMA 1 to 6 are repeated can be set.
After all the DMA processing tasks are performed, a command “complete interruption” is generated finally. The steps from the image data read DMA of the Step 4 to the processing image write DMA of Step 6 are implemented at every line. The processing steps are repeated by a necessary number for all corresponding lines read.
In the case of
Thus, similarly to next job, the processing is performed after a generation of gamma interruption DMA 301 until a generation of a complete interruption 302. And it is performed for the objects, one after another. The complete interruption 302 is generated when next object is not followed.
In printer application, an object is registered by a library function IpaReg0b j( ) which is shown later and the data format of the object is defined as follows.
OBJHEADER
CMYKMODE
DATATYPE
XWIDTH
YWIDTH . . .
The first data format OBJHEADER includes a bit flag which indicates existence or nonexistence of a next object. If the bit flag is “1”, the IPA 100 recognizes that the object is the last object and generates a complete interruption after drawing with the object data. In this embodiment, using the command DMA interruption which reads command from the command data 131 and the complete interruption 302, the IPA 100 can execute a plurality of objects with a batch processing.
In this job, a series of DMA processing tasks from the first command DMA interruption 303-1 to the DMA processing before the second command DMA interruption 303-2 is for a first object. And a series of DMA processing tasks after the second command DMA interruption 303-2 is for a second object. Thus, the processing tasks between the first command DMA interruption 303-1 and the complete interruption 302 is treated as a processing unit. If a plurality of objects having n-number are included, a plurality of command DMA interruption having n-number (303-1, 303-2, . . . , 303-n) are generated, similarly.
In this job, again, a series of DMA processing tasks from the first command DMA interruption 303-1 to the DMA processing before the second command DMA interruption 303-2 is for a first object. And a series of DMA processing tasks after the second command DMA interruption 303-2 until a complete interruption 302 is for a second object.
The CPU 200 accesses a KICK register of the IPA 100 to start the processing as described above. The IPA 100 begins with a process of a command DMA 1. (refer to
All the target image data are processed and stored in the specified area of the main memory 130. (Step S310) Namely, in the step S310, the IPA 100 executes all the commands assigned in the main memory 130 and stores the processed image data in the main memory 130.
Then, the IPA 100 sends an interruption to the CPU 200 and finalizes the processing with writing a interruption factor to an INT_STATUS register. (Step S311) The CPU 200 reads the INT_STATUS register of the IPA 100 and confirms the interruption factor. (Step S312) If a complete interruption is requested and a next object follows, processing tasks after the step 305 are performed repeatedly. Otherwise, the CPU 200 finalizes the job.
The processing described above is achieved with a library and a device driver.
As an alternative of performing the registration of the gamma & URC data in this exemplary embodiment, it is possible to perform a rotation processing only, or, to perform neither rotation processing nor gamma & URC processing. Thus, it is possible to perform a variety of successive image processing tasks by specifying a necessary operation modes. When the both rotation processing and gamma & URC processing are not performed, necessary operations is selected by the printer application in accordance with the PC (personal computer) panel, or, a direction from PC.
The IPA 100 is booted at the step S406. However, the IPA 100 may not be booted. It depends on the processing data whether IPA 100 is used or not used.
In this embodiment, if the sizes of the image data satisfy the formula,
4<X size of image=<2048 and 1<Y size of image=<2048 (formula 1),
(a number is a pixel number), the IPA 100 can handle the image data. When the image data satisfy the formula 1, a scale of enlargement is checked further. If the size of the image is out of these range, drawing processing is implemented on the image data without using IPA 100. (Step S505) In this exemplary embodiment, it is checked if the scales of enlargement of the image data satisfy the formula,
1.0<scale of enlargement in X direction=<8.5 and 1.0<scale of enlargement in Y direction=<8.5 (Formula 2).
If the image data has a side which is out of the range of the Formula 2, drawing processing is performed on the image data without using the IPA 100. (Step S505) If the image data has a side which is within the range of the Formula 2, drawing processing is performed on the image data using the IPA 100.
In another word, if the sizes and the scales of enlargement of the image satisfy the formula 1 and 2, the drawing processing is performed. Using this procedure, it is possible to perform a processing for a plurality of objects when a command for a plurality of receiving lines is received. Namely, a faster image processing and a high speed printing can be achieved by this procedure.
The one of the features of this embodiment is to include a driving software 520 which drives the IPA 100 of the hardware 501. The software 520 manages the IPA 100 to perform the image processing on the image data using a IPA device driver 5211 of the OS 521 and a IPA library 5231 in the application module layer 523. The IPA library 5231 is used with a RPCS (Refined Printing Request command) 5232 and a PCL (Printing Control Language) 5233. The process steps shown in
The software in the application module layer 523 includes a plurality of programs which make the CPU 200 an application control device to execute a desired function with necessary hardware resources. The software in the service module layer 522 is arranged to organize the CPU 200, hardware resources and application control devices.
The software in the service module layer 522 includes service control programs for receiving operation requests to the hardware resources from the CPU 200, arbitrating the operation requests, controlling the operations and executing in accordance with the operation requests. The OS 521 is one of operating systems such as UNIX (registered trademark) and manages the programs in the service module layer 522 and application module layer 523 for the parallel implementations.
The RPCS 5232 is a printer language which operates on a platform and is located in the layer shown in
The language processing group including the RPCS 5232 is called CDC (Contents Description Command). The CDC manages to input RPCS data of a printer document which is generated by Windows (registered trademark), to interpret the data and to generate a page image in color or in monochrome.
The IPA 100 performs the drawing processing as shown in
When the last object has been drawn, a report of the drawing result is stored in a register or in the main memory with the IPA device driver 5211. And the report of the drawing result is obtained by the IPA 100 with the IPA library 5231. When a function IpaClose( ) is output from the RPCS 5232, the IPA device is closed with the IPA library 5231.
The RPCS 5232 is performed by a printing command from an user PC (personal computer).
In this sequence, when the print button is pushed by the user, the GDI 5236 is accessed with the Windows application 3235 and a printing command is sent to the printer driver from the GDI 5236. At the printer driver 5237, the data is generated in accordance with the drawing command from the GDI 5236. Then the data is sent to the RPCS 5232. With the RPCS 5232, the data sent is interpreted and is stored as a image data in the main memory 130. After that, the image data is printed based on the sequence described in
This printing process can be performed at common printers such as an electrophotographic printer and an inkjet printer. Namely, the printer can include functionalities described above installing this configuration. The procedures of the processing tasks are stored as a software in the ROM (Read Only Memory) or other type of memory and implemented with the IPA device driver 5211 and the IPA library 5231. The software may be stored in storage medias such as CD-ROM, SD-card and is read by computer to use. Furthermore, the software may be downloaded to the computer through a network.
Numerous additional modifications and variations are possible in light of the above teachings. It is therefore to be understood that within the scope of the appended claims, the disclosure of this patent specification may be practiced otherwise than as specifically described herein.
This patent specification is based on Japanese patent application, No. 2004-346255 filed on Nov. 30, 2004 in the Japan Patent Office, the entire contents of which are incorporated by reference herein.
Number | Date | Country | Kind |
---|---|---|---|
2004-346255 | Nov 2004 | JP | national |