Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5046801B2 - Image processing apparatus and program - Google Patents
[go: Go Back, main page]

JP5046801B2 - Image processing apparatus and program - Google Patents

Image processing apparatus and program Download PDF

Info

Publication number
JP5046801B2
JP5046801B2 JP2007221119A JP2007221119A JP5046801B2 JP 5046801 B2 JP5046801 B2 JP 5046801B2 JP 2007221119 A JP2007221119 A JP 2007221119A JP 2007221119 A JP2007221119 A JP 2007221119A JP 5046801 B2 JP5046801 B2 JP 5046801B2
Authority
JP
Japan
Prior art keywords
image processing
unit
module
computer
image
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2007221119A
Other languages
Japanese (ja)
Other versions
JP2009054003A (en
Inventor
貴 五十嵐
裕介 杉本
隆 長尾
洋一 井坂
幸夫 熊澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Corp
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Corp
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Corp, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2007221119A priority Critical patent/JP5046801B2/en
Publication of JP2009054003A publication Critical patent/JP2009054003A/en
Application granted granted Critical
Publication of JP5046801B2 publication Critical patent/JP5046801B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Processing (AREA)
  • Facsimiles In General (AREA)

Description

本発明は画像処理装置及びプログラムに係り、特に、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されるように、個々のモジュールをパイプライン形態又は有向非循環グラフ形態で連結して成る画像処理部を構築して画像処理を行う画像処理装置、及び、コンピュータを前記画像処理装置として機能させるための画像処理プログラムに関する。   The present invention relates to an image processing apparatus and a program, and in particular, individual modules are connected in a pipeline form or a directed acyclic graph form so that a buffer module is connected to at least one of the front and rear stages of the image processing module. And an image processing program for causing a computer to function as the image processing apparatus.

入力された画像データに対して画像処理を行う画像処理装置や、画像を取扱可能なDTP(デスクトップ・パブリッシング)システム、入力された画像データが表す画像を記録材料に記録するプリントシステム等では、入力された画像データに対して拡大・縮小、回転、アフィン変換、色変換、フィルタ処理、画像合成等の各種の画像処理が行われる。これらの装置やシステムにおいて、例えば色空間や1画素当たりのビット数が異なる様々な画像データが入力されたり、画像処理の内容や手順・パラメータ等が様々に変更される場合には、実行する画像処理を柔軟に変更可能な構成が必要となる。このような要求を満たすために、特許文献1には、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されるように、個々のモジュールをパイプライン形態又はDAG(Directed Acyclic Graph:有向非循環グラフ)形態で連結して成る画像処理部を構築して画像処理を行う技術が提案されている。   In an image processing device that performs image processing on input image data, a DTP (desktop publishing) system that can handle images, a print system that records an image represented by input image data on a recording material, etc. Various types of image processing such as enlargement / reduction, rotation, affine transformation, color conversion, filter processing, and image synthesis are performed on the image data. In these apparatuses and systems, for example, when various image data having different color spaces and the number of bits per pixel are input, or when image processing contents, procedures, parameters, and the like are variously changed, an image to be executed A configuration that can change processing flexibly is required. In order to satisfy such a requirement, Patent Document 1 discloses that each module is connected in a pipeline form or a DAG (Directed Acyclic Graph: Existence) so that a buffer module is connected to at least one of the front and rear stages of the image processing module. There has been proposed a technique for constructing an image processing unit connected in the form of a non-circular graph) and performing image processing.

また、上記に関連して特許文献2には、複数の情報処理装置同士が処理データを分担して処理するシステムにおいて、処理に参加する情報処理装置同士の接続状態を変えずに連続して行う処理全体(一連処理)内において、 処理を行った各回において、各情報処理装置が分担した割合である分担率と、各情報処理装置がその分担分の処理を終えるのにかかった時間である分担時間とを記憶しておき、上記の分担時間を読み出して比較することで、前回の処理で、自分の分担する処理を終えるのに他の情報処理装置より時間がかかった情報処理装置Aを特定し、次回の処理では、処理データのうちで情報処理装置Aの分担率を、前回の値よりも小さい値に設定する技術が開示されている。
特開2006−338498号公報 特開2006−4382号公報
Further, in relation to the above, in Patent Document 2, in a system in which a plurality of information processing apparatuses share processing data and perform processing, it is continuously performed without changing the connection state of information processing apparatuses participating in the processing. In the entire process (a series of processes), each time a process is performed, the sharing rate, which is the ratio of each information processing device, and the time taken for each information processing device to finish the processing By storing the time and reading and comparing the above allotted times, it is possible to identify the information processing device A that took more time than the other information processing devices in the previous processing to finish the processing shared by itself In the next process, a technique is disclosed in which the sharing ratio of the information processing apparatus A is set to a value smaller than the previous value in the processing data.
JP 2006-338498 A JP 2006-4382 A

特許文献1に記載の技術により画像処理部を構築して画像処理を行う場合、実現すべき画像処理の内容や入力される画像データのサイズによっては、画像処理を行うコンピュータに多大な処理負荷が掛り、当該コンピュータの能力等によっては処理時間が大幅に増大することがある。これに対して近年、通信回線を介して複数台のコンピュータを接続しコンピュータ・ネットワークを構築することが一般的となってきていることを考慮すると、上記のように処理時間が大幅に増大することが見込まれる等の場合には、特許文献2に記載の技術のように、画像処理を複数のコンピュータに分担させ、個々のコンピュータで並列に画像処理を行わせることが考えられる。   When image processing is performed by constructing an image processing unit using the technique described in Patent Document 1, depending on the contents of image processing to be realized and the size of input image data, a large processing load is imposed on the computer that performs image processing. Therefore, depending on the ability of the computer, the processing time may increase significantly. On the other hand, considering that it has become common in recent years to construct a computer network by connecting multiple computers via a communication line, the processing time increases significantly as described above. In such a case, it is conceivable that image processing is shared by a plurality of computers and the image processing is performed in parallel by each computer, as in the technique described in Patent Document 2.

しかし、特許文献1に記載の技術のように、画像処理モジュール及びバッファモジュールを連結して成る画像処理部を構築して画像処理を行う場合、画像処理の実行時には、画像処理部の各モジュールの間や、画像処理部の動作を管理する処理管理部と各モジュールの間で頻繁に情報が送受される。モジュール間や処理管理部とモジュールの間の情報の送受は、画像処理部を単一のコンピュータ上で動作させる場合(画像処理部のプログラムを単一のコンピュータで実行させる場合)には、メモリ等を利用することでごく簡単な処理(例えば、情報の送信側がメモリの所定領域に情報を書き込み、情報の受信側が所定領域に書き込まれている情報を参照する等の処理)で実現できるが、画像処理部を複数個に分割し、分割した各々を互いに異なるコンピュータ上で動作させる場合(分割した各々のプログラムを互いに異なるコンピュータで実行させる場合)は、通信回線を介して情報を送受する必要があるので、通信回線を介して情報を送受するための通信処理が比較的大きなオーバヘッドとして個々のコンピュータに加わると共に、コンピュータ間で頻繁に情報の送受が行われることで、コンピュータ間のトラフィックも大幅に増大する。   However, as in the technique described in Patent Document 1, when image processing is performed by constructing an image processing unit formed by connecting an image processing module and a buffer module, each module of the image processing unit is executed during image processing. Information is frequently transmitted and received between the modules and the processing management unit that manages the operation of the image processing unit. Information is exchanged between modules or between the processing management unit and the module when the image processing unit is operated on a single computer (when the program of the image processing unit is executed on a single computer). Can be realized by a very simple process (for example, a process in which the information transmitting side writes information in a predetermined area of the memory and the information receiving side refers to information written in the predetermined area). When the processing unit is divided into a plurality of parts and the divided parts are operated on different computers (when the divided programs are executed on different computers), it is necessary to send and receive information via a communication line. Therefore, communication processing for sending and receiving information via a communication line is added to each computer as a relatively large overhead, and is connected to a computer. By transmitting and receiving the frequent information between Yuta is performed, also increases drastically traffic between computers.

従って、単に画像処理部を分割し、分割した各々を互いに異なるコンピュータ上で動作させたとすると処理効率が低下し、個々のコンピュータの処理能力を有効に利用することができない、という問題が生ずることになる。   Therefore, if the image processing unit is simply divided and the divided units are operated on different computers, the processing efficiency is lowered, and the problem arises that the processing capability of each computer cannot be used effectively. Become.

本発明は上記事実を考慮して成されたもので、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現できる画像処理装置及び画像処理プログラムを得ることが目的である。   The present invention has been made in consideration of the above facts, and an object thereof is to obtain an image processing apparatus and an image processing program capable of realizing improvement in processing efficiency when image processing is shared by a plurality of computers.

上記目的を達成するために請求項1記載の発明に係る画像処理装置は、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と、前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した1つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段と、第1コンピュータ上で動作し、前記構築手段によって構築された画像処理部を前記第1コンピュータ上で動作させるための管理処理を行う第1の処理管理部と、前記画像処理部の処理負荷の予測値が第1の閾値以上の場合、又は、前記第1コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第2の閾値以下の場合に、前記構築手段によって構築された画像処理部を第1の画像処理部と第2の画像処理部に分割し、前記第1の画像処理部を前記第1コンピュータ上で動作させるための管理処理を前記第1の処理管理部によって行わせると共に、前記第1コンピュータと通信回線を介して接続された第2コンピュータ上で前記第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を前記第2コンピュータ上に生成し、前記第2コンピュータ上で前記第2の画像処理部を動作させる分割手段と、を含んで構成されている。 In order to achieve the above object, an image processing apparatus according to the first aspect of the present invention performs image processing different from each other on image data acquired from a previous stage of its own module, and the image data that has undergone the image processing or the image processing A plurality of types of image processing modules that output the processing results of the module to the subsequent stage, and the image data output from the preceding module is written to the buffer and the image data stored in the buffer is read by the subsequent module. A storage unit for storing each of the buffer module programs to be output; and a pre-stage and a post-stage of each of the one or more image processing modules selected from the plurality of types of image processing modules by the program stored in the storage unit The buffer module is connected to at least one of the A construction unit for constructing an image processing unit connected in a pipeline form or a directed acyclic graph form, and operating on the first computer, and operating the image processing unit constructed by the construction unit on the first computer When the predicted value of the processing load of the first processing management unit and the image processing unit is greater than or equal to a first threshold, or provided in the first computer and usable for the operation of the image processing unit When the number of program execution resources is less than or equal to the second threshold, the image processing unit constructed by the construction unit is divided into a first image processing unit and a second image processing unit, and the first image processing And a second computer connected to the first computer via a communication line, with the first processing management unit performing management processing for operating a part on the first computer Generating a second processing management unit for performing management processing for operating the second image processing unit on the second computer, and operating the second image processing unit on the second computer And means.

請求項1記載の発明では、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムが記憶手段に各々記憶されている。また、請求項1記載の発明に係る構築手段は、記憶手段に記憶されているプログラムにより、複数種の画像処理モジュールの中から選択した1つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方にバッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する。また、第1コンピュータ上で動作する第1の処理管理部は、構築手段によって構築された画像処理部を第1コンピュータ上で動作させるための管理処理を行う。従って、構築手段によって構築された画像処理部は通常、第1の処理管理部によって管理処理が行われることで、第1コンピュータ上で動作する(画像処理部のプログラムが第1コンピュータによって実行される)。   In the first aspect of the present invention, a plurality of image processings are performed on the image data acquired from the previous stage of the own module, and the image data subjected to the image processing or the processing result of the image processing is output to the subsequent stage of the own module. Various kinds of image processing modules and buffer module programs for causing the image data output from the preceding module to be written to the buffer and reading the image data stored in the buffer by the subsequent module are stored in the storage means. Has been. The construction means according to the first aspect of the invention provides at least a front stage and a rear stage of each of one or more image processing modules selected from a plurality of types of image processing modules by a program stored in the storage means. A buffer module is connected to one side, and an image processing unit is constructed in which each module is connected in a pipeline form or a directed acyclic graph form. The first processing management unit operating on the first computer performs management processing for operating the image processing unit constructed by the construction unit on the first computer. Therefore, the image processing unit constructed by the construction unit normally operates on the first computer by the management processing being performed by the first processing management unit (the program of the image processing unit is executed by the first computer). ).

また、請求項1記載の発明に係る分割手段は、画像処理部の処理負荷の予測値が第1の閾値以上の場合、又は、第1コンピュータに設けられ画像処理部の動作に利用可能なプログラム実行リソースの数が第2の閾値以下の場合に、構築手段によって構築された画像処理部を第1の画像処理部と第2の画像処理部に分割し、第1の画像処理部を第1コンピュータ上で動作させるための管理処理を第1の処理管理部によって行わせると共に、第1コンピュータと通信回線を介して接続された第2コンピュータ上で第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を第2コンピュータ上に生成し、第2コンピュータ上で第2の画像処理部を動作させる。このように、画像処理部の一部である第2の画像処理部を第2コンピュータ上で動作させるにあたり、第2コンピュータ上で第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を第2コンピュータ上に生成することで、第2の画像処理部の個々のモジュールの間の情報の送受、及び、第2の画像処理部の個々のモジュールと処理管理部(第2の処理管理部)との間の情報の送受が、第2コンピュータに設けられたメモリ等を用いて第2コンピュータ内で行われ、上記情報の送受のために第1コンピュータと第2コンピュータとの間で通信を行う必要が無くなるので、当該通信を行うことで個々のコンピュータに加わるオーバヘッドを削減できると共に、第1コンピュータと第2コンピュータの間のトラフィックも削減できる。従って、請求項1記載の発明によれば、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現することができる。
なお、画像処理部の処理負荷の予測値が第1の閾値以上の場合に画像処理部の分割及び第2の処理管理部の生成を行うように分割手段を構成したときには、第1コンピュータに比較的大きな処理負荷が掛ることで、処理時間が増大することが予測できる場合に、画像処理部の分割等が自動的に行われることになり、画像処理部の分割等を行うか否かを選択する手間を省くことができる。また、第1コンピュータに設けられ画像処理部の動作に利用可能なプログラム実行リソースの数が第2の閾値以下の場合に画像処理部の分割及び第2の処理管理部の生成を行うように分割手段を構成したときには、画像処理部の動作に利用可能なプログラム実行リソースの数が不足していることで、処理時間が増大することが予測できる場合に、画像処理部の分割等が自動的に行われることになり、画像処理部の分割等を行うか否かを選択する手間を省くことができる。
According to a first aspect of the present invention, there is provided a program that can be used for the operation of the image processing unit provided in the first computer when the predicted value of the processing load of the image processing unit is greater than or equal to the first threshold When the number of execution resources is less than or equal to the second threshold , the image processing unit constructed by the construction unit is divided into a first image processing unit and a second image processing unit, and the first image processing unit is divided into the first image processing unit and the first image processing unit. Management for operating on the computer is performed by the first processing management unit, and management for operating the second image processing unit on the second computer connected to the first computer via a communication line A second processing management unit that performs processing is generated on the second computer, and the second image processing unit is operated on the second computer. As described above, when the second image processing unit, which is a part of the image processing unit, is operated on the second computer, the second processing for performing the management process for operating the second image processing unit on the second computer is performed. Is generated on the second computer, information is transmitted / received between the individual modules of the second image processing unit, and the individual modules and the processing management unit (second management unit) of the second image processing unit are generated. Between the first computer and the second computer for transmission / reception of the information is performed in the second computer using a memory or the like provided in the second computer. Therefore, it is possible to reduce the overhead added to each computer and to reduce the traffic between the first computer and the second computer. . Therefore, according to the first aspect of the present invention, it is possible to improve the processing efficiency when image processing is shared by a plurality of computers.
When the dividing unit is configured to divide the image processing unit and generate the second processing management unit when the predicted value of the processing load of the image processing unit is greater than or equal to the first threshold value, it is compared with the first computer. If the processing time can be predicted to increase due to a large processing load, the image processing unit will be automatically divided and so on. This saves you time and effort. Further, when the number of program execution resources provided in the first computer and available for the operation of the image processing unit is equal to or smaller than the second threshold, the image processing unit is divided and the second processing management unit is generated. When the means is configured, when the processing time can be predicted to increase due to the lack of the number of program execution resources available for the operation of the image processing unit, the division of the image processing unit is automatically performed. As a result, it is possible to save the trouble of selecting whether or not to divide the image processing unit.

