Image processing apparatus, image processing method of image processing apparatus, and program

The image processing apparatus addresses memory depletion issues in large printing jobs by efficiently managing memory and disk resources, reducing processing time and avoiding data loss through the strategic storage and generation of intermediate data.

JP2025088388APending Publication Date: 2025-06-11CANON KK
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2023203066
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-11-30
Publication Date
2025-06-11

AI Technical Summary

Technical Problem

During page processing in large printing jobs, memory depletion can occur due to extensive graphic data, leading to increased processing time and inefficiency, as existing solutions require re-execution and data evacuation to external storage, resulting in data loss and prolonged completion times.

Method used

An image processing apparatus that includes an intermediate data generation unit and a print data generation unit, which stores data based on a print job in either memory or external storage in object units and generates intermediate data accordingly, allowing for efficient switching between memory and disk modes to manage memory consumption.

Benefits of technology

This solution effectively suppresses the increase in time for generating intermediate data when memory consumption is high, allowing for faster page processing and reduced overall printing time by avoiding the need for re-execution and data evacuation.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025088388000001_ABST
    Figure 2025088388000001_ABST
Patent Text Reader

Abstract

To suppress increase in time for generating intermediate data on the basis of a print job when memory consumption increases.SOLUTION: An image processing apparatus includes intermediate data generation means that generates intermediate data based on a print job, and print data generation means that generates print data based on the intermediate data, where the intermediate data generation means stores data based on an object of the print job in either a memory or an external storage device by object units, and generates intermediate data based on the data based on the object stored in the memory or the external storage device.SELECTED DRAWING: Figure 6
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present disclosure relates to an image processing apparatus, an image processing method of the image processing apparatus, and a program.

Background Art

[0002] In the case of a printer device that uses a particularly large printing paper size for commercial printing, there are cases where printing is difficult even when a printing job is input, which has been a problem. In particular, when an extremely large image is embedded in a page of a printing job or when a very large amount of graphic data or the like is included, a memory shortage may occur during the process of processing the page, and the processing may not be able to continue.

[0003] Since both the printer driver and the printer controller are configured to process using the hardware resources defined in their respective platforms (for example, there is a limit to the memory allocated to a process), some countermeasures are necessary.

[0004] Patent Document 1 discloses a method of performing image formation (rendering) using internal data (intermediate data, etc.) in which a processing program is recorded in memory when there is a memory shortage, thereby reducing the data size.

[0005] Patent Document 2 discloses a method of saving a group of drawing-related information necessary for generating intermediate data for printing to an external storage device.

Prior Art Documents

Patent Documents

[0006]

Patent Document 1

Patent Document 2

Summary of the Invention

Problems to be Solved by the Invention

[0007] If a memory depletion occurs during page processing, it is possible to complete the page processing by a re-execution process (also called a retry process or a recovery operation). However, in order to surely implement the evacuation process to the external storage device described above, after once discarding the data accumulated up to the middle of the process, the operation mode is switched again from the beginning of the page, and the evacuation process to the external storage device is executed. As a result, the data previously stored by performing page processing is once discarded. Also, since the time spent for this process is discarded, there is a problem that it takes a long time until printing is completed.

[0008] An object of the present disclosure is to suppress an increase in the time for generating intermediate data based on a print job when the memory consumption increases.

Means for Solving the Problems

[0009] An image processing apparatus includes an intermediate data generation unit that generates intermediate data based on a print job, and a print data generation unit that generates print data based on the intermediate data. The intermediate data generation unit stores data based on an object of the print job in either a memory or an external storage device in object units, and generates intermediate data based on the data stored in the memory or the external storage device.

Effects of the Invention

[0010] According to the present disclosure, when the memory consumption increases, an increase in the time for generating intermediate data based on a print job can be suppressed.

Brief Description of the Drawings

[0011]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Embodiments for Carrying Out the Invention

[0012] Hereinafter, embodiments will be described in detail with reference to the drawings.

[0013] (First Embodiment) FIG. 1 is a diagram showing an example of the hardware configuration of an image processing apparatus 100 according to the first embodiment. The image processing apparatus 100 includes a CPU 101, a RAM 102, a ROM 103, a bus 104, a keyboard controller (KBC) 105, a display controller 106, a disk controller (DKC) 107, and a printer controller 108. Further, the image processing apparatus 100 includes a keyboard 109, a display 110, an external storage device 111, and a network controller 112.

[0014] In FIG. 1, the CPU 101 executes programs such as an OS and general applications loaded from the ROM 103 or the external storage device (hard disk) 111 into the RAM 102, and realizes the functions of the software and the processes of the flowchart described later.

[0015] The RAM 102 functions as the main memory, work area, etc. of the CPU 101.

[0016] The ROM 103 includes a font ROM for storing fonts, a program ROM for storing programs, and a data ROM for storing data.

[0017] The keyboard controller (KBC) 105 controls key inputs from the keyboard 109 and a pointing device (not shown).

[0018] The display controller 106 controls the display of the display 110.

[0019] The disk controller (DKC) 107 controls the external storage device 111. The boot program, various applications, font data, user files, etc. are held in an external storage such as an external storage device (hard disk, HDD) 111 or a non-volatile storage (flash memory).

