WO2017163590A1 - 画像処理装置、画像処理方法、及び画像処理プログラム - Google Patents

画像処理装置、画像処理方法、及び画像処理プログラム Download PDF

Info

Publication number
WO2017163590A1
WO2017163590A1 PCT/JP2017/002572 JP2017002572W WO2017163590A1 WO 2017163590 A1 WO2017163590 A1 WO 2017163590A1 JP 2017002572 W JP2017002572 W JP 2017002572W WO 2017163590 A1 WO2017163590 A1 WO 2017163590A1
Authority
WO
WIPO (PCT)
Prior art keywords
image processing
image data
unit
image
processing
Prior art date
Application number
PCT/JP2017/002572
Other languages
English (en)
French (fr)
Inventor
昂生 竹本
和幸 板垣
長尾 隆
Original Assignee
富士フイルム株式会社
富士ゼロックス株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士フイルム株式会社, 富士ゼロックス株式会社 filed Critical 富士フイルム株式会社
Priority to CN201780019439.0A priority Critical patent/CN108885777B/zh
Priority to JP2018507078A priority patent/JP6600077B2/ja
Publication of WO2017163590A1 publication Critical patent/WO2017163590A1/ja
Priority to US16/134,972 priority patent/US10783604B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data

Definitions

  • the technology of the present disclosure relates to an image processing device, an image processing method, and an image processing program.
  • the amount of storage area used can be reduced compared to the case of performing the out-place process.
  • in-place processing may not be performed depending on the processing content. In this case, if the in-place processing is performed, the output data stored in the storage area is different from the data obtained by performing the processing normally.
  • the technique of the present disclosure can reduce the burden on the user and reduce the amount of storage area used for image processing, compared to when the user determines whether in-place processing is possible.
  • a processing apparatus, an image processing method, and an image processing program are provided.
  • the image processing apparatus executes image processing by an object group in which a plurality of objects that perform image processing on output image data stored in a storage area and output output image data are connected.
  • An image processing apparatus that determines whether or not input image data can be overwritten with output image data based on each processing content of the image processing, and image processing that is determined to be overwritten by the determination unit
  • a control unit configured to set a storage area of the output image data of the process as an area including a storage area in which input image data that can be overwritten is stored, and to perform control to execute image processing by the object group.
  • the output image data As a storage area, an area in which a capacity within a predetermined range equal to or larger than a difference between the size of the output image data and the size of the input image data that can be overwritten is increased with respect to the storage area in which the overwritten input image data is stored. May be set.
  • the image processing apparatus is the output image data of the processing result of the image processing executed by the object in the last stage of the object group in the image processing apparatus according to the first aspect or the second aspect.
  • an accepting unit that accepts input from the user, and when the accepting unit accepts that the processing result is abnormal, the judging unit determines that overwriting is possible
  • a setting may be performed in which the output image data storage area is set to a different area from the input image data storage area, and the image processing by the object group is executed again.
  • An image processing apparatus is the image processing apparatus according to any one of the first to third aspects, wherein the control unit is a processor on which the determination by the determination unit is executed. May perform control to execute image processing by a different processor.
  • the image processing apparatus is the image processing apparatus according to the fourth aspect, even if the control unit performs control to execute image processing by a graphics processing unit having a local memory. Good.
  • An image processing apparatus is the image processing apparatus according to any one of the first to fifth aspects, wherein the portion to be processed of the input image data is divided into divided image data.
  • a dividing unit that divides the image may be further provided, and the control unit may perform control to execute image processing using an object group for each divided image data.
  • the image processing apparatus is the image processing apparatus according to the sixth aspect, in which the image processing is executed by a graphics processing unit in which the dividing unit has a cache memory and a local memory.
  • the input image data may be divided at a size corresponding to the capacity of the last level cache of the graphics processing unit.
  • the image processing apparatus is the image processing apparatus according to the sixth aspect or the seventh aspect, wherein the dividing unit performs image processing by a central processing unit having a cache memory.
  • the input image data may be divided into a size corresponding to a predetermined capacity of a cache memory other than the last level cache of the central processing unit.
  • image processing is performed by an object group in which a plurality of objects that perform image processing on output image data stored in a storage area and output output image data are connected.
  • An image processing method by an image processing apparatus for determining whether or not input image data can be overwritten with output image data according to each processing content of the image processing, and outputting the image processing for the image processing determined to be overwritable The image data storage area is set as an area including a storage area in which input image data that can be overwritten is stored, and control for executing image processing by the object group is performed.
  • An image processing program causes a computer to function as a determination unit and a control unit of the image processing apparatus according to any one of the first to eighth aspects of the present invention. Is.
  • the burden on the user is reduced and the usage amount of the image processing storage area is reduced. be able to.
  • the computer 10 may be a copying machine, a printer, a facsimile machine, a multifunction machine having the functions of these machines, and a computer incorporated in an image handling device that performs image processing inside a scanner or the like.
  • the computer 10 may be an independent computer such as a PC (Personal Computer), or may be a computer incorporated in a portable device such as a PDA (Personal Digital Assistant) or a mobile phone.
  • the computer 10 includes a first calculation unit 12A, a second calculation unit 12B, a memory 14, a display unit 16, an operation unit 18, a storage unit 20, an image data supply unit 22, And an image output unit 24. Further, the first calculation unit 12A, the second calculation unit 12B, the memory 14, the display unit 16, the operation unit 18, the storage unit 20, the image data supply unit 22, and the image output unit 24 are connected to each other via the bus 26. It is connected.
  • the first arithmetic unit 12A is a main processor of the computer 10, and is a CPU (Central Processing Unit) as an example.
  • the 2nd calculating part 12B which concerns on this Embodiment is GPU (Graphics
  • the second calculation unit 12B may be the same type of CPU as the first calculation unit 12A or may be a different type of CPU. Further, the second calculation unit 12B may be a GPU built in the first calculation unit 12A.
  • the second arithmetic unit 12B may be a GPU that does not have the local memory 13 therein. Further, the first arithmetic unit 12A and the second arithmetic unit 12B may be an arithmetic unit such as an FPGA (Field Programmable Gate Array).
  • FPGA Field Programmable Gate Array
  • the memory 14 is a non-volatile storage unit in which the first calculation unit 12A and the second calculation unit 12B temporarily store data.
  • the first calculation unit 12A sends the image data stored in the storage area of the memory 14 or the storage unit 20 to the second calculation unit 12B via the bus 26. Forward.
  • the second calculation unit 12B stores the image data transferred from the first calculation unit 12A in the local memory 13, and performs image processing on the stored image data.
  • the second calculation unit 12B may directly read the image data stored in the memory 14 or the storage unit 20 and perform image processing.
  • a display panel such as an LCD (Liquid Crystal Display) provided on the image handling device and a numeric keypad are applied to the display unit 16 and the operation unit 18, for example.
  • a display connected to the computer 10 a keyboard, a mouse, and the like are applied to the display unit 16 and the operation unit 18.
  • the display unit 16 and the operation unit 18 may be a touch panel display in which a touch panel and a display are integrated.
  • the storage unit 20 is a nonvolatile storage medium such as an HDD (Hard Disk Drive), an SSD (Solid State Drive), or a flash memory.
  • the image data supply unit 22 only needs to supply image data to be processed. For example, an image reading unit that reads an image recorded on a recording material such as paper or photographic film and outputs the image data is applied.
  • a receiving unit that receives image data from an external device via a communication line, an image storage unit (memory 14 or storage unit 20) that stores image data, and the like are applied to the image data supply unit 22.
  • the image output unit 24 only needs to output image data that has undergone image processing or an image represented by image data that has undergone image processing. For example, an image that records the image represented by the image data on a recording material such as paper or a photosensitive material.
  • the recording unit is applied.
  • the image output unit 24 includes a display unit (display unit 16) that displays an image represented by the image data on a display or the like, and a writing device that writes the image data to a recording medium such as a CD-ROM (Compact Disk Read Only Memory). Applied.
  • the image output unit 24 is a transmission unit that transmits image data that has undergone image processing to an external device via a communication line.
  • the image output unit 24 may be an image storage unit (memory 14 or storage unit 20) that stores image data that has undergone image processing.
  • the storage unit 20 stores various programs executed by the first calculation unit 12A and the second calculation unit 12B.
  • the storage unit 20 stores, as various programs, a program of the operating system 30 that manages resource management, program execution management, communication between the computer 10 and an external device, and the like.
  • the storage unit 20 stores an image processing program group 34 for causing the computer 10 to function as an image processing apparatus as various programs.
  • the storage unit 20 stores various application program groups 32 (hereinafter referred to as “applications 32”) that cause the image processing apparatus to perform desired image processing as various programs.
  • the image processing program group 34 is a program developed for the purpose of reducing the load when developing the image processing program executed on the above-described image handling device, portable device, PC, and the like.
  • the image processing program group 34 is a program developed so as to be executable in common with various devices (platforms) such as the above-described image handling device, portable device, and PC.
  • the image processing apparatus realized by the image processing program group 34 is an image processing DAG (Directed Acyclic50Graph) that performs image processing instructed by the application 32 in accordance with a construction instruction from the application 32A. (Details will be described later).
  • the image processing apparatus executes the processing of the image processing DAG 50A in accordance with the execution instruction from the application 32. Therefore, the image processing program group 34 provides the application 32 with an interface for instructing the construction of the image processing DAG 50A for performing desired image processing or instructing the execution of the image processing by the constructed image processing DAG 50A. is doing.
  • the program for performing the image processing may be developed as shown below.
  • the image processing program group 34 includes a module library 36, a program for the processing construction unit 42, and a program for the processing control unit 46A.
  • the module library 36 programs of a plurality of types of image processing modules 38 that perform predetermined different image processing are registered.
  • Examples of the image processing include input processing, filter processing, color conversion processing, enlargement / reduction processing (indicated as “enlargement / reduction processing” in FIG. 1), skew angle detection processing, image rotation processing, image composition processing, and output processing. Etc.
  • image processing modules 38 having the same image processing type and different image processing contents to be executed are also registered.
  • this type of image processing module is distinguished from “module 1” and “module 2” by adding a number at the end.
  • the input image data is reduced by reducing the vertical and horizontal size of the image to 50% by thinning out every other pixel in both the horizontal and vertical directions.
  • An image processing module 38 that performs processing is prepared. Further, for example, with respect to the image processing module 38 that performs enlargement / reduction processing, an image processing module 38 that performs enlargement / reduction processing at a specified enlargement / reduction rate for input image data is prepared.
  • an image processing module 38 that performs color conversion processing, an image processing module 38 that converts an image in an RGB (Red (Green Blue) color space into an image in a CMYK (Cyan Magenta Yellow Key-Plate (black)) color space. And an image processing module 38 for converting an image in the CMYK color space into an image in the RGB color space. Further, for example, for the image processing module 38 that performs color conversion processing, an image processing module 38 that converts an image in the RGB color space into an image in the YCbCr color space, and an image in the YCbCr color space is converted into an image in the RGB color space. An image processing module 38 and the like are prepared.
  • a buffer module 40 having a storage area (buffer) for storing image data is also registered.
  • the process construction unit 42 constructs a DAG-type image processing DAG 50A according to an instruction from the application 32.
  • the image processing DAG 50A as shown in FIG. 2A as an example, one or more image processing modules 38 are connected via a buffer module 40 arranged in at least one of the preceding and following stages of each image processing module 38. .
  • Each image processing module 38 is an example of an object that performs image processing on input image data and outputs output image data.
  • the image processing DAG 50A is an example of an object group in which a plurality of image processing modules 38 are connected.
  • the image processing module 38 connected to the preceding stage through the buffer module 40 has its own image processing when the image processing by the preceding stage image processing module 38 is completed. It is shown that it is possible to execute.
  • the image processing module 38 in which a plurality of image processing modules 38 are connected to the preceding stage via the buffer module 40 performs the processing of its own image processing when all the image processing of the plurality of preceding image processing modules 38 is completed. Indicates that execution is possible.
  • FIG. 2A shows a DAG in which only each module is connected in the order of processing.
  • this DAG is executed, image data stored in the memory 14 is input as shown in FIG. 2B. Then, image processing is performed according to the DAG. Finally, the processing result such as processed image data is stored in the memory 14. Note that when the image processing executed by each image processing module 38 is executed by the second arithmetic unit 12B, the memory 14 shown in FIG.
  • the second arithmetic unit 12 ⁇ / b> B performs the color conversion process and the reduction process in this order by the out-place process.
  • FIG. 3 in order to distinguish between the image processing module 38 that performs color conversion processing and the image processing module 38 that performs reduction processing, alphabets are added to the end of the reference numerals.
  • the local memory 13 which is a storage area of an input / output destination of each image processing module 38 is illustrated instead of the buffer module 40.
  • the image processing module 38 ⁇ / b> A performs color conversion processing on the image data stored in the storage area 13 ⁇ / b> A of the local memory 13, and the image after color conversion processing is performed on the storage area 13 ⁇ / b> B of the local memory 13. Output data. Further, the image processing module 38B performs a reduction process on the image data stored in the storage area 13B, and outputs the image data after the reduction process to the storage area 13C of the local memory 13. As described above, when the image processing executed by the image processing module 38 is executed by out-place processing, storage areas for three image data are required in the example shown in FIG.
  • the computer 10 determines whether or not the image processing executed by the image processing module 38 can be performed in-place depending on the content of the image processing (the input image data can be overwritten with the output image data). Whether or not). And the computer 10 which concerns on this Embodiment performs an image process by an in-place process about the image process determined that an in-place process is possible.
  • the processing control unit 46 ⁇ / b> A includes a reception unit 60, a feature information storage unit 62, a determination unit 66, a control unit 68, and an output unit 70.
  • the accepting unit 60 accepts an input from the user via the operation unit 18, for example.
  • the receiving unit 60 may receive an input from the user by receiving instruction information indicating an instruction from the user transmitted from an external device via a communication line, for example.
  • the feature information in which the content of the image processing executed by each image processing module 38 is associated with the availability information regarding whether or not the in-place processing is possible. 64 is stored in advance.
  • the feature information 64 according to the present embodiment includes the type of image processing as a major classification, the processing content of image processing as a minor classification, and availability information, and each of the processing contents of image processing. Is associated with availability information.
  • the availability information is information indicating one of three types of information “required”, “possible”, and “impossible”, and the image processing whose availability information is “essential” may perform in-place processing. This is an essential process.
  • the image processing in which the availability information is “possible” is an in-place processing or the out-place processing
  • the image processing in which the availability information is “impossible” is an out-place processing. This is an essential process.
  • the image processing executed by the image processing module 38 that converts an RGB color space image into an YCbCr color space image indicates that the in-place processing or the out-place processing may be performed. Yes. Further, the image processing executed by the image processing module 38 for enlarging an image by linear interpolation indicates that it is essential to perform out-place processing. In addition, the image processing executed by the image processing module 38 that performs the process of adding the sleeve region to the image by duplicating the pixels at the edge of the image is an indispensable process. Show.
  • the determination unit 66 can perform in-place processing on image processing executed by each image processing module 38 of the image processing DAG 50A constructed by the processing construction unit 42. Whether or not there is is determined by the processing content of the image processing. As an example, the determination unit 66 according to the present embodiment determines that the in-place processing is possible for the image processing of the processing content whose availability information of the feature information 64 is “essential” or “possible”.
  • the determination unit 66 determines that the in-place processing is impossible for the image processing of the processing content whose availability information of the feature information 64 is “impossible”. Note that the determination unit 66 may determine that a process in which the availability information of the feature information 64 is “possible” cannot be performed in place.
  • the control unit 68 stores input image data capable of performing in-place processing on the storage region of the output image data of the image processing for the image processing determined to be in-place processing by the determination unit 66. Set the area including the storage area. In the present embodiment, when the size of the output image data is equal to or smaller than the size of the input image data, the control unit 68 uses the same storage area for the output image data as the area for storing the input image data that can be processed in-place. Set to.
  • control unit 68 performs the following setting when the size of the output image data is larger than the size of the input image data.
  • the control unit 68 sets an area in which the capacity of the difference between the size of the output image data and the size of the input image data is increased as the storage area of the output image data relative to the storage area in which the input image data is stored.
  • the control unit 68 outputs an area obtained by increasing the size of the storage area in which the input image data is stored and adding a margin to the difference between the size of the output image data and the size of the input image data.
  • Settings may be made as a storage area for image data.
  • control unit 68 performs control to execute image processing by the image processing DAG 50A in which the above storage area is set. That is, the control unit 68 first performs control to execute image processing by the image processing module 38 in the first stage of the image processing DAG 50A. Thereafter, the control unit 68 performs control to sequentially execute the image processing by the image processing module 38 which has been executed after the image processing by the image processing module 38 connected in the previous stage is completed. Note that the control unit 68 according to the present embodiment performs control to execute each image processing by the second calculation unit 12B.
  • simple thinning reduction is performed by performing image processing for converting an image in the RGB color space into an image in the YCbCr color space by the second arithmetic unit 12B, and then reducing the image by thinning out pixels.
  • a case where processing is performed will be described.
  • FIG. 6 in order to distinguish between the image processing module 38 that performs image processing for converting an image in the RGB color space into an image in the YCbCr color space and the image processing module 38 that performs simple thinning / reducing processing, The alphabet is attached.
  • the local memory 13 that is the storage area of the input / output destination of each image processing module 38 is illustrated instead of the buffer module 40.
  • the input image data of the image processing module 38C is stored as the output destination storage area 13E of the image processing module 38C.
  • the stored storage area 13D is set.
  • the storage area 13E in which the input image data of the image processing module 38D is stored as the output destination storage area 13F of the image processing module 38D. Is set.
  • the second arithmetic unit 12B performs image processing for converting an image in the RGB color space into an image in the YCbCr color space, and then enlarges the image by performing linear interpolation.
  • a case of performing linear interpolation enlargement processing will be described.
  • FIG. 7 in order to distinguish between the image processing module 38 that performs image processing for converting an image in the RGB color space into an image in the YCbCr color space and the image processing module 38 that performs linear interpolation enlargement processing, The alphabet is attached.
  • the local memory 13 that is a storage area of an input / output destination of each image processing module 38 is illustrated instead of the buffer module 40.
  • the control unit 68 performs the following processing.
  • the control unit 68 sets the output image data storage area to be different from the storage area of the input image data for at least one image process determined by the determination unit 66 to be in-place processing. I do.
  • the control unit 68 performs control to execute the image processing again by the image processing DAG 50A in which the storage area is reset.
  • the output unit 70 outputs the output image data obtained as a result of the image processing executed by the image processing module 38 at the final stage of the image processing DAG 50A.
  • the output unit 70 displays the obtained output image data on the display unit 16.
  • the output unit 70 may output (send) the output image data to an external device.
  • the output unit 70 may output (form) an output image indicated by the output image data on a recording material such as paper.
  • FIG. 8 is a flowchart showing the flow of processing of the image processing program executed by the first calculation unit 12A when an instruction to start execution of image processing is input by the application 32.
  • the image processing program is installed in the storage unit 20 in advance. Further, the first calculation unit 12A executes the image processing program, so that the first calculation unit 12A functions as the processing construction unit 42, the reception unit 60, the determination unit 66, the control unit 68, and the output unit 70 described above.
  • step 100 of FIG. 8 the process construction unit 42 constructs an image processing DAG 50 ⁇ / b> A that performs image processing instructed by the application 32 in accordance with the construction instruction from the application 32.
  • the determination unit 66 reads the feature information 64 from the feature information storage unit 62.
  • one of all the image processing modules 38 of the image processing DAG 50A constructed in the processing of step 100 is selectively processed (hereinafter referred to as “processing target module 38”). It is executed repeatedly. Note that when the processing from step 104 to step 108 is repeatedly executed, the image processing module 38 that has not been processed until then is set as the processing target.
  • step 104 the determination unit 66 determines whether the processing content of the image processing executed by the processing target module 38 is “essential” or “possible” based on the feature information 64. . If this determination is a negative determination, the determination unit 66 determines that the in-place process is “impossible” and proceeds to step 108, whereas if the determination is affirmative, the determination unit 66 proceeds to step 106.
  • step 106 for the image processing executed by the processing target module 38, the control unit 68 sets the storage area for the output image data of the image processing as the area including the storage area for storing the input image data. After the setting, the process proceeds to step 110.
  • step 108 the control unit 68 sets the storage area for the output image data of the image processing to be different from the storage area for the input image data for the image processing executed by the processing target module 38. The process proceeds to step 110.
  • Step 110 the control unit 68 determines whether or not the processing from Step 104 to Step 108 has been completed for all the image processing modules 38 of the image processing DAG 50A constructed in Step 100. If this determination is a negative determination, the control unit 68 returns to step 104, but if the determination is a positive determination, the control unit 68 proceeds to step 112.
  • step 112 the control unit 68 performs control so that the image processing by the image processing DAG 50A that has undergone the above processing is executed by the second calculation unit 12B.
  • the second calculation unit 12B stores the input image data transferred from the first calculation unit 12A in the local memory 13, and executes image processing according to the image processing DAG 50A.
  • the second arithmetic unit 12B outputs the output image data finally obtained (that is, output from the image processing module 38 at the final stage of the image processing DAG 50A) from the local memory 13. 1 is transferred to the calculation unit 12A.
  • step 114 the control unit 68 waits for reception of output image data.
  • the determination in step 114 is affirmative, and the process proceeds to step 116.
  • the output unit 70 outputs the output image data received in step 114 to the display unit 16.
  • the user confirms the output image indicated by the output image data displayed on the display unit 16, and inputs an instruction to re-execute image processing via the operation unit 18 when the output image is an abnormal image.
  • step 118 the receiving unit 60 determines whether an instruction to re-execute image processing has been received. If this determination is affirmative, the reception unit 60 proceeds to step 120.
  • step 120 the control unit 68 performs the following processing on at least one image processing determined to be in-place processing in step 104, as in step 108 above.
  • the control unit 68 sets the storage area for the output image data of the image processing to be an area different from the storage area for the input image data, and then returns to step 112.
  • the number of image processing modules 38 for which the storage area is reset in step 120 is not particularly limited, and may be one or two, and it is determined in step 104 that in-place processing is possible. All of the processed image processing modules 38 may be used.
  • the accepting unit 60 makes a negative determination in step 118 and ends the image processing.
  • the storage area of the output image data of the image processing is set to be an area including a storage area in which input image data that can be overwritten is stored.
  • the storage area of the output image data is set as the input image data for at least one image processing capable of in-place processing.
  • the storage area is set to be different from the storage area.
  • image processing is executed by a processor (second arithmetic unit 12B) different from the processor (first arithmetic unit 12A) on which the determination by the determination unit 66 is executed.
  • image processing can be performed at high speed.
  • image processing is executed by the GPU (second arithmetic unit 12B).
  • the capacity of the local memory 13 of the GPU is smaller than the capacity of the memory 14, if the image processing is executed by the GPU by the out-place processing, there is a relatively high possibility of failing to secure the storage area.
  • the amount of storage area used for image processing can be reduced, so that the possibility of failing to secure the storage area can be reduced.
  • the second embodiment is different from the first embodiment in that input image data is divided.
  • symbol is attached
  • the image processing program group 34 includes a program for the processing control unit 46B.
  • the second arithmetic unit 12B has a local memory 13, and has a plurality of (four in this embodiment) processor cores.
  • the second arithmetic unit 12B is provided in a one-to-one correspondence with each processor core, and a plurality of (four in this embodiment) L1 (Level1) caches that the processor core uses as a cache memory.
  • L1 Level1
  • the second arithmetic unit 12B has one L2 (Level 2) cache that is used as a cache memory shared by each processor core and has a larger capacity than one L1 cache.
  • the L2 cache is a cache memory at a level farthest from the processor of the second arithmetic unit, so-called LLC (Last Level Cache).
  • LLC Last Level Cache
  • the number of levels of the cache memory is not limited to two and may be three or more.
  • the first arithmetic unit 12A has a plurality of processor cores, an L1 cache, and an L2 cache, like the second arithmetic unit 12B.
  • each image processing module 38 it is possible to set which one of the first arithmetic unit 12A and the second arithmetic unit 12B is to execute the image processing.
  • the present invention is not limited to this.
  • the user may set for each image processing module 38 which one of the first calculation unit 12A and the second calculation unit 12B the image processing is executed.
  • the processing control unit 46B includes a dividing unit 72.
  • the dividing unit 72 divides the image indicated by the processing target portion of the input image data into a plurality of divided images.
  • the dividing unit 72 divides the image G indicated by the processing target portion of the input image data into a plurality (three in the example shown in FIG. 10) of divided images B1 to B3.
  • image data indicating a divided image is referred to as “divided image data”.
  • the part to be processed of input image data means a part to be processed by the entire input image data in the image processing that processes the entire input image as in the color conversion process.
  • the part to be processed of the input image data means a part to be processed in image processing in image processing that targets a part of the input image, such as a trimming process.
  • a portion to be processed of input image data is simply referred to as “input image data”.
  • the dividing unit 72 divides the image G up and down, but the present invention is not limited to this.
  • the dividing unit 72 may divide the image G left and right, or may divide the image G vertically and horizontally.
  • the dividing unit 72 divides the input image data into a plurality of divided image data with a size corresponding to the capacity of the LLC (L2 cache) of the second computing unit 12B. .
  • the dividing unit 72 divides the input image data into a plurality of pieces of divided image data of the same size with a size equal to or smaller than the LLC capacity of the second arithmetic unit 12B as much as possible. That is, for example, when the size of the input image data is 6 MB and the LLC capacity of the second arithmetic unit 12B is 2 MB, the size of each divided image data is 2 MB. Further, when the size of the input image data is 4.5 MB and the LLC capacity of the second calculation unit 12B is 2 MB, the size of each divided image data is 1.5 MB.
  • the division unit 72 converts the input image data according to the capacity of the cache memory (L1 cache in this embodiment) other than the LLC of the first calculation unit 12A.
  • the image is divided into a plurality of divided image data with a predetermined size.
  • the dividing unit 72 divides the input image data into a plurality of pieces of divided image data of the same size with a size equal to or smaller than the L1 cache capacity of the first arithmetic unit 12A as much as possible. To do.
  • the dividing unit 72 is input in a size according to the capacity of one predetermined cache memory (for example, L2 cache) other than LLC. What is necessary is just to divide image data.
  • the dividing unit 72 performs image processing executed by each image processing module 38 on the image processing DAG 50 ⁇ / b> A as a partial process 39 (task) corresponding to each piece of divided image data.
  • the image processing DAG 50B is constructed by dividing.
  • the buffer module 40 is not shown in order to avoid complications.
  • the dividing unit 72 performs a partial process 39 of the image processing module 38 connected to the preceding stage and a partial process of the image processing module 38 connected to the subsequent stage according to the type of image processing executed by the image processing module 38.
  • Dependency is given to 39. In FIG. 11, this dependency relationship is indicated by a broken-line arrow.
  • each partial process 39 also has a one-to-one dependency.
  • a dependency relationship is also given to a partial process 39 in the previous stage that performs image processing on the peripheral pixels.
  • Each partial process 39 can be executed when there is no partial process 39 having a dependency relationship in the preceding stage or when all the partial processes 39 having a dependency relationship are completed.
  • FIG. 12 is a flowchart showing the flow of processing of the image processing program executed by the first arithmetic unit 12A when an instruction to start execution of image processing is input by the application 32.
  • the image processing program is installed in the storage unit 20 in advance.
  • the first calculation unit 12A executes the image processing program
  • the first calculation unit 12A causes the processing construction unit 42, the reception unit 60, the determination unit 66, the control unit 68, the output unit 70, and the division unit 72 described above. Function as. Further, steps in FIG. 12 that execute the same processing as in FIG. 8 are denoted by the same step numbers as in FIG.
  • step 111 of FIG. 12 the dividing unit 72 determines the input image according to information indicating in which calculation unit the image processing by the individual image processing module 38 of the image processing DAG 50 ⁇ / b> A is executed.
  • the data is divided into a plurality of divided image data.
  • the division unit 72 divides the image processing executed by each image processing module 38 into individual partial processes 39 and directly connects them to the image processing DAG 50A that has undergone the above processing.
  • a dependency relationship is given between the partial processes 39 of the image processing module 38. That is, in step 111, the dividing unit 72 constructs the image processing DAG 50B.
  • the control unit 68 performs control to execute image processing in accordance with the image processing DAG 50B constructed in step 111. That is, the control unit 68 performs control to execute the partial processing of the image processing module 38 that is set to be executed by the first arithmetic unit 12A in the image processing DAG 50B, in each processor core of the first arithmetic unit 12A. . Further, the control unit 68 performs control to execute the partial processing of the image processing module 38 that is set to be executed by the second calculation unit 12B in the image processing DAG 50B, in each processor core of the second calculation unit 12B. . The control unit 68 sequentially performs these controls for the partial processes 39 that can be executed in accordance with the image processing DAG 50B.
  • step 114 If all the image processing modules 38 in the final stage of the image processing DAG 50B are set to be executed by the first arithmetic unit 12A, the processing in step 114 is not necessary.
  • the input image data of the image processing module 38 executed by the second arithmetic unit 12A is divided into a plurality of divided images with a size corresponding to the LLC capacity of the second arithmetic unit 12A. Divide into data.
  • the second calculation unit 12A if the number of divided image data is too large, the overhead of data transfer between the first calculation unit 12A (CPU) and the second calculation unit 12B is relatively large. Become. Therefore, in the present embodiment, it is possible to reduce overhead compared to the case where the input image data is divided by the size of the L1 cache. Further, the LLC hit rate is improved after parallelizing image processing. Therefore, according to the present embodiment, image processing can be executed at higher speed.
  • the input image data of the image processing module 38 executed by the first arithmetic unit 12A is divided into a plurality of sizes with a size corresponding to the capacity of the L1 cache of the first arithmetic unit 12A. Divide into image data. Thereby, after parallelizing image processing, the hit rate of the L1 cache, which is higher than that of the LLC, is improved, so that the image processing can be executed at higher speed.
  • the dividing unit 72 may divide the input image data by a predetermined number or size.
  • the mode in which various programs are stored (installed) in advance in the storage unit 20 has been described.
  • the various programs may be provided in a form recorded on a recording medium such as a CD-ROM, a DVD-ROM (Digital Versatile Disk Read Only Memory), or a USB (Universal Serial Bus) memory.
  • Various programs may be downloaded from an external device via a network.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)