なお、請求項1記載の発明において、第1の処理管理部及び第2の処理管理手段は、管理処理として、例えば請求項2に記載したように、管理処理の対象の画像処理部を構成する個々のモジュールからの要求に応じてメモリを確保して割り当てると共に、不要となったメモリを解放するメモリ管理処理、自モジュールの前段から画像データを取得し、所定の画像処理を行って画像データ又は所定の画像処理の処理結果を自モジュールの後段へ出力する処理を、管理処理の対象の画像処理部の個々の画像処理モジュールで繰り返させるワークフロー管理処理、及び、管理処理の対象の画像処理部で発生したエラーを所定の通知方法で通知するエラー管理処理の少なくとも1つを行うように構成することができる。第1の処理管理部及び第2の処理管理手段が、管理処理として上記各処理の少なくとも1つを行うことで、第1の画像処理部を第1コンピュータ上で、第2の画像処理部を第2コンピュータ上で各々動作させることができる。   In the first aspect of the present invention, the first processing management unit and the second processing management unit constitute the management processing target image processing unit as described in the second aspect, for example. Memory is allocated and allocated in response to requests from individual modules, memory management processing for releasing unnecessary memory, image data is acquired from the previous stage of its own module, image data or In the workflow management process that repeats the process of outputting the processing result of the predetermined image processing to the subsequent stage of its own module in each image processing module of the management process target image processing unit, and the management process target image processing unit It may be configured to perform at least one of error management processing for notifying an error that has occurred using a predetermined notification method. The first process management unit and the second process management unit perform at least one of the above-described processes as the management process, so that the first image processing unit on the first computer and the second image processing unit Each can be operated on the second computer.

また、請求項1記載の発明において、第2の処理管理部を第2コンピュータ上に生成することは、例えば請求項に記載したように、第2の処理管理部のプログラムも記憶手段に記憶しておき、分割手段を、第2の処理管理部のプログラムを通信回線を介して第2コンピュータへ転送し、転送したプログラムの実行を第2コンピュータへ指示するように構成することで実現することができる。 Further, in the first aspect of the present invention, the second process management unit is generated on the second computer by storing the program of the second process management unit in the storage means as described in the third aspect , for example. In addition, the dividing means is realized by transferring the program of the second processing management unit to the second computer via the communication line and instructing the second computer to execute the transferred program. Can do.

請求項記載の発明に係る画像処理プログラムは、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と接続されると共に、第2コンピュータと通信回線を介して接続された第1コンピュータを、前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した1つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段、前記構築手段によって構築された画像処理部を前記第1コンピュータ上で動作させるための管理処理を行う第1の処理管理部、及び、前記画像処理部の処理負荷の予測値が第1の閾値以上の場合、又は、前記第1コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第2の閾値以下の場合に、前記構築手段によって構築された画像処理部を第1の画像処理部と第2の画像処理部に分割し、前記第1の画像処理部を前記第1コンピュータ上で動作させるための管理処理を前記第1の処理管理部によって行わせると共に、前記第2コンピュータ上で前記第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を前記第2コンピュータ上に生成し、前記第2コンピュータ上で前記第2の画像処理部を動作させる分割手段として機能させる。 The image processing program according to the invention of claim 4 performs different image processing on the image data acquired from the previous stage of the own module, and the image data obtained through the image processing or the processing result of the image processing is stored in the own module. A plurality of types of image processing modules to be output to the subsequent stage, and a buffer module program that causes the image data output from the previous module to be written to the buffer and the image data stored in the buffer to be read by the subsequent module. A first computer connected to each storage means and connected to a second computer via a communication line is selected from the plurality of types of image processing modules by a program stored in the storage means. Each of the one or more image processing modules Constructing means for constructing an image processing unit in which at least one of the buffer modules is connected and each module is connected in a pipelined form or a directed acyclic graph form, and the image processing part constructed by the constructing means is the first A first processing management unit that performs management processing for operating on a computer, and a predicted value of a processing load of the image processing unit equal to or greater than a first threshold; or the image provided in the first computer When the number of program execution resources available for the operation of the processing unit is equal to or smaller than the second threshold, the image processing unit constructed by the construction unit is divided into a first image processing unit and a second image processing unit. , Causing the first processing management unit to perform management processing for operating the first image processing unit on the first computer, and executing the management processing on the second computer. A second processing management unit that performs a management process for operating the second image processing unit on the second computer, and functions as a dividing unit that operates the second image processing unit on the second computer Let

請求項記載の発明に係る画像処理プログラムは、上記記憶手段と接続されると共に、第2コンピュータと通信回線を介して接続された第1コンピュータを、上記の構築手段、第1の処理管理部及び分割手段として機能させるためのプログラムであるので、上記の第1コンピュータが請求項記載の発明に係る画像処理プログラムを実行することで、上記の第1コンピュータが請求項1に記載の画像処理装置として機能することになり、請求項1記載の発明と同様に、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現することができる。 According to a fourth aspect of the present invention, there is provided an image processing program that is connected to the storage unit, and that connects the first computer connected to the second computer via a communication line, the construction unit, and the first processing management unit. Since the first computer executes the image processing program according to the fourth aspect of the invention, the first computer executes the image processing program according to the first aspect. It functions as an apparatus, and, similarly to the first aspect of the invention, it is possible to realize improvement in processing efficiency when image processing is shared by a plurality of computers.

以上説明したように本発明は、所定の条件を満たした場合に、構築手段によって構築された画像処理部を第1の画像処理部と第2の画像処理部に分割し、第1の画像処理部を第1コンピュータ上で動作させるための管理処理を第1の処理管理部によって行わせると共に、第1コンピュータと通信回線を介して接続された第2コンピュータ上で第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を第2コンピュータ上に生成し、第2コンピュータ上で第2の画像処理部を動作させるようにしたので、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現できる、という優れた効果を有する。   As described above, the present invention divides the image processing unit constructed by the construction unit into the first image processing unit and the second image processing unit when the predetermined condition is satisfied, and performs the first image processing. Management processing for operating the computer on the first computer is performed by the first processing management unit, and the second image processing unit is operated on the second computer connected to the first computer via a communication line Since the second processing management unit for performing management processing is generated on the second computer and the second image processing unit is operated on the second computer, the image processing is shared among a plurality of computers. In this case, the processing efficiency can be improved.

以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には、本発明に係る画像処理装置として機能することが可能なコンピュータ10が示されている。なお、このコンピュータ10は、複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機、スキャナ、写真プリンタ等のように内部で画像処理を行う必要のある任意の画像取扱機器に組み込まれていてもよいし、パーソナル・コンピュータ(PC)等の独立したコンピュータであってもよく、更にPDA(Personal Digital Assistant)や携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。   Hereinafter, an example of an embodiment of the present invention will be described in detail with reference to the drawings. FIG. 1 shows a computer 10 that can function as an image processing apparatus according to the present invention. The computer 10 is incorporated in any image handling apparatus that needs to perform image processing internally, such as a copying machine, a printer, a facsimile machine, a multifunction machine having these functions, a scanner, a photographic printer, or the like. Alternatively, it may be an independent computer such as a personal computer (PC), or may be a computer incorporated in a portable device such as a PDA (Personal Digital Assistant) or a cellular phone.

コンピュータ10はCPU12、DRAM又はSRAM等から成るメモリ14、表示部16、操作部18、記憶部20、画像データ供給部22及び画像出力部24を備えており、これらはバス26を介して互いに接続されている。コンピュータ10が上述したような画像取扱機器に組み込まれている場合、表示部16や操作部18としては、画像取扱機器に設けられたLCD等から成る表示パネルやテンキー等を適用することができる。また、コンピュータ10が独立したコンピュータである場合、表示部16や操作部18としては、当該コンピュータに接続されたディスプレイやキーボード、マウス等を適用することができる。また、記憶部20としてはHDD(Hard Disk Drive)が好適であるが、これに代えてフラッシュメモリ等の他の不揮発性記憶手段を用いることも可能である。   The computer 10 includes a CPU 12, a memory 14 including a DRAM or SRAM, a display unit 16, an operation unit 18, a storage unit 20, an image data supply unit 22, and an image output unit 24, which are connected to each other via a bus 26. Has been. When the computer 10 is incorporated in an image handling device as described above, a display panel, a numeric keypad, or the like composed of an LCD or the like provided in the image handling device can be applied as the display unit 16 and the operation unit 18. When the computer 10 is an independent computer, a display, a keyboard, a mouse, or the like connected to the computer can be applied as the display unit 16 or the operation unit 18. The storage unit 20 is preferably an HDD (Hard Disk Drive), but other nonvolatile storage means such as a flash memory can be used instead.

また、画像データ供給部22は処理対象の画像データを供給できるものであればよく、例えば紙や写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部、通信回線を介して外部から画像データを受信する受信部、画像データを記憶する画像記憶部(メモリ14又は記憶部20)等を適用することができる。また、画像出力部24は画像処理を経た画像データ又は該画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部、画像データが表す画像をディスプレイ等に表示する表示部、画像データを記録メディアに書き込む書込装置、画像データを通信回線を介して送信する送信部を適用することができる。また、画像出力部24は画像処理を経た画像データを単に記憶する画像記憶部(メモリ14又は記憶部20)であっても構わない。   The image data supply unit 22 only needs to be able 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. A receiving unit that receives image data from the outside via a line, an image storage unit (memory 14 or storage unit 20) that stores image data, and the like can be applied. The image output unit 24 only needs to output image data that has undergone image processing or an image represented by the image data. For example, the image recording unit records an image represented by the image data on a recording material such as paper or a photosensitive material. A display unit that displays an image represented by image data on a display, a writing device that writes image data to a recording medium, and a transmission unit that transmits image data via a communication line can be applied. The image output unit 24 may be an image storage unit (memory 14 or storage unit 20) that simply stores image data that has undergone image processing.

また、通信制御部25は通信回線を介してコンピュータ・ネットワーク26に接続されており、コンピュータ・ネットワーク26には、サーバ・コンピュータ27を含む複数台のコンピュータが各々接続されている(図1ではサーバ・コンピュータ27以外のコンピュータの図示を省略している)。通信制御部25はコンピュータ・ネットワーク26経由での他のコンピュータとの通信を司る。また、サーバ・コンピュータ27はCPU27A、メモリ27B、HDD27C及び通信制御部27Dを備えており、通信制御部27Dが通信回線を介してコンピュータ・ネットワーク26に接続されている。なお、コンピュータ10は本発明に係る第1コンピュータに、サーバ・コンピュータ27は本発明に係る第2コンピュータに各々対応している。   The communication control unit 25 is connected to a computer network 26 via a communication line, and a plurality of computers including a server computer 27 are connected to the computer network 26 (in FIG. 1, the server is a server). (The illustration of computers other than the computer 27 is omitted). The communication control unit 25 manages communication with other computers via the computer network 26. The server computer 27 includes a CPU 27A, a memory 27B, an HDD 27C, and a communication control unit 27D. The communication control unit 27D is connected to the computer network 26 via a communication line. The computer 10 corresponds to the first computer according to the present invention, and the server computer 27 corresponds to the second computer according to the present invention.

記憶部20は本発明に係る記憶手段に対応しており、この記憶部20には、図1に示すように、CPU12によって実行される各種のプログラムとして、メモリ14等のリソースの管理やCPU12によるプログラムの実行の管理、コンピュータ10と外部との通信等を司るオペレーティングシステム30のプログラム、コンピュータ10を本発明に係る画像処理装置として機能させるための画像処理プログラム群34、CPU12が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション32のプログラム(図1ではアプリケーションプログラム群32と表記)が各々記憶されている。   The storage unit 20 corresponds to the storage unit according to the present invention. As shown in FIG. 1, the storage unit 20 manages resources such as the memory 14 and the like as various programs executed by the CPU 12. Management of program execution, a program of the operating system 30 that manages communication between the computer 10 and the outside, the image processing program group 34 for causing the computer 10 to function as the image processing apparatus according to the present invention, and the CPU 12 are the image processing program group. Each of the programs of various applications 32 (denoted as application program group 32 in FIG. 1) for causing the image processing apparatus realized by executing the desired image processing is stored.

画像処理プログラム群34は、前述した各種の画像取扱機器や携帯機器を開発する際の開発負荷を軽減したり、PC等で利用可能な画像処理プログラムを開発する際の開発負荷を軽減することを目的として、各種の画像取扱機器や携帯機器、PC等の各種機器(プラットフォーム)で共通に使用可能に開発されたプログラムであり、本発明に係る画像処理プログラムに対応している。画像処理プログラム群34によって実現される画像処理装置は、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理部を構築し、アプリケーション32からの実行指示に従い、前記画像処理部によって画像処理を行うが(詳細は後述)、画像処理プログラム群34は、所望の画像処理を行う画像処理部(所望の構成の画像処理部)の構築を指示したり、構築された画像処理部による画像処理の実行を指示するためのインタフェースをアプリケーション32に提供している。このため、内部で画像処理を行う必要のある任意の機器を新規開発する等の場合にも、前記画像処理を行うプログラムの開発に関しては、当該機器で必要とされる画像処理を上記のインタフェースを利用して画像処理プログラム群34に行わせるアプリケーション32を開発するのみで済み、実際に画像処理を行うプログラムを新たに開発する必要が無くなるので、開発負荷を軽減することができる。   The image processing program group 34 reduces the development load when developing the above-described various image handling devices and portable devices, and reduces the development load when developing an image processing program usable on a PC or the like. The purpose is a program developed so that it can be commonly used in various devices (platforms) such as various image handling devices, portable devices, and PCs, and corresponds to the image processing program according to the present invention. The image processing apparatus realized by the image processing program group 34 constructs an image processing unit that performs image processing instructed by the application 32 in accordance with a construction instruction from the application 32, and executes the image processing unit in accordance with an execution instruction from the application 32. The image processing program group 34 instructs the construction of an image processing unit (an image processing unit having a desired configuration) for performing desired image processing, or the constructed image processing unit. The application 32 is provided with an interface for instructing execution of image processing according to the above. For this reason, even when newly developing an arbitrary device that needs to perform image processing internally, regarding the development of a program for performing the image processing, the above-described interface is used to perform the image processing required for the device. It is only necessary to develop the application 32 to be used and executed by the image processing program group 34, and it is not necessary to newly develop a program for actually performing image processing, so that the development load can be reduced.

また、画像処理プログラム群34によって実現される画像処理装置は、前述のように、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理部を構築し、構築した画像処理部によって画像処理を行うので、例えば画像処理対象の画像データの色空間や1画素当たりのビット数が不定であったり、実行すべき画像処理の内容や手順・パラメータ等が不定である場合にも、アプリケーション32が画像処理部の再構築を指示することで、画像処理装置(画像処理部)によって実行される画像処理を、処理対象の画像データ等に応じて柔軟に変更することができる。   Further, as described above, the image processing apparatus realized by the image processing program group 34 constructs an image processing unit that performs image processing instructed by the application 32 according to the construction instruction from the application 32, and constructs the constructed image processing unit. Therefore, for example, when the color space of the image data to be processed and the number of bits per pixel are indefinite or the contents of the image processing to be executed, the procedure / parameter, etc. are indefinite, When the application 32 instructs to reconstruct the image processing unit, the image processing executed by the image processing apparatus (image processing unit) can be flexibly changed according to the image data to be processed.

以下、画像処理プログラム群34について説明する。図1に示すように、画像処理プログラム群34はモジュールライブラリ36と、処理構築部42のプログラムと、処理管理部46のプログラムに大別される。詳細は後述するが、本実施形態に係る処理構築部42は、アプリケーションからの指示により、例として図2に示すように、予め定められた画像処理を行う1つ以上の画像処理モジュール38と、個々の画像処理モジュール38の前段及び後段の少なくとも一方に配置され画像データを記憶するためのバッファを備えたバッファモジュール40と、がパイプライン形態又はDAG(Directed Acyclic Graph:有向非循環グラフ)形態で連結されて成る画像処理部50を構築する。画像処理部50を構成する個々の画像処理モジュールの実体はCPU12によって実行されCPU12で所定の画像処理を行わせるための第1プログラム、又は、CPU12によって実行されCPU12により図1に図示されていない外部の画像処理装置(例えば専用画像処理ボード等)に対する処理の実行を指示するための第2プログラムであり、上述したモジュールライブラリ36には、予め定められた互いに異なる画像処理(例えば入力処理やフィルタ処理、色変換処理、拡大・縮小処理、スキュー角検知処理、画像回転処理、画像合成処理、出力処理等)を行う複数種の画像処理モジュール38のプログラムが各々登録されている。以下では、説明を簡単にするために、画像処理部50を構成する個々の画像処理モジュールの実体が上記の第1プログラムであるものとして説明する。   Hereinafter, the image processing program group 34 will be described. As shown in FIG. 1, the image processing program group 34 is roughly divided into a module library 36, a process construction unit 42 program, and a process management unit 46 program. As will be described in detail later, the processing construction unit 42 according to the present embodiment, according to an instruction from the application, as illustrated in FIG. 2 as an example, one or more image processing modules 38 that perform predetermined image processing, A buffer module 40 that is arranged in at least one of the preceding stage and the succeeding stage of each image processing module 38 and has a buffer for storing image data, and a pipeline form or a DAG (Directed Acyclic Graph) form An image processing unit 50 formed by linking is constructed. The entity of each image processing module constituting the image processing unit 50 is a first program executed by the CPU 12 and causing the CPU 12 to perform predetermined image processing, or an external unit not shown in FIG. 2 is a second program for instructing execution of processing to the image processing apparatus (for example, a dedicated image processing board), and the module library 36 described above stores predetermined different image processing (for example, input processing and filter processing). , Color conversion processing, enlargement / reduction processing, skew angle detection processing, image rotation processing, image composition processing, output processing, and the like) are registered. Hereinafter, in order to simplify the description, it is assumed that each image processing module constituting the image processing unit 50 is the first program.