[0020] The printer controller 108 controls the printing device 2010 in FIG. 2, etc. The network controller 112 controls communications such as receiving a print job from a host PC (not shown) and transmitting print data to the printing device 2010 in FIG. 2. The image processing device 100 receives a print job from the host PC and transmits print data based on the print job to the printing device in FIG. 2.

[0021] FIG. 2 is a diagram showing a configuration example of the image forming unit of the printing device 2010. The printing device 2010 performs printing on a recording sheet based on the print data received from the image processing device 100 in FIG. 1. The printing device 2010 is, for example, a color printer.

[0022] In FIG. 2, 2200 to 2230 are color ink cartridges, which are filled with yellow (Y) color ink, magenta (M) color ink, cyan (C) color ink, and black (K) color ink respectively.

[0023] Each of the ink cartridges 2200 to 2230 and the pressure pump 2160 are connected by independent pipes for supplying ink, and the inks of each color are pumped at a constant pressure from the pressure pump 2160 to the print head 2120.

[0024] The recording paper is supplied from the rear of the printing apparatus 2010 and fixed by the platen 2110 and the front guide roller 2150. Also, the operation of the printing apparatus 2010 is performed by pressing a key on the control panel 2180. The control board 2190 controls all operations of the printing apparatus 2010.

[0025] To perform printing by the printing apparatus 2010 shown in FIG. 1, the image processing apparatus 100 may transmit a print control command and print data to the control board 2190 via an interface (not shown). When the control board 2190 receives the print control command and print data, for example, when RGB is specified in a color specification command, the RGB data is converted into CMYK data by the internal color processing unit, and then the print head 2120 is driven to perform printing.

[0026] FIG. 3 is a diagram showing a functional configuration example of the image processing apparatus 100. When printing is executed from a document creation application on a host PC (not shown), the image processing apparatus 100 receives a print job from the host PC and transmits a print control command and print data to the printer engine 917. The printer engine 917 corresponds to the printing apparatus 2010 shown in FIG. 2.

[0027] When printing is instructed, the PDL analysis unit 911 receives input data (PDL data) 910 from the host PC and analyzes the PDL data 910. Next, the process is taken over by the intermediate data generation module 912.

[0028] The intermediate data generation module 912 performs intermediate data generation processes (such as contour extraction and storage of data objects) based on the data (graphics, characters, images) in the PDL data 910, and generates intermediate data that can be processed by the subsequent image formation process (renderer).

[0029] Note that the intermediate data generation module 912 is configured to temporarily store internal data required for intermediate data generation in the external storage device 921 when memory depletion occurs.

[0030] The intermediate data may sometimes be called a display list or the like. The intermediate data is once stored in the intermediate data spooler 913 for storing the intermediate data, and then transferred to the subsequent image formation module 914.

[0031] The image formation module 914 generates pixel data, that is, a raster image, in the memory based on the information of the intermediate data. The pixel data developed in the memory is once stored in the bitmap data buffer memory 915, and then transferred to the printer engine 917 via the engine interface (I / F) 916.

[0032] The PDL analysis unit 911, the intermediate data generation module 912, the image formation module 914, and the engine interface (I / F) 916 are controlled by the control unit 900.

[0033] FIG. 4 is a diagram showing the processing of the intermediate data generation module 912 according to the comparative example, and shows the internal processing when memory depletion occurs.

[0034] When page processing starts and the page processing in which the image object (image) in the PDL data 910 is specified as a drawing command through the drawing IF (Drawing-IF) starts, first, FALSE (memory operation) is set in the save mode setting. The drawing commands are processed sequentially. In the case where an image (bitmap) is processed, as shown in FIG. 4, the bitmap addition function is processed. When this function is called, the image load (read) function is called, and the entity of the image in the PDL data 910 is sequentially loaded into an image buffer (not shown).

[0035] Next, after the drawing information generation process is executed for the image, by the data store processing function, the image buffer (not shown) is subjected to memory-based processing according to the previous save mode (memory operation), and an archive instance for storing the image is generated.

[0036] After this instance is generated, it is written (copied) to a memory area for data retention (not shown). The above-described processing is repeated for each object. In the case of a graphic, edge and fill color information are extracted by a process (not shown).

[0037] In the flow described above, if memory depletion does not occur, the above processing is repeated, and drawing-related information (edge information, composition information, fill information, collectively referred to as drawing-related information group) for generating intermediate data is generated. On the other hand, if memory depletion occurs during the above processing, re-execution occurs, and the processing of the page is redone.

[0038] In this case, at the timing of page processing start, a file handle necessary for disk writing is opened. Then, TRUE (disk operation) is set in the save mode. The following processing is the same as above, and during the sequential processing of the drawing commands, for the image, the processing is performed by the bitmap addition function. When this function is called, the image load (read) function is called, and the entity of the image in the PDL data 910 is sequentially loaded into an image buffer (not shown), which is the same as the previous explanation.

[0039] However, the processing of the data store processing function is different. When the evacuation mode is set to disk operation, the processing branches to disk-based processing and is executed. Here, after generating an archive instance for storing an image, it is written (copied) to a data retention memory area (not shown).

[0040] The memory area is a memory area for holding data such as filters and images. In this case, however, the data is actually configured to be written to the disk during the write operation of the area.

[0041] The above-described processing is repeatedly performed for each object. In the case of a graphic, after edge and fill color information is extracted by processing (not shown), drawing-related information (edge information, composite information, fill information) necessary for generating intermediate data is generated.