Abstract

画像処理装置として機能するコンピュータは、記憶領域に記憶された入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトが複数連結されたオブジェクト群により画像処理を実行する画像処理装置であって、入力画像データを出力画像データで上書き可能か否かを画像処理の各々の処理内容によって判定し、上書き可能と判定した画像処理について、該画像処理の出力画像データの記憶領域を上書き可能な入力画像データが記憶された記憶領域を含む領域とする設定、及びオブジェクト群による画像処理を実行する制御を行う。

Description

画像処理装置、画像処理方法、及び画像処理プログラム
 本開示の技術は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
 従来、記憶領域に記憶された入力データに対して処理を行って出力データを出力する場合に、入力データに上書きして出力データを記憶するインプレース(In-place)処理を行う技術が知られている(特表2007-524156号公報参照)。
 また、上記インプレース処理を画像処理に適用し、記憶領域に記憶された入力画像データに対して画像処理を行って得られた出力画像データを、入力画像データに上書きして記憶する技術も知られている(特表2011-521370号公報及び特表2015-508528号公報参照)。なお、以下では、入力画像データが記憶されている記憶領域と異なる記憶領域に出力画像データを記憶する処理をアウトプレース(Out-place)処理という。
 前述したインプレース処理を行うことで、アウトプレース処理を行う場合に比較して、記憶領域の使用量を低減することができる。しかしながら、処理の内容によってはインプレース処理を行えない場合がある。この場合、インプレース処理を行ってしまうと、記憶領域に記憶された出力データは、処理が正常に行われて得られたデータとは異なるデータとなってしまう。
 特表2007-524156号公報、特表2011-521370号公報、及び特表2015-508528号公報に記載の技術では、入力データに対する処理が、インプレース処理が可能であるか否かは考慮していない。また、入力データに対する処理が、インプレース処理が可能であるか否かをユーザに判断させることが考えられるが、この場合、ユーザの負担が増大してしまう。
 本開示の技術は、インプレース処理が可能であるか否かをユーザに判断させる場合に比較して、ユーザの負担を軽減して、画像処理の記憶領域の使用量を低減することができる画像処理装置、画像処理方法、及び画像処理プログラムを提供する。
 本発明の第1の態様の画像処理装置は、記憶領域に記憶された入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトが複数連結されたオブジェクト群により画像処理を実行する画像処理装置であって、入力画像データを出力画像データで上書き可能か否かを画像処理の各々の処理内容によって判定する判定部と、判定部により上書き可能と判定された画像処理について、画像処理の出力画像データの記憶領域を上書き可能な入力画像データが記憶された記憶領域を含む領域とする設定、及びオブジェクト群による画像処理を実行する制御を行う制御部と、を備えている。
 なお、本発明の第2の態様の画像処理装置は、第1の態様の画像処理装置において、制御部が、出力画像データのサイズが上書き可能な入力画像データのサイズより大きい場合、出力画像データの記憶領域として、上書き可能な入力画像データが記憶された記憶領域に対して、出力画像データのサイズと上書き可能な入力画像データのサイズとの差分以上の所定範囲内の容量を増加させた領域を設定してもよい。
 また、本発明の第3の態様の画像処理装置は、第1の態様又は第2の態様の画像処理装置において、オブジェクト群の最終段のオブジェクトにより実行された画像処理の処理結果の出力画像データを出力する出力部と、ユーザからの入力を受け付ける受付部と、をさらに備え、制御部が、受付部に処理結果が異常であることが受け付けられた場合、判定部により上書き可能と判定された少なくとも1つの画像処理について、出力画像データの記憶領域を入力画像データの記憶領域とは異なる領域とする設定、及びオブジェクト群による画像処理を再度実行する制御を行ってもよい。
 また、本発明の第4の態様の画像処理装置は、第1の態様から第3の態様の何れか1つの態様の画像処理装置において、制御部が、判定部による判定が実行されるプロセッサとは異なるプロセッサにより画像処理を実行する制御を行ってもよい。
 特に、本発明の第5の態様の画像処理装置は、第4の態様の画像処理装置において、制御部が、ローカルメモリを有するグラフィックス・プロセッシング・ユニットにより画像処理を実行する制御を行ってもよい。
 また、本発明の第6の態様の画像処理装置は、第1の態様から第5の態様の何れか1つの態様の画像処理装置において、入力画像データの処理対象とする部分を分割画像データに分割する分割部をさらに備え、制御部が、分割画像データ毎にオブジェクト群による画像処理を実行する制御を行ってもよい。
 特に、本発明の第7の態様の画像処理装置は、第6の態様の画像処理装置において、分割部が、キャッシュメモリ及びローカルメモリを有するグラフィックス・プロセッシング・ユニットにより画像処理が実行される場合、入力画像データをグラフィックス・プロセッシング・ユニットのラスト・レベル・キャッシュの容量に応じたサイズで分割してもよい。
 また、本発明の第8の態様の画像処理装置は、第6の態様又は第7の態様の画像処理装置において、分割部が、キャッシュメモリを有するセントラル・プロセッシング・ユニットにより画像処理が実行される場合、入力画像データをセントラル・プロセッシング・ユニットのラスト・レベル・キャッシュ以外の予め定められたキャッシュメモリの容量に応じたサイズで分割してもよい。
 本発明の第9の態様の画像処理方法は、記憶領域に記憶された入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトが複数連結されたオブジェクト群により画像処理を実行する画像処理装置による画像処理方法であって、入力画像データを出力画像データで上書き可能か否かを画像処理の各々の処理内容によって判定し、上書き可能と判定した画像処理について、画像処理の出力画像データの記憶領域を上書き可能な入力画像データが記憶された記憶領域を含む領域とする設定、及びオブジェクト群による画像処理を実行する制御を行うものである。
 本発明の第10の態様の画像処理プログラムは、コンピュータを、本発明の第1の態様から第8の態様の何れか1つの態様の画像処理装置の判定部、及び制御部として機能させるためのものである。
 本発明の一実施形態によれば、インプレース処理が可能であるか否かをユーザに判断させる場合に比較して、ユーザの負担を軽減して、画像処理の記憶領域の使用量を低減することができる。