個々の画像処理モジュール38は、例として図3(A)にも示すように、画像データに対する画像処理を所定の単位処理データ量ずつ行う画像処理エンジン38Aと、画像処理モジュール38の前段及び後段のモジュールとの画像データの入出力及び画像処理エンジン38Aの制御を行う制御部38Bから構成されている。個々の画像処理モジュール38における単位処理データ量は、画像の1ライン分、画像の複数ライン分、画像の1画素分、画像1面分等を含む任意のバイト数の中から、画像処理エンジン38Aが行う画像処理の種類等に応じて予め選択・設定されており、例えば色変換処理やフィルタ処理を行う画像処理モジュール38では単位処理データ量が1画素分とされ、拡大・縮小処理を行う画像処理モジュール38では単位処理データ量が画像の1ライン分又は画像の複数ライン分とされ、画像回転処理を行う画像処理モジュール38では単位処理データ量が画像1面分とされ、画像圧縮伸長処理を行う画像処理モジュール38では単位処理データ量が実行環境に依存するNバイトとされている。   As shown in FIG. 3A as an example, each image processing module 38 includes an image processing engine 38A that performs image processing on image data by a predetermined unit processing data amount, and a front stage and a rear stage of the image processing module 38. The control unit 38B performs input / output of image data with the module and controls the image processing engine 38A. The unit processing data amount in each image processing module 38 is the image processing engine 38A from an arbitrary number of bytes including one line of the image, a plurality of lines of the image, one pixel of the image, one surface of the image, and the like. Is selected and set in advance according to the type of image processing to be performed. For example, in the image processing module 38 that performs color conversion processing and filter processing, the unit processing data amount is one pixel, and the image to be enlarged / reduced is processed. In the processing module 38, the unit processing data amount is equivalent to one line of the image or a plurality of lines of the image, and in the image processing module 38 that performs image rotation processing, the unit processing data amount is equivalent to one image, and the image compression / decompression processing is performed. In the image processing module 38 to be performed, the unit processing data amount is set to N bytes depending on the execution environment.

また、モジュールライブラリ36には、画像処理エンジン38Aが実行する画像処理の種類が同一でかつ実行する画像処理の内容が異なる画像処理モジュール38も登録されている(図1では、この種の画像処理モジュールを「モジュール1」「モジュール2」と表記して示している)。例えば拡大・縮小処理を行う画像処理モジュール38については、入力された画像データを1画素おきに間引くことで50%に縮小する縮小処理を行う画像処理モジュール38、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール38等の複数の画像処理モジュール38が各々用意されている。また、例えば色変換処理を行う画像処理モジュール38については、RGB色空間をCMY色空間へ変換する画像処理モジュール38やその逆へ変換する画像処理モジュール38、L*a*b*色空間等の他の色空間変換を行う画像処理モジュール38が各々用意されている。   The module library 36 also registers image processing modules 38 having the same type of image processing executed by the image processing engine 38A and different contents of the image processing executed (in FIG. 1, this type of image processing is performed). Modules are indicated as “module 1” and “module 2”). For example, with respect to the image processing module 38 that performs enlargement / reduction processing, the image processing module 38 that performs reduction processing to reduce the input image data to 50% by thinning out every other pixel is designated for the input image data. A plurality of image processing modules 38 such as an image processing module 38 that performs enlargement / reduction processing at the enlarged / reduced rate are prepared. For example, the image processing module 38 that performs color conversion processing includes an image processing module 38 that converts the RGB color space to the CMY color space, an image processing module 38 that converts the color space to the opposite, and an L * a * b * color space. Image processing modules 38 for performing other color space conversions are prepared.

また、画像処理モジュール38の制御部38Bは、画像処理エンジン38Aが単位処理データ量ずつ処理するために必要な画像データを入力するために、自モジュールの前段のモジュール(例えばバッファモジュール40)から画像データを単位読出データ量ずつ取得し、画像処理エンジン38Aから出力される画像データを単位書込データ量ずつ後段のモジュール(例えばバッファモジュール40)へ出力する(画像処理エンジン38Aで圧縮等のデータ量の増減を伴う画像処理が行われなければ単位書込データ量=単位処理データ量となる)か、画像処理エンジン38Aによる画像処理の結果を自モジュールの外部へ出力する(例えば画像処理エンジン38Aがスキュー角検知処理等の画像解析処理を行う場合、画像データに代えてスキュー角検知結果等の画像解析処理結果が出力されることがある)処理を行うが、モジュールライブラリ36には、画像処理エンジン38Aが実行する画像処理の種類及び内容が同一で、上記の単位処理データ量や単位読出データ量、単位書込データ量が異なる画像処理モジュール38も登録されている。例えば画像回転処理を行う画像処理モジュール38における単位処理データ量についても、前述した画像1面分に限られるものではなく、同じ画像回転処理を行いかつ単位処理データ量が互いに異なる(例えば画像の1ライン分や複数ライン分等の)複数の画像処理モジュール38がモジュールライブラリ36に含まれていても良い。   In addition, the control unit 38B of the image processing module 38 receives an image from a module (for example, the buffer module 40) in the previous stage of its own module in order to input image data necessary for the image processing engine 38A to process each unit processing data amount. Data is acquired for each unit read data amount, and image data output from the image processing engine 38A is output for each unit write data amount to a subsequent module (for example, the buffer module 40) (data amount such as compression by the image processing engine 38A). If the image processing with the increase / decrease is not performed, the unit writing data amount = the unit processing data amount) or the result of the image processing by the image processing engine 38A is output to the outside of the module (for example, the image processing engine 38A When performing image analysis processing such as skew angle detection processing, a scan is performed instead of image data. The image analysis processing result such as the angle detection result may be output). However, the module library 36 has the same type and content of the image processing executed by the image processing engine 38A, and the unit processing described above. Image processing modules 38 having different data amounts, unit read data amounts, and unit write data amounts are also registered. For example, the unit processing data amount in the image processing module 38 that performs image rotation processing is not limited to the one image plane described above, and the same image rotation processing is performed and the unit processing data amounts are different from each other (for example, one image). A plurality of image processing modules 38 (for a line, a plurality of lines, etc.) may be included in the module library 36.

また、モジュールライブラリ36に登録されている個々の画像処理モジュール38のプログラムは、画像処理エンジン38Aに相当するプログラムと制御部38Bに相当するプログラムから構成されているが、制御部38Bに相当するプログラムは部品化されており、個々の画像処理モジュール38のうち単位読出データ量及び単位書込データ量が同一の画像処理モジュール38は、画像処理エンジン38Aで実行される画像処理の種類や内容に拘わらず、制御部38Bに相当するプログラムが共通化されている(制御部38Bに相当するプログラムとして同一のプログラムが用いられている)。これにより、画像処理モジュール38のプログラムの開発にあたっての開発負荷が軽減される。   The program of each image processing module 38 registered in the module library 36 is composed of a program corresponding to the image processing engine 38A and a program corresponding to the control unit 38B, but a program corresponding to the control unit 38B. The image processing module 38 having the same unit read data amount and unit write data amount among the individual image processing modules 38 is concerned with the type and content of image processing executed by the image processing engine 38A. However, the program corresponding to the control unit 38B is shared (the same program is used as the program corresponding to the control unit 38B). Thereby, the development load in developing the program of the image processing module 38 is reduced.

なお、画像処理モジュール38の中には、入力される画像の属性が未知の状態では単位読出データ量及び単位書込データ量が確定しておらず、入力画像データの属性を取得し、取得した属性を所定の演算式に代入して演算することで単位読出データ量や単位書込データ量が確定するモジュールが存在しているが、この種の画像処理モジュール38については、単位読出データ量と単位書込データ量が互いに同一の演算式を用いて導出される画像処理モジュール38について、制御部38Bに相当するプログラムを共通化するようにすればよい。また、本実施形態に係る画像処理プログラム群34は、前述のように各種機器に実装可能であるが、画像処理プログラム群34のうちモジュールライブラリ36に登録する画像処理モジュール38の数や種類等については、画像処理プログラム群34を実装する各種機器で必要とされる画像処理に応じて、適宜追加・削除・入替等が可能であることは言うまでもない。   In the image processing module 38, the unit read data amount and the unit write data amount are not fixed when the input image attribute is unknown, and the input image data attribute is acquired and acquired. There is a module in which the unit read data amount and the unit write data amount are determined by substituting the attribute into a predetermined arithmetic expression, and this type of image processing module 38 has a unit read data amount and For the image processing module 38 in which the unit write data amount is derived using the same arithmetic expression, a program corresponding to the control unit 38B may be shared. The image processing program group 34 according to the present embodiment can be mounted on various devices as described above, but the number, type, and the like of the image processing modules 38 registered in the module library 36 in the image processing program group 34. Needless to say, addition, deletion, replacement, and the like can be appropriately performed in accordance with image processing required by various devices that implement the image processing program group 34.

また、画像処理部50を構成する個々のバッファモジュール40は、例として図3(B)にも示すように、バッファ40Aと、バッファモジュール40の前段及び後段のモジュールとの画像データの入出力及びバッファ40Aの管理を行うバッファ制御部40Bから構成されている。なお、バッファ40Aはコンピュータ10に設けられたメモリ14からオペレーティングシステム30及びリソース管理部46Bを通じて確保されたメモリ領域で構成される。個々のバッファモジュール40のバッファ制御部40Bもその実体はCPU12によって実行されるプログラムであり、モジュールライブラリ36にはバッファ制御部40Bのプログラムも登録されている(図1ではバッファ制御部40Bのプログラムを「バッファモジュール」と表記して示している)。   Further, as shown in FIG. 3B as an example, the individual buffer modules 40 constituting the image processing unit 50 are configured to input / output image data between the buffer 40A and modules before and after the buffer module 40. The buffer control unit 40B manages the buffer 40A. The buffer 40A is composed of a memory area secured from the memory 14 provided in the computer 10 through the operating system 30 and the resource management unit 46B. The buffer control unit 40B of each buffer module 40 is also a program executed by the CPU 12, and the program of the buffer control unit 40B is also registered in the module library 36 (in FIG. 1, the program of the buffer control unit 40B is registered). "Buffer module")

また本実施形態では、バッファモジュール40のバッファ40Aに対して複数の画像処理モジュール38が同時にアクセスする可能性があることを考慮し、バッファ40Aへのアクセスに対して排他制御を行う、排他制御機能付きのバッファモジュール40と、排他制御機能無しのバッファモジュール40が各々用意され、モジュールライブラリ36にはそれぞれのバッファモジュール40のプログラムが各々登録されている。 In the present embodiment, in consideration of the possibility that a plurality of image processing modules 38 may access the buffer 40A of the buffer module 40 at the same time, an exclusive control function that performs exclusive control on access to the buffer 40A. A buffer module 40 with a buffer and a buffer module 40 without an exclusive control function are prepared, and a program for each buffer module 40 is registered in the module library 36.

また、アプリケーション32からの指示に従って画像処理部50を構築する処理構築部42は、図1に示すように複数種のモジュール生成部44から構成されている。複数種のモジュール生成部44は互いに異なる画像処理に対応しており、アプリケーション32によって起動されることで、対応する画像処理を実現するための画像処理モジュール38及びバッファモジュール40から成るモジュール群を生成する処理を行う。なお、図1ではモジュール生成部44の一例として、モジュールライブラリ36に登録されている個々の画像処理モジュール38が実行する画像処理の種類に対応するモジュール生成部44を示しているが、個々のモジュール生成部44に対応する画像処理は、複数種の画像処理モジュール38によって実現される画像処理(例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理)であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション32は複数種の画像処理の何れかに対応するモジュール生成部44を順次起動する。これにより、アプリケーション32によって順次起動されたモジュール生成部44により、必要とされる画像処理を行う画像処理部50が構築されることになる。   In addition, the processing construction unit 42 that constructs the image processing unit 50 in accordance with an instruction from the application 32 includes a plurality of types of module generation units 44 as shown in FIG. The plural types of module generation units 44 support different image processing, and are activated by the application 32 to generate a module group including an image processing module 38 and a buffer module 40 for realizing the corresponding image processing. Perform the process. In FIG. 1, the module generation unit 44 corresponding to the type of image processing executed by each image processing module 38 registered in the module library 36 is shown as an example of the module generation unit 44. The image processing corresponding to the generation unit 44 may be image processing realized by a plurality of types of image processing modules 38 (for example, skew correction processing including skew angle detection processing and image rotation processing). When the required image processing is processing combining a plurality of types of image processing, the application 32 sequentially activates the module generation unit 44 corresponding to any of the plurality of types of image processing. As a result, an image processing unit 50 that performs necessary image processing is constructed by the module generation unit 44 that is sequentially activated by the application 32.

また、本実施形態に係る記憶部20には、処理管理部46のプログラムとして、処理管理部46をコンピュータ10(クライアント)上で動作させるためのクライアント用の処理管理部46のプログラムと、処理管理部46をサーバ・コンピュータ27上で動作させるためのサーバ用の処理管理部46のプログラムが各々記憶されている。なお、サーバ用の処理管理部46のプログラムは、後述するように、画像処理部50を分割しその一部をサーバ・コンピュータ27上で動作させる際に、処理管理部46をコンピュータ10上及びサーバ・コンピュータ27上で各々動作させるために用いられる。図1に示すように、個々の処理管理部46は、画像処理部50における画像処理の実行を制御するワークフロー管理部46A、画像処理部50の各モジュールによるメモリ14や各種のファイル等のコンピュータ10又はサーバ・コンピュータ27のリソースの使用を管理するリソース管理部46B、及び、画像処理部50で発生したエラーを管理するエラー管理部46Cを含んで構成されている。   Further, in the storage unit 20 according to the present embodiment, as a program of the process management unit 46, a program of the client process management unit 46 for operating the process management unit 46 on the computer 10 (client), and a process management A program for the server process management unit 46 for operating the unit 46 on the server computer 27 is stored. As will be described later, the program of the server processing management unit 46 is divided into the processing management unit 46 on the computer 10 and the server when the image processing unit 50 is divided and a part thereof is operated on the server computer 27. Used to operate each on the computer 27. As shown in FIG. 1, each processing management unit 46 includes a workflow management unit 46 </ b> A that controls execution of image processing in the image processing unit 50, a memory 14 by each module of the image processing unit 50, and a computer 10 such as various files. Alternatively, a resource management unit 46B that manages the use of resources of the server computer 27 and an error management unit 46C that manages errors that have occurred in the image processing unit 50 are configured.