[0042] As described above, when memory depletion occurs during page processing, it is possible to complete the page processing by re-execution (also called reprocessing or recovery operation) processing. However, in order to surely realize the evacuation process to the external storage device 921 described above, after once discarding the data stored up to the middle of the process, the operation mode is switched again from the beginning of the page, and the evacuation process to the external storage device 921 is executed. As a result, the data stored by previously performing page processing is once discarded. Also, since the time spent for this processing is discarded, there is a problem that it takes a long time until printing is completed.

[0043] Hereinafter, a first embodiment for solving the above problems will be described with reference to FIG. 5.

[0044] FIG. 5 is a diagram showing the processing of the intermediate data generation module 912 according to the first embodiment. FIG. 5 is a diagram showing a state in which an image object (image) in the PDL data 910 is designated as a drawing command through a drawing IF (Drawing-IF) from the start of page processing in the intermediate data generation module 912.

[0045] At the start of page processing, data (including information groups and image data) necessary for intermediate data creation is only held in memory and processed. Also, at this timing, a file handle necessary for disk writing is opened. This process is different from the description of FIG. 4 above.

[0046] Also, it is different from FIG. 4 in that hybrid (operating in both memory operation and disk operation) is set in the save mode. While drawing commands are sequentially processed, for images, processing is performed by a bitmap addition function. When this function is called, an image load (read) function is called, and the actual image of the PDL data 910 is sequentially loaded into an image buffer (not shown), which is the same as in FIG. 4.

[0047] The next drawing information generation process generates information for the subsequent process (BLOCK-B in FIG. 7), but disk-based processing is executed according to the save mode (here, disk operation), including the data store processing function. In this process, data such as figures (not shown) is also configured to be processed as an object for disk save.

[0048] In the case of an image (bitmap), after generating an archive instance for storing the image, it is written (copied) to the FS (FILL STORE) memory area 711 (see FIG. 7). The memory area 711 is a dedicated memory area for holding relatively large-sized data such as fills.

[0049] By this writing, the data is configured to be written to either the memory or the disk area. The image instance is configured as a structure that can store both a pointer to the memory as a data pointer and a pointer to a structure for disk storage.

[0050] Here, in the memory area used by the intermediate data generation module 912, the current usage amount (using the CURRENT_USAGE function; refer to S625 in the flowchart of FIG. 6) is used to check the current usage amount. Here, whether the image to be processed should be processed in the memory is determined by a preset threshold value. The threshold value is a value obtained by subtracting the margin value set for the upper limit value defined by the system from the upper limit value.

[0051] By comparing the current memory usage amount with the threshold value, if it is determined that the image to be processed can be stored in the memory without problems, the image is stored in the memory; otherwise, the process migrates to the disk backup processing mode and the image data is written to the disk. Note that the relationship between the consumed memory and the processing time will be described later with reference to FIG. 9(b). After writing the data to the disk, the area of the data secured in the memory is configured to be released.

[0052] The above-described processing is repeatedly performed for each object. In the case of a figure, edge and filling color information are extracted by processing (not shown). Through these processes, edge (boundary) information, composite information (constituted by pointers and indexes), and filling information, which are required for intermediate data generation, are configured to be generated.

[0053] FIG. 6 is a flowchart showing an image processing method of the image processing apparatus 100 according to the first embodiment. The processing flow of FIG. 5 will be described with reference to the flowchart of FIG. 6.

[0054] The intermediate data generation module 912 generates intermediate data based on the print job (PDL data) 910. The image formation module 914 is a print data generation unit that generates print data based on the above intermediate data.

[0055] In step S611, the intermediate data generation module 912 performs initialization processing at the start of page processing. Here, the intermediate data generation module 912 performs settings for the thread mode, generation of instances required for each process, and the like.

[0056] Next, in step S612, the intermediate data generation module 912 performs a file open process.

[0057] Next, in step S613, the intermediate data generation module 912 acquires the objects (graphics, images, etc.) in the print job 910 through the above-described Drawing-IF.

[0058] Next, in step S614, the intermediate data generation module 912 determines whether the acquired object is an image. If the object is an image, the process proceeds to step S621; otherwise, the process proceeds to step S615.

[0059] In step S615, the intermediate data generation module 912 performs processing related to the graphics and proceeds to step S616.

[0060] In step S621, the intermediate data generation module 912 performs a read process for the image data. Here, if the image is compressed, the intermediate data generation module 912 expands the image in the memory.

[0061] Next, in step S622, the intermediate data generation module 912 generates an instance for the RAW image (uncompressed) and writes the image data of the generated instance to the memory.

[0062] Next, in step S623, the intermediate data generation module 912 sets indexes such as bitmap_pixgen_index_get through the image information generation process.

[0063] Next, in step S624, the intermediate data generation module 912 performs settings such as setting the process type according to the logical drawing attributes such as rop2_element_finalize through the image-related information setting.

[0064] Next, in step S625, the intermediate data generation module 912 acquires the current work usage amount in the entire software module (executes the CURRENT_USAGE function) and grasps the consumed memory amount of the memory.