各実施の形態に係る画像処理装置として機能するコンピュータの構成の一例を示すブロック図である。 画像処理DAGの一例を示す概略図である。 画像処理DAGに入出力用のメモリを加えた場合の概略図である。 画像処理DAGの一例を示す概略図である。 第1の実施の形態に係る処理制御部の機能的な構成の一例を示すブロック図である。 各実施の形態に係る特徴情報の一例を示す概略図である。 インプレース処理を行う場合の画像処理DAGの一例を示す概略図である。 インプレース処理を行う場合の画像処理DAGの一例を示す概略図である。 第1の実施の形態に係る画像処理プログラムの処理の流れを示すフローチャートである。 第2の実施の形態に係る処理制御部の機能的な構成の一例を示すブロック図である。 入力画像の分割処理の説明に供する概略図である。 画像処理モジュールが部分処理に分割された画像処理DAGの一例を示す概略図である。 第2の実施の形態に係る画像処理プログラムの処理の流れを示すフローチャートである。
 以下、図面を参照して、本開示の技術を実施するための形態例を詳細に説明する。
 [第1の実施の形態]
 まず、図1を参照して、画像処理装置として機能するコンピュータ10の構成を説明する。なお、コンピュータ10は、複写機、プリンタ、ファクシミリ装置、これらの装置の機能を兼ね備えた複合機、及びスキャナ等の内部で画像処理を行う画像取扱機器に組み込まれたコンピュータであってもよい。また、コンピュータ10は、PC(Personal Computer)等の独立したコンピュータであってもよく、PDA(Personal Digital Assistant)及び携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
 図1に示すように、本実施の形態に係るコンピュータ10は、第1演算部12A、第2演算部12B、メモリ14、表示部16、操作部18、記憶部20、画像データ供給部22、及び画像出力部24を備えている。また、第1演算部12A、第2演算部12B、メモリ14、表示部16、操作部18、記憶部20、画像データ供給部22、及び画像出力部24の各部は、バス26を介して互いに接続されている。
 本実施の形態に係る第1演算部12Aは、コンピュータ10のメイン・プロセッサであり、一例としてCPU(Central Processing Unit)である。また、本実施の形態に係る第2演算部12Bは、一例として内部にローカルメモリ13を有するGPU(Graphics Processing Unit)である。なお、第2演算部12Bは、第1演算部12Aと同じ種類のCPUでもよいし、異なる種類のCPUでもよい。また、第2演算部12Bは、第1演算部12Aに内蔵されたGPUでもよい。また、第2演算部12Bは内部にローカルメモリ13を有さないGPUでもよい。また、第1演算部12A及び第2演算部12Bは、FPGA(Field Programmable Gate Array)等の演算器でもよい。
 メモリ14は、第1演算部12A及び第2演算部12Bが一時的にデータを記憶する不揮発性の記憶手段である。本実施の形態に係る第2演算部12Bにより画像処理を行う場合、第1演算部12Aはメモリ14又は記憶部20の記憶領域に記憶された画像データを第2演算部12Bにバス26を介して転送する。そして、第2演算部12Bは、第1演算部12Aから転送された画像データをローカルメモリ13に記憶し、記憶した画像データに対して画像処理を行う。なお、第2演算部12Bは、メモリ14又は記憶部20に記憶された画像データを直接読み出して画像処理を行ってもよい。
 コンピュータ10が前述した画像取扱機器に組み込まれている場合、表示部16及び操作部18は、例えば画像取扱機器に設けられたLCD(Liquid Crystal Display)等の表示パネル及びテンキー等が適用される。また、コンピュータ10が独立したコンピュータである場合、表示部16及び操作部18は、例えばコンピュータ10に接続されたディスプレイ、及びキーボード、マウス等が適用される。また、表示部16及び操作部18は、タッチパネル及びディスプレイが一体化して構成されたタッチパネルディスプレイ等でもよい。また、記憶部20は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、及びフラッシュメモリ等の不揮発性の記憶媒体が適用される。
 画像データ供給部22は、処理対象の画像データを供給するものであればよく、例えば紙や写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部が適用される。また、画像データ供給部22は、例えば通信回線を介して外部装置から画像データを受信する受信部、及び画像データを記憶する画像記憶部(メモリ14又は記憶部20)等が適用される。
 画像出力部24は、画像処理を経た画像データ又は画像処理を経た画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部が適用される。また、画像出力部24は、画像データが表す画像をディスプレイ等に表示する表示部(表示部16)、画像データをCD-ROM(Compact Disk Read Only Memory)等の記録媒体に書き込む書込装置が適用される。また、画像出力部24は、画像処理を経た画像データを、通信回線を介して外部装置に送信する送信部が適用される。また、画像出力部24は、画像処理を経た画像データを記憶する画像記憶部(メモリ14又は記憶部20)であってもよい。
 図1に示すように、記憶部20には、第1演算部12A及び第2演算部12Bによって実行される各種プログラムが記憶されている。記憶部20には、各種プログラムとして、リソースの管理、プログラムの実行の管理、及びコンピュータ10と外部装置との通信等を司るオペレーティングシステム30のプログラムが記憶されている。また、記憶部20には、各種プログラムとして、コンピュータ10を画像処理装置として機能させるための画像処理プログラム群34が記憶されている。また、記憶部20には、各種プログラムとして、上記画像処理装置に対して所望の画像処理を行わせる各種のアプリケーションプログラム群32(以下、「アプリケーション32」という。)が記憶されている。
 画像処理プログラム群34は、前述した画像取扱機器、携帯機器、及びPC等で実行される画像処理プログラムを開発する際の負荷を軽減することを目的として開発されたプログラムである。また、画像処理プログラム群34は、前述した画像取扱機器、携帯機器、及びPC等の各種機器(プラットフォーム)で共通に実行可能に開発されたプログラムである。
 画像処理プログラム群34によって実現される画像処理装置は、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理DAG(Directed Acyclic Graph:有向非循環(非巡回)グラフ)50A(詳細は後述)を構築する。そして、上記画像処理装置は、アプリケーション32からの実行指示に従い画像処理DAG50Aの処理を実行する。このため、画像処理プログラム群34は、所望の画像処理を行う画像処理DAG50Aの構築を指示したり、構築された画像処理DAG50Aによる画像処理の実行を指示したりするためのインタフェースをアプリケーション32に提供している。
 以上の構成により、内部で画像処理を行う必要のある任意の機器を新規に開発する場合等にも、上記画像処理を行うプログラムの開発に関しては、以下に示すように開発すればよい。この場合、上記任意の機器で必要とされる画像処理を、上記インタフェースを利用して画像処理プログラム群34に行わせるアプリケーション32を開発すればよい。従って、開発者は、実際に画像処理を行うプログラムを新たに開発する必要が無くなり、開発者の負荷が軽減される。
 次に、本実施の形態に係る画像処理プログラム群34について詳細に説明する。図1に示すように、画像処理プログラム群34は、モジュールライブラリ36、処理構築部42のプログラム、及び処理制御部46Aのプログラムを含む。
 モジュールライブラリ36は、予め定められた互いに異なる画像処理を行う複数種類の画像処理モジュール38のプログラムが各々登録されている。この画像処理としては、例えば、入力処理、フィルタ処理、色変換処理、拡大・縮小処理(図1では「拡縮処理」と表記)、スキュー角検知処理、画像回転処理、画像合成処理、及び出力処理等が挙げられる。
 また、モジュールライブラリ36には、画像処理の種類が同一で、かつ実行する画像処理の内容が異なる画像処理モジュール38も登録されている。図1では、この種の画像処理モジュールを「モジュール1」、「モジュール2」と、末尾に数字を付して区別している。例えば、拡大・縮小処理を行う画像処理モジュール38については、入力された画像データを、水平方向及び垂直方向の各方向ともに1画素おきに間引くことで画像の縦横のサイズを50%に縮小する縮小処理を行う画像処理モジュール38が用意されている。さらに、例えば、拡大・縮小処理を行う画像処理モジュール38については、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール38等が用意されている。
 また、例えば、色変換処理を行う画像処理モジュール38については、RGB(Red Green Blue)色空間の画像をCMYK(Cyan Magenta Yellow Key-Plate(黒))色空間の画像へ変換する画像処理モジュール38、及びCMYK色空間の画像をRGB色空間の画像へ変換する画像処理モジュール38が用意されている。さらに、例えば、色変換処理を行う画像処理モジュール38については、RGB色空間の画像をYCbCr色空間の画像へ変換する画像処理モジュール38、及びYCbCr色空間の画像をRGB色空間の画像へ変換する画像処理モジュール38等が用意されている。
 また、モジュールライブラリ36には、画像データを記憶するための記憶領域(バッファ)を備えたバッファモジュール40も登録されている。
 本実施の形態に係る処理構築部42は、アプリケーション32からの指示により、DAG形態の画像処理DAG50Aを構築する。画像処理DAG50Aは、一例として図2Aに示すように、1つ以上の画像処理モジュール38が、個々の画像処理モジュール38の前段及び後段の少なくとも一方に配置されたバッファモジュール40を介して連結される。
 なお、個々の画像処理モジュール38は、入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトの一例である。また、画像処理DAG50Aは、画像処理モジュール38が複数連結されたオブジェクト群の一例である。また、図2Aに示す例では、バッファモジュール40を介して前段に画像処理モジュール38が連結された画像処理モジュール38は、前段の画像処理モジュール38による画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。また、バッファモジュール40を介して前段に複数の画像処理モジュール38が連結された画像処理モジュール38は、前段の複数の画像処理モジュール38の全ての画像処理が終了した場合に、自身の画像処理の実行が可能となることを示している。
 また、図2Aでは、各モジュールのみが処理の順に接続されたDAGを示しているが、このDAGが実行される際には、図2Bに示すようにメモリ14に記憶された画像データが入力されてDAGに従って画像処理が行われる。そして、最終的にメモリ14に処理済みの画像データ等の処理結果が記憶される。なお、各画像処理モジュール38で実行される画像処理を第2演算部12Bにより実行する場合は、図2Bに示したメモリ14がローカルメモリ13となる。
 次に、図3を参照して、一例として、第2演算部12Bによって、色変換処理及び縮小処理を、この順番でアウトプレース処理により実行する場合について説明する。なお、図3では、色変換処理を行う画像処理モジュール38と縮小処理を行う画像処理モジュール38とを区別するために、符号の末尾にアルファベットを付している。また、図3では、錯綜を回避するために、バッファモジュール40に代えて、各画像処理モジュール38の入出力先の記憶領域であるローカルメモリ13を図示している。
 図3に示すように、画像処理モジュール38Aは、ローカルメモリ13の記憶領域13Aに記憶された画像データに対して色変換処理を行って、ローカルメモリ13の記憶領域13Bに色変換処理後の画像データを出力する。また、画像処理モジュール38Bは、記憶領域13Bに記憶された画像データに対して縮小処理を行って、ローカルメモリ13の記憶領域13Cに縮小処理後の画像データを出力する。このように、画像処理モジュール38で実行される画像処理を、アウトプレース処理により実行すると、図3に示す例では3つの画像データ分の記憶領域が必要になる。
 特に、GPUのようにローカルメモリ13の容量がメモリ14に比較して小さい場合、記憶領域の確保に失敗して画像処理が異常終了する場合がある。また、画像処理モジュール38で実行される画像処理の内容によっては、インプレース処理を行えない場合がある。そこで、本実施の形態に係るコンピュータ10は、画像処理モジュール38で実行される画像処理を、画像処理の内容によってインプレース処理が可能であるか否か(入力画像データを出力画像データで上書き可能か否か)を判定する。そして、本実施の形態に係るコンピュータ10は、インプレース処理が可能であると判定した画像処理については、インプレース処理により画像処理を実行する。
 次に、図4を参照して、本実施の形態に係る処理制御部46Aの機能的な構成を説明する。図4に示すように、処理制御部46Aは、受付部60、特徴情報記憶部62、判定部66、制御部68、及び出力部70を備えている。
 本実施の形態に係る受付部60は、例えば操作部18を介してユーザからの入力を受け付ける。なお、受付部60は、例えば通信回線を介して外部装置から送信されたユーザからの指示を示す指示情報を受信することでユーザからの入力を受け付けてもよい。
 本実施の形態に係る特徴情報記憶部62には、個々の画像処理モジュール38により実行される画像処理の内容と、インプレース処理が可能であるか否かに関する可否情報とが関連付けられた特徴情報64が予め記憶されている。一例として図5に示すように、本実施の形態に係る特徴情報64は、大分類として画像処理の種類、小分類として画像処理の処理内容、及び可否情報を含み、画像処理の処理内容の各々について、可否情報が関連付けられている。
 可否情報は、「必須」、「可能」、及び「不可能」の3種類の情報の何れかを示す情報であり、可否情報が「必須」である画像処理は、インプレース処理を行うことが必須な処理である。また、可否情報が「可能」である画像処理は、インプレース処理を行ってもアウトプレース処理を行ってもよい処理であり、可否情報が「不可能」である画像処理は、アウトプレース処理を行うことが必須な処理である。
 例えば、RGB色空間の画像をYCbCr色空間の画像へ変換する画像処理モジュール38により実行される画像処理は、インプレース処理を行ってもアウトプレース処理を行ってもよい処理であることを示している。また、画像を線形補間により拡大する画像処理モジュール38により実行される画像処理は、アウトプレース処理を行うことが必須な処理であることを示している。また、画像に袖領域を付加する処理を、画像の縁部の画素を複製することで行う画像処理モジュール38により実行される画像処理は、インプレース処理を行うことが必須な処理であることを示している。
 本実施の形態に係る判定部66は、特徴情報64に基づいて、処理構築部42により構築された画像処理DAG50Aの個々の画像処理モジュール38で実行される画像処理が、インプレース処理が可能であるか否かを、画像処理の処理内容によって判定する。本実施の形態に係る判定部66は、一例として、特徴情報64の可否情報が「必須」又は「可能」である処理内容の画像処理はインプレース処理が可能であると判定する。
 また、判定部66は、特徴情報64の可否情報が「不可能」である処理内容の画像処理はインプレース処理が不可能であると判定する。なお、判定部66は、特徴情報64の可否情報が「可能」である処理もインプレース処理が不可能であると判定してもよい。
 本実施の形態に係る制御部68は、判定部66によりインプレース処理が可能と判定された画像処理について、画像処理の出力画像データの記憶領域をインプレース処理が可能な入力画像データが記憶された記憶領域を含む領域とする設定を行う。本実施の形態では、制御部68は、出力画像データのサイズが入力画像データのサイズ以下の場合、出力画像データの記憶領域をインプレース処理が可能な入力画像データが記憶された領域と同じ領域にする設定を行う。
 また、制御部68は、出力画像データのサイズが入力画像データのサイズより大きい場合、以下に示す設定を行う。この場合、制御部68は、入力画像データが記憶された記憶領域に対して、出力画像データのサイズと入力画像データのサイズとの差分の容量を増加させた領域を出力画像データの記憶領域とする設定を行う。なお、この場合、制御部68は、入力画像データが記憶された記憶領域に対して、出力画像データのサイズと入力画像データのサイズとの差分にマージンを加味したサイズを増加させた領域を出力画像データの記憶領域とする設定を行ってもよい。
 また、制御部68は、以上の記憶領域の設定が行われた画像処理DAG50Aによって、画像処理を実行する制御を行う。すなわち、制御部68は、まず、画像処理DAG50Aの最初の段の画像処理モジュール38による画像処理を実行する制御を行う。その後、制御部68は、前段に連結された画像処理モジュール38による画像処理が終了して、実行可能となった画像処理モジュール38による画像処理を順次実行する制御を行う。なお、本実施の形態に係る制御部68は、各画像処理を第2演算部12Bにより実行する制御を行う。
 図6を参照して、一例として、第2演算部12Bにより、RGB色空間の画像をYCbCr色空間の画像へ変換する画像処理を行ってから、画素を間引くことにより画像を縮小する単純間引き縮小処理を行う場合について説明する。なお、図6では、RGB色空間の画像をYCbCr色空間の画像へ変換する画像処理を行う画像処理モジュール38と単純間引き縮小処理を行う画像処理モジュール38とを区別するために、符号の末尾にアルファベットを付している。また、図6では、錯綜を回避するために、バッファモジュール40に代えて、各画像処理モジュール38の入出力先の記憶領域であるローカルメモリ13を図示している。
 図6に示すように、画像処理モジュール38Cで実行される画像処理はインプレース処理が可能であるため、画像処理モジュール38Cの出力先の記憶領域13Eとして、画像処理モジュール38Cの入力画像データが記憶された記憶領域13Dが設定される。また、画像処理モジュール38Dで実行される画像処理もインプレース処理が可能であるため、画像処理モジュール38Dの出力先の記憶領域13Fとして、画像処理モジュール38Dの入力画像データが記憶された記憶領域13Eが設定される。
 この記憶領域13Eは、前述したように記憶領域13Dに設定されている結果、画像処理モジュール38Dが画像処理を行った結果得られる出力画像データは記憶領域13Dに記憶される。従って、この場合、インプレース処理を行わない場合に比較して、ローカルメモリ13の使用量が半分以下に低減される。
 次に、図7を参照して、一例として、第2演算部12Bにより、RGB色空間の画像をYCbCr色空間の画像へ変換する画像処理を行ってから、線形補間を行うことにより画像を拡大する線形補間拡大処理を行う場合について説明する。なお、図7では、RGB色空間の画像をYCbCr色空間の画像へ変換する画像処理を行う画像処理モジュール38と線形補間拡大処理を行う画像処理モジュール38とを区別するために、符号の末尾にアルファベットを付している。また、図7では、錯綜を回避するために、バッファモジュール40に代えて、各画像処理モジュール38の入出力先の記憶領域であるローカルメモリ13を図示している。
 図7に示すように、画像処理モジュール38Cで実行される画像処理はインプレース処理が可能であるため、画像処理モジュール38Cの出力先の記憶領域13Hとして、画像処理モジュール38Cの入力画像データが記憶された記憶領域13Gが設定される。また、画像処理モジュール38Eで実行される画像処理はインプレース処理が不可能であるため、画像処理モジュール38Eの出力先の記憶領域13Iは、オペレーティングシステム30により新たに確保された記憶領域が設定される。従って、この場合、インプレース処理を行わない場合に比較して、ローカルメモリ13の使用量が、出力画像データの1つ分が低減される。
 また、制御部68は、受付部60により画像処理DAG50Aの最終段のオブジェクトにより実行された画像処理の処理結果が異常であることが受け付けられた場合、次に示す処理を行う。この場合、制御部68は、判定部66によりインプレース処理が可能であると判定された少なくとも1つの画像処理について、出力画像データの記憶領域を入力画像データの記憶領域とは異なる領域とする設定を行う。さらに、この場合、制御部68は、記憶領域の再設定を行った画像処理DAG50Aによって、画像処理を再度実行する制御を行う。
 本実施の形態に係る出力部70は、画像処理DAG50Aの最終段の画像処理モジュール38により実行された画像処理の結果得られた出力画像データを出力する。本実施の形態では、出力部70は、得られた出力画像データを表示部16に表示する。なお、出力部70は、出力画像データを外部装置に出力(送信)してもよい。また、コンピュータ10がプリンタに組み込まれている場合は、出力部70は、出力画像データにより示される出力画像を紙等の記録材料に出力(形成)してもよい。
 次に、図8を参照して、本実施の形態に係るコンピュータ10の作用を説明する。なお、図8は、アプリケーション32により画像処理の実行開始の指示が入力された場合に第1演算部12Aによって実行される画像処理プログラムの処理の流れを示すフローチャートである。また、画像処理プログラムは記憶部20に予めインストールされている。また、第1演算部12Aが画像処理プログラムを実行することにより、第1演算部12Aが前述した処理構築部42、受付部60、判定部66、制御部68、及び出力部70として機能する。
 図8のステップ100で、処理構築部42は、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理DAG50Aを構築する。次のステップ102で、判定部66は、特徴情報記憶部62から特徴情報64を読み出す。次のステップ104からステップ108までの処理は、ステップ100の処理で構築された画像処理DAG50Aの全ての画像処理モジュール38のうちの1つを選択的に処理対象(以下、「処理対象モジュール38」という。)として、繰り返し実行される。なお、ステップ104からステップ108までの処理を繰り返し実行する場合は、それまでに処理対象としなかった画像処理モジュール38を処理対象とする。
 ステップ104で、判定部66は、特徴情報64に基づいて、処理対象モジュール38により実行される画像処理の処理内容が、インプレース処理が「必須」又は「可能」であるか否かを判定する。判定部66は、この判定が否定判定となった場合はインプレース処理が「不可能」であると見なしてステップ108に移行する一方、肯定判定となった場合はステップ106に移行する。
 ステップ106で、制御部68は、前述したように、処理対象モジュール38により実行される画像処理について、画像処理の出力画像データの記憶領域を入力画像データが記憶された記憶領域を含む領域とする設定を行った後、ステップ110に移行する。一方、ステップ108で、制御部68は、処理対象モジュール38により実行される画像処理について、画像処理の出力画像データの記憶領域を入力画像データの記憶領域とは異なる領域とする設定を行った後、ステップ110に移行する。
 ステップ110で、制御部68は、ステップ100で構築された画像処理DAG50Aの全ての画像処理モジュール38について、上記ステップ104からステップ108までの処理が完了したか否かを判定する。制御部68は、この判定が否定判定となった場合はステップ104に戻る一方、肯定判定となった場合はステップ112に移行する。
 ステップ112で、制御部68は、以上の処理を経た画像処理DAG50Aによる画像処理を第2演算部12Bにより実行する制御を行う。第2演算部12Bは、第1演算部12Aから転送された入力画像データをローカルメモリ13に記憶し、画像処理DAG50Aに従って画像処理を実行する。第2演算部12Bは、画像処理DAG50Aによる画像処理が終了すると、最終的に得られた(すなわち画像処理DAG50Aの最終段の画像処理モジュール38から出力された)出力画像データをローカルメモリ13から第1演算部12Aに転送する。
 そこで、ステップ114で、制御部68は、出力画像データの受信待ちを行う。制御部68が出力画像データを受信するとステップ114が肯定判定となり、処理がステップ116に移行する。ステップ116で、出力部70は、ステップ114で受信された出力画像データを表示部16に出力する。
 ユーザは、表示部16に表示された出力画像データにより示される出力画像を確認し、出力画像が異常な画像である場合は、操作部18を介して画像処理の再実行の指示を入力する。
 そこで、ステップ118で、受付部60は、画像処理の再実行の指示が受け付けられたか否かを判定する。受付部60は、この判定が肯定判定となった場合はステップ120に移行する。
 ステップ120で、制御部68は、ステップ104でインプレース処理が可能と判定された少なくとも1つの画像処理について、上記ステップ108と同様に、次に示す処理を行う。制御部68は、画像処理の出力画像データの記憶領域を入力画像データの記憶領域とは異なる領域とする設定を行った後、ステップ112に戻る。なお、本ステップ120で記憶領域の再設定を行う対象とする画像処理モジュール38の個数は特に限定されず、1つでもよいし、2つでもよいし、ステップ104でインプレース処理が可能と判定された画像処理モジュール38の全てでもよい。
 一方、受付部60は、所定期間を経過しても画像処理の再実行の指示が受け付けられなかった場合、ステップ118の判定が否定判定となり、本画像処理を終了する。
 以上説明したように、本実施の形態によれば、画像処理の処理内容によって、画像処理が、インプレース処理が可能か否かを判定している。そして、インプレース処理が可能と判定した画像処理について、画像処理の出力画像データの記憶領域を上書き可能な入力画像データが記憶された記憶領域を含む領域とする設定を行っている。これにより、インプレース処理が可能であるか否かをユーザに判断させる場合に比較して、ユーザの負担を軽減して、画像処理の記憶領域の使用量を低減することができる。
 また、本実施の形態によれば、画像処理の処理結果が異常であることが受け付けられた場合に、インプレース処理が可能な少なくとも1つの画像処理について、出力画像データの記憶領域を入力画像データの記憶領域とは異なる領域とする設定を行っている。この結果、インプレース処理に起因して画像処理の処理結果が異常であった場合、ユーザは再実行の指示を行うだけで、画像処理が再実行される。これにより、ユーザの負担を、より軽減することができる。
 また、本実施の形態によれば、判定部66による判定が実行されるプロセッサ(第1演算部12A)とは異なるプロセッサ(第2演算部12B)で画像処理を実行している。これにより、判定部66による判定が実行されるプロセッサと同じプロセッサで画像処理を実行する場合に比較して、高速に画像処理を実行することができる。
 また、本実施の形態によれば、GPU(第2演算部12B)により画像処理を実行している。一般に、GPUのローカルメモリ13の容量はメモリ14の容量に比較して小さいため、画像処理をアウトプレース処理によりGPUで実行すると、記憶領域の確保に失敗する可能性が比較的高い。これに対し、本実施の形態によれば、画像処理の記憶領域の使用量を低減することができるため、記憶領域の確保に失敗する可能性を低減することができる。
 [第2の実施の形態]
 本第2の実施の形態では、入力画像データを分割する点が第1の実施の形態とは異なっている。なお、上記第1の実施の形態と同一の機能を有する構成要素については、同一の符号を付して、その説明を省略する。
 まず、図1を参照して、本実施の形態に係るコンピュータ10の構成を説明する。図1に示すように、本実施の形態に係る画像処理プログラム群34は、処理制御部46Bのプログラムを含む。
 また、本実施の形態に係る第2演算部12Bは、ローカルメモリ13を有し、複数(本実施の形態では4つ)のプロセッサ・コアを有する。また、第2演算部12Bは、各プロセッサ・コアに1対1で対応して設けられ、プロセッサ・コアがキャッシュメモリとして使用する複数(本実施の形態では4つ)のL1(Level1)キャッシュを有する。また、第2演算部12Bは、各プロセッサ・コアが共有するキャッシュメモリとして使用し、かつ1つのL1キャッシュより容量が大きい1つのL2(Level2)キャッシュを有する。
 すなわち、本実施の形態では、L2キャッシュが第2演算部のプロセッサから最も遠いレベルのキャッシュメモリ、所謂LLC(Last Level Cache)である。なお、キャッシュメモリのレベル数は2つに限定されず、3つ以上でもよい。
 また、本実施の形態に係る第1演算部12Aも第2演算部12Bと同様に、複数のプロセッサ・コア、L1キャッシュ、及びL2キャッシュを有する。
 また、本実施の形態に係る個々の画像処理モジュール38は、第1演算部12A及び第2演算部12Bの何れの演算部で画像処理が実行されるかが設定可能とされている。なお、本実施の形態では、画像処理モジュール38の処理内容によって第1演算部12A及び第2演算部12Bの何れの演算部で画像処理が実行されるかが個々の画像処理モジュール38に予め設定されている場合について説明するが、これに限定されない。例えば、ユーザにより、画像処理モジュール38毎に第1演算部12A及び第2演算部12Bの何れの演算部で画像処理が実行されるかが設定されてもよい。
 次に、図9を参照して、本実施の形態に係る処理制御部46Bの構成を説明する。図9に示すように、処理制御部46Bは、分割部72を備えている。
 本実施の形態に係る分割部72は、入力画像データの処理対象とする部分により示される画像を複数の分割画像に分割する。一例として図10に示すように、分割部72は、入力画像データの処理対象とする部分により示される画像Gを、複数(図10に示す例では3つ)の分割画像B1~B3に分割する。なお、以下では分割画像を示す画像データを「分割画像データ」という。また、入力画像データの処理対象とする部分とは、色変換処理のように入力画像全体を処理対象とする画像処理では、入力画像データ全体が処理対象とする部分を意味する。また、入力画像データの処理対象とする部分とは、切り抜き(トリミング)処理のように、入力画像の一部を対象とする画像処理では、画像処理の処理対象とする部分を意味する。以下では、錯綜を回避するために、入力画像データの処理対象とする部分を、単に「入力画像データ」という。
 また、図10に示した例では、分割部72が画像Gを上下に分割しているが、これに限定されない。例えば分割部72は画像Gを左右に分割してもよいし、上下左右に分割してもよい。
 分割部72は、画像処理が第2演算部12Bで実行される場合、入力画像データを、第2演算部12BのLLC(L2キャッシュ)の容量に応じたサイズで複数の分割画像データに分割する。本実施の形態では、分割部72は、入力画像データを、第2演算部12BのLLCの容量以下で、かつLLCの容量に極力一致するサイズで複数の同サイズの分割画像データに分割する。すなわち、例えば、入力画像データのサイズが6MBで、第2演算部12BのLLCの容量が2MBの場合、各分割画像データのサイズは2MBとなる。また、入力画像データのサイズが4.5MBで、第2演算部12BのLLCの容量が2MBの場合、各分割画像データのサイズは1.5MBとなる。
 一方、分割部72は、画像処理が第1演算部12Aで実行される場合、入力画像データを、第1演算部12AのLLC以外のキャッシュメモリ(本実施形態では、L1キャッシュ)の容量に応じたサイズで複数の分割画像データに分割する。本実施の形態では、分割部72は、入力画像データを、第1演算部12AのL1キャッシュの容量以下で、かつL1キャッシュの容量に極力一致するサイズで複数の同サイズの分割画像データに分割する。なお、第1演算部12Aが3つ以上のレベルのキャッシュメモリを有する場合は、分割部72は、LLC以外の予め定められた1つのキャッシュメモリ(例えばL2キャッシュ)の容量に応じたサイズで入力画像データを分割すればよい。
 また、一例として図11に示すように、分割部72は、画像処理DAG50Aに対し、各画像処理モジュール38で実行される画像処理を、分割画像データの各々に対応する部分処理39(タスク)に分割して画像処理DAG50Bを構築する。なお、図11では、錯綜を回避するために、バッファモジュール40の図示を省略している。また、分割部72は、画像処理モジュール38で実行される画像処理の種類に応じて、前段に連結された画像処理モジュール38の部分処理39と、後段に連結された画像処理モジュール38の部分処理39との間で依存関係を付与する。なお、図11では、この依存関係を破線の矢印で示している。
 例えば、色変換処理のように、処理対象とする画素のみに対して画像処理を行う処理は、各部分処理39も1対1の依存関係となる。一方、例えば、フィルタ処理のように、処理対象とする画素の周辺画素も必要な画像処理では、周辺画素に対して画像処理を行う前段の部分処理39にも依存関係を付与することとなる。各部分処理39は、前段に依存関係のある部分処理39が存在しないか、依存関係のある全ての部分処理39が終了した場合に実行可能となる。
 次に、図12を参照して、本実施の形態に係るコンピュータ10の作用を説明する。なお、図12は、アプリケーション32により画像処理の実行開始の指示が入力された場合に第1演算部12Aによって実行される画像処理プログラムの処理の流れを示すフローチャートである。また、画像処理プログラムは記憶部20に予めインストールされている。また、第1演算部12Aが画像処理プログラムを実行することにより、第1演算部12Aが前述した処理構築部42、受付部60、判定部66、制御部68、出力部70、及び分割部72として機能する。また、図12における図8と同一の処理を実行するステップについては図8と同一のステップ番号を付して、その説明を省略する。
 図12のステップ111で、分割部72は、前述したように、画像処理DAG50Aの個々の画像処理モジュール38による画像処理が、何れの演算部で実行されるかを示す情報に応じて、入力画像データを複数の分割画像データに分割する。そして、分割部72は、以上の処理を経た画像処理DAG50Aに対して、前述したように、個々の画像処理モジュール38で実行される画像処理を個々の部分処理39に分割し、直接連結された画像処理モジュール38の部分処理39間で依存関係を付与する。すなわち、本ステップ111で、分割部72は、画像処理DAG50Bを構築する。
 次のステップ113で、制御部68は、ステップ111で構築された画像処理DAG50Bに従って、画像処理を実行する制御を行う。すなわち、制御部68は、画像処理DAG50Bにおける第1演算部12Aで実行される設定がされている画像処理モジュール38の部分処理は、第1演算部12Aの各プロセッサ・コアで実行する制御を行う。また、制御部68は、画像処理DAG50Bにおける第2演算部12Bで実行される設定がされている画像処理モジュール38の部分処理は、第2演算部12Bの各プロセッサ・コアで実行する制御を行う。制御部68は、これらの制御を、画像処理DAG50Bに従って、実行可能となった部分処理39について順次行う。
 なお、画像処理DAG50Bの最終段の画像処理モジュール38の全てが第1演算部12Aで実行される設定がされている場合は、ステップ114の処理は不要となる。
 以上説明したように、本実施の形態によれば、上記第1の実施の形態と同様の効果を奏することができる。
 また、本実施の形態によれば、第2演算部12A(GPU)により実行される画像処理モジュール38の入力画像データを、第2演算部12AのLLCの容量に応じたサイズで複数の分割画像データに分割する。第2演算部12Aにより画像処理を実行する場合、分割画像データの数が多すぎると、第1演算部12A(CPU)と第2演算部12Bとの間でのデータ転送のオーバーヘッドが比較的大きくなる。従って、本実施の形態では、入力画像データをL1キャッシュのサイズで分割する場合に比較して、オーバーヘッドを低減させることができる。また、画像処理を並列化したうえで、LLCのヒット率が向上する。従って、本実施の形態によれば、より高速に画像処理を実行することができる。
 また、本実施の形態によれば、第1演算部12A(CPU)により実行される画像処理モジュール38の入力画像データを、第1演算部12AのL1キャッシュの容量に応じたサイズで複数の分割画像データに分割する。これにより、画像処理を並列化したうえで、LLCより高速なL1キャッシュのヒット率が向上するため、より高速に画像処理を実行することができる。
 なお、上記各実施の形態において、分割部72は、予め定められた数又はサイズで入力画像データを分割してもよい。
 また、上記各実施の形態では、各種プログラムが記憶部20に予め記憶(インストール)されている態様を説明したが、これに限定されない。各種プログラムは、CD-ROM、DVD-ROM(Digital Versatile Disk Read Only Memory)、USB(Universal Serial Bus)メモリ等の記録媒体に記録された形態で提供されてもよい。また、各種プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
 2016年3月24日出願の日本国特許出願2016-060522号の開示は、その全体が参照により本明細書に取り込まれる。
 本明細書に記載された全ての文献、特許出願、及び技術規格は、個々の文献、特許出願、及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