次に本実施形態の作用を説明する。画像処理プログラム群34が実装されている機器において、何らかの画像処理を行う必要のある状況になると、この状況が特定のアプリケーション32によって検知される。なお、画像処理を行う必要のある状況としては、例えば画像データ供給部22としての画像読取部によって画像を読み取り、画像出力部24としての画像記録部により記録材料に画像として記録するか、画像出力部24としての表示部に画像として表示させるか、画像出力部24としての書込装置により画像データを記録メディアに書き込むか、画像出力部24としての送信部により画像データを送信するか、画像出力部24としての画像記憶部に記憶させるジョブの実行がユーザによって指示された場合、或いは、画像データ供給部22としての受信部によって受信されるか、画像データ供給部22としての画像記憶部に記憶されている画像データに対して、上記の記録材料への記録、表示部への表示、記録メディアへの書き込み、送信、画像記憶部への記憶の何れかを行うジョブの実行がユーザによって指示された場合が挙げられる。また、画像処理を行う必要のある状況は上記に限られるものではなく、例えばユーザからの指示に応じてアプリケーション32が実行可能な処理の名称等を表示部16に一覧表示している状態で、実行対象の処理がユーザによって選択された等の場合であってもよい。   Next, the operation of this embodiment will be described. In a device in which the image processing program group 34 is installed, when a situation where it is necessary to perform some kind of image processing, this situation is detected by a specific application 32. In addition, as a situation where it is necessary to perform image processing, for example, an image is read by an image reading unit as the image data supply unit 22, and is recorded as an image on a recording material by an image recording unit as the image output unit 24, or image output Whether the image is displayed on the display unit as the unit 24, the image data is written to the recording medium by the writing device as the image output unit 24, the image data is transmitted by the transmission unit as the image output unit 24, or the image output When the execution of a job to be stored in the image storage unit as the unit 24 is instructed by the user, or received by the reception unit as the image data supply unit 22 or stored in the image storage unit as the image data supply unit 22 For the image data being recorded, recording on the recording material, display on the display unit, writing to the recording medium, transmission, Any execution of a job for the storage of the image storage unit include when instructed by the user. In addition, the situation where image processing needs to be performed is not limited to the above. For example, in a state where the names of processes that can be executed by the application 32 in accordance with an instruction from the user are displayed on the display unit 16 as a list, For example, the execution target process may be selected by the user.

上記のように、何らかの画像処理を行う必要のある状況になったことを検知すると、アプリケーション32は、まずクライアント用の処理管理部46のプログラムを実行するスレッド(プロセス又はオブジェクトでもよい:以下同様)を生成することで、コンピュータ10上で動作する処理管理部46のワークフロー管理部46A、リソース管理部46B及びエラー管理部46Cを各々生成する。次に、アプリケーション32は画像処理対象の画像データを供給する画像データ供給部22の種別を認識し、認識した種別がバッファ領域(メモリ14の一部領域)であった場合には、画像データ供給部22として指定されたバッファ領域を既に確保されたバッファ40Aとしてバッファ制御部40Bに認識させるパラメータを設定し、バッファ制御部40Bのプログラムを実行するスレッドを生成する(バッファ制御部40Bを生成する)ことで、指定されたバッファ領域を含むバッファモジュール40(画像データ供給部22として機能するバッファモジュール40)を生成する。   As described above, when it is detected that the situation where it is necessary to perform some kind of image processing is performed, the application 32 first executes a thread (a process or an object; the same applies below) that executes the program of the processing management unit 46 for the client. Are generated, the workflow management unit 46A, the resource management unit 46B, and the error management unit 46C of the processing management unit 46 operating on the computer 10 are generated. Next, the application 32 recognizes the type of the image data supply unit 22 that supplies the image data to be processed, and if the recognized type is a buffer area (partial area of the memory 14), the image data supply is performed. A parameter for causing the buffer control unit 40B to recognize the buffer area designated as the unit 22 as an already secured buffer 40A is set, and a thread for executing the program of the buffer control unit 40B is generated (the buffer control unit 40B is generated). Thus, the buffer module 40 including the designated buffer area (the buffer module 40 functioning as the image data supply unit 22) is generated.

続いてアプリケーション32は、上記と同様に、画像処理を行った画像データの出力先としての画像出力部24の種別を認識し、認識した種別がバッファ領域(メモリ14の一部領域)であった場合は、画像出力部24として指定されたバッファ領域を含むバッファモジュール40を上記と同様にして生成する。ここで生成されたバッファモジュール40は画像出力部24として機能する。また、アプリケーション32は実行すべき画像処理の内容を認識し、実行すべき画像処理を、個々のモジュール生成部44に対応するレベルの画像処理の組み合わせに分解し、実行すべき画像処理を実現するために必要な画像処理の種類及び個々の画像処理の実行順序を判定する。なお、この判定は、例えば上記の画像処理の種類及び個々の画像処理の実行順序を、ユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、アプリケーション32は、実行が指示されたジョブの種類に対応する情報を読み出すことによって実現することができる。   Subsequently, in the same manner as described above, the application 32 recognizes the type of the image output unit 24 as the output destination of the image data subjected to image processing, and the recognized type is the buffer area (partial area of the memory 14). In this case, the buffer module 40 including the buffer area designated as the image output unit 24 is generated in the same manner as described above. The buffer module 40 generated here functions as the image output unit 24. Further, the application 32 recognizes the contents of the image processing to be executed, decomposes the image processing to be executed into a combination of image processing at a level corresponding to each module generation unit 44, and realizes the image processing to be executed. Therefore, the type of image processing necessary for the purpose and the execution order of individual image processing are determined. In this determination, for example, the type of image processing and the execution order of the individual image processing are registered in advance as information in association with the type of job that can be instructed by the user. Can be realized by reading out information corresponding to the type of job instructed.

そしてアプリケーション32は、上記で判定した画像処理の種類及び実行順序に基づいて、特定の画像処理に対応するモジュール生成部44を起動(モジュール生成部44のプログラムを実行するスレッドを生成)した後に、起動したモジュール生成部44に対し、当該モジュール生成部44によるモジュール群の生成に必要な情報として、前記モジュール群に画像データを入力する入力モジュールを識別するための入力モジュール識別情報、前記モジュール群が画像データを出力する出力モジュールを識別するための出力モジュール識別情報、前記モジュール群に入力される入力画像データの属性を表す入力画像属性情報、実行すべき画像処理のパラメータを通知して対応するモジュール群の生成を指示する。また、必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション32は、指示したモジュール生成部44からモジュール群の生成完了が通知されると、個々の画像処理に対応する他のモジュール生成部44を起動してモジュール群の生成に必要な情報を通知する処理を個々の画像処理の実行順序の昇順に繰り返す。   Then, the application 32 activates the module generation unit 44 corresponding to the specific image processing (generates a thread for executing the program of the module generation unit 44) based on the type and execution order of the image processing determined above. Input module identification information for identifying an input module for inputting image data to the module group as information necessary for generating the module group by the module generation unit 44 for the activated module generation unit 44, and the module group Output module identification information for identifying an output module that outputs image data, input image attribute information that represents an attribute of input image data input to the module group, and a corresponding module that notifies parameters of image processing to be executed Instruct the generation of a group. In addition, when the required image processing is a combination of a plurality of types of image processing, the application 32 responds to individual image processing when notified of completion of generation of the module group from the instructed module generation unit 44. The process of starting the other module generation unit 44 and notifying the information necessary for generating the module group is repeated in ascending order of the execution order of the individual image processes.

なお、上記の入力モジュールは、実行順序が1番目のモジュール群については画像データ供給部22が入力モジュールとなり、実行順序が2番目以降のモジュール群については前段のモジュール群の最終モジュール(通常はバッファモジュール40)が入力モジュールとなる。また、上記の出力モジュールについては、実行順序が最後のモジュール群では画像出力部24が出力モジュールとなるので、画像出力部24が出力モジュールとして指定されるが、その他のモジュール群では出力モジュールは未確定のためにアプリケーション32による指定は行われず、必要な場合はモジュール生成部44によって生成・設定される。また、入力画像属性や画像処理のパラメータについては、例えばユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、実行が指示されたジョブの種類に対応する情報を読み出すことでアプリケーション32が認識するようにしてもよいし、ユーザに指定させるようにしてもよい。   In the above input module, the image data supply unit 22 is the input module for the module group with the first execution order, and the last module (usually the buffer) for the module group with the second execution order or later. Module 40) is the input module. As for the above output modules, the image output unit 24 is designated as the output module in the module group whose execution order is the last, so that the image output unit 24 is designated as the output module. Specification by the application 32 is not performed for confirmation, and the module generation unit 44 generates and sets it when necessary. The input image attributes and image processing parameters are registered as information in advance in association with, for example, the type of job that can be instructed by the user, and information corresponding to the type of job instructed to be executed is read out. As a result, the application 32 may recognize it, or the user may specify it.

一方、モジュール生成部44は、アプリケーション32によって起動されるとモジュール生成処理を行う。モジュール生成処理では、まず生成対象の画像処理モジュール38に入力される入力画像データの属性を表す入力画像属性情報を取得する。なお、入力画像データの属性を取得する処理は、生成対象の画像処理モジュール38の前段にバッファモジュール40が存在している場合、当該バッファモジュール40に画像データの書き込みを行う更に前段の画像処理モジュール38から出力画像データの属性を取得することによって実現できる。   On the other hand, the module generation unit 44 performs module generation processing when activated by the application 32. In the module generation process, first, input image attribute information representing an attribute of input image data input to the generation target image processing module 38 is acquired. Note that the processing for acquiring the attributes of the input image data is performed in the case where the buffer module 40 exists in the previous stage of the generation target image processing module 38 and the image processing module in the previous stage that writes image data in the buffer module 40. This can be realized by acquiring the attributes of the output image data from the image data 38.

そして、取得した情報が表す入力画像データの属性に基づいて、生成対象の画像処理モジュール38の生成が必要か否か判定する。例えばモジュール生成部44が色変換処理を行うモジュール群を生成するモジュール生成部であり、画像処理のパラメータにより出力画像データの色空間としてCMY色空間がアプリケーション32から指定された場合、取得した入力画像属性情報に基づいて入力画像データがRGB色空間のデータであることが判明したときには、色空間処理を行う画像処理モジュール38としてRGB→CMYの色空間変換を行う画像処理モジュール38を生成する必要があるが、入力画像データがCMY色空間のデータであったときには、入力画像データの属性と出力画像データの属性が色空間に関して一致しているので、色空間変換処理を行う画像処理モジュール38は生成不要と判断する。   Then, based on the attribute of the input image data represented by the acquired information, it is determined whether the generation of the image processing module 38 to be generated is necessary. For example, the module generation unit 44 is a module generation unit that generates a group of modules that perform color conversion processing. When the CMY color space is designated as the color space of the output image data by the image processing parameter from the application 32, the acquired input image When the input image data is found to be RGB color space data based on the attribute information, it is necessary to generate an image processing module 38 that performs RGB → CMY color space conversion as an image processing module 38 that performs color space processing. However, when the input image data is data in the CMY color space, the attribute of the input image data and the attribute of the output image data match with respect to the color space, so that the image processing module 38 that performs color space conversion processing generates Judge as unnecessary.

生成対象の画像処理モジュール38の生成が必要と判断した場合には、生成対象の画像処理モジュール38の後段にバッファモジュール40が必要が否かを判定する。この判定は、画像処理モジュールの後段が出力モジュール(画像出力部24)である場合(例えば図2(A)〜(C)に示す画像処理部50における最後段の画像処理モジュール38を参照)や、例として図2(B)に示す画像処理部50においてスキュー角検知処理を行う画像処理モジュール38のように、画像処理モジュールが、画像データに対して解析等の画像処理を行いその結果を他の画像処理モジュール38へ出力するモジュールである場合は否定されるが、上記以外の場合は判定が肯定されてバッファ制御部40Bを起動することで、画像処理モジュール38の後段に連結するバッファモジュール40を生成する。   If it is determined that the generation target image processing module 38 needs to be generated, it is determined whether the buffer module 40 is required after the generation target image processing module 38. This determination is made when the subsequent stage of the image processing module is the output module (image output unit 24) (see, for example, the last stage image processing module 38 in the image processing unit 50 shown in FIGS. 2A to 2C). As an example, like the image processing module 38 that performs skew angle detection processing in the image processing unit 50 shown in FIG. 2B, the image processing module performs image processing such as analysis on the image data, and the result is the other. In the case other than the above, the determination is affirmed, and the buffer control unit 40B is activated to activate the buffer module 40 connected to the subsequent stage of the image processing module 38. Is generated.

続いて、前段のモジュール(例えばバッファモジュール40)の情報、後段のバッファモジュール40の情報(後段にバッファモジュール40を生成した画像処理モジュール38のみ)、画像処理モジュール38に入力される入力画像データの属性、処理パラメータを与えて、モジュールライブラリ36に登録されており、画像処理モジュール38として利用可能な複数の候補モジュールの中から、先に取得した入力画像データの属性、及び、画像処理モジュール38で実行すべき処理パラメータに合致する画像処理モジュール38を選択・生成する。   Subsequently, information on the preceding module (for example, the buffer module 40), information on the succeeding buffer module 40 (only the image processing module 38 that generated the buffer module 40 in the succeeding stage), and input image data input to the image processing module 38 Attributes and processing parameters are given and registered in the module library 36. Among a plurality of candidate modules that can be used as the image processing module 38, the attributes of the input image data acquired earlier and the image processing module 38 An image processing module 38 that matches the processing parameter to be executed is selected and generated.

例えばモジュール生成部44が色変換処理を行うモジュール群を生成するモジュール生成部であり、処理パラメータにより出力画像データの色空間としてCMY色空間が指定され、更に入力画像データがRGB色空間のデータであった場合には、モジュールライブラリ36に登録されている各種の色空間処理を行う複数種の画像処理モジュール38の中から、RGB→CMYの色空間変換を行う画像処理モジュール38が選択・生成される。また、画像処理モジュールが拡大・縮小処理を行う画像処理モジュール38であり、指定された拡大縮小率が50%以外であれば、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール38が選択・生成され、指定された拡大縮小率が50%であれば、拡大縮小率50%に特化した拡大縮小処理、すなわち入力された画像データを1画素おきに間引くことで50%に縮小する縮小処理を行う画像処理モジュール38が選択・生成される。   For example, the module generation unit 44 is a module generation unit that generates a group of modules that perform color conversion processing. The CMY color space is specified as the color space of the output image data by the processing parameter, and the input image data is data in the RGB color space. If there is, an image processing module 38 that performs RGB → CMY color space conversion is selected and generated from a plurality of types of image processing modules 38 that perform various color space processing registered in the module library 36. The The image processing module 38 is an image processing module 38 that performs enlargement / reduction processing. If the designated enlargement / reduction ratio is other than 50%, the input image data is enlarged at the designated enlargement / reduction ratio. If the image processing module 38 that performs the reduction process is selected and generated and the designated enlargement / reduction ratio is 50%, the enlargement / reduction process specialized for the enlargement / reduction ratio of 50%, that is, the input image data is one pixel. An image processing module 38 that performs a reduction process of reducing to 50% by thinning out at intervals is selected and generated.

なお、画像処理モジュール38の選択は上記に限られるものではなく、例えば画像処理エンジン38Aによる画像処理における単位処理データ量が異なる画像処理モジュール38をモジュールライブラリ36に複数登録しておき、画像処理部50へ割当可能なメモリ領域のサイズ等の動作環境に応じて、適切な単位処理データ量の画像処理モジュール38を選択する(例えば上記サイズが小さくなるに従って単位処理データ量の小さい画像処理モジュール38を選択する等)ようにしてもよいし、アプリケーション32或いはユーザに選択させるようにしてもよい。また、生成された画像処理モジュール38及びバッファモジュール40には、自モジュールの前段及び後段が何れのモジュールかを識別する識別情報が設定される。   The selection of the image processing module 38 is not limited to the above. For example, a plurality of image processing modules 38 having different unit processing data amounts in image processing by the image processing engine 38A are registered in the module library 36, and the image processing unit The image processing module 38 having an appropriate unit processing data amount is selected according to the operating environment such as the size of the memory area that can be allocated to 50 (for example, the image processing module 38 having a smaller unit processing data amount as the size decreases). Or the application 32 or the user may select it. In the generated image processing module 38 and buffer module 40, identification information for identifying which module is the front stage and the rear stage of the own module is set.

画像処理モジュール38の生成が完了すると、後段のバッファモジュール40のIDと生成した画像処理モジュール38のIDの組をワークフロー管理部46Aに通知する。このIDは、個々のモジュールを一意に判別できる情報であればよく、例えば個々のモジュールの生成順に付与した番号や、バッファモジュール40や画像処理モジュール38のオブジェクトのメモリ上でのアドレス等でも良い。またモジュール生成部44が、複数種の画像処理モジュール38によって実現される画像処理(例えばスキュー角検知処理を行う画像処理モジュール38と画像回転処理を行う画像処理モジュール38によって実現されるスキュー補正処理)を行うモジュール群を生成する場合には、上記処理が繰り返されて2個以上の画像処理モジュール38を含むモジュール群が生成される。アプリケーション32によって順次起動された個々のモジュール生成部44により、以上のモジュール生成処理が順次行われることで、例として図2(A)〜(C)に示すように、必要とされる画像処理を行う画像処理部50が構築される。なお、上記処理は本発明に係る構築手段に対応している。   When the generation of the image processing module 38 is completed, the workflow management unit 46A is notified of the set of the ID of the subsequent buffer module 40 and the ID of the generated image processing module 38. The ID may be information that can uniquely identify each module, and may be, for example, a number given in the order of generation of each module, an address of an object of the buffer module 40 or the image processing module 38 on a memory, or the like. Further, the module generation unit 44 performs image processing realized by a plurality of types of image processing modules 38 (for example, skew correction processing realized by the image processing module 38 that performs skew angle detection processing and the image processing module 38 that performs image rotation processing). When generating a module group for performing the above, the above process is repeated to generate a module group including two or more image processing modules 38. The module generation processing described above is sequentially performed by the individual module generation units 44 that are sequentially activated by the application 32, so that the necessary image processing can be performed as shown in FIGS. An image processing unit 50 to perform is constructed. The above processing corresponds to the construction means according to the present invention.