[0065] Next, in step S626, the intermediate data generation module 912 determines whether it is necessary to save data to the disk. Specifically, the intermediate data generation module 912 determines whether the above-mentioned consumed memory amount is equal to or greater than a preset threshold value. As shown in FIG. 9(b), the threshold value is a value obtained by subtracting the margin value from the upper limit value. If the consumed memory amount is less than the threshold value, it is determined that there is no need to save data to the disk because the available memory has not been exhausted, and the process proceeds to step S616. If the consumed memory amount is equal to or greater than the threshold value, it is determined that it is necessary to save data to the disk because the available memory has been exhausted, and the process proceeds to step S627.

[0066] In step S627, as shown in FIG. 8(a), the intermediate data generation module 912 generates an archive instance for archiving the image data of the object and generates an image instance including the archive instance.

[0067] Next, in step S628, the intermediate data generation module 912 writes out the image data indicated by the archive instance to the disk (the external storage device 921 in FIG. 3) by data store processing, releases the memory that is no longer needed, and proceeds to step S616. That is, the intermediate data generation module 912 writes out the image data indicated by the archive instance to the external storage device 921 and releases the area of the image data written to the memory in step S622. As a result, the consumed memory amount of the memory decreases.

[0068] In step S616, the intermediate data generation module 912 updates each instance by drawing information generation processing.

[0069] Next, in step S617, the intermediate data generation module 912 determines whether it is the end of the object. If it is not the end of the object, the intermediate data generation module 912 returns to step S613, acquires the next object, and repeats the above processing. If it is the end of the object, the process proceeds to step S618.

[0070] In step S618, the intermediate data generation module 912 generates the intermediate data as spool data, stores the intermediate data in the intermediate data spooler 913 in FIG. 3, etc., and ends the processing of the flowchart in FIG. 6. After the intermediate data is stored in the intermediate data spooler 913, etc., an image is generated by the subsequent image forming module 914.

[0071] As described above, when the answer in step S626 is NO, the image data of the image instance is stored in the memory in step S622. When the answer in step S626 is YES, the image data of the archive instance is stored in the external storage device 921 in step S628. The intermediate data generation module 912 stores the image data based on the object of the print job 910 in either the memory or the external storage device 921 in object units. Then, the intermediate data generation module 912 generates intermediate data based on the image data based on the object stored in the memory or the external storage device 921. The image data based on the object is the image data of the image instance and is the image data included in the print job 910. The external storage device 921 is, for example, a disk.

[0072] FIG. 7 is a diagram showing a processing method of an intermediate data generation module (hybrid system processing) 912 according to the first embodiment. FIGS. 5 and 6 only described the flow of image data, but FIG. 7 shows the flow of the entire internal data used to generate intermediate data. Here, after receiving data from the Drawing-IF, the intermediate data generation module 912 performs an information group generation process of generating a drawing-related information group (edge information, composition information, filling information) 712 for forming intermediate data through internal processing. The drawing-related information group 712 is data necessary for intermediate data generation. The intermediate data generation module 912 can temporarily store the drawing-related information group 712 in the external storage device 921 of FIG. 3.

[0073] In FIG. 7, in the block (BLOCK-A) that receives data, a drawing data group (this is also called a display list, or simply an object) is treated as a command group called a DL (DISPLAY LIST). Therefore, the intermediate data generation module 912 creates list information of the DL and executes a process of receiving each element of the drawing data group.

[0074] After this, the intermediate data generation module 912 executes a DL fill addition process. Here, an instance (not shown) for managing various types of information is generated in the intermediate data generation module 912. In this process, a DL fill level generation process for generating an instance for managing the call order (referred to as a level) of the DL and a generation of entry information regarding a band sub-path for managing information in band units are executed.

[0075] Also, the intermediate data generation module 912 calls a band entry process to start band processing. Then, the intermediate data generation module 912 executes an update process of the internal information of the DL and completes the process.

[0076] Each drawing data group is recorded in a memory arena (area) according to its respective type. However, in the case of an image, since it is assumed that the size may become large, the configuration is such that the entity of the data is managed by an image instance. The entity of the data exists in a state temporarily stored in memory or on a disk.

[0077] As a feature of the configuration of this embodiment, when memory shortage (memory exhaustion) occurs, the intermediate data generation module 912 stores only the new information group in the external storage device 921 of FIG. 3 without releasing the data group from the memory with respect to the already created data. At the timing when each drawing data group is complete, the processing of the loop processing unit (BLOCK-B) is then executed.

[0078] In the loop processing unit (BLOCK-B), the intermediate data generation module 912 executes a graphic edge new acquisition process (function name: FN_GET_NEW_EDGE). In this embodiment, the intermediate data generation module 912 basically divides the page into bands and executes the process from the first band to the last band (from the upper side to the lower side of the paper).

[0079] The graphics are configured to be operated within each band. Within the corresponding band, the edges of the graphics registered in the DL list are acquired by the graphic edge new acquisition process. When an edge is acquired, the pre-edge process is executed, and the edge information required for the subsequent process is acquired.

[0080] As the PDL specification, there are multiple types of edges for graphics, but which one to select is determined by a command from the PDL. The type is indicated in the graphic drawing in the previous DRAWING―IF. Inside the process, respective functions are prepared. In this embodiment, the process for processing the area intersection is described.