10 コンピュータ
12A 第1演算部
12B 第2演算部
13 ローカルメモリ
13A~13I 記憶領域
14 メモリ
16 表示部
18 操作部
20 記憶部
22 画像データ供給部
24 画像出力部
26 バス
30 オペレーティングシステム
32 アプリケーションプログラム群
34 画像処理プログラム群
36 モジュールライブラリ
38、38A~38E 画像処理モジュール
39 部分処理
40 バッファモジュール
42 処理構築部
46A、46B 処理制御部
50A、50B 画像処理DAG
60 受付部
62 特徴情報記憶部
64 特徴情報
66 判定部
68 制御部
70 出力部
72 分割部
B1~B3 分割画像
G 画像

Claims (10)

  1.  記憶領域に記憶された入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトが複数連結されたオブジェクト群により画像処理を実行する画像処理装置であって、
     前記入力画像データを前記出力画像データで上書き可能か否かを前記画像処理の各々の処理内容によって判定する判定部と、
     前記判定部により上書き可能と判定された画像処理について、該画像処理の出力画像データの記憶領域を上書き可能な入力画像データが記憶された記憶領域を含む領域とする設定、及び前記オブジェクト群による画像処理を実行する制御を行う制御部と、
     を備えた画像処理装置。
  2.  前記制御部は、出力画像データのサイズが前記上書き可能な入力画像データのサイズより大きい場合、前記出力画像データの記憶領域として、前記上書き可能な入力画像データが記憶された記憶領域に対して、出力画像データのサイズと前記上書き可能な入力画像データのサイズとの差分以上の所定範囲内の容量を増加させた領域を設定する
     請求項1記載の画像処理装置。
  3.  前記オブジェクト群の最終段のオブジェクトにより実行された画像処理の処理結果の出力画像データを出力する出力部と、
     ユーザからの入力を受け付ける受付部と、
     をさらに備え、
     前記制御部は、前記受付部に前記処理結果が異常であることが受け付けられた場合、前記判定部により上書き可能と判定された少なくとも1つの画像処理について、前記出力画像データの記憶領域を前記入力画像データの記憶領域とは異なる領域とする設定、及び前記オブジェクト群による画像処理を再度実行する制御を行う
     請求項1又は請求項2記載の画像処理装置。
  4.  前記制御部は、前記判定部による判定が実行されるプロセッサとは異なるプロセッサにより前記画像処理を実行する制御を行う
     請求項1から請求項3の何れか1項記載の画像処理装置。
  5.  前記制御部は、ローカルメモリを有するグラフィックス・プロセッシング・ユニットにより前記画像処理を実行する制御を行う
     請求項4記載の画像処理装置。
  6.  前記入力画像データの処理対象とする部分を複数の分割画像データに分割する分割部をさらに備え、
     前記制御部は、前記分割画像データ毎に前記オブジェクト群による画像処理を実行する制御を行う
     請求項1から請求項5の何れか1項記載の画像処理装置。
  7.  前記分割部は、キャッシュメモリ及びローカルメモリを有するグラフィックス・プロセッシング・ユニットにより前記画像処理が実行される場合、前記入力画像データを前記グラフィックス・プロセッシング・ユニットのラスト・レベル・キャッシュの容量に応じたサイズで分割する
     請求項6記載の画像処理装置。
  8.  前記分割部は、キャッシュメモリを有するセントラル・プロセッシング・ユニットにより前記画像処理が実行される場合、前記入力画像データを前記セントラル・プロセッシング・ユニットのラスト・レベル・キャッシュ以外の予め定められたキャッシュメモリの容量に応じたサイズで分割する
     請求項6又は請求項7記載の画像処理装置。
  9.  記憶領域に記憶された入力画像データに対して画像処理を実行して出力画像データを出力するオブジェクトが複数連結されたオブジェクト群により画像処理を実行する画像処理装置による画像処理方法であって、
     前記入力画像データを前記出力画像データで上書き可能か否かを前記画像処理の各々の処理内容によって判定し、
     上書き可能と判定した画像処理について、該画像処理の出力画像データの記憶領域を上書き可能な入力画像データが記憶された記憶領域を含む領域とする設定、及び前記オブジェクト群による画像処理を実行する制御を行う
     画像処理方法。
  10.  コンピュータを、請求項1から請求項8の何れか1項記載の画像処理装置の判定部、及び制御部として機能させるための画像処理プログラム。