次に、画像処理部50を構築した後に処理構築部42で行われる画像処理部分割処理の説明に先立ち、上記の処理で構築された画像処理部50で画像処理が行われる際の個々の画像処理モジュール38及びバッファモジュール40の動作を順に説明する。   Next, prior to the description of the image processing unit division processing performed by the processing construction unit 42 after the image processing unit 50 is constructed, individual images when image processing is performed by the image processing unit 50 constructed by the above processing. Operations of the processing module 38 and the buffer module 40 will be described in order.

画像処理の実行時には、ワークフロー管理部46Aから個々の画像処理モジュール38に処理要求が入力される(図3(A)の(1)も参照)。画像処理モジュール38は、処理要求が入力されると、予め設定された識別情報で規定されている自モジュールの前段のモジュール(通常はバッファモジュール40)に対して画像データを要求する(図3(A)の(2)も参照)。読出可能な有効データがバッファモジュール40のバッファ40Aに単位読出データ量以上記憶されていれば、バッファモジュール40から読出領域の先頭アドレスが通知されて画像データの読出が要請される。これにより、画像処理モジュール38は先頭アドレスが通知された前段のモジュールの読出領域から単位読出データ量の画像データを読み出す(図3(A)の(3)も参照)。   When executing image processing, a processing request is input from the workflow management unit 46A to each image processing module 38 (see also (1) in FIG. 3A). When the processing request is input, the image processing module 38 requests image data from the module (usually the buffer module 40) in front of the own module defined by the preset identification information (FIG. 3 ( (See also A) (2)). If readable readable data is stored in the buffer 40A of the buffer module 40 in a unit read data amount or more, the buffer module 40 notifies the start address of the read area and requests reading of image data. As a result, the image processing module 38 reads the image data of the unit read data amount from the read area of the preceding module notified of the head address (see also (3) in FIG. 3A).

次に、画像処理モジュール38は自モジュールの後段のモジュールに対してデータ出力用の領域を要求し、データ出力領域(後段のモジュールがバッファモジュール40であれば当該バッファモジュール40から先頭アドレスが通知された書込領域)が取得できたら(図3(A)の(4)も参照)、先に前段のモジュールから取得した画像データ、後段のモジュールから取得したデータ出力領域(の先頭アドレス)を画像処理エンジン38Aに入力し、入力したデータに対して所定の画像処理を行わせる(図3(A)の(5)も参照)と共に、処理後のデータをデータ出力領域に書き込ませる(図3(A)の(6)も参照)。そして、画像処理エンジン38Aへの単位読出データ量のデータの入力が完了し、画像処理エンジン38Aから出力されたデータがデータ出力領域に全て書き込まれると、出力完了を後段のモジュールに通知すると共に、先に入力された処理要求に対応する処理を完了したことをワークフロー管理部46Aへ通知する(図3(A)の(7)も参照)。個々の画像処理モジュール38で上記処理が繰り返されることで、画像処理部50における画像処理が実現される。   Next, the image processing module 38 requests an area for data output from the module subsequent to the module itself, and if the data output area (the module at the subsequent stage is the buffer module 40), the buffer module 40 notifies the start address. (See also (4) in FIG. 3A), the image data acquired from the previous module and the data output area (first address) acquired from the subsequent module are converted into an image. The image data is input to the processing engine 38A and predetermined image processing is performed on the input data (see also (5) in FIG. 3A), and the processed data is written in the data output area (FIG. 3 ( (See also A) (6)). When the input of the unit read data amount to the image processing engine 38A is completed and all the data output from the image processing engine 38A is written in the data output area, the output completion is notified to the subsequent module, and The workflow management unit 46A is notified that the process corresponding to the previously input process request has been completed (see also (7) in FIG. 3A). The image processing in the image processing unit 50 is realized by the above processing being repeated in each image processing module 38.

また、バッファモジュール40のバッファ制御部40Bは、予め設定された識別情報で規定されている自モジュールの後段のモジュール(通常は画像処理モジュール38)から画像データが要求されると(図3(B)の(1)も参照)、要求された画像データがバッファ40Aに記憶されているか否かチェックする(図3(B)の(2)も参照)が、読出可能な有効データがバッファ40Aに単位読出データ量以上記憶されていない場合は、ワークフロー管理部46Aに対して画像データを要求する(図3(B)の(3)も参照)。この場合、ワークフロー管理部46Aは、画像データ要求元のバッファモジュール40の前段に位置しているモジュール(通常は画像処理モジュール38)を認識し、認識したモジュールに処理要求を入力する(図3(B)の(4)も参照)。   When the buffer controller 40B of the buffer module 40 requests image data from a module (usually the image processing module 38) subsequent to its own module defined by preset identification information (FIG. 3B ) (See also (1))), it is checked whether or not the requested image data is stored in the buffer 40A (see also (2) in FIG. 3B), but readable valid data is stored in the buffer 40A. If the unit read data amount is not stored, the image data is requested to the workflow management unit 46A (see also (3) in FIG. 3B). In this case, the workflow management unit 46A recognizes the module (usually the image processing module 38) located in the preceding stage of the buffer module 40 that is the image data request source, and inputs a processing request to the recognized module (FIG. 3 ( (See also B) (4)).

そして、図3(A)に示したシーケンスを経て、前段の画像処理モジュール38によってバッファ40Aに画像データが書き込まれ(図3(B)の(5),(6)も参照)、バッファ40Aから読出可能な有効データが単位読出データ量以上になると、バッファモジュール40から後段の画像処理モジュール38に対して読出領域の先頭アドレスが通知され、後段の画像処理モジュール38によってバッファモジュール40のバッファ40Aから画像データが読み出されることになる(図3(B)の(7)も参照)。   Then, through the sequence shown in FIG. 3A, the image data is written into the buffer 40A by the image processing module 38 in the previous stage (see also (5) and (6) in FIG. 3B), and from the buffer 40A. When the readable effective data exceeds the unit read data amount, the buffer module 40 notifies the subsequent image processing module 38 of the start address of the reading area, and the subsequent image processing module 38 uses the buffer 40A of the buffer module 40 from the buffer 40A. Image data is read out (see also (7) in FIG. 3B).

一方、処理構築部42は、前述のようにして画像処理部50を構築すると、構築した画像処理部50に対して図4に示す画像処理部分割処理を行う。この画像処理部分割処理は本発明に係る分割手段に対応しており、まずステップ100では、画像処理部50を何個のグループに分割するかを表すグループ数Nを決定する。グループ数Nとしては、例えばコンピュータ10に設けられている演算リソース(例えばCPUコアやDSP(Digital Signal Processor)等のように演算を並列に実行可能なリソース)の数を適用することができる。演算リソースの数はOSが提供する関数等を用いて取得することができる。また、グループ数Nとして、コンピュータ10に設けられている演算リソースの数を単に用いることに代えて、演算リソースの数を取得した後に、個々の演算リソースにおける使用率を更に取得し、使用率が閾値以下の演算リソースの数をグループ数Nとして用いるようにしてもよい。また、グループ数N=1であった場合には、次のステップ102以降の処理をスキップし画像処理部分割処理を終了することが望ましい。   On the other hand, when the processing construction unit 42 constructs the image processing unit 50 as described above, the processing construction unit 42 performs image processing unit division processing shown in FIG. 4 on the constructed image processing unit 50. This image processing section division processing corresponds to the dividing means according to the present invention. First, in step 100, the number N of groups representing how many groups the image processing section 50 is divided into is determined. As the number of groups N, for example, the number of computation resources provided in the computer 10 (for example, resources that can execute computations in parallel, such as a CPU core or a DSP (Digital Signal Processor)) can be applied. The number of computing resources can be obtained using a function provided by the OS. Further, instead of simply using the number of computing resources provided in the computer 10 as the number of groups N, after obtaining the number of computing resources, the usage rate in each computing resource is further obtained. You may make it use the number of the calculation resources below a threshold value as the number N of groups. If the number of groups is N = 1, it is desirable to skip the processing after the next step 102 and end the image processing section division processing.

次のステップ102では、ステップ100で決定したグループ数Nに基づき、先に構築した画像処理部50をN個のグループへ分割する。画像処理部50の分割には幾つかの方法がある。第1の分割方法は、画像処理部50における画像処理モジュールの数Mとして画像処理部50における画像処理モジュール38の総数を用い、上記の画像処理モジュールの数Mをグループ数Nで除算し、剰余が生ずる場合は商に対して切り捨て等の端数処理を行うことで、1グループ当りの画像処理モジュール38の数Lを求め、画像処理部50を先頭から順にスキャンし、画像処理モジュール38がL個出現する毎にL個目の画像処理モジュール38までを1個のグループとしてグループ化すると共に、画像処理モジュール38の数の計数値を0に戻すことで、画像処理部50をN個のグループに分割する方法である。なお、画像処理部50を構成する画像処理モジュール38のうち、1面分の画像データが揃わないと画像処理を開始できない画像処理モジュール38(画像の回転等の画像処理を行う画像処理モジュール38)の数を認識し、画像処理モジュールの数Mとして、画像処理部50における画像処理モジュール38の総数から上記で認識した画像処理モジュール38の数を減算した値を用いてもよい。第1の分割方法は処理が簡単になるという利点を有する。   In the next step 102, based on the number N of groups determined in step 100, the previously constructed image processing unit 50 is divided into N groups. There are several methods for dividing the image processing unit 50. The first division method uses the total number of image processing modules 38 in the image processing unit 50 as the number M of image processing modules in the image processing unit 50, divides the number M of the above image processing modules by the number N of groups, and generates a remainder. Is generated, the fraction processing such as truncation is performed on the quotient to obtain the number L of image processing modules 38 per group, the image processing unit 50 is scanned in order from the top, and L image processing modules 38 are obtained. Each time it appears, up to the L-th image processing module 38 is grouped as one group, and the count value of the number of image processing modules 38 is reset to 0, so that the image processing unit 50 is divided into N groups. It is a method of dividing. Of the image processing modules 38 constituting the image processing unit 50, the image processing module 38 (image processing module 38 that performs image processing such as image rotation) cannot start image processing unless image data for one surface is prepared. As the number M of image processing modules, a value obtained by subtracting the number of recognized image processing modules 38 from the total number of image processing modules 38 in the image processing unit 50 may be used. The first division method has an advantage that the processing becomes simple.

また、第2の分割方法は、各グループの処理負荷(ここでは処理負荷の一例としてCPU処理時間を用いる)が均等となるように分割する方法である。すなわち、まず画像処理部50を構成する個々の画像処理モジュール38の処理負荷(CPU処理時間)を各々予測する。ここで、各種の画像処理モジュール38のうち、画像サイズや処理パラメータの変化に拘わらずCPU処理時間が大きく変化しない画像処理を行う画像処理モジュール38については、予め固定的に設定したCPU処理時間を取得することで、CPU処理時間を予測することができる。また、画像サイズや処理パラメータの変化に対してCPU処理時間が大きく変化する画像処理を行う画像処理モジュール38については、画像サイズや処理パラメータの変化とCPU処理時間との関係を予測式等の形態で予め設定しておき、当該予測式を取得し画像サイズや処理パラメータに応じたCPU処理時間を演算することで、CPU処理時間の予測を行うことができる。   Further, the second division method is a method of dividing so that the processing load of each group (here, CPU processing time is used as an example of the processing load) is equal. That is, first, the processing load (CPU processing time) of each image processing module 38 constituting the image processing unit 50 is predicted. Here, among the various image processing modules 38, for the image processing module 38 that performs image processing in which the CPU processing time does not change greatly regardless of changes in the image size and processing parameters, the CPU processing time set in advance is fixed. By acquiring, the CPU processing time can be predicted. In addition, for the image processing module 38 that performs image processing in which the CPU processing time changes greatly with respect to changes in the image size and processing parameters, the relationship between the change in the image size and processing parameters and the CPU processing time is in a form such as a prediction formula. The CPU processing time can be predicted by obtaining the prediction formula in advance and calculating the CPU processing time according to the image size and processing parameters.

次に、画像処理部50を構成する個々の画像処理モジュール38のCPU処理時間の総和を演算し、演算したCPU処理時間の総和をグループ数Nで除算し、演算結果(1グループ当りのCPU処理時間の平均値)を閾値Thに設定する。そして、画像処理モジュール38のCPU処理時間を画像処理部50の先頭から順に積算しながらCPU処理時間の積算値を閾値Thと比較し、CPU処理時間の積算値が閾値Th以上となる毎に、積算値が閾値Th以上となった画像処理モジュール38までを1個のグループとしてグループ化すると共に、CPU処理時間の積算値を0に戻すことで、画像処理部50をN個のグループに分割する。第2の分割方法は、第1の分割方法と比較して処理は若干複雑になるものの、各グループの処理負荷をなるべく均等にすることができるので、より好ましい。   Next, the sum of the CPU processing times of the individual image processing modules 38 constituting the image processing unit 50 is calculated, the calculated sum of the CPU processing times is divided by the number of groups N, and the calculation result (CPU processing per group) The average value of time) is set to the threshold Th. Then, while integrating the CPU processing time of the image processing module 38 in order from the top of the image processing unit 50, the integrated value of the CPU processing time is compared with the threshold value Th, and each time the integrated value of the CPU processing time becomes equal to or greater than the threshold value Th, The image processing module 38 whose integrated value is equal to or greater than the threshold Th is grouped as one group, and the integrated value of the CPU processing time is returned to 0, thereby dividing the image processing unit 50 into N groups. . The second division method is more preferable because the processing load of each group can be made as uniform as possible, although the processing is slightly more complicated than the first division method.

なお、画像処理部50をN個のグループに分割する際の分割方法は上記方法に限られるものではなく、他の分割方法(例えば第2の分割方法において、j個目の画像処理モジュールのCPU処理時間を積算値に加算した段階で積算値が閾値Th以上となった場合に、当該積算値と閾値Thの偏差Aを、j個目の画像処理モジュールのCPU処理時間を加算する前の積算値と閾値Thの偏差Bと比較し、偏差Aが小さければj個目の画像処理モジュールの後段をグループの境界とし、偏差Bが小さければj個目の画像処理モジュールの前段をグループの境界とする等の分割方法)を用いてもよい。   Note that the division method when dividing the image processing unit 50 into N groups is not limited to the above method, and other division methods (for example, the CPU of the j-th image processing module in the second division method). If the integrated value becomes equal to or greater than the threshold Th at the stage where the processing time is added to the integrated value, the difference A between the integrated value and the threshold Th is integrated before adding the CPU processing time of the jth image processing module. When the deviation A is small, the subsequent stage of the j-th image processing module is used as the group boundary. When the deviation B is small, the previous stage of the j-th image processing module is used as the group boundary. A dividing method) may be used.