[0081] When the figure specification is an area intersection, initialization of area intersection-related processing is performed. Here, initialization processing for edge processing and initialization processing for the tracking function are performed. Also, the edge position information update process is called first. Also, when edges are processed and contour information is extracted, the winding rule (winding rule) regarding the painting method is also processed simultaneously, so the winding rule process is also called. Here, level monitoring processing, sub-strip processing for level processing, edge sorting processing for level processing, and information update in the horizontal direction of the edge are performed.

[0082] Through the above processing, as shown in FIG. 7, the intermediate data generation module 912 generates each of the drawing-related information groups (edge information, composite information, painting information) 712, and generates intermediate data based on the drawing-related information group 712. The drawing-related information group 712 includes, in addition to the instance for the image of FIG. 8(a), edge information regarding the edges of the objects drawn on the page, composite information related to the composition of the objects constituting the page, and painting information regarding the painting on the page.

[0083] FIG. 8(a) is an example showing the instance for the image in FIG. 7. The instance is a structure and is composed of, as elements (members), a flag (FLAG), a pointer pointing to data in memory, and an instance for the archive. Here, when 0 is set in the FLAG, it indicates that the image data is stored in memory, and when 1 is set in the FLAG, it indicates that it is temporarily stored on the disk. To access the data stored on the disk, the process proceeds by referring to the information of the instance for the archive.

[0084] The instance for the image generated in step S622 has a FLAG of 0. The instance for the image generated in step S627 has a FLAG of 1.

[0085] Figure 8(b) is a flowchart showing the case of accessing image data to perform image-related processing, and shows the processing flow of FIG. 7. In this image-related processing, the intermediate data generation module 912 performs processing (such as edge information extraction, scaling processing, logical drawing processing, etc.) for expanding the image data held by the data store to pages.

[0086] In step S811, the intermediate data generation module 912 reads an image instance.

[0087] Next, in step S812, the intermediate data generation module 912 performs various checks such as checks on arguments and parameters (not shown) included in the instance for the image instance.

[0088] Next, in step S813, the intermediate data generation module 912 reads the flag (FLAG) of the image instance.

[0089] Next, in step S814, the intermediate data generation module 912 determines whether the value of the flag is 0 or 1. If the flag is 0, the process proceeds to step S815, and if the flag is 1, the process proceeds to step S821.

[0090] In step S815, the intermediate data generation module 912 copies the image data on the pointer, which is an element of the image instance, to the required area (such as a buffer), and proceeds to step S816.

[0091] In step S821, the intermediate data generation module 912 reads an archive instance.

[0092] Next, in step S822, the intermediate data generation module 912 appropriately performs parameter adjustment processing. This is necessary because when reading and writing to the disk, for example, when the image data is large, the processing time is longer than that of memory processing. For example, when the modules of this software are defined as tasks and are being processed concurrently with other tasks, it is necessary to appropriately change the upper limit value of the waiting time for processing time, etc. The intermediate data generation module 912 performs such processing in step S822.

[0093] Next, in step S823, the intermediate data generation module 912 reads the image data from the disk.

[0094] Next, in step S824, the intermediate data generation module 912 copies the image data of step S823 to the required area in the same manner as in step S815, and proceeds to step S816.

[0095] In step S816, the intermediate data generation module 912 performs image-related processing.

[0096] Next, in step S817, the intermediate data generation module 912 determines whether the image instance has ended. If not, the process returns to step S811 and the same processing is repeated. If it has ended, the process proceeds to step S818.

[0097] In step S818, the intermediate data generation module 912 performs end processing and ends the processing of Fig. 8(b).

[0098] Figs. 9(a) and (b) are graphs showing the increase and decrease of the intermediate data generation processing time and the amount of memory consumed. Fig. 9(a) shows a graph when there is a recovery operation (rerun) in Fig. 4. The page processing was executed in the memory operation mode as the save mode, but when the time t1 elapsed, the amount of memory consumed reached the upper limit, so the page processing was canceled and the page processing was executed again in the disk operation mode.

[0099] On the other hand, FIG. 9(b) starts operating in a hybrid mode as the evacuation mode and continues processing in the hybrid mode even after the elapsed time t2 and after the consumed memory amount exceeds the set threshold value. For this reason, FIG. 9(b) can shorten the page processing as compared with the case where there is the recovery operation of FIG. 9(a).

[0100] As described above, according to the present embodiment, after starting the processing of a page, the intermediate data generation module 912 proceeds with the processing while detecting the consumed memory amount in step S625. During this processing, when memory depletion occurs due to large image data or the like included in the PDL data 910, the internal processing is switched. The intermediate data generation module 912 evacuates only the new data to the external storage device 921 while retaining the already processed data in the memory. Then, the intermediate data generation module 912 performs the drawing information generation processing of step S616 using both the data retained in the memory and the data evacuated to the external storage device 921, and generates intermediate data based on this. The image forming module 914 generates print data using the intermediate data.

[0101] Thereby, even when memory depletion occurs due to large image data or the like included in the PDL data 910, the intermediate data generation module 912 can directly shift from the memory mode to the disk mode and continue the processing. At this time, the intermediate data generation module 912 does not need to discard the already processed data as shown in FIG. 4 and re-execute the page processing from the beginning. The intermediate data generation module 912 of the present embodiment can shorten the page processing time as compared with the case where there is the re-execution (recovery operation) of FIG. 4.