PCT/JP2017/002572 2016-03-24 2017-01-25 画像処理装置、画像処理方法、及び画像処理プログラム WO2017163590A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201780019439.0A CN108885777B (zh) 2016-03-24 2017-01-25 图像处理装置、图像处理方法及存储介质
JP2018507078A JP6600077B2 (ja) 2016-03-24 2017-01-25 画像処理装置、画像処理方法、及び画像処理プログラム
US16/134,972 US10783604B2 (en) 2016-03-24 2018-09-19 Image processing apparatus, image processing method, and image processing program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-060522 2016-03-24
JP2016060522 2016-03-24

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/134,972 Continuation US10783604B2 (en) 2016-03-24 2018-09-19 Image processing apparatus, image processing method, and image processing program

Publications (1)

Publication Number Publication Date
WO2017163590A1 true WO2017163590A1 (ja) 2017-09-28

Family

ID=59901091

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/002572 WO2017163590A1 (ja) 2016-03-24 2017-01-25 画像処理装置、画像処理方法、及び画像処理プログラム

Country Status (4)

Country Link
US (1) US10783604B2 (ja)
JP (1) JP6600077B2 (ja)
CN (1) CN108885777B (ja)
WO (1) WO2017163590A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109686434B (zh) * 2018-12-29 2020-03-31 青岛大学附属医院 临床治疗辅助机构

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000232587A (ja) * 1999-02-12 2000-08-22 Fuji Xerox Co Ltd 画像処理装置および画像処理方法
JP2004311019A (ja) * 2004-06-18 2004-11-04 Matsushita Electric Ind Co Ltd 記録再生装置
JP2006287485A (ja) * 2005-03-31 2006-10-19 Ricoh Co Ltd 画像処理装置、画像処理方法、プログラム及び情報記録媒体
JP2007524156A (ja) * 2003-12-22 2007-08-23 ザ マスワークス, インク グラフィカルプログラミング環境における入力データのブロック処理
JP4725683B2 (ja) * 2010-07-21 2011-07-13 セイコーエプソン株式会社 画像データ管理装置および画像データ管理プログラム
JP2012003619A (ja) * 2010-06-18 2012-01-05 Sony Corp 情報処理装置、情報処理装置の制御方法、およびプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU739533B2 (en) * 1997-04-30 2001-10-18 Canon Kabushiki Kaisha Graphics processor architecture
JP4120724B2 (ja) 1998-08-18 2008-07-16 セイコーエプソン株式会社 画像データ管理装置、画像データ管理方法および画像データ管理プログラムを記録した媒体
JP2005173926A (ja) * 2003-12-10 2005-06-30 Canon Inc 画像処理装置、方法、プログラム及び記憶媒体
US7528837B2 (en) * 2005-02-23 2009-05-05 Panasonic Corporation Drawing apparatus, drawing method, drawing program and drawing integrated circuit
JP4694270B2 (ja) * 2005-06-03 2011-06-08 富士ゼロックス株式会社 画像処理装置、方法及びプログラム
JP4378413B2 (ja) * 2007-05-01 2009-12-09 シャープ株式会社 画像処理装置、画像形成装置、画像読取装置、画像処理システム、画像処理方法、画像処理プログラムおよびその記録媒体
EP2124190B1 (en) 2008-05-19 2011-08-31 Mitsubishi Electric Information Technology Centre Europe B.V. Image processing to enhance image sharpness
US8797336B2 (en) * 2009-06-30 2014-08-05 Apple Inc. Multi-platform image processing framework
US8400458B2 (en) * 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU
CN104067309A (zh) 2011-12-28 2014-09-24 英特尔公司 流水线化的图像处理序列发生器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000232587A (ja) * 1999-02-12 2000-08-22 Fuji Xerox Co Ltd 画像処理装置および画像処理方法
JP2007524156A (ja) * 2003-12-22 2007-08-23 ザ マスワークス, インク グラフィカルプログラミング環境における入力データのブロック処理
JP2004311019A (ja) * 2004-06-18 2004-11-04 Matsushita Electric Ind Co Ltd 記録再生装置
JP2006287485A (ja) * 2005-03-31 2006-10-19 Ricoh Co Ltd 画像処理装置、画像処理方法、プログラム及び情報記録媒体
JP2012003619A (ja) * 2010-06-18 2012-01-05 Sony Corp 情報処理装置、情報処理装置の制御方法、およびプログラム
JP4725683B2 (ja) * 2010-07-21 2011-07-13 セイコーエプソン株式会社 画像データ管理装置および画像データ管理プログラム

Also Published As

Publication number Publication date
CN108885777A (zh) 2018-11-23
US20190019271A1 (en) 2019-01-17
CN108885777B (zh) 2022-10-25
JP6600077B2 (ja) 2019-10-30
JPWO2017163590A1 (ja) 2019-02-14
US10783604B2 (en) 2020-09-22

Similar Documents

Publication Publication Date Title
JP6632709B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
US11257178B2 (en) Image processing device, image processing method, and storage medium
US10949942B2 (en) Image processing apparatus, image processing method, and image processing program
US10878526B2 (en) Image processing apparatus, image processing method, and image processing program
JP6648257B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
US11315212B2 (en) Image processing apparatus, image processing method, and computer readable medium for executing partial processes on image-section data items
US11341599B2 (en) Image processing apparatus, image processing method, and computer readable medium storing image processing program
JP6600077B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
JP7039424B2 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
JP5560785B2 (ja) 情報処理装置、画像形成装置及び情報処理方法
CN111937029B (zh) 图像处理装置、图像处理方法、图像处理程序和存储介质
JP2012019478A (ja) 画像処理装置、画像形成装置、画像処理方法及び画像処理プログラム

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2018507078

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17769637

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 17769637

Country of ref document: EP

Kind code of ref document: A1