以上のようにして画像処理部50をN個のグループに分割すると、次のステップ104では、各グループの境界に位置しているバッファモジュール40を排他制御機能付きのバッファモジュール40に置き換える。これにより、当初構築された画像処理部50が、例として図5(A)に示すように、画像処理モジュールM1,M2,M3,M6とバッファモジュールB1,B2,B3が交互かつ直列に連結されると共に、バッファモジュールB1と画像処理モジュールM6の間に、画像処理モジュールM4,M5とバッファモジュールB4,B5が交互かつ直列に連結された部分画像処理部が連結された構成であり、当該構成の画像処理部50が、上述した画像処理部50の分割により、図5(B)に示すように、モジュールM1,B1から成るグループAと、モジュールM2,B2,M3,B3から成るグループBと、モジュールM4,B4,M5,B5から成るグループCと、モジュールM6から成るグループDに分割された場合には、グループAとグループB,Cの境界に位置しているバッファモジュールB1、グループBとグループDの境界に位置しているバッファモジュールB3、及び、グループCとグループDの境界に位置しているバッファモジュールB5が排他制御機能付きのバッファモジュールに各々置き換わることになる。   When the image processing unit 50 is divided into N groups as described above, in the next step 104, the buffer module 40 located at the boundary of each group is replaced with the buffer module 40 with the exclusive control function. As a result, as shown in FIG. 5A, for example, the initially constructed image processing unit 50 has image processing modules M1, M2, M3, and M6 and buffer modules B1, B2, and B3 connected alternately and in series. In addition, a partial image processing unit in which the image processing modules M4 and M5 and the buffer modules B4 and B5 are alternately and serially connected is connected between the buffer module B1 and the image processing module M6. As shown in FIG. 5B, the image processing unit 50 divides the group A including the modules M1, B1, and the group B including the modules M2, B2, M3, and B3 by dividing the image processing unit 50 described above. When divided into a group C consisting of modules M4, B4, M5 and B5 and a group D consisting of modules M6, the buffer module B1 located at the boundary between group A and groups B and C, Buffer module B3 is positioned on the boundary of the loop B and Group D, and a buffer module B5 which is located on the boundary of the group C and group D is that replace each buffer module with exclusive control function.

次のステップ106では、画像処理部50の一部(本発明に係る第2の画像処理部に相当)を分離してサーバ・コンピュータ27で動作させる、所謂画像処理部50の分割が必要か否か判定する In the next step 106, it is necessary to divide a part of the image processing unit 50 (corresponding to the second image processing unit according to the present invention) and cause the server computer 27 to operate, so-called division of the image processing unit 50 is necessary. To determine .

テップ106の判定は、以下の何れかの判定を行うことで自動的に行うことができる。すなわち、例えば画像処理部50を構成する個々の画像処理モジュール38のCPU処理時間の総和が第1の閾値以上か否かを判定することで上記判定を行うようにしてもよいし、コンピュータ10に設けられ画像処理部50の動作に利用可能な演算リソースの数(この演算リソースの数は、コンピュータ10に設けられた演算リソースの総数でもよいし、コンピュータ10に設けられた演算リソースのうち現在の使用率が所定値以下の演算リソースの総数でもよい)が第2の閾値以下か否かを判定することで上記判定を行うようにしてもよいし、個々の画像処理モジュール38のCPU処理時間の総和を個々のグループ毎に演算し、CPU処理時間の総和が第2の閾値以上のグループが存在しているか否かを判定することで上記判定を行うようにしてもよい。 Determination of step 106 can be automatically performed by performing one of the following determinations. That is, for example, the above determination may be performed by determining whether or not the total CPU processing time of the individual image processing modules 38 constituting the image processing unit 50 is equal to or greater than the first threshold. The number of computation resources that are provided and can be used for the operation of the image processing unit 50 (the number of computation resources may be the total number of computation resources provided in the computer 10 or the current number of computation resources provided in the computer 10 The above determination may be made by determining whether or not the usage rate is the total number of computing resources having a predetermined value or less) or less than the second threshold, or the CPU processing time of each image processing module 38 The above-mentioned determination is performed by calculating the sum for each group and determining whether there is a group having a total CPU processing time equal to or greater than the second threshold. Unishi may be.

また、例えば図5(A)に示す画像処理部50では、グループBにおける画像処理の結果とグループCにおける画像処理の結果が揃わないと、グループDで画像処理を行えない構成であるので、処理時間の長時間化を回避するためには、グループBにおける画像処理とグループCにおける画像処理を並列に行うことが望ましい。このため、画像処理部50の構成に基づき並列に実行することが望ましいパスの最大数を判断し(例えば図5(A)に示す構成では上記のパスの最大数は「2」となる)、当該パスの最大数が、コンピュータ10に設けられ画像処理部50の動作に利用可能な演算リソースの数よりも大きいか否かを判定することで、ステップ106の判定を行うようにしてもよい。   Further, for example, the image processing unit 50 shown in FIG. 5A has a configuration in which image processing cannot be performed in group D unless the results of image processing in group B and the results of image processing in group C are complete. In order to avoid a long time, it is desirable to perform image processing in group B and image processing in group C in parallel. Therefore, the maximum number of paths that are desirably executed in parallel is determined based on the configuration of the image processing unit 50 (for example, in the configuration shown in FIG. 5A, the maximum number of paths is “2”). The determination in step 106 may be performed by determining whether or not the maximum number of paths is larger than the number of computing resources provided in the computer 10 and available for the operation of the image processing unit 50.

ステップ106の判定が否定された場合、すなわち画像処理部50の分割が不要と判断した場合はステップ108へ移行し、画像処理部50の各グループをコンピュータ10によって実行されるスレッドとして各々割り付け(各グループのプログラムを実行するスレッドをコンピュータ10上に各々生成し)、画像処理部分割処理を終了する。この場合、画像処理部50はコンピュータ10上のみで動作する(画像処理部50に相当する処理がコンピュータ10のみによって行われる)ことになる。   If the determination in step 106 is negative, that is, if it is determined that the division of the image processing unit 50 is unnecessary, the process proceeds to step 108, where each group of the image processing unit 50 is assigned as a thread executed by the computer 10 (each A thread for executing the program of the group is generated on the computer 10), and the image processing section dividing process is terminated. In this case, the image processing unit 50 operates only on the computer 10 (processing corresponding to the image processing unit 50 is performed only by the computer 10).

一方、ステップ106の判定が肯定された場合、すなわち画像処理部50の分割が必要と判断した場合はステップ110へ移行し、画像処理部50の各グループの中から分割対象のグループを選択する。この分割対象のグループとしては、例えば処理負荷が最大のグループ(個々のグループ毎に演算した画像処理モジュール38のCPU処理時間の総和が最大のグループ)を適用することができる。これは、サーバ・コンピュータ27がコンピュータ10よりも処理能力が高い場合に特に有効である。また、図5(A)に示す画像処理部50におけるグループB,Cのように、画像処理を並列に行うことが望ましいグループが画像処理部50に複数存在している等の場合には、画像処理を並列に行うことが望ましい複数のグループのうちの何れか(例えば、サーバ・コンピュータ27がコンピュータ10よりも処理能力が高い場合はそのうちの処理負荷最大のグループ、コンピュータ10がサーバ・コンピュータ27よりも処理能力が高い場合はそのうちの処理負荷最大のグループ)を分割対象のグループとして適用してもよい。   On the other hand, if the determination in step 106 is affirmative, that is, if it is determined that the image processing unit 50 needs to be divided, the process proceeds to step 110 and a group to be divided is selected from each group of the image processing unit 50. As the group to be divided, for example, a group having the maximum processing load (a group having the maximum total CPU processing time of the image processing module 38 calculated for each group) can be applied. This is particularly effective when the server computer 27 has a higher processing capacity than the computer 10. In addition, when there are a plurality of groups in the image processing unit 50 where it is desirable to perform image processing in parallel, such as groups B and C in the image processing unit 50 shown in FIG. Any of a plurality of groups in which it is desirable to perform processing in parallel (for example, when the server computer 27 has a higher processing capacity than the computer 10, the group with the largest processing load among them, the computer 10 is more than the server computer 27. If the processing capability is high, the group with the largest processing load) may be applied as the group to be divided.

ステップ112では、分割対象のグループを構成する各モジュールのプログラムを、通信制御部25によってネットワーク26経由でサーバ・コンピュータ27へ転送し、次のステップ114では、記憶部20に記憶されているサーバ用の処理管理部46のプログラムを、通信制御部25によってネットワーク26経由でサーバ・コンピュータ27へ転送する。そしてステップ116では、ステップ112,114で転送した各プログラムの実行をサーバ・コンピュータ27に依頼する。これにより、分割対象のグループ及びサーバ用の処理管理部46が、サーバ・コンピュータ27によって実行されるスレッドとして各々割り付され(分割対象のグループのプログラムを実行するスレッド及びサーバ用の処理管理部46のプログラムを実行するスレッドがサーバ・コンピュータ27上に各々生成され)、各スレッドがサーバ・コンピュータ27によって各々実行される。   In step 112, the program of each module constituting the group to be divided is transferred to the server computer 27 via the network 26 by the communication control unit 25. In the next step 114, the server program stored in the storage unit 20 is transferred. Is transferred to the server computer 27 via the network 26 by the communication control unit 25. In step 116, the server computer 27 is requested to execute each program transferred in steps 112 and 114. As a result, the group and server process management unit 46 to be divided are respectively allocated as threads to be executed by the server computer 27 (the thread and server process management unit 46 for executing the program of the group to be divided). Each thread is generated on the server computer 27), and each thread is executed by the server computer 27.

これにより、例えば図5(A),(B)に示す画像処理部50のうち、モジュールM4,B4,M5,B5から成るグループCが分割対象のグループとして選択された場合には、例として図5(C)に示すように、画像処理部50がグループCとそれ以外の部分(本発明に係る第1の画像処理部に相当)とに分割され、グループCがサーバ・コンピュータ27によって実行される(サーバ・コンピュータ27上で動作する)スレッドとしてサーバ・コンピュータ27上に生成されると共に、サーバ・コンピュータ27上で動作する処理管理部46(ワークフロー管理部46A、リソース管理部46B及びエラー管理部46C)が新たに生成される。なお、サーバ・コンピュータ27上で動作する処理管理部46は本発明に係る第2の処理管理部に対応しており、コンピュータ10上で動作する処理管理部46は本発明に係る第1の処理管理部に対応している。   Thereby, for example, when the group C composed of the modules M4, B4, M5, and B5 is selected as the group to be divided in the image processing unit 50 shown in FIGS. As shown in FIG. 5C, the image processing unit 50 is divided into a group C and other parts (corresponding to the first image processing unit according to the present invention), and the group C is executed by the server computer 27. A process management unit 46 (workflow management unit 46A, resource management unit 46B, and error management unit) that is generated on the server computer 27 as a thread (operating on the server computer 27) and that operates on the server computer 27 46C) is newly generated. The process management unit 46 operating on the server computer 27 corresponds to the second process management unit according to the present invention, and the process management unit 46 operating on the computer 10 is the first process according to the present invention. It corresponds to the management department.

そして、サーバ・コンピュータ27上に生成されたグループCのバッファモジュールB4,B5のバッファ制御部40Bからサーバ・コンピュータ27上で動作するリソース管理部46Bに対してメモリ領域の確保が要求されると、当該リソース管理部46Bにより、サーバ・コンピュータ27上で動作するオペレーティングシステムを通じてサーバ・コンピュータ27に設けられたメモリ27Bからメモリ領域が確保され、確保されたメモリ領域がリソース管理部46BからバッファモジュールB4,B5のバッファ制御部40Bへ引き渡されることで、バッファモジュールB4,B5を含むグループCが画像処理を実行可能な状態となる。なお、サーバ・コンピュータ27上で動作するリソース管理部46Bによる上記のメモリ確保処理は、本発明に係る第2の処理管理部による「第2の画像処理部を動作させるための管理処理」に対応している。また、この処理と並行してコンピュータ10では、コンピュータ10上で動作するバッファモジュールB4,B5用として一旦確保されたメモリ領域を解放する処理が行われる。   When the buffer control unit 40B of the group C buffer modules B4 and B5 generated on the server computer 27 requests the resource management unit 46B operating on the server computer 27 to secure a memory area, The resource management unit 46B secures a memory area from the memory 27B provided in the server computer 27 through an operating system operating on the server computer 27, and the secured memory area is transferred from the resource management unit 46B to the buffer module B4, By being handed over to the buffer controller 40B of B5, the group C including the buffer modules B4 and B5 can be executed. Note that the above-described memory allocation processing by the resource management unit 46B operating on the server computer 27 corresponds to “management processing for operating the second image processing unit” by the second processing management unit according to the present invention. is doing. In parallel with this process, the computer 10 performs a process of releasing the memory area once reserved for the buffer modules B4 and B5 operating on the computer 10.

また、次のステップ118では、サーバ・コンピュータ27上で動作する処理管理部46に対し、サーバ・コンピュータ27上で動作するグループの構成を規定する構成情報及び当該グループがコンピュータ10上で動作する他のグループとどのように接続されているかを規定する接続情報を送信することで、送信した情報をサーバ・コンピュータ27上で動作する処理管理部46に設定させる。同様にステップ120では、コンピュータ10で動作する処理管理部46に対し、当該処理管理部46に設定されている構成情報及び接続情報を修正する。これにより、図5(C)に示す例では、サーバ・コンピュータ27上で動作する処理管理部46には、管理対象の画像処理部(グループC)がモジュールM4,B4,M5,B5が直列に接続された構成であること、画像処理モジュールM4の前段はコンピュータ10上で動作するバッファモジュールB1であること、バッファモジュールB5の後段はコンピュータ10上で動作する画像処理モジュールM6であること、を表す情報が各々設定される。また、コンピュータ10上で動作する処理管理部46に設定されている情報は、管理対象の画像処理部(グループA,B,D)がモジュールM1,B1,M2,B2,M3,B3,M6が直列に接続された構成であること、バッファ理モジュールB1の後段に、サーバ・コンピュータ27上で動作する画像モジュールM4も存在していること、画像処理モジュールM6の前段にサーバ・コンピュータ27上で動作するバッファモジュールB5も存在していること、を表す情報へ修正される。   In the next step 118, the processing management unit 46 operating on the server computer 27 is notified of the configuration information that defines the configuration of the group operating on the server computer 27 and the group operating on the computer 10. By transmitting connection information that defines how the group is connected, the processing management unit 46 operating on the server computer 27 sets the transmitted information. Similarly, in step 120, the configuration information and connection information set in the process management unit 46 are corrected for the process management unit 46 operating on the computer 10. Accordingly, in the example shown in FIG. 5C, the processing management unit 46 operating on the server computer 27 includes the image processing unit (group C) to be managed as modules M4, B4, M5, and B5 in series. This indicates that the configuration is connected, the preceding stage of the image processing module M4 is the buffer module B1 that operates on the computer 10, and the subsequent stage of the buffer module B5 is the image processing module M6 that operates on the computer 10. Information is set for each. The information set in the processing management unit 46 operating on the computer 10 includes the image processing units (groups A, B, D) to be managed by the modules M1, B1, M2, B2, M3, B3, M6. The configuration is that they are connected in series, the image module M4 that operates on the server computer 27 is also present after the buffer module B1, and the image processor M6 operates on the server computer 27 before the image processing module M6. To the information indicating that the buffer module B5 is also present.

また、本実施形態では、画像処理部50の分割を行うか否かに拘わらず個々のモジュールのプログラムを共通に用いることを可能とするため、情報を送受する一対のモジュールが互いに異なるコンピュータ上で動作している場合に、当該一対のモジュールの間に処理管理部46が介在して情報の送受が行われる(詳細は後述)。このため、個々の処理管理部46は、画像処理部50の分割位置の前後に存在しているモジュールに対し、前段(又は後段)のモジュールが同一のコンピュータ上で動作する処理管理部46であることを表す情報を設定する。例えば図5(C)に示す例において、サーバ・コンピュータ27上で動作する処理管理部46は、画像処理モジュールM4に対しては前段のモジュール、バッファモジュールB5に対しては後段のモジュールが、サーバ・コンピュータ27上で動作する処理管理部46であることを表す情報を各々設定し、コンピュータ10上で動作する処理管理部46は、画像処理モジュールM6に対しては前段のモジュール、バッファモジュールB1に対しては後段のモジュールに、コンピュータ10上で動作する処理管理部46も含まれることを表す情報を各々設定する。   In this embodiment, a program for each module can be used in common regardless of whether or not the image processing unit 50 is divided. Therefore, a pair of modules for transmitting and receiving information is on different computers. When operating, the process management unit 46 is interposed between the pair of modules to transmit and receive information (details will be described later). For this reason, each processing management unit 46 is a processing management unit 46 in which the modules in the previous stage (or the subsequent stage) operate on the same computer with respect to the modules existing before and after the division position of the image processing unit 50. Set the information that represents that. For example, in the example shown in FIG. 5C, the processing management unit 46 operating on the server computer 27 includes a front module for the image processing module M4 and a rear module for the buffer module B5. Information indicating that it is the processing management unit 46 operating on the computer 27 is set, and the processing management unit 46 operating on the computer 10 is connected to the preceding module and buffer module B1 for the image processing module M6. On the other hand, information indicating that the processing management unit 46 operating on the computer 10 is also included in each subsequent module.