[0102] (Second Embodiment) FIG. 10 is a diagram showing the processing of the intermediate data generation module 912 according to the second embodiment. FIG. 10 shows the flow of processing in the case of performing a hybrid setting (operable in either memory operation or disk operation) as the evacuation mode, similar to the first embodiment. FIG. 10 shows a state in which an image object (image) in the PDL data 910 is specified as a drawing instruction through the Drawing-IF from the start of page processing.

[0103] When page processing is started, a hybrid is set in the evacuation mode, which is different from the first embodiment in that the file handle necessary for disk writing is not opened at this timing. As shown in FIG. 10, the file handle opening process is configured to be performed at the timing when writing is first required.

[0104] While drawing instructions are sequentially processed, for images, processing is performed by a bitmap addition function. When this function is called, an image load (read) function is called, and the entity of the image in the PDL data 910 is sequentially loaded into an image buffer (not shown), which is the same as in FIG. 5.

[0105] The next drawing information generation process generates information for the subsequent process (BLOCK-B in FIG. 7), and memory-based processing is executed regardless of the evacuation mode, including the data store processing function. In this process, data such as figures (not shown) is configured to be processed in memory.

[0106] When processing an image (bitmap), after generating an archive instance for storing the image, it is configured to be able to write to the FS memory area 711 (the actual data is written to either memory or a disk area). Here, different from the first embodiment (FIG. 5), memory-based (hybrid mode) processing is used.

[0107] The archive instance is configured to point data with a union-type structure so that both a pointer to memory as a data pointer and a pointer to a structure for disk storage can be used.

[0108] In the above-described processing flow, the amount of memory consumed so far (current consumed memory amount) is appropriately monitored by the consumed memory amount measurement unit. This measurement unit corresponds to, for example, the current work usage acquisition function (CURRENT_USAGE function) (similar to step S625 in FIG. 6).

[0109] In subsequent processing, the processing is divided based on the upper limit value defined by the system, the set margin value (MARGIN), and the consumed memory prediction process (ESTIMATE_MEMORY function).

[0110] Here, when it is possible to store the image data in memory without problems, it is stored in memory. Otherwise, the process shifts to the disk evacuation processing mode and is configured to write the image data to the disk.

[0111] In the first embodiment, when the value of the consumed memory amount becomes equal to or greater than the threshold value, the processing mode shifts from the next object, and the subsequent image data is configured to be evacuated to the disk. However, in the case of the second embodiment, the operation when the processing mode shifts is slightly different.

[0112] In the case of the second embodiment, it is considered that the processing can continue within the set margin (margin value). The amount of memory to be consumed is predicted, and while comparing the sizes of each image data, it is configured to switch between evacuation to memory or disk.

[0113] The graphs of FIGS. 11(a) and (b) are graphs for explaining the effects of the second embodiment. FIG. 11(a) is a diagram for explaining the passage of time of the consumed memory amount in the first embodiment. At the time point of elapsed time t2 after the process starts, after the save mode shifts to the disk operation, since all images are written to the disk, the time for disk processing becomes a bottleneck. The time t2 is the time determined in step S626 when the consumed memory amount becomes equal to or more than the threshold value.

[0114] FIG. 11(b) is a diagram for explaining the passage of time of the consumed memory amount in the second embodiment. At the time point of elapsed time t3 after the process starts, the save mode has shifted to the disk operation. The time t3 is the time determined in step S626 when the consumed memory amount becomes equal to or more than the threshold value.

[0115] In the second embodiment with respect to the first embodiment, for images with a small size (assuming within the range of the remaining memory), data is retained in the memory instead of on the disk. As a result, the time for disk processing does not become a bottleneck, and as a result, as shown in the graph of FIG. 11(b), the processing time is shorter than in the case of the first embodiment.

[0116] FIG. 12 is a flowchart showing the processing of the intermediate data generation module 912 according to the second embodiment, and is a flowchart for explaining the flow of the consumed memory prediction process (ESTIMATE_MEMORY function) in FIG. 10.

[0117] In step S1211, the intermediate data generation module 912 initializes the parameters.

[0118] Next, in step S1212, the intermediate data generation module 912 reads the consumed memory amount prediction characteristic database. These are data obtained by measuring the consumed memory amount from each input parameter when a test job is run, and are data serving as a basis for calculating a predicted value with an expected accuracy even if the accuracy is not high.

[0119] In step S1213, the intermediate data generation module 912 adds an object.

[0120] Next, in step S1214, the intermediate data generation module 912 determines whether the object is of a type that requires a database. If the object is of a type that requires a database, the process proceeds to step S1221. If the object is of a type that does not require a database, the process proceeds to step S1215.

[0121] In step S1215, the intermediate data generation module 912 obtains a predicted value of the size (memory consumption amount) of the data based on the object by polynomial calculation. This applies to levels that can be calculated by a simple polynomial (for example, uncompressed and non-overlapping image data, etc.). Then, the process proceeds to step S1216.

[0122] In step S1216, the intermediate data generation module 912 determines a predicted value of the size based on the object based on the calculation result of step S1215 and proceeds to step S1217.

[0123] In step S1221, the intermediate data generation module 912 sets the data type of the drawing object to be added.

[0124] Next, in step S1222, the intermediate data generation module 912 sets the coordinate data of the object, etc.

[0125] Next, in step S1223, the intermediate data generation module 912 sets the size of the object (if it is an image, compressed data, or there is overlap, the process is executed in this step to obtain the value).

