JP5046801B2 - Image processing apparatus and program - Google Patents
Image processing apparatus and program Download PDFInfo
- 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
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の分担率を、前回の値よりも小さい値に設定する技術が開示されている。
特許文献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
しかし、特許文献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コンピュータ上に生成することは、例えば請求項3に記載したように、第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.
請求項4記載の発明に係る画像処理プログラムは、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と接続されると共に、第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
請求項4記載の発明に係る画像処理プログラムは、上記記憶手段と接続されると共に、第2コンピュータと通信回線を介して接続された第1コンピュータを、上記の構築手段、第1の処理管理部及び分割手段として機能させるためのプログラムであるので、上記の第1コンピュータが請求項4記載の発明に係る画像処理プログラムを実行することで、上記の第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
コンピュータ10はCPU12、DRAM又はSRAM等から成るメモリ14、表示部16、操作部18、記憶部20、画像データ供給部22及び画像出力部24を備えており、これらはバス26を介して互いに接続されている。コンピュータ10が上述したような画像取扱機器に組み込まれている場合、表示部16や操作部18としては、画像取扱機器に設けられたLCD等から成る表示パネルやテンキー等を適用することができる。また、コンピュータ10が独立したコンピュータである場合、表示部16や操作部18としては、当該コンピュータに接続されたディスプレイやキーボード、マウス等を適用することができる。また、記憶部20としてはHDD(Hard Disk Drive)が好適であるが、これに代えてフラッシュメモリ等の他の不揮発性記憶手段を用いることも可能である。
The
また、画像データ供給部22は処理対象の画像データを供給できるものであればよく、例えば紙や写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部、通信回線を介して外部から画像データを受信する受信部、画像データを記憶する画像記憶部(メモリ14又は記憶部20)等を適用することができる。また、画像出力部24は画像処理を経た画像データ又は該画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部、画像データが表す画像をディスプレイ等に表示する表示部、画像データを記録メディアに書き込む書込装置、画像データを通信回線を介して送信する送信部を適用することができる。また、画像出力部24は画像処理を経た画像データを単に記憶する画像記憶部(メモリ14又は記憶部20)であっても構わない。
The image
また、通信制御部25は通信回線を介してコンピュータ・ネットワーク26に接続されており、コンピュータ・ネットワーク26には、サーバ・コンピュータ27を含む複数台のコンピュータが各々接続されている(図1ではサーバ・コンピュータ27以外のコンピュータの図示を省略している)。通信制御部25はコンピュータ・ネットワーク26経由での他のコンピュータとの通信を司る。また、サーバ・コンピュータ27はCPU27A、メモリ27B、HDD27C及び通信制御部27Dを備えており、通信制御部27Dが通信回線を介してコンピュータ・ネットワーク26に接続されている。なお、コンピュータ10は本発明に係る第1コンピュータに、サーバ・コンピュータ27は本発明に係る第2コンピュータに各々対応している。
The
記憶部20は本発明に係る記憶手段に対応しており、この記憶部20には、図1に示すように、CPU12によって実行される各種のプログラムとして、メモリ14等のリソースの管理やCPU12によるプログラムの実行の管理、コンピュータ10と外部との通信等を司るオペレーティングシステム30のプログラム、コンピュータ10を本発明に係る画像処理装置として機能させるための画像処理プログラム群34、CPU12が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション32のプログラム(図1ではアプリケーションプログラム群32と表記)が各々記憶されている。
The
画像処理プログラム群34は、前述した各種の画像取扱機器や携帯機器を開発する際の開発負荷を軽減したり、PC等で利用可能な画像処理プログラムを開発する際の開発負荷を軽減することを目的として、各種の画像取扱機器や携帯機器、PC等の各種機器(プラットフォーム)で共通に使用可能に開発されたプログラムであり、本発明に係る画像処理プログラムに対応している。画像処理プログラム群34によって実現される画像処理装置は、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理部を構築し、アプリケーション32からの実行指示に従い、前記画像処理部によって画像処理を行うが(詳細は後述)、画像処理プログラム群34は、所望の画像処理を行う画像処理部(所望の構成の画像処理部)の構築を指示したり、構築された画像処理部による画像処理の実行を指示するためのインタフェースをアプリケーション32に提供している。このため、内部で画像処理を行う必要のある任意の機器を新規開発する等の場合にも、前記画像処理を行うプログラムの開発に関しては、当該機器で必要とされる画像処理を上記のインタフェースを利用して画像処理プログラム群34に行わせるアプリケーション32を開発するのみで済み、実際に画像処理を行うプログラムを新たに開発する必要が無くなるので、開発負荷を軽減することができる。
The image
また、画像処理プログラム群34によって実現される画像処理装置は、前述のように、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理部を構築し、構築した画像処理部によって画像処理を行うので、例えば画像処理対象の画像データの色空間や1画素当たりのビット数が不定であったり、実行すべき画像処理の内容や手順・パラメータ等が不定である場合にも、アプリケーション32が画像処理部の再構築を指示することで、画像処理装置(画像処理部)によって実行される画像処理を、処理対象の画像データ等に応じて柔軟に変更することができる。
Further, as described above, the image processing apparatus realized by the image
以下、画像処理プログラム群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
個々の画像処理モジュール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
また、モジュールライブラリ36には、画像処理エンジン38Aが実行する画像処理の種類が同一でかつ実行する画像処理の内容が異なる画像処理モジュール38も登録されている(図1では、この種の画像処理モジュールを「モジュール1」「モジュール2」と表記して示している)。例えば拡大・縮小処理を行う画像処理モジュール38については、入力された画像データを1画素おきに間引くことで50%に縮小する縮小処理を行う画像処理モジュール38、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール38等の複数の画像処理モジュール38が各々用意されている。また、例えば色変換処理を行う画像処理モジュール38については、RGB色空間をCMY色空間へ変換する画像処理モジュール38やその逆へ変換する画像処理モジュール38、L*a*b*色空間等の他の色空間変換を行う画像処理モジュール38が各々用意されている。
The
また、画像処理モジュール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
また、モジュールライブラリ36に登録されている個々の画像処理モジュール38のプログラムは、画像処理エンジン38Aに相当するプログラムと制御部38Bに相当するプログラムから構成されているが、制御部38Bに相当するプログラムは部品化されており、個々の画像処理モジュール38のうち単位読出データ量及び単位書込データ量が同一の画像処理モジュール38は、画像処理エンジン38Aで実行される画像処理の種類や内容に拘わらず、制御部38Bに相当するプログラムが共通化されている(制御部38Bに相当するプログラムとして同一のプログラムが用いられている)。これにより、画像処理モジュール38のプログラムの開発にあたっての開発負荷が軽減される。
The program of each
なお、画像処理モジュール38の中には、入力される画像の属性が未知の状態では単位読出データ量及び単位書込データ量が確定しておらず、入力画像データの属性を取得し、取得した属性を所定の演算式に代入して演算することで単位読出データ量や単位書込データ量が確定するモジュールが存在しているが、この種の画像処理モジュール38については、単位読出データ量と単位書込データ量が互いに同一の演算式を用いて導出される画像処理モジュール38について、制御部38Bに相当するプログラムを共通化するようにすればよい。また、本実施形態に係る画像処理プログラム群34は、前述のように各種機器に実装可能であるが、画像処理プログラム群34のうちモジュールライブラリ36に登録する画像処理モジュール38の数や種類等については、画像処理プログラム群34を実装する各種機器で必要とされる画像処理に応じて、適宜追加・削除・入替等が可能であることは言うまでもない。
In the
また、画像処理部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
また本実施形態では、バッファモジュール40のバッファ40Aに対して複数の画像処理モジュール38が同時にアクセスする可能性があることを考慮し、バッファ40Aへのアクセスに対して排他制御を行う、排他制御機能付きのバッファモジュール40と、排他制御機能無しのバッファモジュール40が各々用意され、モジュールライブラリ36にはそれぞれのバッファモジュール40のプログラムが各々登録されている。
In the present embodiment, in consideration of the possibility that a plurality of
また、アプリケーション32からの指示に従って画像処理部50を構築する処理構築部42は、図1に示すように複数種のモジュール生成部44から構成されている。複数種のモジュール生成部44は互いに異なる画像処理に対応しており、アプリケーション32によって起動されることで、対応する画像処理を実現するための画像処理モジュール38及びバッファモジュール40から成るモジュール群を生成する処理を行う。なお、図1ではモジュール生成部44の一例として、モジュールライブラリ36に登録されている個々の画像処理モジュール38が実行する画像処理の種類に対応するモジュール生成部44を示しているが、個々のモジュール生成部44に対応する画像処理は、複数種の画像処理モジュール38によって実現される画像処理(例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理)であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション32は複数種の画像処理の何れかに対応するモジュール生成部44を順次起動する。これにより、アプリケーション32によって順次起動されたモジュール生成部44により、必要とされる画像処理を行う画像処理部50が構築されることになる。
In addition, the
また、本実施形態に係る記憶部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
次に本実施形態の作用を説明する。画像処理プログラム群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
上記のように、何らかの画像処理を行う必要のある状況になったことを検知すると、アプリケーション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
続いてアプリケーション32は、上記と同様に、画像処理を行った画像データの出力先としての画像出力部24の種別を認識し、認識した種別がバッファ領域(メモリ14の一部領域)であった場合は、画像出力部24として指定されたバッファ領域を含むバッファモジュール40を上記と同様にして生成する。ここで生成されたバッファモジュール40は画像出力部24として機能する。また、アプリケーション32は実行すべき画像処理の内容を認識し、実行すべき画像処理を、個々のモジュール生成部44に対応するレベルの画像処理の組み合わせに分解し、実行すべき画像処理を実現するために必要な画像処理の種類及び個々の画像処理の実行順序を判定する。なお、この判定は、例えば上記の画像処理の種類及び個々の画像処理の実行順序を、ユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、アプリケーション32は、実行が指示されたジョブの種類に対応する情報を読み出すことによって実現することができる。
Subsequently, in the same manner as described above, the
そしてアプリケーション32は、上記で判定した画像処理の種類及び実行順序に基づいて、特定の画像処理に対応するモジュール生成部44を起動(モジュール生成部44のプログラムを実行するスレッドを生成)した後に、起動したモジュール生成部44に対し、当該モジュール生成部44によるモジュール群の生成に必要な情報として、前記モジュール群に画像データを入力する入力モジュールを識別するための入力モジュール識別情報、前記モジュール群が画像データを出力する出力モジュールを識別するための出力モジュール識別情報、前記モジュール群に入力される入力画像データの属性を表す入力画像属性情報、実行すべき画像処理のパラメータを通知して対応するモジュール群の生成を指示する。また、必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション32は、指示したモジュール生成部44からモジュール群の生成完了が通知されると、個々の画像処理に対応する他のモジュール生成部44を起動してモジュール群の生成に必要な情報を通知する処理を個々の画像処理の実行順序の昇順に繰り返す。
Then, the
なお、上記の入力モジュールは、実行順序が1番目のモジュール群については画像データ供給部22が入力モジュールとなり、実行順序が2番目以降のモジュール群については前段のモジュール群の最終モジュール(通常はバッファモジュール40)が入力モジュールとなる。また、上記の出力モジュールについては、実行順序が最後のモジュール群では画像出力部24が出力モジュールとなるので、画像出力部24が出力モジュールとして指定されるが、その他のモジュール群では出力モジュールは未確定のためにアプリケーション32による指定は行われず、必要な場合はモジュール生成部44によって生成・設定される。また、入力画像属性や画像処理のパラメータについては、例えばユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、実行が指示されたジョブの種類に対応する情報を読み出すことでアプリケーション32が認識するようにしてもよいし、ユーザに指定させるようにしてもよい。
In the above input module, the image
一方、モジュール生成部44は、アプリケーション32によって起動されるとモジュール生成処理を行う。モジュール生成処理では、まず生成対象の画像処理モジュール38に入力される入力画像データの属性を表す入力画像属性情報を取得する。なお、入力画像データの属性を取得する処理は、生成対象の画像処理モジュール38の前段にバッファモジュール40が存在している場合、当該バッファモジュール40に画像データの書き込みを行う更に前段の画像処理モジュール38から出力画像データの属性を取得することによって実現できる。
On the other hand, the
そして、取得した情報が表す入力画像データの属性に基づいて、生成対象の画像処理モジュール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
生成対象の画像処理モジュール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
続いて、前段のモジュール(例えばバッファモジュール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
例えばモジュール生成部44が色変換処理を行うモジュール群を生成するモジュール生成部であり、処理パラメータにより出力画像データの色空間としてCMY色空間が指定され、更に入力画像データがRGB色空間のデータであった場合には、モジュールライブラリ36に登録されている各種の色空間処理を行う複数種の画像処理モジュール38の中から、RGB→CMYの色空間変換を行う画像処理モジュール38が選択・生成される。また、画像処理モジュールが拡大・縮小処理を行う画像処理モジュール38であり、指定された拡大縮小率が50%以外であれば、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール38が選択・生成され、指定された拡大縮小率が50%であれば、拡大縮小率50%に特化した拡大縮小処理、すなわち入力された画像データを1画素おきに間引くことで50%に縮小する縮小処理を行う画像処理モジュール38が選択・生成される。
For example, the
なお、画像処理モジュール38の選択は上記に限られるものではなく、例えば画像処理エンジン38Aによる画像処理における単位処理データ量が異なる画像処理モジュール38をモジュールライブラリ36に複数登録しておき、画像処理部50へ割当可能なメモリ領域のサイズ等の動作環境に応じて、適切な単位処理データ量の画像処理モジュール38を選択する(例えば上記サイズが小さくなるに従って単位処理データ量の小さい画像処理モジュール38を選択する等)ようにしてもよいし、アプリケーション32或いはユーザに選択させるようにしてもよい。また、生成された画像処理モジュール38及びバッファモジュール40には、自モジュールの前段及び後段が何れのモジュールかを識別する識別情報が設定される。
The selection of the
画像処理モジュール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
次に、画像処理部50を構築した後に処理構築部42で行われる画像処理部分割処理の説明に先立ち、上記の処理で構築された画像処理部50で画像処理が行われる際の個々の画像処理モジュール38及びバッファモジュール40の動作を順に説明する。
Next, prior to the description of the image processing unit division processing performed by the
画像処理の実行時には、ワークフロー管理部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
次に、画像処理モジュール38は自モジュールの後段のモジュールに対してデータ出力用の領域を要求し、データ出力領域(後段のモジュールがバッファモジュール40であれば当該バッファモジュール40から先頭アドレスが通知された書込領域)が取得できたら(図3(A)の(4)も参照)、先に前段のモジュールから取得した画像データ、後段のモジュールから取得したデータ出力領域(の先頭アドレス)を画像処理エンジン38Aに入力し、入力したデータに対して所定の画像処理を行わせる(図3(A)の(5)も参照)と共に、処理後のデータをデータ出力領域に書き込ませる(図3(A)の(6)も参照)。そして、画像処理エンジン38Aへの単位読出データ量のデータの入力が完了し、画像処理エンジン38Aから出力されたデータがデータ出力領域に全て書き込まれると、出力完了を後段のモジュールに通知すると共に、先に入力された処理要求に対応する処理を完了したことをワークフロー管理部46Aへ通知する(図3(A)の(7)も参照)。個々の画像処理モジュール38で上記処理が繰り返されることで、画像処理部50における画像処理が実現される。
Next, the
また、バッファモジュール40のバッファ制御部40Bは、予め設定された識別情報で規定されている自モジュールの後段のモジュール(通常は画像処理モジュール38)から画像データが要求されると(図3(B)の(1)も参照)、要求された画像データがバッファ40Aに記憶されているか否かチェックする(図3(B)の(2)も参照)が、読出可能な有効データがバッファ40Aに単位読出データ量以上記憶されていない場合は、ワークフロー管理部46Aに対して画像データを要求する(図3(B)の(3)も参照)。この場合、ワークフロー管理部46Aは、画像データ要求元のバッファモジュール40の前段に位置しているモジュール(通常は画像処理モジュール38)を認識し、認識したモジュールに処理要求を入力する(図3(B)の(4)も参照)。
When the
そして、図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
一方、処理構築部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
次のステップ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
また、第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
次に、画像処理部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
なお、画像処理部50をN個のグループに分割する際の分割方法は上記方法に限られるものではなく、他の分割方法(例えば第2の分割方法において、j個目の画像処理モジュールのCPU処理時間を積算値に加算した段階で積算値が閾値Th以上となった場合に、当該積算値と閾値Thの偏差Aを、j個目の画像処理モジュールのCPU処理時間を加算する前の積算値と閾値Thの偏差Bと比較し、偏差Aが小さければj個目の画像処理モジュールの後段をグループの境界とし、偏差Bが小さければj個目の画像処理モジュールの前段をグループの境界とする等の分割方法)を用いてもよい。
Note that the division method when dividing the
以上のようにして画像処理部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
次のステップ106では、画像処理部50の一部(本発明に係る第2の画像処理部に相当)を分離してサーバ・コンピュータ27で動作させる、所謂画像処理部50の分割が必要か否か判定する。
In the
ステップ106の判定は、以下の何れかの判定を行うことで自動的に行うことができる。すなわち、例えば画像処理部50を構成する個々の画像処理モジュール38のCPU処理時間の総和が第1の閾値以上か否かを判定することで上記判定を行うようにしてもよいし、コンピュータ10に設けられ画像処理部50の動作に利用可能な演算リソースの数(この演算リソースの数は、コンピュータ10に設けられた演算リソースの総数でもよいし、コンピュータ10に設けられた演算リソースのうち現在の使用率が所定値以下の演算リソースの総数でもよい)が第2の閾値以下か否かを判定することで上記判定を行うようにしてもよいし、個々の画像処理モジュール38のCPU処理時間の総和を個々のグループ毎に演算し、CPU処理時間の総和が第2の閾値以上のグループが存在しているか否かを判定することで上記判定を行うようにしてもよい。
Determination of
また、例えば図5(A)に示す画像処理部50では、グループBにおける画像処理の結果とグループCにおける画像処理の結果が揃わないと、グループDで画像処理を行えない構成であるので、処理時間の長時間化を回避するためには、グループBにおける画像処理とグループCにおける画像処理を並列に行うことが望ましい。このため、画像処理部50の構成に基づき並列に実行することが望ましいパスの最大数を判断し(例えば図5(A)に示す構成では上記のパスの最大数は「2」となる)、当該パスの最大数が、コンピュータ10に設けられ画像処理部50の動作に利用可能な演算リソースの数よりも大きいか否かを判定することで、ステップ106の判定を行うようにしてもよい。
Further, for example, the
ステップ106の判定が否定された場合、すなわち画像処理部50の分割が不要と判断した場合はステップ108へ移行し、画像処理部50の各グループをコンピュータ10によって実行されるスレッドとして各々割り付け(各グループのプログラムを実行するスレッドをコンピュータ10上に各々生成し)、画像処理部分割処理を終了する。この場合、画像処理部50はコンピュータ10上のみで動作する(画像処理部50に相当する処理がコンピュータ10のみによって行われる)ことになる。
If the determination in
一方、ステップ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
ステップ112では、分割対象のグループを構成する各モジュールのプログラムを、通信制御部25によってネットワーク26経由でサーバ・コンピュータ27へ転送し、次のステップ114では、記憶部20に記憶されているサーバ用の処理管理部46のプログラムを、通信制御部25によってネットワーク26経由でサーバ・コンピュータ27へ転送する。そしてステップ116では、ステップ112,114で転送した各プログラムの実行をサーバ・コンピュータ27に依頼する。これにより、分割対象のグループ及びサーバ用の処理管理部46が、サーバ・コンピュータ27によって実行されるスレッドとして各々割り付され(分割対象のグループのプログラムを実行するスレッド及びサーバ用の処理管理部46のプログラムを実行するスレッドがサーバ・コンピュータ27上に各々生成され)、各スレッドがサーバ・コンピュータ27によって各々実行される。
In
これにより、例えば図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
そして、サーバ・コンピュータ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
また、次のステップ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
また、本実施形態では、画像処理部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
そしてステップ122では、分割対象のグループ(サーバ・コンピュータ27上で動作するスレッドとしてサーバ・コンピュータ27上に生成されたグループ)以外の各グループを、コンピュータ10によって実行される(コンピュータ10上で動作する)スレッドとしてコンピュータ10上に生成し、画像処理部分割処理を終了する。
In
以上の処理によって画像処理部50の構築が完了すると、コンピュータ10上で動作する処理管理部46のワークフロー管理部46Aは、処理構築部42によってコンピュータ10上に生成された複数のスレッドをコンピュータ10のCPU12(やその他の演算リソース)によって並列に実行させると共に、画像処理部50の最後段に位置している画像処理モジュール38に処理要求を入力する。また、サーバ・コンピュータ27上で動作する処理管理部46のワークフロー管理部46Aも同様に、処理構築部42によってサーバ・コンピュータ27上に生成されたスレッドをサーバ・コンピュータ27のCPU27A(やその他の演算リソース)によって実行させる。
When the construction of the
また、個々のワークフロー管理部46Aは、同一コンピュータ上で動作する任意のバッファモジュール40又は画像処理モジュール38からデータ要求が入力される毎に、入力されたデータ要求におけるデータ要求先が他のコンピュータ上で動作しているモジュールか否か判定し、判定が肯定された場合は他のコンピュータ上で動作しているワークフロー管理部46Aとの間で通信を行うことで、入力されたデータ要求に対応するデータを取得し、取得したデータをデータ要求入力元のモジュールに提供する。以下、この処理について図6を参照して説明する。
Each time the data request is input from any
図6において、画像処理モジュール38は或るコンピュータ(例えばサーバ)上で動作している一方、図6に「前段のバッファモジュール」と表記して示すバッファモジュール40は、画像処理部50の分割により別のコンピュータ(例えばクライアント)上で動作している。本実施形態では、このような場合、上記の画像処理モジュール38に対しては、前段のモジュールが同一のコンピュータ上で動作するワークフロー管理部46A(図6に示す「サーバ側ワークフロー管理部」)であることを表す情報を設定し、上記のバッファモジュール40に対しては、後段のモジュールが同一のコンピュータ上で動作するワークフロー管理部46A(図6に示す「クライアント側ワークフロー管理部」)であることを表す情報を設定している。
In FIG. 6, the
このため、上記の画像処理モジュール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
なお、上記のシーケンスはクライアント(コンピュータ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
また、個々のワークフロー管理部46Aは、同一コンピュータ上で動作する任意のモジュールからデータ要求が入力され、入力されたデータ要求におけるデータ要求先が同一コンピュータ上で動作しているモジュールであると判定した場合は、判定したモジュールにデータ要求を入力し、同一コンピュータ上で動作する任意の画像処理モジュールから処理完了通知が入力される毎に、通知元の画像処理モジュールに処理要求を入力することを、最後段の画像処理モジュールから全体処理の終了(1面分の画像データに対する画像処理の終了)が通知される迄繰り返す。また、サーバ・コンピュータ27上で動作するワークフロー管理部46Aは、サーバ・コンピュータ27上で動作する各モジュールによる画像処理が完了すると、コンピュータ10上で動作するワークフロー管理部46Aに対して画像処理の完了を通知する。なお、個々のワークフロー管理部46Aによる上述した処理も、本発明に係る第1の処理管理部又は第2の処理管理部による管理処理に対応している。そして、個々のワークフロー管理部46Aが上述した処理を行うことで、画像処理部50のうちの分割対象のグループを除く部分がコンピュータ10上で動作すると共に、当該動作と並列に分割対象のグループがサーバ・コンピュータ27上で動作することになり、画像処理部50をコンピュータ10上でのみ動作させる場合よりも処理時間を短縮することができる。
In addition, each
また、画像処理の実行中に何れかのモジュールでエラーが発生した場合、エラーが発生したモジュールがコンピュータ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
個々のエラー管理部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
また、サーバ・コンピュータ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
画像処理部50の一部を分割してサーバ・コンピュータ27上で動作させる際に、処理管理部46をコンピュータ10上にのみ設けた場合、サーバ・コンピュータ27上で動作する個々のモジュールは、リソースの確保時や解放時、エラー発生時、画像処理の実行時に、コンピュータ10上で動作する処理管理部46と通信を行う必要があり、コンピュータ10とサーバ・コンピュータ27の間のトラフィックが大幅に増大すると共に、通信に要する時間分だけ処理が遅延することで、処理効率が大幅に低下する。
When a part of the
これに対して本実施形態では、画像処理部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
なお、上記では画像処理モジュールの数や処理負荷等に基づいて画像処理部50を複数のグループに分割した後に、複数のグループの中からサーバ・コンピュータ27上で動作させるグループを選択することで、画像処理部を、サーバ・コンピュータ27上で動作させる部分(第2の画像処理部)とそれ以外の部分(第1の画像処理部)に分割する態様を説明したが、本発明はこれに限定されるものではなく、例えば画像処理部50を事前に複数のグループに分割することなく、画像処理部50のうち並列に実行することが望ましい部分を直接判断し、判断結果に基づいて画像処理部50を第1の画像処理部と第2の画像処理部に分割するようにしてもよい。
In the above, after dividing the
また、上記では本発明に係る第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
また、上記では本発明に係る画像処理プログラムに対応する画像処理プログラム群34が記憶部20に予め記憶(インストール)されている態様を説明したが、本発明に係る画像処理プログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
In the above description, the image
10 コンピュータ
12 CPU
20 記憶部
27 サーバ・コンピュータ
38 画像処理モジュール
40 バッファモジュール
42 処理構築部
46 処理管理部
50 画像処理部
10
20 storage unit 27
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.
前記分割手段は、前記第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.
前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した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.
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)
| 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)
| 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 |
-
2007
- 2007-08-28 JP JP2007221119A patent/JP5046801B2/en active Active
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 |