そしてステップ122では、分割対象のグループ(サーバ・コンピュータ27上で動作するスレッドとしてサーバ・コンピュータ27上に生成されたグループ)以外の各グループを、コンピュータ10によって実行される(コンピュータ10上で動作する)スレッドとしてコンピュータ10上に生成し、画像処理部分割処理を終了する。   In step 122, each group other than the group to be divided (the group generated on the server computer 27 as a thread operating on the server computer 27) is executed by the computer 10 (operates on the computer 10). ) As a thread, it is generated on the computer 10, and the image processing section dividing process is terminated.

以上の処理によって画像処理部50の構築が完了すると、コンピュータ10上で動作する処理管理部46のワークフロー管理部46Aは、処理構築部42によってコンピュータ10上に生成された複数のスレッドをコンピュータ10のCPU12(やその他の演算リソース)によって並列に実行させると共に、画像処理部50の最後段に位置している画像処理モジュール38に処理要求を入力する。また、サーバ・コンピュータ27上で動作する処理管理部46のワークフロー管理部46Aも同様に、処理構築部42によってサーバ・コンピュータ27上に生成されたスレッドをサーバ・コンピュータ27のCPU27A(やその他の演算リソース)によって実行させる。   When the construction of the image processing unit 50 is completed by the above processing, the workflow management unit 46A of the processing management unit 46 operating on the computer 10 generates a plurality of threads generated on the computer 10 by the processing construction unit 42. While being executed in parallel by the CPU 12 (and other computing resources), a processing request is input to the image processing module 38 located at the last stage of the image processing unit 50. Similarly, the workflow management unit 46A of the process management unit 46 operating on the server computer 27 also converts the thread generated on the server computer 27 by the process construction unit 42 to the CPU 27A (and other computations) of the server computer 27. Resource).

また、個々のワークフロー管理部46Aは、同一コンピュータ上で動作する任意のバッファモジュール40又は画像処理モジュール38からデータ要求が入力される毎に、入力されたデータ要求におけるデータ要求先が他のコンピュータ上で動作しているモジュールか否か判定し、判定が肯定された場合は他のコンピュータ上で動作しているワークフロー管理部46Aとの間で通信を行うことで、入力されたデータ要求に対応するデータを取得し、取得したデータをデータ要求入力元のモジュールに提供する。以下、この処理について図6を参照して説明する。   Each time the data request is input from any buffer module 40 or image processing module 38 operating on the same computer, the individual workflow management unit 46A determines that the data request destination in the input data request is on another computer. In response to the input data request, communication is performed with the workflow management unit 46A operating on another computer. Acquire the data, and provide the acquired data to the module that is the data request input source. Hereinafter, this process will be described with reference to FIG.

図6において、画像処理モジュール38は或るコンピュータ(例えばサーバ)上で動作している一方、図6に「前段のバッファモジュール」と表記して示すバッファモジュール40は、画像処理部50の分割により別のコンピュータ(例えばクライアント)上で動作している。本実施形態では、このような場合、上記の画像処理モジュール38に対しては、前段のモジュールが同一のコンピュータ上で動作するワークフロー管理部46A(図6に示す「サーバ側ワークフロー管理部」)であることを表す情報を設定し、上記のバッファモジュール40に対しては、後段のモジュールが同一のコンピュータ上で動作するワークフロー管理部46A(図6に示す「クライアント側ワークフロー管理部」)であることを表す情報を設定している。   In FIG. 6, the image processing module 38 operates on a certain computer (for example, a server), while the buffer module 40 indicated as “previous stage buffer module” in FIG. 6 is divided by the image processing unit 50. It is running on another computer (eg client). In this embodiment, in such a case, for the image processing module 38 described above, the workflow management unit 46A (the “server-side workflow management unit” shown in FIG. 6) in which the previous module operates on the same computer. Information indicating the presence is set, and for the buffer module 40, the subsequent module is the workflow management unit 46A ("client-side workflow management unit" shown in FIG. 6) that operates on the same computer. Information that represents is set.

このため、上記の画像処理モジュール38からのデータ要求はサーバ側ワークフロー管理部に入力され(図6の(2)も参照)、サーバ側ワークフロー管理部はクライアント側ワークフロー管理部に対し、サーバ上で動作している画像処理モジュール38が画像データを要求していることを通知する(図6の(3)も参照)。これにより、クライアント側ワークフロー管理部は、サーバ上で動作しかつ画像データを要求している画像処理モジュール38の前段のバッファモジュール40を認識し、認識したバッファモジュール40に対して画像データを要求し(図6の(4)も参照)、当該バッファモジュール40のバッファ40Aから画像データを読み出し(図6の(5)も参照)、読み出した画像データをサーバ側ワークフロー管理部へ転送する(図6の(6)も参照)。そしてサーバ側ワークフロー管理部は、クライアント側ワークフロー管理部から画像データを受信すると、受信した画像データを一旦メモリに記憶させた後に、当該メモリの先頭アドレスをデータ要求入力元の画像処理モジュール38へ通知することで、クライアント側ワークフロー管理部から受信した画像データを画像処理モジュール38によって読み出させる。これにより、異なるコンピュータ上で動作するバッファモジュール40から画像処理モジュールへの画像データの送受が実現され、個々のモジュールにおいて、自モジュールの前段や後段のモジュールが自モジュールと同一のコンピュータ上で動作しているか否かを意識することなく(自モジュールと同一のコンピュータ上で動作しているか否かに応じて処理を切り替えることなく)処理を行うことができる。   Therefore, the data request from the image processing module 38 is input to the server-side workflow management unit (see also (2) in FIG. 6), and the server-side workflow management unit sends the client-side workflow management unit on the server. The operating image processing module 38 notifies that image data is requested (see also (3) in FIG. 6). As a result, the client-side workflow management unit recognizes the buffer module 40 preceding the image processing module 38 that operates on the server and requests image data, and requests image data from the recognized buffer module 40. The image data is read from the buffer 40A of the buffer module 40 (see also (5) in FIG. 6), and the read image data is transferred to the server-side workflow management unit (see FIG. 6). (See also (6)). When the server-side workflow management unit receives the image data from the client-side workflow management unit, the server-side workflow management unit temporarily stores the received image data in the memory, and then notifies the image processing module 38 of the data request input source of the memory request. As a result, the image processing module 38 reads the image data received from the client-side workflow management unit. As a result, transmission / reception of the image data from the buffer module 40 operating on a different computer to the image processing module is realized, and in each module, the modules before and after the own module operate on the same computer as the own module. It is possible to perform processing without being aware of whether or not it is operating (without switching processing depending on whether or not it is operating on the same computer as its own module).

なお、上記のシーケンスはクライアント(コンピュータ10)からサーバ(サーバ・コンピュータ27)へ画像データを転送するシーケンスであるが、サーバ・コンピュータ27からコンピュータ10への画像データの転送も同様のシーケンスで実現される。また、上記のシーケンスは画像処理モジュール38が前段のバッファモジュール40から画像データを読み出す際のシーケンスであるが、画像処理モジュール38が後段のバッファモジュール40に画像データを書き込む際も同様のシーケンスで実現される。   The above sequence is a sequence for transferring image data from the client (computer 10) to the server (server computer 27), but the transfer of image data from the server computer 27 to the computer 10 is also realized in the same sequence. The The above sequence is a sequence when the image processing module 38 reads image data from the preceding buffer module 40, but the same sequence is realized when the image processing module 38 writes image data to the succeeding buffer module 40. Is done.

また、個々のワークフロー管理部46Aは、同一コンピュータ上で動作する任意のモジュールからデータ要求が入力され、入力されたデータ要求におけるデータ要求先が同一コンピュータ上で動作しているモジュールであると判定した場合は、判定したモジュールにデータ要求を入力し、同一コンピュータ上で動作する任意の画像処理モジュールから処理完了通知が入力される毎に、通知元の画像処理モジュールに処理要求を入力することを、最後段の画像処理モジュールから全体処理の終了(1面分の画像データに対する画像処理の終了)が通知される迄繰り返す。また、サーバ・コンピュータ27上で動作するワークフロー管理部46Aは、サーバ・コンピュータ27上で動作する各モジュールによる画像処理が完了すると、コンピュータ10上で動作するワークフロー管理部46Aに対して画像処理の完了を通知する。なお、個々のワークフロー管理部46Aによる上述した処理も、本発明に係る第1の処理管理部又は第2の処理管理部による管理処理に対応している。そして、個々のワークフロー管理部46Aが上述した処理を行うことで、画像処理部50のうちの分割対象のグループを除く部分がコンピュータ10上で動作すると共に、当該動作と並列に分割対象のグループがサーバ・コンピュータ27上で動作することになり、画像処理部50をコンピュータ10上でのみ動作させる場合よりも処理時間を短縮することができる。   In addition, each workflow management unit 46A receives a data request from an arbitrary module operating on the same computer, and determines that the data request destination in the input data request is a module operating on the same computer. In this case, a data request is input to the determined module, and each time a processing completion notification is input from any image processing module operating on the same computer, the processing request is input to the image processing module of the notification source. The process is repeated until the end of the entire process (end of image processing for image data for one surface) is notified from the last image processing module. Also, the workflow management unit 46A operating on the server computer 27 completes image processing with respect to the workflow management unit 46A operating on the computer 10 when the image processing by each module operating on the server computer 27 is completed. To be notified. Note that the processing described above by the individual workflow management unit 46A also corresponds to the management processing by the first processing management unit or the second processing management unit according to the present invention. Then, the individual workflow management unit 46A performs the above-described processing, so that the part of the image processing unit 50 excluding the group to be divided operates on the computer 10, and the group to be divided is parallel to the operation. Since it operates on the server computer 27, the processing time can be shortened compared with the case where the image processing unit 50 operates only on the computer 10.

また、画像処理の実行中に何れかのモジュールでエラーが発生した場合、エラーが発生したモジュールがコンピュータ10で動作しているモジュールであれば、同一のコンピュータ(コンピュータ10)上で動作する処理管理部46のエラー管理部46Cにエラーの発生が通知され、エラーが発生したモジュールがサーバ・コンピュータ27で動作しているモジュールであれば、同一のコンピュータ(サーバ・コンピュータ27)上で動作する処理管理部46のエラー管理部46Cにエラーの発生が通知される。   Further, when an error occurs in any module during the execution of image processing, if the module in which the error has occurred is a module operating on the computer 10, the process management operating on the same computer (computer 10) If the occurrence of an error is notified to the error management unit 46C of the unit 46, and the module in which the error has occurred is a module operating on the server computer 27, the process management operating on the same computer (server computer 27) The error management unit 46C of the unit 46 is notified of the occurrence of the error.

個々のエラー管理部46Cは、エラーの発生が通知されると、発生したエラーの種別・発生箇所等のエラー情報を取得し、動作しているコンピュータ(コンピュータ10又はサーバ・コンピュータ27)の種別や構成等を表す装置環境情報を記憶部20又はHDD27Cから取得し、取得した装置環境情報が表す装置環境に応じたエラー通知方法を判断する。そして、コンピュータ10上で動作するエラー管理部46Cは、判断したエラー通知方法でエラーの発生を通知し、サーバ・コンピュータ27上で動作するエラー管理部46Cは、判断したエラー通知方法でのエラー発生の通知をコンピュータ10上で動作するエラー管理部46Cへ依頼することで、コンピュータ10上で動作するエラー管理部46Cによってエラー発生の通知を行わせる。なお、個々のエラー管理部46Cによる上述した処理も、本発明に係る第1の処理管理部又は第2の処理管理部による管理処理に対応している。   When the occurrence of an error is notified, the individual error management unit 46C acquires error information such as the type and location of the error that has occurred, and the type of the computer (computer 10 or server computer 27) that is operating, The device environment information representing the configuration and the like is acquired from the storage unit 20 or the HDD 27C, and an error notification method according to the device environment represented by the acquired device environment information is determined. Then, the error management unit 46C operating on the computer 10 notifies the occurrence of an error by the determined error notification method, and the error management unit 46C operating on the server computer 27 generates an error by the determined error notification method. Is requested to the error management unit 46C operating on the computer 10, the error management unit 46C operating on the computer 10 notifies the occurrence of an error. Note that the processing described above by each error management unit 46C also corresponds to the management processing by the first processing management unit or the second processing management unit according to the present invention.

また、サーバ・コンピュータ27における画像処理が完了すると、サーバ・コンピュータ27上で動作するリソース管理部46Bによって確保されたメモリ領域等のリソースは、同リソース管理部46Bを通じて全て解放され、コンピュータ10における画像処理が完了すると、コンピュータ10上で動作するリソース管理部46Bによって確保されたメモリ領域等のリソースも、同リソース管理部46Bを通じて全て解放される。これらのリソース管理部46Bによるリソース解放処理も本発明に係る第1の処理管理部又は第2の処理管理部による管理処理に対応している。   When the image processing in the server computer 27 is completed, resources such as a memory area secured by the resource management unit 46B operating on the server computer 27 are all released through the resource management unit 46B, and the image in the computer 10 is displayed. When the processing is completed, all resources such as a memory area secured by the resource management unit 46B operating on the computer 10 are also released through the resource management unit 46B. The resource release processing by these resource management units 46B also corresponds to the management processing by the first processing management unit or the second processing management unit according to the present invention.

画像処理部50の一部を分割してサーバ・コンピュータ27上で動作させる際に、処理管理部46をコンピュータ10上にのみ設けた場合、サーバ・コンピュータ27上で動作する個々のモジュールは、リソースの確保時や解放時、エラー発生時、画像処理の実行時に、コンピュータ10上で動作する処理管理部46と通信を行う必要があり、コンピュータ10とサーバ・コンピュータ27の間のトラフィックが大幅に増大すると共に、通信に要する時間分だけ処理が遅延することで、処理効率が大幅に低下する。   When a part of the image processing unit 50 is divided and operated on the server computer 27, when the processing management unit 46 is provided only on the computer 10, each module operating on the server computer 27 is a resource It is necessary to communicate with the processing management unit 46 operating on the computer 10 when securing, releasing, generating an error, or executing image processing, and traffic between the computer 10 and the server computer 27 is greatly increased. At the same time, the processing efficiency is greatly reduced by delaying the processing by the time required for communication.

これに対して本実施形態では、画像処理部50の一部を分割してサーバ・コンピュータ27上で動作させる際に、コンピュータ10上で動作する処理管理部46に加えて、サーバ・コンピュータ27上で動作する処理管理部46も設けているので、コンピュータ10とサーバ・コンピュータ27の間の通信は、画像処理部50の分割位置の前後に存在しているモジュール間(図5(C)の例では、バッファモジュールB1と画像処理モジュールM4の間、及び、バッファモジュールB5と画像処理モジュールM6の間)の画像データの受け渡しのための通信が大部分となる。これにより、コンピュータ10とサーバ・コンピュータ27の間のトラフィックの増大を抑制できると共に、サーバ・コンピュータ27上で動作する個々のモジュールと処理管理部46との間の通信に要する時間も短くすることができるので、処理効率を向上させることができ、コンピュータ10及びサーバ・コンピュータ27で並列に画像処理が行われることで処理時間を短縮することができる。   On the other hand, in the present embodiment, when a part of the image processing unit 50 is divided and operated on the server computer 27, in addition to the processing management unit 46 operating on the computer 10, 5 is also provided, the communication between the computer 10 and the server computer 27 is performed between modules existing before and after the division position of the image processing unit 50 (example in FIG. 5C). Then, communication for transferring image data between the buffer module B1 and the image processing module M4 and between the buffer module B5 and the image processing module M6) is mostly performed. As a result, an increase in traffic between the computer 10 and the server computer 27 can be suppressed, and the time required for communication between the individual modules operating on the server computer 27 and the processing management unit 46 can be shortened. Therefore, the processing efficiency can be improved, and the processing time can be shortened by performing image processing in parallel in the computer 10 and the server computer 27.

なお、上記では画像処理モジュールの数や処理負荷等に基づいて画像処理部50を複数のグループに分割した後に、複数のグループの中からサーバ・コンピュータ27上で動作させるグループを選択することで、画像処理部を、サーバ・コンピュータ27上で動作させる部分(第2の画像処理部)とそれ以外の部分(第1の画像処理部)に分割する態様を説明したが、本発明はこれに限定されるものではなく、例えば画像処理部50を事前に複数のグループに分割することなく、画像処理部50のうち並列に実行することが望ましい部分を直接判断し、判断結果に基づいて画像処理部50を第1の画像処理部と第2の画像処理部に分割するようにしてもよい。   In the above, after dividing the image processing unit 50 into a plurality of groups based on the number of image processing modules, processing load, etc., a group to be operated on the server computer 27 is selected from the plurality of groups. Although the aspect which divides | segments an image processing part into the part (2nd image processing part) operated on the server computer 27 and the other part (1st image processing part) was demonstrated, this invention is limited to this. For example, without dividing the image processing unit 50 into a plurality of groups in advance, the image processing unit 50 directly determines a portion that should be executed in parallel, and based on the determination result, the image processing unit 50 may be divided into a first image processing unit and a second image processing unit.