[0126] Next, in step S1224, the intermediate data generation module 912 obtains the corresponding data from the above database.

[0127] Next, in step S1225, the intermediate data generation module 912 calculates a predicted value of the size (consumed memory amount) of the object-based data based on the acquired data. The calculation of the predicted value is configured to update the data in real time.

[0128] Next, in step S1226, the intermediate data generation module 912 registers the calculated predicted value as a history. Due to the real-time processing in step S1225, it is configured to register in step S1226 and refer to it next time to improve the prediction accuracy in a timely manner. Then, the process proceeds to step S1216.

[0129] In step S1216, the intermediate data generation module 912 determines the predicted value of the object-based data based on the registered predicted value and proceeds to step S1217.

[0130] In step S1217, it is determined whether the prediction has ended. If the prediction has not ended, the process returns to step S1213. If the prediction has ended, the process proceeds to step S1218.

[0131] In step S1218, the intermediate data generation module 912 performs prediction determination end processing and ends the processing of the flowchart in FIG. 12.

[0132] Next, the disk evacuation process will be described with reference to FIG. 6 in the same manner as in the first embodiment.

[0133] The process of step S626 in FIG. 6 will be described. In step S626, the intermediate data generation module 912 proceeds to step S616 while the consumed memory amount of the memory is less than the first threshold. Also, after the consumed memory amount of the memory becomes equal to or greater than the first threshold, the intermediate data generation module 912 stores the object-based image data in either the memory or the external storage device 921 based on the predicted value of the size of the object-based image data.

[0134] Specifically, after the memory consumption amount of the memory becomes equal to or greater than the first threshold, if the sum of the memory consumption amount of the memory and the predicted value of the size of the image data based on the object is not equal to or greater than the second threshold, the intermediate data generation module 912 proceeds to step S616. Further, after the memory consumption amount of the memory becomes equal to or greater than the first threshold, if the sum of the memory consumption amount of the memory and the predicted value of the size of the image data based on the object is equal to or greater than the second threshold, the intermediate data generation module 912 proceeds to step S627.

[0135] As described above, according to the first and second embodiments, even when the memory runs out due to large image data or the like included in the print job, the intermediate data generation module 912 can directly shift from the memory mode to the disk mode and continue the process. At this time, the intermediate data generation module 912 does not need to discard the already processed data and re-execute the page processing from the beginning as shown in FIG. 4, and can shorten the page processing time as compared with the case where there is a re-execution (recovery operation).

[0136] (Other Embodiments) The present disclosure can also be realized by supplying a program that realizes one or more functions of the above-described embodiments to a system or device via a network or a storage medium, and having one or more processors in the computer of the system or device read and execute the program. Further, it can also be realized by a circuit (for example, ASIC) that realizes one or more functions.

[0137] Note that the above-described embodiments are merely specific examples for implementing the present disclosure, and the technical scope of the present disclosure is not limitedly interpreted by these. That is, the present disclosure can be implemented in various forms without departing from its technical idea or its main features.

[0138] The disclosure of the present embodiment includes the following configurations, methods, and programs. (Configuration 1) Intermediate data generation means for generating intermediate data based on a print job, a print data generation means for generating print data based on the intermediate data; The intermediate data generation means stores data based on the object of the print job in either the memory or the external storage device in object units, and generates intermediate data based on the data stored in the memory or the external storage device. An image processing apparatus characterized by the above. (Configuration 2) The image processing apparatus according to Configuration 1, wherein the data based on the object is image data included in the print job. (Configuration 3) The intermediate data generation means stores data based on the object in either the memory or the external storage device based on the consumed memory amount of the memory. The image processing apparatus according to Configuration 1 or 2, characterized by the above. (Configuration 4) When the consumed memory amount of the memory is less than the first threshold value, the intermediate data generation means stores data based on the object in the memory. When the consumed memory amount of the memory is greater than or equal to the first threshold value, the intermediate data generation means stores data based on the object in the external storage device. The image processing apparatus according to any one of Configurations 1 to 3, characterized by the above. (Configuration 5) The intermediate data generation means writes data based on the object to the memory. When the consumed memory amount of the memory is greater than or equal to the first threshold value, the intermediate data generation means writes data based on the object to the external storage device, and releases the area of the data based on the object written to the memory. The image processing apparatus according to any one of Configurations 1 to 4, characterized by the above. (Configuration 6) The intermediate data generation means When the consumed memory amount of the memory is less than the first threshold value when the target object is the first object, stores data based on the first object in the memory, When the target object is the second object and the amount of memory consumed by the memory is equal to or greater than the first threshold value, the image processing apparatus according to Configuration 4, characterized in that data based on the second object is stored in the external storage device. (Configuration 7) After writing data based on the first object to the memory, the intermediate data generation means writes data based on the second object to the memory. When the amount of memory consumed by the memory is equal to or greater than the first threshold value, the data based on the second object is written to the external storage device, the area of the data based on the first object written to the memory is not released, and the area of the data based on the second object written to the memory is released. The image processing apparatus according to Configuration 5, characterized in that (Configuration 8) The image processing apparatus according to any one of Configurations 4 to 7, characterized in that the first threshold value is a value obtained by subtracting a margin value from an upper limit value. (Configuration 9) The intermediate data generation means generates drawing-related information including data based on the object, and generates intermediate data based on the drawing-related information. The drawing-related information includes edge information regarding the edges of the objects drawn on the page, composition information related to the composition of the objects constituting the page, or filling information regarding filling on the page. The image processing apparatus according to any one of Configurations 1 to 8, characterized in that (Configuration 10) After the amount of memory consumed by the memory becomes equal to or greater than the first threshold value, the intermediate data generation means stores data based on the object in either the memory or the external storage device based on a predicted value of the size of the data based on the object. The image processing apparatus according to Configuration 4, characterized in that (Configuration 11) After the consumed memory amount of the memory becomes equal to or greater than a first threshold value, the intermediate data generation means stores data based on the object in the memory when the sum of the consumed memory amount of the memory and a predicted value of the size of the data based on the object is not equal to or greater than a second threshold value, and stores data based on the object in the external storage device when the sum of the consumed memory amount of the memory and the predicted value of the size of the data based on the object is equal to or greater than the second threshold value. The image processing apparatus according to Configuration 10. (Configuration 12) The external storage device is a disk. The image processing apparatus according to any one of Configurations 1 to 11. (Method 1) An intermediate data generation step of generating intermediate data based on a print job, A print data generation step of generating print data based on the intermediate data, and In the intermediate data generation step, data based on the object of the print job is stored in either the memory or the external storage device in object units, and intermediate data is generated based on the data stored in the memory or the external storage device. An image processing method of an image processing apparatus. (Program 1) A program for causing a computer to function as the image processing apparatus according to any one of Configurations 1 to 12.

Explanation of Signs

[0139] 712 Drawing-related information group, 912 Intermediate data generation module, 914 Image formation module, 921 External storage device

Claims

1. Intermediate data generation means for generating intermediate data based on a print job, Print data generation means for generating print data based on the intermediate data, and The intermediate data generation means stores data based on an object of the print job in either a memory or an external storage device in object units, and generates intermediate data based on the data stored in the memory or the external storage device. An image processing apparatus characterized by that.

2. The image processing apparatus according to claim 1, wherein the data based on the object is image data included in the print job.

3. The image processing apparatus according to claim 1, wherein the intermediate data generation means stores data based on the object in either the memory or the external storage device based on the consumed memory amount of the memory.

4. The intermediate data generation means stores data based on the object in the memory when the consumed memory amount of the memory is less than a first threshold, and stores data based on the object in the external storage device when the consumed memory amount of the memory is greater than or equal to the first threshold. The image processing apparatus according to claim 1, characterized by that.

5. The intermediate data generation means writes data based on the object to the memory, and when the consumed memory amount of the memory is greater than or equal to the first threshold, writes data based on the object to the external storage device, and releases the area of the data based on the object written to the memory. The image processing apparatus according to claim 1, characterized by that.

6. The intermediate data generation means When the object to be processed is a first object and the consumed memory amount of the memory is less than a first threshold, stores data based on the first object in the memory, The image processing apparatus according to claim 4, wherein when the object to be processed is a second object and the consumed memory amount of the memory is greater than or equal to the first threshold, stores data based on the second object in the external storage device.

7. After the intermediate data generation means writes data based on the first object to the memory, it writes data based on the second object to the memory. When the consumed memory amount of the memory is equal to or greater than a first threshold value, the data based on the second object is written to the external storage device, the area of the data based on the first object written to the memory is not released, and the area of the data based on the second object written to the memory is released. The image processing apparatus according to claim 5, characterized in that.

8. The image processing apparatus according to claim 4, characterized in that the first threshold value is a value obtained by subtracting a margin value from an upper limit value.

9. The intermediate data generation means generates drawing-related information including data based on the object, and generates intermediate data based on the drawing-related information. The drawing-related information includes edge information regarding the edges of the objects drawn on the page, composition information related to the composition of the objects constituting the page, or filling information regarding filling in the page. The image processing apparatus according to claim 1, characterized in that.

10. After the consumed memory amount of the memory becomes equal to or greater than a first threshold value, the intermediate data generation means stores the data based on the object in either the memory or the external storage device based on a predicted value of the size of the data based on the object. The image processing apparatus according to claim 4, characterized in that.

11. After the consumed memory amount of the memory becomes equal to or greater than a first threshold value, if the sum of the consumed memory amount of the memory and the predicted value of the size of the data based on the object is less than a second threshold value, the data based on the object is stored in the memory, and if the sum of the consumed memory amount of the memory and the predicted value of the size of the data based on the object is equal to or greater than the second threshold value, the data based on the object is stored in the external storage device. The image processing apparatus according to claim 10, characterized in that.

12. The external storage device is a disk. The image processing apparatus according to claim 1, characterized in that.

13. An intermediate data generation step of generating intermediate data based on a print job; And a print data generation step of generating print data based on the intermediate data. In the intermediate data generation step, data based on the object of the print job is stored in either the memory or the external storage device in units of objects, and intermediate data is generated based on the data based on the object stored in the memory or the external storage device. An image processing method for an image processing apparatus characterized by the above.

14. A program for causing a computer to function as the image processing apparatus according to any one of Claims 1 to 12.

Citation Information

Patent Citations

  • Image processing apparatus and method thereof

    JP2006173799A

  • Image processing device and image processing method

    JP2021115764A