また、上記では本発明に係る第2コンピュータが予め設定されている(第2コンピュータがサーバ・コンピュータ27に固定されている)態様を説明したが、これに限定されるものではなく、第2の画像処理部を動作させるコンピュータを複数台のコンピュータの中から都度選択するようにしてもよい。第2の画像処理部を動作させるコンピュータの選択は、例えば複数台のコンピュータの各々の処理能力や構成等の情報を予め記憶しておき、当該情報に基づいて選択するようにしてもよいし、第2の画像処理部を動作させるコンピュータの選択時に複数台のコンピュータの各々に加わっている処理負荷を取得し、取得した処理負荷に基づいて選択するようにしてもよい。   In the above description, the second computer according to the present invention is set in advance (the second computer is fixed to the server computer 27). However, the present invention is not limited to this. A computer for operating the image processing unit may be selected from a plurality of computers each time. For selection of the computer that operates the second image processing unit, for example, information such as processing capability and configuration of each of a plurality of computers may be stored in advance, and may be selected based on the information. The processing load applied to each of the plurality of computers may be acquired when the computer that operates the second image processing unit is selected, and may be selected based on the acquired processing load.

また、上記では本発明に係る第2コンピュータが1台の場合を説明したが、本発明において第2コンピュータは複数台であってもよく、この場合、画像処理部を、1個の第1の画像処理部と、第2コンピュータと同数個の第2の画像処理部に分割すればよい。また、第2コンピュータの数を可変とし、画像処理部の構成(例えば画像処理部のうち並列に実行することが望ましい部分における並列実行数の望ましい値)に基づいて画像処理部の分割数を決定し、決定した分割数から1を減算した値と同数台の第2コンピュータを選択するようにしてもよい。   In the above description, the case where there is one second computer according to the present invention has been described. However, in the present invention, there may be a plurality of second computers. In this case, the image processing unit is connected to one first computer. What is necessary is just to divide | segment into an image processing part and the 2nd image processing part of the same number as a 2nd computer. Further, the number of second computers is variable, and the number of divisions of the image processing unit is determined based on the configuration of the image processing unit (for example, a desirable value of the number of parallel executions in a portion of the image processing unit that is desirably executed in parallel). Then, the same number of second computers as the value obtained by subtracting 1 from the determined number of divisions may be selected.

更に、上記では第2コンピュータ上で動作する第2の処理管理部として、ワークフロー管理部46A、リソース管理部46B及びエラー管理部46Cを含む処理管理部46を第2コンピュータ(サーバ・コンピュータ27)上で動作させる態様を説明したが、本発明はこれに限定されるものではなく、第2コンピュータ上で動作させる第2の処理管理部はワークフロー管理部46A、リソース管理部46B及びエラー管理部46Cの少なくとも1つに相当する機能を備えた構成であればよい。第1コンピュータと第2コンピュータの間のトラフィックの増大を抑制するためには、第2の処理管理部がワークフロー管理部に相当する機能を備えていることが特に有効であり、第2の処理管理部が少なくともワークフロー管理部に相当する機能を備えていることが望ましい。   Furthermore, in the above description, the process management unit 46 including the workflow management unit 46A, the resource management unit 46B, and the error management unit 46C is provided on the second computer (server computer 27) as the second process management unit operating on the second computer. However, the present invention is not limited to this, and the second processing management unit operated on the second computer is the workflow management unit 46A, resource management unit 46B, and error management unit 46C. Any configuration having at least one function may be used. In order to suppress an increase in traffic between the first computer and the second computer, it is particularly effective that the second processing management unit has a function corresponding to the workflow management unit. It is desirable that the unit has at least a function corresponding to the workflow management unit.

また、上記では本発明に係る画像処理プログラムに対応する画像処理プログラム群34が記憶部20に予め記憶(インストール)されている態様を説明したが、本発明に係る画像処理プログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。   In the above description, the image processing program group 34 corresponding to the image processing program according to the present invention is stored (installed) in the storage unit 20 in advance. However, the image processing program according to the present invention is a CD-ROM. It is also possible to provide it in a form recorded on a recording medium such as a DVD-ROM.

本実施形態に係るコンピュータ(画像処理装置)の概略構成を示すブロック図である。It is a block diagram which shows schematic structure of the computer (image processing apparatus) which concerns on this embodiment. 画像処理部の構成例を示すブロック図である。It is a block diagram which shows the structural example of an image process part. (A)は画像処理モジュール、(B)はバッファモジュールの概略構成及び実行される処理を各々示すブロック図である。(A) is an image processing module, and (B) is a block diagram showing a schematic configuration of a buffer module and processing to be executed. 処理構築部によって行われる画像処理部分割処理の内容を示すフローチャートである。It is a flowchart which shows the content of the image process part division | segmentation process performed by the process construction part. 画像処理部分割処理による画像処理部の分割を説明するための画像処理部の一例を示すブロック図である。It is a block diagram which shows an example of the image process part for demonstrating the division | segmentation of the image process part by an image process part division | segmentation process. 画像処理モジュールの前段モジュールが別コンピュータ上で動作している場合の情報の送受シーケンスの一例を示すブロック図である。It is a block diagram which shows an example of the transmission / reception sequence of information when the front | former stage module of an image processing module is operate | moving on another computer.

符号の説明Explanation of symbols

10 コンピュータ
12 CPU
20 記憶部
27 サーバ・コンピュータ
38 画像処理モジュール
40 バッファモジュール
42 処理構築部
46 処理管理部
50 画像処理部
10 Computer 12 CPU
20 storage unit 27 server computer 38 image processing module 40 buffer module 42 processing construction unit 46 processing management unit 50 image processing unit

Claims (4)

自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と、
前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した1つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段と、
第1コンピュータ上で動作し、前記構築手段によって構築された画像処理部を前記第1コンピュータ上で動作させるための管理処理を行う第1の処理管理部と、
前記画像処理部の処理負荷の予測値が第1の閾値以上の場合、又は、前記第1コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第2の閾値以下の場合に、前記構築手段によって構築された画像処理部を第1の画像処理部と第2の画像処理部に分割し、前記第1の画像処理部を前記第1コンピュータ上で動作させるための管理処理を前記第1の処理管理部によって行わせると共に、前記第1コンピュータと通信回線を介して接続された第2コンピュータ上で前記第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を前記第2コンピュータ上に生成し、前記第2コンピュータ上で前記第2の画像処理部を動作させる分割手段と、
を含む画像処理装置。
A plurality of types of image processing modules that perform different image processing on the image data acquired from the previous stage of the own module, and output the image data that has undergone the image processing or the processing result of the image processing to the subsequent stage of the own module, and Storage means for storing each of the programs of the buffer modules for causing the image data output from the previous module to be written in the buffer and for causing the image data stored in the buffer to be read by the subsequent module;
The buffer module is connected to at least one of the preceding stage and the succeeding stage of each of the one or more image processing modules selected from the plurality of types of image processing modules by a program stored in the storage means, Construction means for constructing image processing units connected in a pipeline form or a directed acyclic graph form;
A first process management unit that operates on the first computer and performs a management process for causing the image processing unit constructed by the construction unit to operate on the first computer;
When the predicted value of the processing load of the image processing unit is greater than or equal to a first threshold, or the number of program execution resources provided in the first computer and available for operation of the image processing unit is less than or equal to a second threshold In this case, the image processing unit constructed by the construction unit is divided into a first image processing unit and a second image processing unit, and management for operating the first image processing unit on the first computer is performed. A second process for performing a management process for operating the second image processing unit on a second computer connected to the first computer via a communication line, while causing the first processing management unit to perform the process. A dividing unit for generating the processing management unit on the second computer and operating the second image processing unit on the second computer;
An image processing apparatus.
前記第1の処理管理部及び前記第2の処理管理手段は、前記管理処理として、前記管理処理の対象の画像処理部を構成する個々のモジュールからの要求に応じてメモリを確保して割り当てると共に、不要となったメモリを解放するメモリ管理処理、自モジュールの前段から画像データを取得し、所定の画像処理を行って画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する処理を、前記管理処理の対象の画像処理部の個々の画像処理モジュールで繰り返させるワークフロー管理処理、及び、前記管理処理の対象の画像処理部で発生したエラーを所定の通知方法で通知するエラー管理処理の少なくとも1つを行うことを特徴とする請求項1記載の画像処理装置。   The first process management unit and the second process management unit secure and allocate memory as the management process in response to requests from individual modules constituting the image processing unit to be managed. Memory management processing for releasing unnecessary memory, acquiring image data from the previous stage of the own module, performing predetermined image processing, and outputting the image data or the processing result of the predetermined image processing to the subsequent stage of the own module Workflow management processing for repeating the processing in each image processing module of the image processing unit targeted for management processing, and error management for notifying an error occurring in the image processing unit targeted for management processing by a predetermined notification method The image processing apparatus according to claim 1, wherein at least one of the processes is performed. 前記記憶手段には前記第2の処理管理部のプログラムも記憶されており、
前記分割手段は、前記第2の処理管理部のプログラムを前記通信回線を介して前記第2コンピュータへ転送し、転送したプログラムの実行を前記第2コンピュータへ指示することで、前記第2の処理管理部を前記第2コンピュータ上に生成することを特徴とする請求項1記載の画像処理装置。
The storage means also stores a program of the second process management unit,
The dividing means transfers the program of the second process management unit to the second computer via the communication line, and instructs the second computer to execute the transferred program, thereby The image processing apparatus according to claim 1, wherein the management unit is generated on the second computer.
自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と接続されると共に、第2コンピュータと通信回線を介して接続された第1コンピュータを、
前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した1つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段、
前記構築手段によって構築された画像処理部を前記第1コンピュータ上で動作させるための管理処理を行う第1の処理管理部、
及び、前記画像処理部の処理負荷の予測値が第1の閾値以上の場合、又は、前記第1コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第2の閾値以下の場合に、前記構築手段によって構築された画像処理部を第1の画像処理部と第2の画像処理部に分割し、前記第1の画像処理部を前記第1コンピュータ上で動作させるための管理処理を前記第1の処理管理部によって行わせると共に、前記第2コンピュータ上で前記第2の画像処理部を動作させるための管理処理を行う第2の処理管理部を前記第2コンピュータ上に生成し、前記第2コンピュータ上で前記第2の画像処理部を動作させる分割手段
として機能させるための画像処理プログラム。
A plurality of types of image processing modules that perform different image processing on the image data acquired from the previous stage of the own module, and output the image data that has undergone the image processing or the processing result of the image processing to the subsequent stage of the own module, and The image data output from the previous module is written to the buffer and is connected to storage means for storing each of the buffer module programs for causing the image data stored in the buffer to be read by the subsequent module. A first computer connected to the computer via a communication line;
The buffer module is connected to at least one of the preceding stage and the succeeding stage of each of the one or more image processing modules selected from the plurality of types of image processing modules by a program stored in the storage means, Construction means for constructing image processing units connected in a pipeline form or a directed acyclic graph form,
A first processing management unit for performing management processing for operating the image processing unit constructed by the construction unit on the first computer;
When the predicted value of the processing load of the image processing unit is equal to or greater than a first threshold, or the number of program execution resources provided in the first computer and available for the operation of the image processing unit is a second threshold In the following case, the image processing unit constructed by the construction unit is divided into a first image processing unit and a second image processing unit, and the first image processing unit is operated on the first computer. The second process management unit on the second computer for performing the management process for operating the second image processing unit on the second computer. And an image processing program for causing the second image processing unit to operate on the second computer.
JP2007221119A 2007-08-28 2007-08-28 Image processing apparatus and program Active JP5046801B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007221119A JP5046801B2 (en) 2007-08-28 2007-08-28 Image processing apparatus and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007221119A JP5046801B2 (en) 2007-08-28 2007-08-28 Image processing apparatus and program

Publications (2)

Publication Number Publication Date
JP2009054003A JP2009054003A (en) 2009-03-12
JP5046801B2 true JP5046801B2 (en) 2012-10-10

Family

ID=40505018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007221119A Active JP5046801B2 (en) 2007-08-28 2007-08-28 Image processing apparatus and program

Country Status (1)

Country Link
JP (1) JP5046801B2 (en)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5540706B2 (en) * 2007-12-18 2014-07-02 日本電気株式会社 Data stream processing system, method and program
WO2010131778A1 (en) * 2009-05-15 2010-11-18 日本電気株式会社 Workflow monitoring control system, monitoring control method, and monitoring control program
JP5797994B2 (en) * 2011-09-30 2015-10-21 株式会社日立ソリューションズ Job management system
JP5479519B2 (en) 2012-03-30 2014-04-23 富士フイルム株式会社 Image processing apparatus, method, and program
KR101506153B1 (en) * 2013-09-23 2015-03-26 주식회사 엑스엠 Car-number recognition system adapted for traffic volume
WO2017163592A1 (en) * 2016-03-24 2017-09-28 富士フイルム株式会社 Image processing device, image processing method, and image processing program
US10379788B2 (en) 2016-06-10 2019-08-13 Ricoh Company, Ltd. Operation device configured to display a configuration of an image forming device and information processing system including same
CN110741408B (en) * 2017-09-15 2023-08-01 富士胶片商业创新有限公司 Image processing device, image processing method, and image processing program
KR102553150B1 (en) * 2018-03-23 2023-07-10 삼성전자주식회사 Electronic device for processing image with external electronic device acquired and method for operating thefeof
US11461135B2 (en) * 2019-10-25 2022-10-04 International Business Machines Corporation Dynamically modifying the parallelism of a task in a pipeline
JP7403279B2 (en) * 2019-10-31 2023-12-22 キヤノン株式会社 Image processing device and image processing method
WO2023223408A1 (en) * 2022-05-17 2023-11-23 三菱電機株式会社 Image processing support equipment, image processing support method, and image processing support program

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004382A (en) * 2004-06-21 2006-01-05 Sharp Corp Information processing apparatus, information processing method, information processing program, and computer-readable recording medium
JP2006106858A (en) * 2004-09-30 2006-04-20 Incs Inc Distributed processing system, distributed processing method, and program thereof
JP4810090B2 (en) * 2004-12-20 2011-11-09 キヤノン株式会社 Data processing device
JP4694264B2 (en) * 2005-06-03 2011-06-08 富士ゼロックス株式会社 Image processing apparatus, method, and program
JP2007128250A (en) * 2005-11-02 2007-05-24 Canon Inc Image processing system

Also Published As

Publication number Publication date
JP2009054003A (en) 2009-03-12

Similar Documents

Publication Publication Date Title
JP5046801B2 (en) Image processing apparatus and program
US7602394B2 (en) Image processing device, method, and storage medium which stores a program
JP5703729B2 (en) Data processing apparatus and program
US20070248288A1 (en) Image processing device, and recording medium
US20080129740A1 (en) Image processing apparatus, storage medium that stores image processing program, and image processing method
US7602392B2 (en) Image processing device, method, and storage medium which stores a program
US7605819B2 (en) Image processing device, method, and storage medium which stores a program
US7605818B2 (en) Image processing device, method, and storage medium which stores a program
JP4979287B2 (en) Image processing apparatus and program
JP4795138B2 (en) Image processing apparatus and program
US7602391B2 (en) Image processing device, method, and storage medium which stores a program
US20070247466A1 (en) Image processing apparatus and program
US7595803B2 (en) Image processing device, method, and storage medium which stores a program
US7598957B2 (en) Image processing device, method, and storage medium which stores a program
US7602393B2 (en) Image processing device, method, and storage medium which stores a program
JP2008009696A (en) Image processor and program
JP4964219B2 (en) Image processing apparatus, method, and program
JP5047139B2 (en) Image processing apparatus and program
JP5440129B2 (en) Image processing apparatus, image forming apparatus, and image processing program
JP2007323393A (en) Image processing apparatus and program
JP4762865B2 (en) Image processing apparatus and image processing program
JP2009053829A (en) Information processing apparatus and information processing program
JP2012043096A (en) Device, method and program of image processing
JP4869890B2 (en) Image processing apparatus and program
JP4920725B2 (en) Image processing apparatus and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110914

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120416

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120626

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120717

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5046801

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250