JP2007323393A - Image processor and program - Google Patents
Image processor and program Download PDFInfo
- Publication number
- JP2007323393A JP2007323393A JP2006153225A JP2006153225A JP2007323393A JP 2007323393 A JP2007323393 A JP 2007323393A JP 2006153225 A JP2006153225 A JP 2006153225A JP 2006153225 A JP2006153225 A JP 2006153225A JP 2007323393 A JP2007323393 A JP 2007323393A
- Authority
- JP
- Japan
- Prior art keywords
- image processing
- module
- unit
- execution unit
- allocation
- 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.)
- Pending
Links
Images
Landscapes
- Image Input (AREA)
- Image Processing (AREA)
Abstract
Description
本発明は画像処理装置及びプログラムに係り、特に、複数の画像処理モジュールが、パイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を備えた画像処理装置、及び、コンピュータを前記画像処理装置として機能させるための画像処理プログラムに関する。 The present invention relates to an image processing apparatus and a program, and in particular, an image processing apparatus including an image processing unit in which a plurality of image processing modules are connected in a pipeline form or a directed acyclic graph form, and a computer. The present invention relates to an image processing program for functioning as an image processing apparatus.
入力された画像データに対して画像処理を行う画像処理装置や、画像を取扱可能なDTP(デスクトップ・パブリッシング)システム、入力された画像データが表す画像を記録材料に記録するプリントシステム等では、入力された画像データに対して拡大・縮小、回転、アフィン変換、色変換、フィルタ処理、画像合成等の各種の画像処理が行われる。これらの装置やシステムにおいて、入力される画像データの属性や画像データに対する画像処理の内容・手順・パラメータ等が固定されている場合には、専用に設計したハードウエアによって画像処理を行わせる場合もあるが、例えば色空間や1画素当たりのビット数が異なる様々な画像データが入力されたり、画像処理の内容や手順・パラメータ等が様々に変更される場合には、実行する画像処理をより柔軟に変更可能な構成が必要となる。 In an image processing apparatus that performs image processing on input image data, a DTP (desktop publishing) system that can handle images, a printing system that records an image represented by input image data on a recording material, etc. Various kinds of image processing such as enlargement / reduction, rotation, affine transformation, color conversion, filter processing, and image composition are performed on the image data that has been processed. In these devices and systems, if the attributes of the input image data and the contents, procedures, parameters, etc. of the image processing for the image data are fixed, the image processing may be performed by specially designed hardware. However, for example, when various image data with different color space and the number of bits per pixel are input, or when the contents, procedures, and parameters of image processing are changed variously, the image processing to be executed is more flexible. A changeable configuration is required.
このような要求を満たすために、例えば特許文献1には、プログラマブルな処理モジュールをパイプライン形態やDAG(Directed Acyclic Graph:有向非循環グラフ)形態に接続して、所望の画像処理を行うことを可能とする技術が提案されている。特許文献1に記載の技術では、複数のプログラマブル演算処理部の各々における演算処理の内容と、ネットワーク部による各プログラマブル演算処理部の接続形態を、ホストコントロール手段を通じて外部から自在に設定できるように構成することで、高速かつ高度な演算処理が可能で、機能変更や系統変更に対する自由度が高いデジタル映像信号処理装置を実現している。
In order to satisfy such a requirement, for example, in
また、上記に関連して以下の技術が知られている。すなわち、特許文献2には、複数の記憶手段と、時分割された処理の一つである実行単位について、複数の記憶手段のうちの入力用の単一の記憶手段から入力データを受け取り、出力用の単一の記憶手段に処理結果を記憶するデータ処理手段と、記憶手段のデータ記憶量の情報から実行単位の実行状況を求め、実行単位の起動優先度を決定する起動優先度決定手段を備えたプロセッサが開示されている。
Further, the following techniques are known in relation to the above. In other words,
また、特許文献3には、マルチプロセサシステムにおいて、単体処理ユニットの優先度や処理結果の依存性に基づいてストール時間(次の処理が開始可能となる条件が満たされるまで処理を行わずに停止している時間)が生じないようにスケジューリングを行う技術が開示されている。
Further, in
更に、特許文献4には、並列動作する複数の画像処理プロセスで必要とする最低限の画像メモリ量を予め算出し、システム起動時に算出した必要量の画像メモリをリザーブすると共に、リザーブされていないメモリのメモリ使用量が動的に変化した場合に各画像処理プロセスに通知することで、各画像処理プロセスの中断を防止しメモリ割り当ての効率化を実現する技術が開示されている。
特許文献1に記載の技術のように、複数種の画像処理モジュールをパイプライン形態やDAG形態に接続して画像処理部を構築すると共に、画像処理部を構成する個々の画像処理モジュールを並列に動作させて所望の画像処理を行わせる場合、個々の画像処理モジュールは、画像処理の実行に必要なメモリの取得・解放を繰り返しながら一定量の画像データを単位として画像処理を繰り返すことになる。しかしながら、この構成では、或る画像処理モジュールで画像処理の実行に必要なメモリを取得できない状況が発生すると、上記の画像処理モジュールで画像処理を継続できないために、結果として画像処理部で行っている画像処理全体も失敗に終わってしまうという問題があった。
As in the technique described in
また、特許文献4に記載の技術は、個々の画像処理プロセスが必要とする最低限の画像メモリ量をシステム起動時にリザーブするので、個々の画像処理プロセスが最低限の画像メモリ量で動作している間は、特定の画像処理プロセスがメモリを取得できないことで画像処理全体が失敗に終わってしまうことを回避できる。しかしながら、特許文献4に記載の技術では、或る画像処理プロセスが高解像度の画像を扱うために、通常の画像を扱う場合よりも大量のメモリを必要としている状況で、必要量のメモリが取得できなかった場合はメモリ不足エラー処理が行われるので、ユーザが高解像度の画像に対する画像処理の実行を所望していたとしても、メモリ不足が生じているとユーザが所望する画像処理が行われないことになる。
The technique described in
本発明は上記事実を考慮して成されたもので、パイプライン形態又は有向非循環グラフ形態で連結された複数の画像処理モジュールのうち、互いに異なる画像処理モジュールに対応する複数の実行単位プログラムを並列に実行させて画像処理を行う構成において、記憶リソースが一時的に不足しても画像処理全体を継続させることが可能な画像処理装置及び画像処理プログラムを得ることが目的である。 The present invention has been made in consideration of the above facts, and a plurality of execution unit programs corresponding to different image processing modules among a plurality of image processing modules connected in a pipeline form or a directed acyclic graph form. The object of the present invention is to obtain an image processing apparatus and an image processing program capable of continuing the entire image processing even if storage resources are temporarily insufficient in a configuration in which image processing is performed in parallel.
上記目的を達成するために請求項1記載の発明に係る画像処理装置は、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する処理を記憶リソースを使用して行う機能を備えた複数の画像処理モジュールが、パイプライン形態又は有向非循環グラフ形態で連結されて成り、互いに異なる単一又は複数の画像処理モジュールに対応しかつ対応する画像処理モジュールが使用する記憶リソースの割当及び解放を要求する複数の実行単位プログラムが、プログラム実行リソースによって並列に実行されることによって動作する画像処理部と、任意の実行単位プログラムから記憶リソースの割当が要求される毎に、割当が要求された記憶リソースを前記割当要求元の実行単位プログラムに割当可能か否かを判定し、割当可能でないと判断した場合に前記割当要求元の実行単位プログラムの動作を停止させると共に、前記割当が要求された記憶リソースを前記動作を停止させた前記割当要求元の実行単位プログラムに割当可能になったと判断した場合に、前記動作を停止させた前記割当要求元の実行単位プログラムの動作を再開させ、前記動作を再開させた前記割当要求元の実行単位プログラムに前記割当が要求された記憶リソースを割り当てる管理手段と、を含んで構成されている。 In order to achieve the above object, an image processing apparatus according to the first aspect of the present invention acquires image data from the previous stage of its own module, performs predetermined image processing on the acquired image data, and receives the image processing. Alternatively, a plurality of image processing modules having a function of using a storage resource to output the processing result of the image processing to the subsequent stage of the own module are connected in a pipeline form or a directed acyclic graph form. A plurality of execution unit programs corresponding to different or different image processing modules and requesting allocation and release of storage resources used by the corresponding image processing modules are executed in parallel by the program execution resources; Every time storage resource allocation is requested by the running image processor and any execution unit program It is determined whether or not the requested storage resource can be allocated to the allocation request source execution unit program. When it is determined that the allocation is not possible, the operation of the allocation request source execution unit program is stopped and the allocation is performed. When it is determined that the requested storage resource can be allocated to the execution unit program of the allocation request source that stopped the operation, the operation of the execution unit program of the allocation request source that stopped the operation is restarted. And management means for allocating the storage resource requested to be allocated to the execution unit program of the allocation request source that has resumed the operation.
請求項1記載の発明に係る画像処理部は、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する処理を記憶リソース(例えばメモリやHDD(Hard Disk Drive)等)を使用して行う機能を備えた複数の画像処理モジュールが、パイプライン形態又は有向非循環グラフ形態で連結されて構成されている。また、この画像処理部は、互いに異なる単一又は複数の画像処理モジュールに対応しかつ対応する画像処理モジュールが使用する記憶リソースの割当及び解放を要求する複数の実行単位プログラムが、プログラム実行リソースによって並列に実行されることによって動作する。なお、プログラム実行リソースとしては、例えばCPU、或いはMMX(MultiMedia eXtention)用の演算器やSSE (Streaming SIMD Extension)用の演算器、或いはCPUと別に設けられたDSP(Digital Signal Processor)等の高速演算器等が挙げられる。 The image processing unit according to the first aspect of the present invention acquires image data from the previous stage of its own module, performs predetermined image processing on the acquired image data, and the image data subjected to the image processing or the processing result of the image processing A plurality of image processing modules having a function of using a storage resource (for example, memory, HDD (Hard Disk Drive), etc.) to output to the subsequent stage of the own module is in a pipeline form or a directed acyclic graph form Concatenated with. The image processing unit also includes a plurality of execution unit programs corresponding to different image processing modules or a plurality of execution unit programs that request allocation and release of storage resources used by the corresponding image processing modules. It works by being executed in parallel. As the program execution resource, for example, a CPU, an arithmetic unit for MMX (MultiMedia eXtention), an arithmetic unit for SSE (Streaming SIMD Extension), or a DSP (Digital Signal Processor) provided separately from the CPU is used. For example.
なお、複数の実行単位プログラムの各々は、例えば互いに独立したプロセス又はスレッドとしてプログラム実行リソースで並列に実行させることができる。また、単一の実行単位プログラムが複数の画像処理モジュールに対応している場合、同一の実行単位プログラムに対応する複数の画像処理モジュールは、例えば記憶リソース等を共有するスレッドとしてプログラム実行リソースで並列に実行させることができる。これにより、請求項1記載の発明では、画像処理部を構成する個々の画像処理モジュールが並列に動作し、個々の実行単位プログラムからは、対応する画像処理モジュールが使用する記憶リソースの割当要求及び解放要求が非同期に出力される。 Each of the plurality of execution unit programs can be executed in parallel by a program execution resource, for example, as an independent process or thread. In addition, when a single execution unit program corresponds to a plurality of image processing modules, a plurality of image processing modules corresponding to the same execution unit program are parallelized with program execution resources as threads that share storage resources, for example. Can be executed. Thus, according to the first aspect of the present invention, the individual image processing modules constituting the image processing unit operate in parallel, and from each execution unit program, an allocation request for storage resources used by the corresponding image processing module and Release request is output asynchronously.
ここで、或る実行単位プログラムが記憶リソースの割当要求を出力した際に、割当可能な記憶リソースが不足していた場合、対応する画像処理モジュールが画像処理を実行不能な状態に陥ることに基づき、従来はエラーを出力して画像処理部における画像処理全体を中止していたが、割当可能な記憶リソースの量は常に変動していることが多く、割当が要求されたタイミングで、要求された記憶リソースが割当可能でない状態であったとしても、時間をおけば要求された記憶リソースが割当可能な状態へ変化する可能性もある。 Here, when a certain execution unit program outputs a storage resource allocation request, if there is a shortage of allocatable storage resources, the corresponding image processing module falls into an inexecutable state. In the past, an error was output and the entire image processing in the image processing unit was stopped, but the amount of storage resources that can be allocated is often fluctuating constantly, and was requested at the timing when allocation was requested. Even if the storage resource is not assignable, the requested storage resource may change to an assignable state over time.
上記に基づき、請求項1記載の発明に係る管理手段は、任意の実行単位プログラムから記憶リソースの割当が要求される毎に、割当が要求された記憶リソースを割当要求元の実行単位プログラムに割当可能か否かを判定し、割当可能でないと判断した場合に割当要求元の実行単位プログラムの動作を停止させる。また、割当が要求された記憶リソースを前記動作を停止させた割当要求元の実行単位プログラムに割当可能になったと判断した場合に、動作を停止させた割当要求元の実行単位プログラムの動作を再開させ、動作を再開させた割当要求元の実行単位プログラムに割当が要求された記憶リソースを割り当てる。 Based on the above, the management means according to the first aspect of the invention allocates the storage resource requested for allocation to the execution unit program of the allocation request source every time the allocation of the storage resource is requested by an arbitrary execution unit program. It is determined whether or not allocation is possible, and when it is determined that allocation is not possible, the operation of the execution unit program of the allocation request source is stopped. In addition, when it is determined that the storage resource requested to be allocated can be allocated to the execution unit program of the allocation request source that stopped the operation, the operation of the execution unit program of the allocation request source that stopped the operation is resumed. The storage resource requested for allocation is allocated to the execution unit program of the allocation request source that has resumed operation.
このように、請求項1記載の発明では、割当が要求された記憶リソースを割当可能でない状態であった場合に、エラーを出力せずに割当要求元の実行単位プログラムの動作を停止させることで、当該実行単位プログラムに対応する画像処理モジュールによる画像処理を中断させ、その後、割当が要求された記憶リソースを割当可能な状態へ変化すると、動作を停止させた実行単位プログラムの動作を再開させ(画像処理モジュールによる画像処理を再開させ)、割当が要求された記憶リソースを割り当てるので、パイプライン形態又は有向非循環グラフ形態で連結された複数の画像処理モジュールのうち、互いに異なる画像処理モジュールに対応する複数の実行単位プログラムを並列に実行させて画像処理を行う構成において、記憶リソースが一時的に不足しても画像処理全体を継続させることが可能となる。 Thus, according to the first aspect of the present invention, when the storage resource requested to be allocated cannot be allocated, the operation of the execution unit program of the allocation request source is stopped without outputting an error. When the image processing by the image processing module corresponding to the execution unit program is interrupted and then the storage resource requested to be allocated is changed to an allocatable state, the operation of the execution unit program that has stopped the operation is resumed ( The image processing by the image processing module is resumed), and the storage resource requested to be allocated is allocated. Therefore, among the plurality of image processing modules connected in the pipeline form or the directed acyclic graph form, different image processing modules are used. In a configuration for executing image processing by executing a plurality of corresponding execution unit programs in parallel, a storage resource It is possible also to continue the entire image processing temporarily insufficient.
なお、請求項1記載の発明において、画像処理部は、例えば請求項2に記載したように、複数の画像処理モジュールの各々の前段及び後段の少なくとも一方に、記憶リソースから成るバッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データをバッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールが連結されて構成されていることが望ましい。この場合、複数の実行単位プログラムは、互いに異なる単一又は複数の画像処理モジュール及び互いに異なる単一又は複数のバッファモジュールの少なくとも一方に対応することになるが、バッファモジュールも記憶リソースをバッファとして使用するので、バッファモジュールに対応する実行単位プログラムは、対応するバッファモジュールが使用する記憶リソースの割当及び解放を要求するように構成される。 In the first aspect of the present invention, the image processing unit includes a buffer composed of storage resources at least one of the front and rear stages of each of the plurality of image processing modules. When the image processing module is connected to the previous stage of the module, the image data output from the previous image processing module is written to the buffer, and when the image processing module is connected to the subsequent stage of the module, It is desirable that a buffer module for reading out the image data stored in the buffer by the image processing module in the subsequent stage is connected. In this case, the plurality of execution unit programs correspond to at least one of different single or plural image processing modules and different single or plural buffer modules, but the buffer module also uses the storage resource as a buffer. Therefore, the execution unit program corresponding to the buffer module is configured to request allocation and release of storage resources used by the corresponding buffer module.
画像処理部を構成する個々の画像処理モジュールには、実行する画像処理の種類や内容に応じて処理し易い単位(例えば画素単位、1ライン単位、複数ライン単位、面単位等)がある。しかし、各画像処理モジュールを任意の順番で連結し協調して処理することを可能とするためには、全ての画像処理モジュールの出力単位を揃えるか、或いは各画像処理モジュールが任意の入力単位に対応可能に構成する必要があり、個々の画像処理モジュールの構成が複雑になる。これに対して上記のように、複数の画像処理モジュールの各々の前段及び後段の少なくとも一方にバッファモジュールを連結すれば、個々の画像処理モジュールにおける画像データの取得及び出力を、実行する画像処理の種類や内容等に応じたサイズ単位で行うことが可能となり、個々の画像処理モジュールの構成を簡略化することができる。 Each image processing module constituting the image processing unit has a unit (for example, a pixel unit, one line unit, a plurality of line units, a surface unit, etc.) that can be easily processed according to the type and content of the image processing to be executed. However, in order to be able to connect the image processing modules in an arbitrary order and process them in a coordinated manner, the output units of all the image processing modules are aligned, or each image processing module is set to an arbitrary input unit. It is necessary to configure so as to be compatible, and the configuration of each image processing module becomes complicated. On the other hand, as described above, if a buffer module is connected to at least one of the preceding stage and the succeeding stage of each of the plurality of image processing modules, acquisition and output of image data in each image processing module can be performed. This can be performed in units of size according to the type and contents, and the configuration of each image processing module can be simplified.
また、請求項1又は請求項2記載の発明において、割当が要求された記憶リソースを割当可能でないと判断することで割当要求元の実行単位プログラムの動作を停止させた場合、管理手段は、例えば請求項3に記載したように、割当が要求された記憶リソースを割当可能でないと判断することで動作を停止させている割当要求元の実行単位プログラムが存在している間、割当が要求された記憶リソースを割当要求元の実行単位プログラムに割当可能になったか否かを定期的に(例えば一定の時間周期で)判定するように構成するようにしてもよいし、例えば請求項4に記載したように、別の実行単位プログラムからの要求に従って記憶リソースが解放される毎に、割当が要求された記憶リソースを割当要求元の実行単位プログラムに割当可能になったか否かを判定するように構成してもよい。これにより、割当が要求された記憶リソースを割当可能になったかを常時監視する等の態様と比較して、管理手段に加わる負荷を抑制しつつ、割当が要求された記憶リソースを割当可能になったことを早期に検知することができる。
Further, in the invention according to
また、割当要求時に個々の実行単位プログラムが必要としている記憶リソース量は相違している可能性が高いことを考慮すると、請求項1乃至請求項4の何れかに記載の発明において、個々の実行単位プログラムは、記憶リソースの割当要求時に必要な記憶リソース量を通知するように構成することが望ましく、管理手段は、例えば請求項5に記載したように、割当可能な記憶リソース量(例えば請求項4記載の発明では、割当可能な既存の記憶リソース量と、別の実行単位プログラムからの要求に従って解放された記憶リソース量の合算値が、上記の割当可能な記憶リソース量になる)が通知された必要記憶リソース量以上か否かを判断することで、割当が要求された記憶リソースを割当要求元の実行単位プログラムに割当可能か否かを判定するように構成することが好ましい。これにより、割当が要求された記憶リソースを割当可能か否かを正確に判定できると共に、1回の割当要求で割り当てる記憶リソース量を固定する場合と比較して、記憶リソースの使用効率を向上させることができる。
Further, in consideration of the fact that there is a high possibility that the storage resource amount required by each execution unit program at the time of allocation request is different, in the invention according to any one of
また、割当が要求された記憶リソースが割当可能でなかった場合、割当要求元の実行単位プログラム以外のプログラム(例えば他の実行単位プログラムや、本発明に係る画像処理部に対応する複数の実行単位プログラムと並列に実行されている他のプログラムが存在している場合は当該他のプログラムを含む)による記憶リソースの使用状況によっては、割当が要求された記憶リソースが割当可能となる迄に非常に長い時間が掛かる可能性もある。そしてその場合、画像処理部における処理も長時間化するので、画像処理部における処理の完了を待っているユーザに大きな負担が掛かる可能性がある。このため、請求項1乃至請求項5の何れかに記載の発明において、管理手段は、例えば請求項6に記載したように、割当が要求された記憶リソースを割当可能でないと判断することで動作を停止させている割当要求元の実行単位プログラムの動作停止時間が所定時間を越えた場合に、エラーを出力して画像処理部による処理を中止させることが好ましい。これにより、画像処理部における処理の完了を待っているユーザに大きな負担が掛かることを防止することができる。
Further, when the storage resource requested to be allocated cannot be allocated, a program other than the execution unit program of the allocation request source (for example, another execution unit program or a plurality of execution units corresponding to the image processing unit according to the present invention) Depending on the use of storage resources by other programs that are executed in parallel with the program (including the other programs), it is very difficult to allocate the requested storage resources. It can take a long time. In that case, since the processing in the image processing unit also takes a long time, there is a possibility that a large burden is placed on the user waiting for the completion of the processing in the image processing unit. For this reason, in the invention according to any one of
また、請求項1乃至請求項5の何れかに記載の発明において、管理手段は、請求項7に記載したように、任意の実行単位プログラムから割当が要求された記憶リソースを割当可能でないと判断し、かつ、画像処理部に対応する他の全ての実行単位プログラムが、割当が要求された記憶リソースが割当可能でないと判断することで動作を停止させている第1の状態、又は、対応する画像処理モジュールが自モジュールの前段から画像データを取得できずに処理を停止している第2の状態である場合に、エラーを出力して画像処理部による処理を中止させるように構成してもよい。上記のように、画像処理部に対応する実行単位プログラムのうち、割当要求元の実行単位プログラム以外の全ての実行単位プログラムが上記の第1の状態又は第2の状態であり、かつ割当要求元の実行単位プログラムにも割当が要求された記憶リソースを割当可能でない場合、画像処理部における処理は完全に停止しており、このような場合にエラーを出力して画像処理部による処理を中止させることで、画像処理部における処理の完了を待っているユーザに大きな負担が掛かることを防止することができる。
Further, in the invention according to any one of
なお、請求項6、7記載の発明において、画像処理部による処理を中止させることは、例えば動作を停止させている要求元の実行単位プログラムの動作を再開させると共に、動作を再開させた実行単位プログラムからの記憶リソースの割当要求に対してエラーを返すことによって実現することができる。
In addition, in the inventions according to
また、請求項1乃至請求項7の何れかに記載の発明において、管理手段は、例えば請求項8に記載したように、割当が要求された記憶リソースを割当可能でないと判断することで動作を停止させた割当要求元の実行単位プログラムからの割当要求を待ち行列に登録すると共に、任意のタイミングで待ち行列に登録されている割当要求を取り出し、取り出した割当要求によって割当が要求されている記憶リソースを取り出した割当要求に対応する割当要求元の実行単位プログラムに割当可能になったか否かを判定するように構成することができる。これにより、割当が要求された記憶リソースを割当可能でないと判断することで動作を停止させた実行単位プログラムが複数存在している場合にも、これらを記憶すると共に記憶リソースを割当可能になったか否かを任意のタイミングで判定する処理が簡単になる。なお、上記の待ち行列による管理は、特に動作を停止させた実行単位プログラムが複数存在している場合に有効であるので、動作を停止させた実行単位プログラムが複数存在している場合にのみ待ち行列による管理を行うようにしてもよい。
Also, in the invention according to any one of
また、請求項8記載の発明において、管理手段は、例えば請求項9に記載したように、待ち行列から割当要求を取り出し、取り出した割当要求によって割当が要求されている記憶リソースを割当可能になったか否かを判定した結果、記憶リソースが割当可能になっていないと判断した場合に、取り出した割当要求を前記待ち行列に再度登録すると共に、待ち行列に複数の割当要求が登録されている場合に、待ち行列から単一の割当要求を取り出し、取り出した単一の割当要求によって割当が要求されている記憶リソースを割当可能になったか否かを判定する処理を、複数の割当要求に対して待ち行列への登録順に行うように構成することができる。上記のように、待ち行列への登録順に待ち行列から割当要求を取り出して記憶リソースを割当可能になったか否かを判定することで、割当が要求された記憶リソースを割当可能でないと判断することで動作を停止させた複数の実行単位プログラムの動作停止時間を平均化することができる。
Further, in the invention described in
また、請求項8記載の発明において、管理手段は、例えば請求項10に記載したように、待ち行列に複数の割当要求が登録されている場合に、待ち行列から単一の割当要求を取り出し、取り出した単一の割当要求によって割当が要求されている記憶リソースを割当可能になったか否かを判定する処理を、待ち行列に登録されている個々の割当要求に対応する割当要求元の実行単位プログラムの実行優先度の降順に行うように構成してもよい。この場合、割当が要求された記憶リソースを割当可能でないと判断することで動作を停止させた複数の実行単位プログラムのうち、実行優先度のより高い実行単位プログラムの動作停止時間が優先的に短縮されることになり、記憶リソースの不足が生じた場合の画像処理部における処理の効率化を実現できる。
Further, in the invention according to
また、請求項8乃至請求項10の何れかに記載の発明において、管理手段は、例えば請求項11に記載したように、第1の実行単位プログラムから記憶リソースの割当が要求されたときに、第2の実行単位プログラムからの割当要求が待ち行列に既に登録されている場合に、第1の実行単位プログラムからの割当要求をそのまま待ち行列に登録するか、又は、第1の実行単位プログラムからの割当要求によって割当が要求されている記憶リソースを割当可能か否か判定し、記憶リソースが割当可能と判断したときには、第1の実行単位プログラムに割当が要求された記憶リソースを割り当て、記憶リソースが割当可能でないと判断したときには、第1の実行単位プログラムからの割当要求を前記待ち行列に登録するように構成することができる。
Further, in the invention according to any one of
また、請求項8乃至請求項10の何れかに記載の発明において、管理手段は、例えば請求項12に記載したように、第1の実行単位プログラムから記憶リソースの割当が要求されたときに、第2の実行単位プログラムからの割当要求が待ち行列に既に登録されている場合に、第1の実行単位プログラムの実行優先度が第2の実行単位プログラムの実行優先度よりも高いか否か判定し、第1の実行単位プログラムの実行優先度が第2の実行単位プログラムの実行優先度よりも高いときには、第1の実行単位プログラムからの割当要求によって割当が要求されている記憶リソースを割当可能か否か判定し、記憶リソースが割当可能であれば第1の実行単位プログラムに割当が要求された記憶リソースを割り当て、記憶リソースが割当可能でなければ第1の実行単位プログラムからの割当要求を待ち行列に登録する一方、第1の実行単位プログラムの実行優先度が第2の実行単位プログラムの実行優先度以下のときには、第1の実行単位プログラムからの割当要求をそのまま待ち行列に登録するように構成してもよい。
Further, in the invention according to any one of
また、請求項10又は請求項12記載の発明において、管理手段は、例えば請求項13に記載したように、画像処理部を構成する個々の画像処理モジュールの処理負荷を予め推定した結果に応じて、対応する個々の実行単位プログラムの実行優先度を設定するように構成することができる。個々の画像処理モジュールの処理負荷に応じた個々の実行単位プログラムの実行優先度の設定は、例えば処理負荷が高いと推定される画像処理モジュールに対応する実行単位プログラムの実行優先度を高くする一方で、対応する画像処理モジュールの中に処理負荷が高いと推定される画像処理モジュールが存在していない実行単位プログラムの実行優先度を低くする等によって実現できる。このように、個々の画像処理モジュールの処理負荷を予め推定した結果に応じて、対応する個々の実行単位プログラムの実行優先度を設定することで、個々の実行単位プログラムの実行優先度を適正に設定することができ、記憶リソースの不足が生じた場合の画像処理部における処理の効率化を実現できる。
Further, in the invention according to claim 10 or
また、請求項10又は請求項12記載の発明において、管理手段は、例えば請求項14に記載したように、画像処理部を構成する個々の画像処理モジュールのパイプライン形態又は有向非循環グラフ形態の連結形態における位置に応じて、対応する個々の実行単位プログラムの実行優先度の初期設定を行うと共に、画像処理部における画像処理の進行度合に応じて個々の実行単位プログラムの実行優先度を変更するように構成してもよい。上記の実行優先度の初期設定は、例えばパイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュールの位置が前段側になるに従って、対応する実行単位プログラムの実行優先度が高くなるように行うことができ、画像処理の進行度合に応じた実行単位プログラムの実行優先度の変更は、例えば画像処理の進行に伴い、前段側に位置している画像処理モジュールに対応する実行単位プログラムの実行優先度が低下し、かつ後段側に位置している画像処理モジュールに対応する実行単位プログラムの実行優先度が増大するように行うことができる。これにより、個々の実行単位プログラムの実行優先度を、画像処理部における処理の進行度合の変化に拘わらず最適化することができ、記憶リソースの不足が生じた場合の画像処理部における処理の更なる効率化を実現できる。
Further, in the invention according to claim 10 or
また、請求項14記載の発明において、請求項2記載の発明と同様に、画像処理部が、複数の画像処理モジュールの各々の前段及び後段の少なくとも一方に、記憶リソースから成るバッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、バッファに記憶されている画像データを、後段の画像処理モジュールによって読み出させるバッファモジュールが連結されて成り、実行単位プログラムが、互いに異なる単一又は複数の画像処理モジュール及び互いに異なる単一又は複数のバッファモジュールの少なくとも一方に対応し、バッファモジュールに対応する実行単位プログラムが、対応するバッファモジュールが使用する記憶リソースの割当及び解放を要求する構成である場合、管理手段は、例えば請求項15に記載したように、画像処理の進行度合として、個々のバッファモジュールの後段の画像処理モジュールが前記個々のバッファモジュールから画像データを取得する際の単位データ量に対する、個々のバッファモジュールに記憶されている画像データのデータ量の比率を用い、個々のバッファモジュールにおける前記比率に応じて、対応する個々の実行単位プログラムの実行優先度を変更するように構成することができる。
Further, in the invention described in
また、請求項14記載の発明において、管理手段は、例えば請求項16に記載したように、画像処理の進行度合として、個々の画像処理モジュールにおける(前段のモジュールからの)画像データの取得失敗回数を用い、個々の画像処理モジュールにおける取得失敗回数に応じて、対応する個々の実行単位プログラムの実行優先度を変更するように構成することも可能である。
Further, in the invention described in
請求項17記載の発明に係る画像処理プログラムは、記憶リソース及びプログラム実行リソースを有するコンピュータを、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する処理を記憶リソースを使用して行う機能を備えた複数の画像処理モジュールが、パイプライン形態又は有向非循環グラフ形態で連結されて成り、互いに異なる単一又は複数の画像処理モジュールに対応しかつ対応する画像処理モジュールが使用する記憶リソースの割当及び解放を要求する複数の実行単位プログラムが、プログラム実行リソースによって並列に実行されることによって動作する画像処理部、及び、任意の実行単位プログラムから記憶リソースの割当が要求される毎に、割当が要求された記憶リソースを前記割当要求元の実行単位プログラムに割当可能か否かを判定し、割当可能でないと判断した場合に前記割当要求元の実行単位プログラムの動作を停止させると共に、前記割当が要求された記憶リソースを前記動作を停止させた前記割当要求元の実行単位プログラムに割当可能になったと判断した場合に、前記動作を停止させた前記割当要求元の実行単位プログラムの動作を再開させると共に、前記動作を再開させた前記割当要求元の実行単位プログラムに前記割当が要求された記憶リソースを割り当てる管理手段として機能させる。 An image processing program according to claim 17 is a computer having a storage resource and a program execution resource, acquires image data from the previous stage of its own module, performs predetermined image processing on the acquired image data, and executes the image processing A plurality of image processing modules having a function of using a storage resource to output image data that has undergone processing or a processing result of the image processing to a subsequent stage of the own module in a pipeline form or a directed acyclic graph form Multiple execution unit programs that are linked and correspond to single or multiple different image processing modules and that require allocation and release of storage resources used by the corresponding image processing modules are executed in parallel by the program execution resources Image processing unit that operates by being executed, and an arbitrary execution unit program Each time a storage resource allocation is requested from a program, it is determined whether or not the storage resource requested for allocation can be allocated to the execution unit program of the allocation request source. The operation of the original execution unit program is stopped, and the operation is stopped when it is determined that the storage resource requested to be allocated can be assigned to the execution unit program of the allocation request source that has stopped the operation. The operation of the execution unit program of the allocation request source that has been assigned is resumed, and at the same time, the operation unit program that has resumed the operation is caused to function as a management unit that assigns the storage resource requested to be assigned.
請求項17記載の発明に係る画像処理プログラムは、記憶リソース及びプログラム実行リソースを有するコンピュータを、上記の画像処理部及び管理手段として機能させるためのプログラムであるので、上記のコンピュータが請求項17記載の発明に係る画像処理プログラムを実行することにより、上記のコンピュータが請求項1に記載の画像処理装置として機能することになり、請求項1記載の発明と同様に、パイプライン形態又は有向非循環グラフ形態で連結された複数の画像処理モジュールのうち、互いに異なる画像処理モジュールに対応する複数の実行単位プログラムを並列に実行させて画像処理を行う構成において、記憶リソースが一時的に不足しても画像処理全体を継続させることが可能となる。
The image processing program according to the invention described in claim 17 is a program for causing a computer having a storage resource and a program execution resource to function as the image processing unit and the management means. By executing the image processing program according to the present invention, the computer functions as the image processing apparatus according to
以上説明したように本発明は、任意の実行単位プログラムから記憶リソースの割当が要求される毎に、割当が要求された記憶リソースを割当可能か否かを判定し、割当可能でないと判断した場合に割当要求元の実行単位プログラムの動作を停止させると共に、割当が要求された記憶リソースを割当可能になったと判断した場合に、動作を停止させた割当要求元の実行単位プログラムの動作を再開させ、動作を再開させた割当要求元の実行単位プログラムに記憶リソースを割り当てるようにしたので、パイプライン形態又は有向非循環グラフ形態で連結された複数の画像処理モジュールのうち、互いに異なる画像処理モジュールに対応する複数の実行単位プログラムを並列に実行させて画像処理を行う構成において、記憶リソースが一時的に不足しても画像処理全体を継続させることが可能となる、という優れた効果を有する。 As described above, the present invention determines whether or not a storage resource requested for allocation can be allocated every time storage resource allocation is requested from an arbitrary execution unit program. The operation of the execution unit program of the allocation request source is stopped and the operation of the execution unit program of the allocation request source that stopped the operation is restarted when it is determined that the storage resource requested to be allocated can be allocated. Since the storage resource is allocated to the execution unit program of the allocation request source whose operation has been resumed, among the plurality of image processing modules connected in a pipeline form or a directed acyclic graph form, different image processing modules In a configuration that performs image processing by executing multiple execution unit programs corresponding to the It is possible also to continue the whole image processing and, has an excellent effect that.
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図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、メモリ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
図1に示すように、記憶部20には、CPU12によって実行される各種のプログラムとして、メモリ14等のリソースの管理やCPU12によるプログラムの実行の管理、コンピュータ10と外部との通信等を司るオペレーティングシステム30のプログラム、コンピュータ10を本発明に係る画像処理装置として機能させるための画像処理プログラム群34、CPU12が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション32のプログラム(図1ではアプリケーションプログラム群32と表記)が各々記憶されている。
As shown in FIG. 1, 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面分と説明したが、同じ画像回転処理を行う画像処理モジュール38で単位処理データ量が画像の1ライン分又は画像の複数ライン分であるものがモジュールライブラリ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)にも示すように、コンピュータ10に設けられたメモリ14からオペレーティングシステム30を通じて確保されたメモリ領域で構成されるバッファ40Aと、バッファモジュール40の前段及び後段のモジュールとの画像データの入出力及びバッファ40Aの管理を行うバッファ制御部40Bから構成されている。個々のバッファモジュール40のバッファ制御部40Bもその実体はCPU12によって実行されるプログラムであり、モジュールライブラリ36にはバッファ制御部40Bのプログラムも登録されている(図1ではバッファ制御部40Bのプログラムを「バッファモジュール」と表記して示している)。
Each
また、アプリケーション32からの指示に従って画像処理部50を構築する処理構築部42は、図1に示すように複数種のモジュール生成部44から構成されている。複数種のモジュール生成部44は互いに異なる画像処理に対応しており、アプリケーション32によって起動されることで、対応する画像処理を実現するための画像処理モジュール38及びバッファモジュール40から成るモジュール群を生成する処理を行う。なお、図1ではモジュール生成部44の一例として、モジュールライブラリ36に登録されている個々の画像処理モジュール38が実行する画像処理の種類に対応するモジュール生成部44を示しているが、個々のモジュール生成部44に対応する画像処理は、複数種の画像処理モジュール38によって実現される画像処理(例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理)であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション32は複数種の画像処理の何れかに対応するモジュール生成部44を順次起動する。これにより、アプリケーション32によって順次起動されたモジュール生成部44により、必要とされる画像処理を行う画像処理部50が構築されることになる。
Further, the
また図1に示すように、処理管理部46は、画像処理部50における画像処理の実行を制御するワークフロー管理部46A、画像処理部50の各モジュールによるメモリ14や各種のファイル等のコンピュータ10のリソースの使用を管理するリソース管理部46B、及び、画像処理部50で発生したエラーを管理するエラー管理部46Cを含んで構成されている。なお、本実施形態において、処理構築部42によって構築される画像処理部50は、画像処理部50を構成する個々の画像処理モジュール38が、画像1面分よりも小さいデータ量を単位として後段へ画像データを引き渡しながら並列に画像処理を行うように動作する(ブロック単位処理と称する)。
As shown in FIG. 1, the
なお、エラー管理部46Cは、画像処理部50が画像処理を実行している途中でエラーが発生した場合に、発生したエラーの種別・発生箇所等のエラー情報を取得し、画像処理プログラム群34がインストールされたコンピュータ10が組み込まれている機器の種別や構成等を表す装置環境情報を記憶部20等から取得し、取得した装置環境情報が表す装置環境に応じたエラー通知方法を判断し、判断したエラー通知方法でエラーの発生を通知する処理を行う。
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は、まず画像処理対象の画像データを供給する画像データ供給部22の種別を認識し、認識した種別がバッファ領域(メモリ14の一部領域)であった場合には、画像データ供給部22として指定されたバッファ領域を既に確保されたバッファ40Aとしてバッファ制御部40Bに認識させるパラメータを設定し、バッファ制御部40Bのプログラムを実行するスレッドを生成する(バッファ制御部40Bを生成する)ことで、指定されたバッファ領域を含むバッファモジュール40(画像データ供給部22として機能するバッファモジュール40)を生成する。なお、上記のスレッドは本発明に係る実行単位プログラムに対応している。また、スレッドに代えてプロセス又はオブジェクトとしてバッファモジュール40を生成するようにしてもよい。
As described above, when detecting that it is necessary to perform some kind of image processing, 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 module generation unit 44 performs module generation processing when activated by 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を起動する(バッファ制御部40Bのプログラムを実行するスレッドを各々生成する)ことで、画像処理モジュール38の後段に連結するバッファモジュール40を生成する。なお、上記のスレッドも本発明に係る実行単位プログラムに対応している。また、スレッドに代えてプロセス又はオブジェクトとしてバッファモジュール40を生成するようにしてもよい。
If it is determined that the generation target
続いて、前段のモジュール(例えばバッファモジュール40)の情報、後段のバッファモジュール40の情報(後段にバッファモジュール40を生成した画像処理モジュール38のみ)、画像処理モジュール38に入力される入力画像データの属性、処理パラメータを与えて、モジュールライブラリ36に登録されており、画像処理モジュール38として利用可能な複数の候補モジュールの中から、先に取得した入力画像データの属性、及び、画像処理モジュール38で実行すべき処理パラメータに合致する画像処理モジュール38を選択・生成(画像処理エンジン38A及び制御部38Bのプログラムを実行するスレッドを生成)する。なお、上記のスレッドも本発明に係る実行単位プログラムに対応している。また、スレッドに代えてプロセス又はオブジェクトとして画像処理モジュール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 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 designated as the color space of the output image data by the processing parameters, and the input image data is data in the RGB color space. If there is, an
なお、画像処理モジュール38の選択は上記に限られるものではなく、例えば画像処理エンジン38Aによる画像処理における単位処理データ量が異なる画像処理モジュール38をモジュールライブラリ36に複数登録しておき、画像処理部50へ割当可能なメモリ領域のサイズ等の動作環境に応じて、適切な単位処理データ量の画像処理モジュール38を選択する(例えば上記サイズが小さくなるに従って単位処理データ量の小さい画像処理モジュール38を選択する等)ようにしてもよいし、アプリケーション32或いはユーザに選択させるようにしてもよい。
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
なお、本実施形態では、特定の画像処理の実行頻度が高い等の場合に、アプリケーション32が、特定の画像処理を行う画像処理部50を生成するための複数種のモジュール生成部44に対し、特定の画像処理を行う画像処理部50を生成させた後も処理終了を指示しないことでスレッド(プロセス又はオブジェクトでもよい)として残しておき、特定の画像処理を行う必要が生ずる毎に、スレッドとして残しておいた各モジュール生成部44に対してモジュール群の生成を順次指示することで、特定の画像処理を行う画像処理部50を再生成させることも可能とされている。これにより、特定の画像処理を行う必要が生ずる毎に対応する各モジュール生成部44を各々起動する処理が不要となり、特定の画像処理を行う画像処理部50を再生成するのに要する時間を短縮することができる。
In the present embodiment, when the execution frequency of specific image processing is high, for example, the
ところで、画像処理モジュール38の制御部38Bは、モジュール生成部44によって起動されると画像処理モジュール38の初期化を行う。この初期化では、まずモジュール生成部44から与えられた自モジュールの前段及び後段のモジュールの情報を記憶する。続いて自モジュールの前段のモジュールを判定する。自モジュールの前段にモジュールが存在していない場合には何ら処理を行わないが、前段のモジュールがバッファモジュール40以外、例えば画像データ供給部22や特定のファイル等である場合には、必要に応じてその初期化処理を行う。また、自モジュールの前段にバッファモジュール40が存在している場合には、前段のバッファモジュール40からの1回の画像データの読み出しによって取得する画像データのデータ量(単位読出データ量)を認識する。この単位読出データ量は、自モジュールの前段のバッファモジュール40の数が1個であれば1個だけであるが、例えば図2(C)に示す画像処理部50において画像合成処理を行う画像処理モジュール38のように、前段のバッファモジュール40の数が複数で、複数のバッファモジュール40から各々取得した画像データを用いて画像処理エンジン38Aが画像処理を行う等の場合、前段の個々のバッファモジュール40に対応する単位読出データ量は、自モジュールの画像処理エンジン38Aが行う画像処理の種類や内容、前段のバッファモジュール40の数等に応じて定まる。そして、認識した単位読出データ量を、前段に存在している全てのバッファモジュール40へ通知することで、前段に存在している全てのバッファモジュール40に単位読出データ量を設定する(図3(A)の(1)も参照)。
Incidentally, the control unit 38B of the
次に、自モジュールの後段のモジュールを判定する。自モジュールの後段のモジュールがバッファモジュール40以外、例えば画像出力部24や特定のファイル等の場合には、必要に応じてその初期化処理(例えば後段のモジュールが画像出力部24であれば、単位書込データ量に相当するデータ量ずつ画像データを出力することを通知する処理等)を行う。また、後段のモジュールがバッファモジュール40であれば、1回の画像データの書き込みにおける画像データのデータ量(単位書込データ量)を認識し、後段のバッファモジュールに当該単位書込データ量を設定(図3(A)の(2)も参照)する。そして、当該画像処理モジュール38の初期化の完了をモジュール生成部44に通知して処理を終了する。
Next, the module following the own module is determined. If the module subsequent to the own module is other than the
一方、画像処理部50を構成する個々のバッファモジュール40のバッファ制御部40Bは、モジュール生成部44又はアプリケーション32によって起動されるとバッファモジュール40の初期化を行う。バッファモジュール40の初期化では、まず自モジュールの前段の画像処理モジュール38から単位書込データ量が通知されるか又は自モジュールの後段の画像処理モジュール38から単位読出データ量が通知される毎に、通知された単位書込データ量又は単位読出データ量を記憶する(図3(B)の(1),(2)も参照)。
On the other hand, the
自モジュールと連結されている全ての画像処理モジュール38から単位書込データ量又は単位読出データ量が通知されると、自モジュールと連結されている個々の画像処理モジュール38によって各々設定された単位書込データ量及び単位読出データ量に基づいて、自モジュールのバッファ40Aの管理単位である単位バッファ領域のサイズを決定し、決定した単位バッファ領域のサイズを記憶する。単位バッファ領域のサイズとしては、自モジュールに設定された単位書込データ量及び単位読出データ量のうちの最大値が好適であるが、単位書込データ量を設定してもよいし、単位読出データ量(自モジュールの後段に複数の画像処理モジュール38が連結されている場合は、個々の画像処理モジュール38によって各々設定された単位読出データ量の最大値)を設定してもよいし、単位書込データ量と単位読出データ量(の最大値)の最小公倍数を設定してもよいし、この最小公倍数が所定値未満であれば最小公倍数を、最小公倍数が所定値以上であれば別の値(例えば上述した単位書込データ量及び単位読出データ量のうちの最大値、単位書込データ量、単位読出データ量(の最大値)の何れか)を設定するようにしてもよい。
When the unit write data amount or the unit read data amount is notified from all the
また、自モジュールがアプリケーション32によって生成され、画像データ供給部22又は画像出力部24として機能するバッファモジュール40であった場合には、自モジュールのバッファ40Aとして用いるメモリ領域が既に存在しているので、先に決定した単位バッファ領域のサイズを、自モジュールのバッファ40Aとして用いる既設のメモリ領域のサイズに変更する。更に、自モジュールの後段の個々の画像処理モジュール38に対応する有効データポインタを各々生成し、生成した有効データポインタを初期化する。この有効データポインタは、自モジュールの前段の画像処理モジュールによって自モジュールのバッファ40Aに書き込まれた画像データのうち、対応する後段の画像処理モジュール38によって読み出されていない画像データ(有効データ)の先頭位置(次の読出開始位置)と末尾位置を各々指し示すポインタであり、初期化時には通常、有効データが存在していないことを意味する特定の情報が設定されるが、自モジュールが自モジュールがアプリケーション32によって生成され、画像データ供給部22として機能するバッファモジュール40であれば、自モジュールのバッファ40Aとして用いるメモリ領域には既に画像処理対象の画像データが書き込まれていることがあり、この場合は当該画像データの先頭位置及び末尾位置が後段の個々の画像処理モジュール38に対応する有効データポインタに各々設定される。以上の処理によりバッファモジュール40の初期化が完了し、バッファ制御部40Bは初期化の完了をワークフロー管理部46Aへ通知する。
Further, when the own module is generated by the
一方、アプリケーション32は、順次起動したモジュール生成部44によって前述のモジュール生成処理が順次行われることで、必要とされる画像処理を行う画像処理部50の構築が完了すると、ワークフロー管理部46Aのプログラムを実行するスレッド(又はプロセス又はオブジェクト)を起動することで、ワークフロー管理部46Aに対して画像処理部50による画像処理の実行を指示する。
On the other hand, when the construction of the
処理管理部46のワークフロー管理部46Aは、プログラムが起動されることで図7に示すブロック単位制御処理を行う。ワークフロー管理部46Aはブロック単位処理において、画像処理部50を構成する画像処理モジュール38のうちの所定の画像処理モジュール38に処理要求を入力することで、画像処理部50による画像処理をブロック単位の実行形態で行わせるが、以下では画像処理部50全体の動作説明に先立ち、個々のバッファモジュール40のバッファ制御部40Bによって行われる初期化処理完了以降の処理、個々の画像処理モジュール38の制御部38Bによって行われる画像処理モジュール制御処理について順に説明する。
The
本実施形態では、画像処理モジュール38が後段のバッファモジュール40に画像データを書き込む場合には、画像処理モジュール38からバッファモジュール40へ書込要求が入力され、画像処理モジュール38が前段のバッファモジュール40から画像データを読み出す場合には、画像処理モジュール38からバッファモジュール40へ読出要求が入力される。前段の画像処理モジュール38からの書込要求がバッファモジュール40に入力された場合(及び、後述するタイマがタイムアウトした場合)は、以下で説明するデータ書込処理がバッファ制御部40Bによって実行される。
In this embodiment, when the
データ書込処理では、まず自モジュールのバッファ40Aが他のスレッドによって使用中か否か判定する。バッファ40Aに対してデータの書き込みと非同期にデータの読み出しも行われるので、バッファ40Aが使用中の場合は入力された書込要求情報をワークメモリ等に保管し、タイマをスタートさせてデータ書込処理を一旦終了する。なお、以降の処理では、入力された書込要求情報を処理対象の情報とするが、タイマがタイムアウトしてデータ書込処理が起動された場合には、過去に入力されてワークメモリ等に保管している書込要求情報をワークメモリ等から取り出し、取り出した書込要求情報を処理対象の情報として以降の処理を行う。 In the data writing process, first, it is determined whether or not the buffer 40A of the own module is being used by another thread. Since data is also read from the buffer 40A asynchronously with the data write, when the buffer 40A is in use, the input write request information is stored in a work memory or the like, and a timer is started to write the data. The process is temporarily terminated. In the subsequent processing, the input write request information is used as information to be processed. However, if the timer has timed out and the data write processing is started, it is input in the past and stored in the work memory or the like. The write request information being taken out is extracted from the work memory or the like, and the subsequent processing is performed using the taken write request information as information to be processed.
続いてデータ書込処理では、確保すべきメモリ領域のサイズとして単位書込データ量をリソース管理部46Bに通知し、書込用として用いるメモリ領域(書込用バッファ領域:図4(B)も参照)をリソース管理部46Bを介して取得する(リソース管理部における処理については後述する)。次に、自モジュールのバッファ40Aを構成する保管用の単位バッファ領域の中に、単位書込データ量以上の空き領域が有る単位バッファ領域(単位書込データ量の画像データを書き込み可能な単位バッファ領域)が存在しているか否か判定する。モジュール生成部44によって生成されたバッファモジュール40は、当初はバッファ40Aとして用いるメモリ領域(単位バッファ領域)が確保されておらず、メモリ領域の不足が生ずる度に単位バッファ領域を単位として確保されるので、バッファモジュール40に最初に書込要求が入力されたときにはバッファ40Aとして用いるメモリ領域(単位バッファ領域)が存在しておらず、この判定は否定される。また、後述する処理を経てバッファ40Aとして用いる単位バッファ領域が確保された後も、当該単位バッファ領域への画像データの書込に伴って当該単位バッファ領域内の空き領域が単位書込データ量未満になった場合にも上記判定は否定される。
Subsequently, in the data writing process, the unit management data amount is notified to the resource management unit 46B as the size of the memory area to be secured, and the memory area used for writing (the writing buffer area: FIG. 4B is also shown). Reference) is acquired via the resource management unit 46B (the processing in the resource management unit will be described later). Next, a unit buffer area (a unit buffer in which image data of the unit write data amount can be written) has an empty area larger than the unit write data amount in the storage unit buffer area constituting the buffer 40A of the own module. It is determined whether or not (region) exists. In the
単位書込データ量以上の空き領域が有る単位バッファ領域(単位書込データ量の画像データを書き込み可能な単位バッファ領域)が存在していないと判定された場合は、確保すべきメモリ領域のサイズ(単位バッファ領域のサイズ)をリソース管理部46Bに通知して、自モジュールのバッファ40Aとして用いるメモリ領域(画像データの保管に用いる単位バッファ領域)をリソース管理部46Bを介して取得する。そして、先に取得した書込用バッファ領域を書込領域として、当該書込領域の先頭アドレスを書込要求元の画像処理モジュール38へ通知すると共に、書込対象の画像データを通知した先頭アドレスから順に書き込むよう要請する。これにより、書込要求元の画像処理モジュール38は、先頭アドレスが通知された書込用バッファ領域に画像データを書き込む(図4(B)も参照)。
If it is determined that there is no unit buffer area (unit buffer area into which image data of the unit write data amount can be written) that has an empty area greater than the unit write data amount, the size of the memory area to be secured (A size of the unit buffer area) is notified to the resource management unit 46B, and a memory area (a unit buffer area used for storing image data) used as the buffer 40A of the own module is acquired via the resource management unit 46B. Then, using the previously acquired write buffer area as the write area, the start address of the write area is notified to the
例えば単位バッファ領域のサイズが単位書込データ量の整数倍でない場合、バッファ40A(単位バッファ領域)への単位書込データ量の画像データの書込が繰り返されることで、例として図4(A)にも示すように、空き領域有りの単位バッファ領域における空き領域のサイズが単位書込データ量よりも小さい状態が生ずる。この場合、単位書込データ量の画像データが書き込まれる領域が複数の単位バッファ領域に跨ることになるが、本実施形態では、バッファ40Aとして用いるメモリ領域を単位バッファ領域を単位として確保するので、異なるタイミングで確保した単位バッファ領域が実メモリ(メモリ14)上で連続する領域であることは保証されない。これに対して本実施形態では、画像処理モジュール38による画像データの書き込みを、保管用の単位バッファ領域と別に確保した書込用バッファ領域に対して行わせ、図4(C)に示すように、書込用バッファ領域に一旦書き込まれた画像データを保管用の単一又は複数の単位バッファ領域へ複写するので、画像データが書き込まれる領域が複数の単位バッファ領域に跨るか否かに拘わらず、書込要求元の画像処理モジュール38への書込領域の通知は、上記のようにその先頭アドレスを通知するのみで済み、画像処理モジュール38とのインタフェースが簡単になる。
For example, if the size of the unit buffer area is not an integral multiple of the unit write data amount, the writing of the unit write data amount of image data to the buffer 40A (unit buffer area) is repeated, for example, as shown in FIG. ), The size of the empty area in the unit buffer area with the empty area is smaller than the unit write data amount. In this case, the area in which the image data of the unit write data amount is written extends over a plurality of unit buffer areas, but in this embodiment, the memory area used as the buffer 40A is secured in units of the unit buffer area. It is not guaranteed that the unit buffer areas secured at different timings are continuous areas on the real memory (memory 14). On the other hand, in the present embodiment, the
なお、自モジュールがアプリケーション32によって生成されたバッファモジュール40である場合、すなわちバッファ40Aとして用いるメモリ領域が既に確保されている場合には、既に確保されたメモリ領域のアドレスを画像処理モジュール38に書込領域のアドレスとして通知し、上記メモリ領域への画像データの書き込みを行わせる。前段の画像処理モジュール38による書込領域への画像データの書き込みが完了すると、書込用バッファ領域に書き込まれている画像データに属性情報を付加した後に、保管用バッファ領域にそのまま書き込む。なお、空き領域有りの単位バッファ領域における空き領域のサイズが単位書込データ量よりも小さい場合、書込用バッファ領域に書き込まれた画像データは、図4(C)に示すように、保管用の複数の単位バッファ領域へ分けて書き込まれることになる。
If the own module is the
そして、自モジュールの後段の個々の画像処理モジュール38に対応する有効データポインタのうち有効データの末尾位置を表すポインタを、該ポインタが指し示す有効データの末尾位置が単位書込データ量分だけ後へ移動するように更新する(図4(C)も参照)と共に、先に書込用バッファ領域として確保したメモリ領域をリソース管理部46Bによって解放させ、データ書込処理を一旦終了する。なお、書込用バッファ領域はバッファモジュール40の初期化時に確保し、バッファモジュール40の消去時に解放するように構成してもよい。
Then, the pointer indicating the end position of the valid data among the valid data pointers corresponding to the individual
続いて、後段の画像処理モジュール38から読出要求がバッファモジュール40に入力された場合(及び、後述するタイマがタイムアウトした場合)に、バッファモジュール40のバッファ制御部40Bによって実行されるデータ読出処理について説明する。
Subsequently, a data read process executed by the
データ読出処理では、まずステップ170において、今回のデータ読出処理の起動要因が、後段の画像処理モジュールからの読出要求の入力による起動か否か判定し、判定が肯定された場合は、後段の画像処理モジュールから入力された読出要求情報を読出用の待ち行列の末尾に登録する。次に、自モジュールのバッファ40Aが他のスレッドによって使用中か否か判定する。バッファ40Aが使用中であれば、読出用の待ち行列に読出要求情報が登録されているか否か判定し、読出要求情報が未登録であればそのままデータ読出処理を終了し、読出要求情報が登録されていればタイマをスタートさせた後にデータ読出処理を終了する。このタイマがタイムアウトするとデータ読出処理が再度起動され、読出用の待ち行列に登録されている未処理の読出要求(情報)が再度取り出され、当該読出要求に応じた処理が行われる。 In the data reading process, first, in step 170, it is determined whether or not the activation factor of the current data reading process is the activation by the input of a reading request from the subsequent image processing module. Read request information input from the processing module is registered at the end of the read queue. Next, it is determined whether or not the buffer 40A of the own module is being used by another thread. If the buffer 40A is in use, it is determined whether or not the read request information is registered in the read queue. If the read request information is not registered, the data read process is terminated and the read request information is registered. If so, the data read processing is terminated after starting the timer. When this timer times out, the data reading process is started again, an unprocessed read request (information) registered in the read queue is taken out again, and a process corresponding to the read request is performed.
一方、自モジュールのバッファ40Aが使用中でなければ、読出用の待ち行列から先頭に登録されている読出要求情報を取り出し、取り出した読出要求情報に含まれる要求元識別情報に基づいて読出要求元の画像処理モジュール38を認識し、読出要求元の画像処理モジュール38によって設定された単位読出データ量を認識すると共に、読出要求元の画像処理モジュール38に対応する有効データポインタに基づいて、読出要求元の画像処理モジュール38に対応する有効データのバッファ40A上での先頭位置及び末尾位置を認識する。次に、認識した有効データの先頭位置及び末尾位置に基づいて、読出要求元の画像処理モジュール38に対応する有効データ(読出要求元の画像処理モジュール38が読出可能な画像データ)が単位読出データ量以上有るか否か判定する。
On the other hand, if the buffer 40A of the own module is not in use, the read request information registered at the head is extracted from the read queue, and the read request source is based on the request source identification information included in the read request information. The
読出要求元の画像処理モジュール38に対応する有効データが単位読出データ量未満であれば、読出要求元の画像処理モジュール38が読出可能な有効データの末尾が処理対象の画像データの末尾か否か判定する。読出要求元の画像処理モジュール38に対応する有効データがバッファ40Aに単位読出データ量以上記憶されているか、又は、バッファ40Aに記憶されている読出要求元の画像処理モジュール38に対応する有効データが単位読出データ量未満であるものの、当該有効データの末尾が処理対象の画像データの末尾であった場合には、確保すべきメモリ領域のサイズとして読出要求元の画像処理モジュール38に対応する単位読出データ量をリソース管理部46Bに通知すると共に、読出に用いるメモリ領域(読出用バッファ領域:図5(B)も参照)の確保をリソース管理部46Bに要求し、リソース管理部46Bを介して読出用バッファ領域を取得する。
If the valid data corresponding to the
次に、読出対象の有効データをバッファ40Aから単位読出データ量分だけ読み出して読出用バッファ領域に書き込み、読出用バッファ領域の先頭アドレスを読出領域の先頭アドレスとして読出要求元の画像処理モジュール38へ通知すると共に、通知した先頭アドレスから画像データを順に読み出すよう要請する。これにより、読出要求元の画像処理モジュール38は、先頭アドレスが通知された読出領域(読出用バッファ領域)からの画像データの読み出しを行う。なお、読出対象の有効データが処理対象の画像データの末尾に相当するデータであった場合には、画像データの読出要求に際し、読出対象の画像データのサイズと共に、処理対象の画像データの末尾であることも読出要求元の画像処理モジュール38に通知する。また、自モジュールがアプリケーション32によって生成されたバッファモジュール40である場合は、バッファ40Aとして用いているメモリ領域(単位バッファ領域の集合体)は連続領域であるので、読出用バッファ領域の確保、読出対象の画像データの読出用バッファ領域への書き込みを省略し、後段の画像処理モジュール38が単位バッファ領域から直接画像データを読み出すようにしてもよい。
Next, the effective data to be read is read from the buffer 40A by the amount of the unit read data and written to the read buffer area, and the head address of the read buffer area is used as the read area start address to the read request source
なお、例として図5(A)に示すように、有効データの先頭部分の画像データを記憶している単位バッファ領域に記憶されている有効データのデータ量が単位読出データ量未満であり、読出対象の有効データが複数の単位バッファ領域に跨っている場合には、今回の読出対象の有効データが実メモリ(メモリ14)上で連続する領域に記憶されているとは限らないが、上記のデータ読出処理では、図5(B),(C)に示すように、このような場合にも読出対象の画像データを読出用バッファ領域に一旦書き込んだ後に該読出用バッファ領域から画像データを読み出させるので、読出対象の画像データが複数の単位バッファ領域に跨って記憶されているか否かに拘わらず、読出要求元の画像処理モジュール38への読出領域の通知は、上記のようにその先頭アドレスを通知するのみで済み、画像処理モジュール38とのインタフェースが簡単になる。
As an example, as shown in FIG. 5A, the amount of valid data stored in the unit buffer area in which the image data of the head portion of the valid data is stored is less than the unit read data amount. When the target valid data extends over a plurality of unit buffer areas, the valid data to be read this time is not necessarily stored in a continuous area on the real memory (memory 14). In the data reading process, as shown in FIGS. 5B and 5C, even in such a case, the image data to be read is once written in the reading buffer area and then read from the reading buffer area. Therefore, regardless of whether or not the image data to be read is stored across a plurality of unit buffer areas, the notification of the read area to the
読出要求元の画像処理モジュール38による読出領域からの画像データの読み出し完了が通知されると、読出用バッファ領域として確保したメモリ領域の先頭アドレス及びサイズをリソース管理部46Bへ通知して、当該メモリ領域をリソース管理部46Bによって解放させる。この読出用バッファ領域についても、バッファモジュール40の初期化時に確保しておき、バッファモジュール40が消去される時に解放するよう構成してもよい。また、読出要求元の画像処理モジュール38に対応する有効データポインタのうち有効データの先頭位置を表すポインタを、該ポインタが指し示す有効データの先頭位置を単位読出データ量分だけ後へ移動させることで更新する(図5(C)も参照)。
When the completion of reading of the image data from the reading area by the
次に、後段の個々の画像処理モジュール38に対応する有効データポインタを各々参照し、先のポインタ更新により、バッファ40Aを構成する単位バッファ領域の中に、記憶している画像データの後段の各画像処理モジュール38による読み出しが全て完了した単位バッファ領域、すなわち有効データを記憶していない単位バッファ領域が出現したか否か判定する。判定が否定された場合は、前述した読出用の待ち行列のチェック処理(読出用の待ち行列に読出要求情報が登録されているか否かの判定)を経てデータ読出処理を終了するが、有効データを記憶していない単位バッファ領域が出現した場合は、当該単位バッファ領域をリソース管理部46Bによって解放させた後に読出用の待ち行列のチェック処理を経てデータ読出処理を終了する。
Next, the effective data pointers corresponding to the individual
一方、バッファ40Aに記憶されており読出要求元の画像処理モジュール38が読出可能な有効データのデータ量が単位読出データ量未満であり、かつ読出可能な有効データの末尾が処理対象の画像データの末尾でない場合(図3(B)の(4)で読出可能な有効データ無が検知された場合)には、新たな画像データを要求するデータ要求をワークフロー管理部46Aへ出力し(図3(B)の(5)も参照)、読出用の待ち行列から取り出した読出要求情報を元の待ち行列(の先頭又は末尾)に再度登録した後に、読出用の待ち行列のチェック処理を経てデータ読出処理を終了する。この場合、ワークフロー管理部46Aにより、自モジュールの前段の画像処理モジュール38に処理要求が入力されることになる。これにより、読出可能な有効データのデータ量が単位読出データ量以上になるか、読出可能な有効データの末尾が処理対象の画像データの末尾であることが検知される迄の間、対応する読出要求情報は読出用の待ち行列に保存されると共に定期的に取り出されて要求された処理の実行が繰り返し試行されることになる。
On the other hand, the amount of valid data stored in the buffer 40A and readable by the
詳細は後述するが、ワークフロー管理部46Aはバッファモジュール40からデータ要求が入力されると、データ要求元のバッファモジュール40の前段の画像処理モジュール38に処理要求を入力する(図3(B)の(6)も参照)。この処理要求の入力をトリガとして前段の画像処理モジュール38の制御部38Bで行われる処理により、前段の画像処理モジュール38がバッファモジュール40へ画像データを書込可能な状態になると、前段の画像処理モジュール38から書込要求が入力されることで前述したデータ書込処理が行われ、前段の画像処理モジュール38からバッファモジュール40のバッファ40Aに画像データが書き込まれる(図3(B)の(7),(8)も参照)。これにより、後段の画像処理モジュール38によるバッファ40Aからの画像データの読出が行われることになる(図3(B)の(9)も参照)。
Although details will be described later, when a data request is input from the
上述したデータ書込処理及びデータ読出処理では、一方が自モジュールのバッファ40Aにアクセスしている間、他方がバッファ40Aへのアクセスを停止する排他制御が行われる。これにより、コンピュータ10のCPU12が画像処理部50を構成する個々のモジュールに対応するスレッドを並列に実行しても、単一のバッファモジュール40に複数の要求が同時又は略同時に入力されることによる不都合の発生を回避できるので、コンピュータ10のCPU12が個々のモジュールに対応するスレッドを並列に実行することができる。
In the above-described data writing process and data reading process, exclusive control is performed so that while one is accessing the buffer 40A of its own module, the other stops accessing the buffer 40A. Thereby, even if the
続いて、画像処理部50を構成する個々の画像処理モジュール38に対してワークフロー管理部46Aから処理要求が入力される毎に、個々の画像処理モジュール38の制御部38Bによって各々行われる画像処理モジュール制御処理(図6)を説明する。
Subsequently, each time a processing request is input from the
画像処理モジュール制御処理では、まずステップ219において、自モジュールの画像処理エンジン38Aが行う画像処理の種類や内容等に基づき、自モジュールが使用するメモリのサイズ及び自モジュールが使用する他のリソースの有無を認識する。なお、画像処理モジュール38が使用するメモリは、画像処理エンジン38Aが画像処理を行うために必要なメモリが主であるが、前段のモジュールが画像データ供給部22である場合や後段のモジュールが画像出力部24である場合には、前段又は後段のモジュールとの画像データの送受に際して画像データを一時記憶するためのバッファ用のメモリが必要となることもある。また、処理パラメータにテーブル等の情報が含まれている場合には、それを保持するためのメモリ領域が必要となることもある。そして、認識したサイズのメモリ領域の確保をリソース管理部46Bへ要求し、リソース管理部46Bによって確保されたメモリ領域をリソース管理部46Bから取得する。また、自モジュール(の画像処理エンジン38A)がメモリ以外の他のリソースを必要としていると認識した場合には、上記他のリソースの確保をリソース管理部46Bへ要求し、上記他のリソースをリソース管理部46Bから取得する。
In the image processing module control processing, first, in
次のステップ220では、自モジュールの前段にモジュール(バッファモジュール40や画像データ供給部22、画像処理モジュール38等)が存在している場合に、当該前段のモジュールに対してデータ(画像データ又は解析等の画像処理の処理結果)を要求する。次のステップ222では前段のモジュールからデータが取得可能であるかを判定し、ステップ222の判定が否定された場合はステップ224で全体処理終了が通知されたか否かを判定する。ステップ224の判定が否定された場合はステップ222に戻り、前段のモジュールからデータを取得可能となる迄ステップ222,224を繰り返す。ステップ222の判定が肯定された場合には、ステップ226で前段のモジュールからデータを取得し、取得したデータをステップ219で取得したメモリ領域のうちデータの一時保管用のメモリ領域に書き込むデータ取得処理を行う。
In the
ここで、自モジュールの前段のモジュールがバッファモジュール40である場合には、先のステップ220でデータを要求すると(読出要求)、読出可能な有効データがバッファモジュール40のバッファ40Aに単位読出データ量以上記憶されているか、読出可能な有効データの末尾が処理対象の画像データの末尾に一致している状態であれば直ちに、当該状態でなければ、当該バッファモジュール40の前段の画像処理モジュール38が当該バッファモジュール40のバッファ40Aに画像データを書き込んだことに伴って前記状態へ変化した後に、バッファモジュール40から読出領域の先頭アドレスが通知されて画像データの読出が要請される。これにより、ステップ222の判定が肯定されてステップ226へ移行し、前段のバッファモジュール40より先頭アドレスが通知された読出領域から単位読出データ量(又はそれ未満のデータ量)の画像データを読み出し、一時保管用のメモリ領域に書き込むデータ取得処理を行う(図3(A)の(3)も参照)。
Here, if the previous module of the own module is the
また、自モジュールの前段のモジュールが画像データ供給部22であれば、先のステップ220でデータ要求を出力すると画像データを取得可能な状態であることが前段の画像データ供給部22から直ちに通知されることで、ステップ222の判定が肯定されてステップ226へ移行し、前段の画像データ供給部22から単位読出データ量の画像データを取得し、一時保管用のメモリ領域に書き込む画像データ取得処理を行う。また、自モジュールの前段のモジュールが画像処理モジュール38であれば、先のステップ220でデータ要求(処理要求)を出力すると、前段の画像処理モジュール38が画像処理を実行可能な状態であれば書込要求が入力されることでデータ(画像処理結果)を取得可能な状態であることが通知されるので、ステップ222の判定が肯定されてステップ226へ移行し、前段の画像処理モジュール38によってデータを書き込ませる一時保管用のメモリ領域のアドレスを通知して書込を要請することで、前段の画像処理モジュール38から出力されるデータを一時保管用のメモリ領域に書き込ませるデータ取得処理を行う。
If the previous module of the own module is the image
次のステップ228では、自モジュールの前段に複数のモジュールが連結されているか否か判定する。判定が否定された場合には何ら処理を行うことなくステップ232へ移行するが、判定が肯定された場合はステップ230へ移行し、前段に連結されている全てのモジュールからデータを取得したか否か判定する。ステップ230の判定が否定された場合はステップ220に戻り、ステップ230の判定が肯定される迄ステップ220〜ステップ230を繰り返す。前段のモジュールから取得すべきデータが全て揃うと、ステップ228の判定が否定されるかステップ230の判定が肯定されてステップ232へ移行する。
In the
次のステップ232では自モジュールの後段のモジュールに対してデータ出力用の領域を要求し、ステップ232でデータ出力領域が取得できる迄(データ出力領域の先頭アドレスが通知される迄)繰り返し判定を行う。なお、後段のモジュールがバッファモジュール40であれば、上記のデータ出力用領域の要求は当該バッファモジュール40に対して書込要求を出力することによって成される。データ出力領域(後段のモジュールがバッファモジュール40であれば当該バッファモジュール40から先頭アドレスが通知された書込領域)が取得できたら(図3(A)の(4)も参照)、次のステップ236において、先のデータ取得処理で取得したデータ、後段のモジュールから取得したデータ出力領域(の先頭アドレス)、先のステップ219で取得したメモリ領域のうち画像処理エンジンによる画像処理用のメモリ領域(の先頭アドレス及びサイズ)を画像処理エンジン38Aに入力し、入力したデータに対し画像処理用のメモリ領域を使用して所定の画像処理を行わせる(図3(A)の(5)も参照)と共に、処理後のデータをデータ出力領域に書き込ませる(図3(A)の(6)も参照)。画像処理エンジン38Aへの単位読出データ量のデータの入力が完了し、画像処理エンジン38Aから出力されたデータがデータ出力領域に全て書き込まれると、次のステップ238で出力が完了したことを後段のモジュールに通知する。
In the
上記のステップ220〜ステップ238により画像処理モジュール38における単位処理データ量のデータに対する処理(単位処理)が完了するが、ワークフロー管理部46Aから画像処理モジュール38に入力される処理要求では、ワークフロー管理部46Aによって単位処理の実行回数が指定されることがある。このためステップ240では、単位処理の実行回数が、入力された処理要求によって指示された実行回数に達したか否か判定する。指示された単位処理の実行回数が1回の場合、この判定は無条件に肯定されるが、指示された単位処理の実行回数が2回以上の場合はステップ220に戻り、ステップ240の判定が肯定される迄ステップ220〜ステップ240を繰り返す。ステップ240の判定が肯定されるとステップ242へ移行し、ワークフロー管理部46Aへ処理完了通知を出力することで、入力された処理要求に対応する処理が完了したことをワークフロー管理部46Aへ通知し、画像処理モジュール制御処理を終了する。
The processing (unit processing) for the data of the unit processing data amount in the
また、ワークフロー管理部46Aから処理要求が入力される毎に上述した処理が繰り返されることで処理対象の画像データを末尾まで処理すると、前段のモジュールから処理対象の画像データの終了が通知されることで、ステップ224の判定が肯定されてステップ244へ移行し、処理対象の画像データ(なお、処理対象の画像データは1頁分の画像データであることが多いが、複数頁分の画像データであってもよい)に対する処理が終了したことを意味する全体処理終了通知をワークフロー管理部46A及び後段のモジュールへ各々出力する。また、次のステップ246では取得していた全てのリソースの解放を要求して自モジュールを消去する処理を行い、画像処理モジュール制御処理を終了する。
Further, when the processing image data is processed to the end by repeating the above-described processing every time a processing request is input from the
一方、ワークフロー管理部46Aは、アプリケーション32によって起動されると、図7(A)に示すブロック単位制御処理1を行う。先にも述べたように、ワークフロー管理部46Aによる画像処理部50の個々の画像処理モジュール38への処理要求の入力では、単位処理の実行回数を指定可能とされているが、ブロック単位制御処理1のステップ500では、1回の処理要求で指定する単位処理の実行回数を個々の画像処理モジュール38毎に決定する。この処理要求1回当りの単位処理の実行回数は、例えば処理対象の画像データ全体を処理する間の個々の画像処理モジュール38への処理要求の入力回数が平均化されるように定めることができるが、他の基準に従って定めてもよい。次のステップ502の処理については後述する。そして次のステップ504において、画像処理部50のうち最後段の画像処理モジュール38に処理要求を入力し(図8の(1)も参照)、ブロック単位制御処理1を終了する。
On the other hand, when activated by the
ここで、図8に示す画像処理部50において、ワークフロー管理部46Aから最後段の画像処理モジュール384に処理要求が入力されると、画像処理モジュール384の制御部38Bは前段のバッファモジュール403に読出要求を入力する(図8の(2)参照)。このとき、バッファモジュール403のバッファ40Aには画像処理モジュール384が読出可能な有効データ(画像データ)が記憶されていないので、バッファモジュール403のバッファ制御部40Bはワークフロー管理部46Aにデータ要求を入力する(図8の(3)参照)。
Here, in the
ワークフロー管理部46Aは、バッファモジュール40からデータ要求が入力される毎に、図7(B)に示すブロック単位制御処理2を行う。このブロック単位制御処理2では、ステップ510において、データ要求入力元のバッファモジュール40(ここではバッファモジュール403)の前段の画像処理モジュール38(ここでは画像処理モジュール383)を認識し、認識した前段の画像処理モジュール38に処理要求を入力(図8の(4)参照)して処理を終了する。
Each time the data request is input from the
画像処理モジュール383の制御部38Bは、処理要求が入力されると前段のバッファモジュール402に読出要求を入力し(図8の(5)参照)、バッファモジュール402のバッファ40Aにも読出可能な画像データが記憶されていないので、バッファモジュール402のバッファ制御部40Bはワークフロー管理部46Aにデータ要求を入力する(図8の(6)参照)。ワークフロー管理部46Aは、バッファモジュール402からデータ要求が入力された場合も、前述のブロック単位制御処理2を再度行うことで、その前段の画像処理モジュール382に処理要求を入力し(図8の(7)参照)、画像処理モジュール383の制御部38Bは前段のバッファモジュール401に読出要求を入力する(図8の(8)参照)。また、バッファモジュール401のバッファ40Aにも読出可能な画像データが記憶されていないので、バッファモジュール401のバッファ制御部40Bもワークフロー管理部46Aにデータ要求を入力し(図8の(9)参照)。ワークフロー管理部46Aは、バッファモジュール401からデータ要求が入力された場合も、前述のブロック単位制御処理2を再度行うことで、その前段の画像処理モジュール381に処理要求を入力する(図8の(10)参照)。
Image control unit 38B of the
ここで、画像処理モジュール381の前段のモジュールは画像データ供給部22であるので、画像処理モジュール381の制御部38Bは、画像データ供給部22にデータ要求を入力することで画像データ供給部22から単位読出データ量の画像データを取得し(図8の(11)参照)、取得した画像データに対して画像処理エンジン38Aが画像処理を行うことで得られた画像データを、後段のバッファモジュール401のバッファ40Aに書き込む(図8の(12)参照)。
Here, since the previous module of the
また、バッファモジュール401のバッファ制御部40Bは、後段の画像処理モジュール382が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール382に対して読出を要請し、これに伴い画像処理モジュール382の制御部38Bは、バッファモジュール401のバッファ40Aから単位読出データ量の画像データを読み出し(図8の(13)参照)、取得した画像データに対して画像処理エンジン38Aが画像処理を行うことで得られた画像データを、後段のバッファモジュール402のバッファ40Aに書き込む(図8の(14)参照)。バッファモジュール402のバッファ制御部40Bは、後段の画像処理モジュール383が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール383へ読出を要請し、画像処理モジュール383の制御部38Bは、バッファモジュール402のバッファ40Aから単位読出データ量の画像データを読み出し(図8の(15)参照)、取得した画像データに対して画像処理エンジン38Aが画像処理を行うことで得られた画像データを、後段のバッファモジュール403のバッファ40Aに書き込む(図8の(16)参照)。
Further, the
更に、バッファモジュール403のバッファ制御部40Bは、後段の画像処理モジュール384が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール384に対して読出を要請し、これに伴い画像処理モジュール384の制御部38Bは、バッファモジュール403のバッファ40Aから単位読出データ量の画像データを読み出し(図8の(17)参照)、取得した画像データに対して画像処理エンジン38Aが画像処理を行うことで得られた画像データを、後段のモジュールである画像出力部24へ出力する(図8の(18)参照)。
Furthermore, the
また、個々の画像処理モジュール38の制御部38Bは、後段のバッファモジュール40のバッファ40Aへの画像データの書き込みを完了すると、ワークフロー管理部46Aへ処理完了通知を入力する。ワークフロー管理部46Aは、画像処理モジュール38から処理完了通知が入力される毎に、図7(C)に示すブロック単位制御処理3を行う。このブロック単位制御処理3では、ステップ520で処理完了通知元の画像処理モジュール38に処理要求を再度入力した後に、ステップ522〜ステップ526の処理を行った後にブロック単位制御処理3を終了する。なお、ブロック単位制御処理3のステップ524〜ステップ528の処理については後述する。
In addition, when the control unit 38B of each
このように、任意の画像処理モジュール38から処理完了が通知される毎に、処理完了通知元の画像処理モジュール38へ処理要求を再度入力することで、処理対象の画像データに対する画像処理が、個々の画像処理モジュール38においてブロック単位の実行形態で並列に行われることになる。また、画像データ供給部22から供給される画像データが処理対象の画像データの末尾に達すると、個々の画像処理モジュール38からワークフロー管理部46Aへの全体処理終了通知の入力が、前段側の画像処理モジュール38から順次行われる。
In this way, every time processing completion is notified from any
ワークフロー管理部46Aは、画像処理モジュール38から全体処理終了通知が入力される毎に、図7(D)に示すブロック単位制御処理4を行う。このブロック単位制御処理4では、ステップ540において、全体処理終了通知入力元の画像処理モジュール38が最後段の画像処理モジュール38か否か判定する。判定が否定された場合は何ら処理を行うことなく処理を終了するが、処理対象の画像データに対して必要な画像処理が行われた画像データが画像出力部24へ全て出力されることで、最後段の画像処理モジュール38から全体処理終了通知が入力された場合には、ステップ540の判定が肯定されてステップ542へ移行し、アプリケーション32に対して画像処理の完了を通知し、ブロック単位制御処理4を終了する。そして、画像処理の完了が通知されたアプリケーション32は、ユーザに対して画像処理の完了を通知する。
The
ところで、本実施形態に係る画像処理部は、画像処理モジュール38及びバッファモジュール40がパイプライン形態又は有向非循環グラフ形態で連結されて構築されており、個々の画像処理モジュール38は、前段に連結されたバッファモジュール40に単位読出データ量以上の画像データが蓄積されないと自モジュールにおける画像処理を開始できない(但し、画像データ供給部22に連結された最前段の画像処理モジュール38を除く)ので、個々の画像処理モジュール38における画像処理の進行は、より前段に位置している画像処理モジュール38における画像処理の進行状況に依存し、特に画像処理部における一連の画像処理の実行開始時やその付近の期間には、各画像処理モジュールのうち、パイプライン形態又は有向非循環グラフ形態において前段側に位置している画像処理モジュールにおける画像処理を優先的に実行した方が処理効率が向上する。
By the way, the image processing unit according to this embodiment is constructed by connecting the
また、画像処理モジュール38及びバッファモジュール40がパイプライン形態又は有向非循環グラフ形態で連結された構成では、前段側の画像処理モジュール38よりも後段側の画像処理モジュール38の方が画像処理の進行が常に後になり、処理対象の画像データの残量も後段側の画像処理モジュール38の方が常に多くなるので、画像処理部における一連の画像処理の進行に伴って、後段側に位置している画像処理モジュールにおける画像処理の実行優先度を高くしていった方が処理効率が向上し、特に画像処理部における一連の画像処理の実行終了時やその付近の期間には、全体処理が終了した画像処理モジュール38が前段側から徐々に増えてくることに伴い、後段側に位置している画像処理モジュールにおける画像処理の実行優先度をより高くすることが処理効率の点から望ましい。
In the configuration in which the
上記に基づき、本実施形態に係るワークフロー管理部46Aは、アプリケーション32によって起動された際に実行するブロック単位制御処理1(図7(A)参照)のステップ502において、個々の画像処理モジュール38のプログラムを実行する個々のスレッドの実行優先度が、例として図9(A)に示すように、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール38の位置が前段側になるに従って高くなるように、前記個々のスレッドの実行優先度の初期設定を行う。
Based on the above, the
なお、上記の「画像処理モジュール38の位置」は、例えば画像処理部がパイプライン形態であれば、図10(A)に示すように先頭(最前段)の画像処理モジュール38から昇順に付した位置値(或いは最後尾(最後段)の画像処理モジュール38から降順に付した位置値)に基づいて判断することができ、画像処理部が有向非循環グラフ形態であれば、図10(B)に示すように先頭(最前段)の画像処理モジュール38から昇順に(或いは最後尾(最後段)の画像処理モジュール38から降順に)位置値を付すと共に、バッファモジュールを介して複数の画像処理モジュールから画像データを取得する画像処理モジュール38(図10(B)の例では画像処理モジュールE)については、前段の複数の画像処理モジュールに付した位置値の最大値(又は最小値)に基づいて位置値を付し、この位置値に基づいて判断することができる。
Note that the “position of the
また、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール38の位置が前段側になるに従って、対応するスレッドの実行優先度を高くすることは、例えば画像処理モジュールに対応するスレッドに設定可能な実行優先度が1〜9の9段階であり、個々の画像処理モジュール38に対して位置値を前段側から初期値=1で昇順に付したとすると、個々の画像処理モジュール38に対応するスレッドに対し、
実行優先度=10−(位置値) 但し、実行優先度<1の場合は実行優先度=1
に設定してもよいし、位置値が最小値のときには実行優先度が「9」となり、位置値が最大値のときには実行優先度が「1」となるような特定の単調減少関数(例えば位置値の増大に対して実行優先度が線形に減少する関数)を用いて実行優先度を設定するようにしてもよい。これにより、画像処理部で一連の画像処理が開始される時点で、パイプライン形態又は有向非循環グラフ形態の連結形態における対応する画像処理モジュール38の位置が前段側のスレッド程、高い実行優先度でCPU12によって実行されることになり、CPU12を有効に利用して高い処理効率で画像処理を行うことができる。
Further, increasing the execution priority of the corresponding thread as the position of the
Execution priority = 10− (position value) However, if execution priority <1, execution priority = 1
Or a specific monotonically decreasing function (for example, position) where the execution priority is “9” when the position value is the minimum value and the execution priority is “1” when the position value is the maximum value. The execution priority may be set using a function that linearly decreases the execution priority with respect to an increase in value. Thereby, at the time when a series of image processing is started in the image processing unit, the higher priority is given to the thread in the preceding stage where the position of the corresponding
なお、バッファモジュール40に対応するスレッドの実行優先度については、一定の優先度を固定的に設定するようにしてもよいし、個々のバッファモジュール40の前段及び後段に連結された画像処理モジュール38に対応するスレッドの実行優先度の平均値や、最大値、最小値を設定し、次に述べるように、画像処理の進行度合に応じて個々の画像処理モジュール38に対応するスレッドの実行優先度を変更する際に、個々のバッファモジュール40に対応するスレッドの実行優先度も変更するようにしてもよい。
As for the execution priority of the thread corresponding to the
また、本実施形態に係るワークフロー管理部46Aは、画像処理モジュール38から処理完了通知が入力される毎に実行するブロック単位制御処理3(図7(C)参照)において、ステップ522で画像処理部全体としての画像処理の進行度合を判定する。この判定は、例えば個々の画像処理モジュール38からワークフロー管理部46Aへ処理完了通知が送信される際に、個々の画像処理モジュール38における画像処理の進行度合を判断可能な進行度合情報も併せて送信されるように個々の画像処理モジュール38を構成すると共に、ワークフロー管理部46Aは、個々の画像処理モジュール38から処理完了通知を受信する毎に、同時に受信した進行度合情報を保持し(同一の画像処理モジュール38から以前に受信した進行度合情報を既に保持している場合は、既に保持している進行度合情報を新たに受信した進行度合情報で上書きし)た後に、個々の画像処理モジュール38に対応する進行度合情報から画像処理部全体としての画像処理の進行度合を集計することによって行うことができる。
Further, the
上記の進行度合情報は、導出にあたって画像処理モジュール38(に対応するスレッドを実行するCPU12)に加わる負荷がなるべく小さい情報であることが好ましく、例えば処理対象の画像データ全体に対する個々の画像処理モジュール38の処理済み画像データの割合(詳しくはデータ量の割合やライン数の割合等)を表す情報を用いることができる。また、個々の画像処理モジュール38からは進行度合情報として処理済み画像データのデータ量やライン数を表す情報を送信させ、個々の画像処理モジュール38における画像処理の進行度合(上記の割合等)はワークフロー管理部46Aで演算するようにしてもよい。
The above-described progress degree information is preferably information with a minimal load on the image processing module 38 (the
次のステップ524では、ステップ522で判定した画像処理部全体としての画像処理の進行度合が、個々の画像処理モジュール38に対応するスレッドの実行優先度を変更すべき値になったか否か判定する。なお、スレッドの実行優先度の変更は頻繁に行う必要はなく、実行優先度の変更は頻繁に行うことでCPU12に余分な負荷が加わることを回避するために、ステップ524の判定における判定条件としては、例えばスレッドの実行優先度の変更(又は初期設定)を前回行ってから画像処理の進行度合が10%増加する毎に上記判定が肯定される等のように、余分な負荷にならない程度に疎な間隔でスレッドの実行優先度が変更される判定条件を用いればよい。
In the
上記判定が否定された場合は何ら処理を行うことなくブロック単位制御処理3を終了するが、上記判定が肯定された場合は、ステップ526において、初期設定時に各スレッドに設定した実行優先度の中央値(又は平均値)を基準として、初期設定時に高い実行優先度を設定したスレッドについては画像処理の進行に伴って実行優先度が徐々に低下し、初期設定時に低い実行優先度を設定したスレッドについては画像処理の進行に伴って実行優先度が徐々に増大するように、個々の画像処理モジュール38に対応するスレッドの実行優先度を変更設定した後にブロック単位制御処理3を終了する。
If the determination is negative, the block
なお、このステップ528における実行優先度の変更は、画像処理モジュール38の位置が最前段又は最後段に近づくに従って対応するスレッドの実行優先度の変更量を多くし、例として図9(B),(C)に示すように、画像処理部全体としての画像処理の終盤には前段側の画像処理モジュール38に対応するスレッドの実行優先度と後段側の画像処理モジュール38に対応するスレッドの実行優先度の大小関係が逆転するように行ってもよいし、例として図9(D),(E)に示すように、画像処理部全体としての画像処理の終盤には各画像処理モジュール38に対応するスレッドの実行優先度が一定となるように行ってもよい。画像処理部における一連の画像処理の進行に伴って、個々の画像処理モジュール38に対応するスレッドの実行優先度を上記のように変更することで、CPU12を有効に利用して高い処理効率で画像処理を行うことができる。なお、個々の画像処理モジュール38に対応するスレッドの実行優先度を上記のように初期設定及び変更することは、請求項14記載の発明に対応している。
Note that the change in the execution priority in this step 528 increases the change amount of the execution priority of the corresponding thread as the position of the
また、画像処理部50が画像処理を行っている間、画像処理部50を構成する個々の画像処理モジュール38及び個々のバッファモジュール40(に対応するスレッド)は、先に説明したようにリソース管理部46Bを介してメモリの取得及び解放を繰り返す。ここで、或るモジュールに対応するスレッドがリソース管理部46Bに対してメモリ取得を要求したものの、メモリを取得できずにリソース管理部46Bからエラーが返ってきた場合、当該モジュールが以降の処理を正常に行えない状態に陥るので、画像処理部50における処理全体が失敗に終わってしまうことになる。このため、本実施形態に係るリソース管理部46Bは、メモリの取得失敗が直ちに画像処理部50における処理全体の失敗を引き起こすことを回避するため、以下で説明する処理を行う。
In addition, while the
すなわち、リソース管理部46Bは、任意のモジュール(画像処理モジュール38又はバッファモジュール40)に対応する任意のスレッドからメモリ取得要求が入力される毎に、図11に示すメモリ取得要求時処理を行う。このメモリ取得要求時処理では、まずステップ600において、メモリ取得要求中のスレッドを登録するための待ち行列(メモリ取得待ち行列)が空か(取得要求情報が登録されていないか)否か判定する。この判定が肯定された場合、今回入力されたメモリ取得要求に対応するスレッド以外には、メモリ取得要求中のスレッドは存在していないと判断できる。このため、ステップ600の判定が肯定された場合はステップ602へ移行し、オペレーティングシステム30を通じて確保可能なメモリ領域(連続領域)の最大サイズをオペレーティングシステム30に問い合わせ、取得可能なメモリ領域の最大サイズを取得する。
That is, the resource management unit 46B performs the memory acquisition request processing shown in FIG. 11 each time a memory acquisition request is input from an arbitrary thread corresponding to an arbitrary module (the
次のステップ604では、ステップ602で取得した最大サイズを、今回入力されたメモリ取得要求に含まれる要求サイズと比較し、最大サイズが要求サイズ以上か否かを判断することで、今回入力されたメモリ取得要求で要求されているサイズのメモリ領域を確保可能か否かを判定する。判定が肯定された場合はステップ606へ移行し、オペレーティングシステム30を通じて要求サイズのメモリ領域を確保し、確保したメモリ領域の先頭アドレスをメモリ取得要求元のスレッドへ通知することで、確保したメモリ領域をメモリ取得要求元のスレッドへ引き渡し、メモリ取得要求時処理を終了する。この場合、メモリ取得要求元のスレッドに対応するモジュールは、以降の処理を正常に継続することができる。
In the
また、オペレーティングシステム30を通じて確保可能な最大サイズが、メモリ取得要求元のスレッドからの要求サイズ未満であった場合には、ステップ604の判定が否定されてステップ612へ移行し、メモリ取得要求元のスレッドのIDを認識し、認識したIDをオペレーティングシステム30へ通知することで、メモリ取得要求元のスレッドのCPU12による実行をオペレーティングシステム30を通じて停止させる。そしてステップ614では、メモリ取得要求元のスレッドの実行優先度を認識し、メモリ取得要求元のスレッドのID、実行優先度、要求サイズを、メモリ取得待ち行列への登録時刻と共に、取得要求情報としてメモリ取得待ち行列へ登録し、メモリ取得要求時処理を終了する。本実施形態では、複数の取得要求情報が存在している場合(メモリ取得要求中のスレッドが複数存在している場合)、個々の取得要求情報がメモリ取得待ち行列上で対応するスレッドの実行優先度の降順に並ぶようにメモリ取得待ち行列に登録するが、上記のようにステップ600の判定が肯定された場合はメモリ取得待ち行列が空であるので、上記の取得要求情報はメモリ取得待ち行列に単に登録するのみで済む。
If the maximum size that can be secured through the
また、任意のスレッドからメモリ取得要求が入力された際に、メモリ取得待ち行列に既に取得要求情報が登録されていた場合には、ステップ600の判定が否定されてステップ608へ移行し、今回入力されたメモリ取得要求に対応するスレッドの実行優先度を認識する。そして、次のステップ610では、メモリ取得待ち行列の先頭に登録されている取得要求情報を参照し、当該取得要求情報に対応するスレッドの実行優先度を認識し、ステップ608で認識した実行優先度(今回入力されたメモリ取得要求に対応するスレッドの実行優先度)が、メモリ取得待ち行列の先頭に登録されている取得要求情報に対応するスレッドの実行優先度よりも高いか否か判定する。判定が否定された場合はステップ612へ移行し、前述のようにメモリ取得要求元のスレッドの実行停止(ステップ612)、メモリ取得待ち行列への取得要求情報の登録(ステップ614)を順に行う。
Also, when a memory acquisition request is input from an arbitrary thread, if the acquisition request information has already been registered in the memory acquisition queue, the determination in
また、ステップ610の判定が肯定された場合はステップ602へ移行し、確保可能なメモリ領域の最大サイズの取得(ステップ602)、今回のメモリ取得要求で要求されているメモリ領域を確保可能か否かの判定(ステップ604)を順に行う。そして、要求されているメモリ領域を確保可能であれば、当該メモリ領域を確保して取得要求元のスレッドへ引き渡し(ステップ606)、要求されているメモリ領域を確保できない場合は、スレッドの実行停止、メモリ取得待ち行列への取得要求情報の登録(ステップ612,614)を行う。
If the determination in
このように、メモリ取得要求が入力されたものの、要求サイズのメモリ領域を取得要求元のスレッドに割当できない場合には、取得要求元のスレッドの動作を停止させて取得要求情報をメモリ取得待ち行列に登録するので、この間、動作が停止させたスレッドに対応するモジュールでも処理が停止するものの、任意のスレッドにおけるメモリ領域の取得失敗が直ちに画像処理部50における処理全体の失敗を引き起こすことを回避することができる。
As described above, when a memory acquisition request is input but a memory area of the requested size cannot be allocated to the acquisition request source thread, the operation of the acquisition request source thread is stopped and the acquisition request information is sent to the memory acquisition queue. During this time, processing is stopped even in the module corresponding to the thread whose operation is stopped, but it is avoided that a failure to acquire a memory area in an arbitrary thread immediately causes a failure of the entire processing in the
また、リソース管理部46Bは、任意のモジュール(画像処理モジュール38又はバッファモジュール40)に対応する任意のスレッドからメモリ解放要求が入力される毎に、図12に示すメモリ解放要求時処理を行う。このメモリ解放要求時処理では、まずステップ620において、解放が要求されたメモリ領域をオペレーティングシステム30を通じて解放する。次のステップ622では、メモリ取得待ち行列が空か(取得要求情報が登録されていないか)否か判定する。この判定が肯定された場合は何ら処理を行うことなくメモリ解放要求時処理を終了する。
Further, each time the memory release request is input from an arbitrary thread corresponding to an arbitrary module (the
また、メモリ取得待ち行列に空か取得要求情報が登録されている場合は、ステップ622の判定が否定されてステップ624へ移行し、オペレーティングシステム30を通じて確保可能なメモリ領域(連続領域)の最大サイズをオペレーティングシステム30に問い合わせ、取得可能なメモリ領域の最大サイズを取得する。次のステップ626では、ステップ624で取得した最大サイズを、メモリ取得待ち行列の先頭に登録されている取得要求情報に含まれる要求サイズと比較し、最大サイズが要求サイズ以上か否かを判断することで、メモリ取得待ち行列の先頭に登録されている取得要求情報で要求されているサイズのメモリ領域を確保可能か否か判定する。この判定が否定された場合は何ら処理を行うことなくメモリ解放要求時処理を終了する。この場合、メモリ取得待ち行列に登録されている取得要求情報に対応するスレッドは実行を停止している状態で維持される。
If the acquisition request information is registered in the memory acquisition queue, the determination in
また、ステップ626の判定が肯定された場合(メモリ取得待ち行列の先頭に登録されている取得要求情報で要求されているサイズのメモリ領域を確保可能と判定した場合)にはステップ628へ移行し、メモリ取得待ち行列の先頭から取得要求情報を取り出し、取り出した取得要求情報に含まれるIDをオペレーティングシステム30へ通知して、取り出した取得要求情報に対応するスレッドの実行停止状態をオペレーティングシステム30を通じて解除させる。そしてステップ630では、取り出した取得要求情報に含まれる要求サイズのメモリ領域をオペレーティングシステム30を通じて確保し、確保したメモリ領域の先頭アドレスをステップ628で実行停止状態を解除したスレッドへ通知することで、確保したメモリ領域を実行停止状態を解除したメモリ取得要求元のスレッドへ引き渡す。これにより、実行停止状態が解除されたスレッドに対応するモジュールは、停止していた処理を再開すると共に、要求していたメモリ領域を取得できたことで以降の処理を正常に行うことができる。
If the determination in
ステップ630の処理が終了するとステップ622に戻り、ステップ622の判定が肯定されるか、ステップ626の判定が否定される迄ステップ622〜ステップ630を繰り返す。これにより、メモリ取得待ち行列に複数の取得要求情報が登録されていた場合にも、個々の取得要求情報で取得が要求されているメモリ領域が確保可能か否かが順に(対応するスレッドの実行優先度の降順に)判定され、確保可能であれば、対応するスレッドの実行停止状態の解除(ステップ628)、メモリ領域の確保及び引き渡し(ステップ630)が行われることになる。
When the process of step 630 ends, the process returns to step 622, and steps 622 to 630 are repeated until the determination of
このように、本実施形態では、取得が要求されたメモリ領域を割当可能でない状態であった場合に、エラーを出力せずに取得要求元のスレッドの動作を停止させることで、当該スレッドに対応するモジュールによる処理を中断させ、その後、取得が要求されたメモリ領域を割当可能な状態になると、動作停止状態のスレッドの動作を再開させ、取得が要求されたメモリ領域の確保・割り当てを行うので、メモリ領域が一時的に不足しても画像処理部50における処理全体を継続させることができる。また、取得を要求しているスレッドが複数存在している場合に、要求されているメモリ領域を割当可能か否かの判定(及び割当可能な場合のメモリ領域の割当)をスレッドの実行優先度の降順に行うので、要求されたメモリ領域を確保できずに複数のスレッドの実行を停止させた後に、確保可能なメモリ領域が増大したことでスレッドの実行停止状態を解除してメモリ領域を割り当てる場合にも、画像処理部50における以降の処理を高い処理効率で行わせることができる。
As described above, in this embodiment, when the memory area requested to be acquired is not assignable, the operation of the acquisition request source thread is stopped without outputting an error, thereby corresponding to the thread. When the memory area requested for acquisition is interrupted, the operation of the suspended thread is resumed, and the memory area requested for acquisition is allocated and allocated. Even if the memory area is temporarily insufficient, the entire processing in the
また、取得が要求されたメモリ領域が確保できなかった場合、例えばCPU12によって画像処理部50に相当する複数のスレッドと並列に実行されている他のアプリケーションプログラムによるメモリの使用状況等によっては、取得が要求されたメモリを確保できる状況となる迄に非常に長い時間が掛かることで、画像処理部50における処理の完了を待っているユーザの待ち時間が極端に長くなり、ユーザに多大な負担が掛かる可能性がある。上記を考慮し、本実施形態に係るリソース管理部46Bは一定時間周期で図13に示す待ち時間監視処理を行う。
Further, when the memory area requested for acquisition cannot be secured, for example, depending on the usage status of the memory by other application programs executed in parallel with a plurality of threads corresponding to the
この待ち時間監視処理では、まずステップ640でメモリ取得待ち行列が空か否か判定する。判定が肯定された場合は何ら処理を行うことなく待ち時間監視処理を終了する。また、メモリ取得待ち行列に取得要求情報が登録されている場合には、ステップ640からステップ642へ移行しカウンタnに1を代入する。次のステップ644では、メモリ取得待ち行列に登録されているn番目の取得要求情報を参照し、当該取得要求情報に含まれる登録時刻(メモリ取得待ち行列への取得要求情報の登録時刻)を認識する。次のステップ646では、ステップ644で認識した登録時刻からの経過時間が予め設定した閾値よりも大きいか否か判定する。
In this waiting time monitoring process, it is first determined in
判定が否定された場合はステップ648へ移行してカウンタnの値を1だけインクリメントし、次のステップ650において、メモリ取得待ち行列にn番目の取得要求情報が登録されているか否か判定する。判定が肯定された場合はステップ644へ戻り、ステップ646の判定が肯定されるかステップ650の判定が否定される迄、ステップ644〜ステップ650を繰り返す。このステップ644〜ステップ650では、メモリ取得待ち行列に登録されている取得要求情報の中に、登録時刻からの経過時間が閾値を越えた取得要求情報が存在しているか否かを探索しており、該当する取得要求情報が存在していない場合には、ステップ650の判定が否定され、何ら処理を行うことなく待ち時間監視処理を終了する。
If the determination is negative, the process proceeds to step 648 and the value of the counter n is incremented by 1. In the
また、メモリ取得待ち行列に登録されている取得要求情報の中に、登録時刻からの経過時間が閾値を越えた取得要求情報が存在していた場合には、ステップ646の判定が肯定されてステップ652へ移行し、メモリ取得待ち行列に登録されている全ての取得要求情報を取り出し、取り出した取得要求情報に含まれるIDをオペレーティングシステム30へ通知することで、取り出した取得要求情報に対応するスレッドの実行停止状態をオペレーティングシステム30によって解除させる。そしてステップ654では、実行停止状態を解除させた全てのスレッドに対し、メモリ取得要求へのエラー応答を返す。これにより、各スレッドに対応するモジュールにおける処理で各々エラーが発生することで、画像処理部50における画像処理全体が中止されることになり、画像処理部50における処理の完了を待っているユーザの待ち時間が極端に長くなることで、ユーザに多大な負担が掛かることを防止することができる。
If the acquisition request information registered in the memory acquisition queue includes acquisition request information whose elapsed time from the registration time exceeds the threshold, the determination in
なお、上記ではリソース管理部46Bによるメモリ管理の方式として、画像処理部50の個々のモジュールからの要求の都度、メモリ14から要求元のモジュールに割り当てるメモリ領域をオペレーティングシステム30を通じて確保する管理方式を前提に説明したが、これに限定されるものではなく、メモリ14から一定サイズのメモリ領域をオペレーティングシステム30を通じて事前に確保し、個々のモジュールからの要求があると、要求されたメモリ領域のサイズが閾値未満であれば事前に確保したメモリ領域のうちの一部領域を要求元のモジュールに割り当て、要求されたメモリ領域のサイズが閾値以上であれば要求元のモジュールに割り当てるメモリ領域をオペレーティングシステム30を通じて確保する管理方式に本発明を適用することも可能である。
In the above, as a memory management method by the resource management unit 46B, a management method for securing a memory area to be allocated from the
また、上記では任意のスレッドからメモリ解放要求が入力される毎に、メモリ解放要求時処理により、メモリ取得待ち行列に登録した取得要求情報によって取得が要求されているメモリ領域が確保可能になったか否かを判定する態様(請求項4記載の発明に相当)を説明したが、これに限定されるものではなく、メモリ領域が確保可能になったか否かを一定時間周期で判定するようにしてもよい(請求項3記載の発明に相当)。 In addition, in the above, every time a memory release request is input from an arbitrary thread, whether the memory area requested for acquisition can be secured by the acquisition request information registered in the memory acquisition queue by the memory release request processing Although the aspect (equivalent to the invention described in claim 4) has been described, the present invention is not limited to this, and it is determined at regular intervals whether or not the memory area can be secured. (It is equivalent to the invention of claim 3).
また、上記ではメモリ取得待ち行列の中に、メモリ取得待ち行列に登録してからの経過時間が閾値を越えた取得要求情報が存在していた場合に、メモリ取得要求元のスレッドにエラー応答を返して画像処理部50における画像処理全体を中止させる態様(請求項6記載の発明に相当)を説明したが、任意の画像処理モジュール38に対応するスレッドからメモリ取得要求が入力された際に、他の全ての画像処理モジュール38に対応するスレッドが、メモリ取得待ち行列に取得要求情報が登録されている状態、又は、前段のモジュールから画像データを取得可能となる迄待っている状態(画像処理モジュール制御処理(図6)のステップ222,224を繰り返している状態)か否かを判定し、上記条件に該当した場合にも、メモリ取得要求元のスレッドにエラー応答を返して画像処理部50における画像処理全体を中止させるようにしてもよい(請求項7記載の発明に相当)。
In addition, in the above, if there is acquisition request information in the memory acquisition queue that has exceeded the threshold for the elapsed time since registration in the memory acquisition queue, an error response is sent to the memory acquisition request source thread. Returning, the aspect (corresponding to the invention described in claim 6) of stopping the entire image processing in the
更に、上記では任意のスレッドからメモリ解放要求が入力された際に、メモリ取得待ち行列に登録した取得要求情報によって要求されているメモリ領域を確保可能になったか否かを判定し、確保可能であればメモリ領域を割り当てる処理を、個々の取得要求情報に対応するスレッドの実行優先度の降順に行う態様(請求項10記載の発明に相当)を説明したが、本発明は上記態様に限定されるものではなく、メモリ取得要求の入力順に取得要求情報をメモリ取得待ち行列に登録し、任意のスレッドからメモリ解放要求が入力された際に、メモリ取得待ち行列の先頭から取得要求情報を取り出し、取り出した取得要求情報によって要求されているメモリ領域を確保可能になったか否かを判定し、確保可能になっていないと判定した場合は、取り出した取得要求情報をメモリ取得待ち行列の末尾に再登録するようにしてもよい(請求項9記載の発明及び請求項11に記載の「第1の実行単位プログラムから記憶リソースの割当が要求されたときに、第2の実行単位プログラムからの割当要求が待ち行列に既に登録されている場合に、第1の実行単位プログラムからの割当要求をそのまま待ち行列に登録する」態様に相当)。この場合、個々の取得要求情報に対応するスレッドの実行優先度は考慮されないものの、個々の取得要求情報に対応するスレッドの実行停止時間(メモリ取得要求を出力してからメモリを取得する迄の待ち時間)を平均化することができる。
Furthermore, in the above, when a memory release request is input from an arbitrary thread, it is possible to determine whether or not the requested memory area can be secured by the acquisition request information registered in the memory acquisition queue. Although there has been described a mode (corresponding to the invention according to claim 10) in which the process of allocating the memory area is performed in descending order of the execution priority of the thread corresponding to each acquisition request information, the present invention is limited to the above mode Instead of registering acquisition request information in the memory acquisition queue in the order of input of the memory acquisition request, when a memory release request is input from any thread, the acquisition request information is extracted from the top of the memory acquisition queue, It is determined whether or not the memory area requested by the acquired acquisition request information can be secured. The acquired acquisition request information may be re-registered at the end of the memory acquisition queue (the invention according to
また、上記では任意のスレッドからメモリ取得要求が入力された際に、メモリ取得要求元のスレッドの実行優先度が、メモリ取得待ち行列の先頭に登録されている取得要求情報に対応するスレッドの実行優先度よりも高いか否か判定し、判定が否定された場合は、要求されたメモリ領域を確保可能か否かを判定することなく、メモリ取得待ち行列に取得要求情報を登録する態様(請求項12記載の発明に相当)を説明したが、これに限定されるものではなく、任意のスレッドからメモリ取得要求が入力された際に、要求されたメモリ領域を確保可能か否かを判定し、確保可能であれば要求されたメモリ領域をメモリ取得要求元のスレッドに割り当て、確保可能でない場合に取得要求情報をメモリ取得待ち行列に登録するようにしてもよい(請求項11記載の発明に相当)。 In the above, when a memory acquisition request is input from an arbitrary thread, the execution priority of the thread that is the memory acquisition request source is the execution of the thread corresponding to the acquisition request information registered at the top of the memory acquisition queue. It is determined whether or not the priority is higher than the priority, and if the determination is negative, the acquisition request information is registered in the memory acquisition queue without determining whether or not the requested memory area can be secured (request) However, the present invention is not limited to this, and when a memory acquisition request is input from an arbitrary thread, it is determined whether or not the requested memory area can be secured. If the allocation is possible, the requested memory area may be allocated to the memory acquisition request source thread, and if the allocation is not possible, the acquisition request information may be registered in the memory acquisition queue. It corresponds to the invention of claim 11).
また、上記では個々の画像処理モジュール38に対応する個々のスレッドの実行優先度を、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール38の位置が前段側になるに従って高くなるように初期設定すると共に、画像処理の進行度合に応じて変更する態様(請求項14記載の発明に相当)を説明したが、本発明はこれに限定されるものではなく、例えば個々の画像処理モジュール38における画像処理が、CPU12に加わる負荷のばらつきの大きい画像処理である等の場合には、個々の画像処理モジュール38の処理負荷を予め推定した結果に応じて、個々の画像処理モジュール38に対応するスレッドの実行優先度を固定的に設定するようにしてもよい(請求項13記載の発明に相当)。
Further, in the above, the execution priority of each thread corresponding to each
また、個々の画像処理モジュール38に対応するスレッドの実行優先度を、個々の画像処理モジュールについて、後段のバッファモジュール40を介して後段に連結された画像処理モジュール38(位置値=自モジュールの位置値+1の画像処理モジュール38)から前記後段のバッファモジュール40に読出要求が入力されたものの、前記後段のバッファモジュール40に記憶されている有効データが単位読出データ量未満であったために、前記後段のバッファモジュール40からデータ要求が入力されると共に、前記後段の画像処理モジュールに「待ち」(バッファモジュール40の有効データが単位読出データ量以上となる迄待機する状況)を発生させた回数(待ち発生回数)に応じて変更するようにしてもよい。
In addition, the execution priority of the thread corresponding to each
具体的には、ワークフロー管理部46Aは、個々の画像処理モジュール38について待ち発生回数(初期値=0)を予め保持しており、任意のバッファモジュール40からデータ要求が入力される毎に、データ要求入力元のバッファモジュール40の前段の画像処理モジュール38について待ち発生回数を1だけインクリメントする。そしてワークフロー管理部46Aは、一定の時間周期で、個々の画像処理モジュール38について各々保持している待ち発生回数の平均値を演算し、演算した待ち発生回数の平均値と、個々の画像処理モジュール38の待ち発生回数の偏差に応じて、各画像処理モジュール38に対応するスレッドの実行優先度を変更する。実行優先度の変更は、待ち発生回数が平均値よりも多い画像処理モジュール38に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って増大し、待ち発生回数が平均値よりも少ない画像処理モジュール38に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って低下するように行うことができ、具体的には、例えば以下の式に従って行うことができる。
Specifically, the
実行優先度の変更率(%)=(待ち発生回数−待ち発生回数の平均値)/平均値×100
変更後の実行優先度=実行優先度+(実行優先度×変更率)/100
なお、上記演算に際し、待ち発生回数の平均値に代えて待ち発生回数の中央値を用いてもよい。
Execution priority change rate (%) = (Number of wait occurrences-Average value of wait occurrences) / Average value x 100
Execution priority after change = execution priority + (execution priority x change rate) / 100
In the calculation, the median value of the number of waiting occurrences may be used instead of the average value of the number of waiting occurrences.
待ち発生回数が平均値よりも多い画像処理モジュール38は、後段のバッファモジュール40を介して後段に連結された画像処理モジュール38に比較的多数回の「待ち」を発生させており、当該画像処理モジュール38における画像処理が画像処理部全体としての画像処理のボトルネックになっていると判断できるが、上記処理ではこのような画像処理モジュール38に対応するスレッドの実行優先度が増大される。また、待ち発生回数が平均値よりも少ない画像処理モジュール38は、後段のバッファモジュール40を介して後段に連結された画像処理モジュール38における「待ち」の発生回数が比較的少ないので、当該画像処理モジュール38よりも待ち発生回数が比較的多い他の画像処理モジュール38における画像処理を優先させた方が画像処理部全体としての画像処理を効率化できるが、上記処理ではこのような画像処理モジュール38に対応するスレッドの実行優先度が低下される。
The
これにより、個々の画像処理モジュール38に対応するスレッドの実行優先度を、後段の画像処理モジュール38における待ち発生回数(と待ち発生回数の平均値との偏差)に応じて最適化することができ、CPU12を有効に利用して高い処理効率で画像処理を行うことができる。また、メモリ取得待ち行列に登録される取得要求情報が、上記のようにして設定された実行優先度に従って配列されることで、要求されたメモリ領域を確保できずに複数のスレッドの実行を停止させた後に、確保可能なメモリ領域が増大したことでスレッドの実行停止状態を解除してメモリ領域を割り当てる場合にも、画像処理部50における以降の処理を高い処理効率で行わせることができる。なお、個々の画像処理モジュール38に対応するスレッドの実行優先度を上記のように設定・変更することは、請求項16記載の発明に対応している。
Thereby, the execution priority of the thread corresponding to each
なお、上記態様において、後段のバッファモジュール40からデータ要求が入力された回数、すなわち後段のバッファモジュール40を介して後段に連結された画像処理モジュール38で「待ち」が発生した回数に、個々の画像処理モジュール38が後段のバッファモジュール40へ画像データを書き込んだものの後段のバッファモジュール40の有効データが、後段の画像処理モジュール38の単位読出データ量に達しなかった回数を加算した回数を待ち発生回数として用いるようにしてもよい。この場合、待ち発生回数が、後段の画像処理モジュール38における「待ち」の度合いをより正確に反映した値となるので好ましい。
In the above aspect, the number of times a data request is input from the
また、上記態様において、後段のバッファモジュール40を介して連結された後段の画像処理モジュール38における「待ち」の発生回数に応じて、個々の画像処理モジュール38に対応するスレッドの実行優先度を変更することに加え、自モジュールのおける「待ち」の発生回数に応じてスレッドの実行優先度を変更する(詳しくは、待ち発生回数が比較的多い画像処理モジュール38に対応するスレッドは実行優先度を低下させ、待ち発生回数が比較的少ない画像処理モジュール38に対応するスレッドは実行優先度を増大させる)ようにしてもよい。
In the above aspect, the execution priority of the thread corresponding to each
また、個々の画像処理モジュール38に対応するスレッドの実行優先度を、個々のバッファモジュール40の後段の画像処理モジュール38が、個々のバッファモジュール38から画像データを取得する際の単位データ量に対する、個々のバッファモジュール40に記憶されている画像データのデータ量の比率に応じて変更するようにしてもよい。これは、例えばワークフロー管理部46Aが、一定の時間周期で以下の処理を行うことで実現できる。
In addition, the execution priority of the thread corresponding to each
すなわち、まず個々のバッファモジュール40の現在の蓄積データ量を取得し、個々のバッファモジュール40について、後段の画像処理モジュール38の単位読出データ量に対する各バッファモジュール40の現在の蓄積データ量の比率を演算する。例えば蓄積データ量が画像のライン数で表される値であり、或るバッファモジュール40における蓄積データ量が「10ライン」、当該バッファモジュール40の後段の画像処理モジュール38の単位読出データ量が「1ライン」であるとすると蓄積データ量の比率は10/1=10となり、後段の画像処理モジュール38の単位読出データ量が「8ライン」であるとすると蓄積データ量の比率は10/8=1.25となる。そして、各バッファモジュール40毎に演算した蓄積データ量の比率の平均値を演算し、演算した蓄積データ量の比率の平均値と、個々のバッファモジュール40の蓄積データ量の比率の偏差に応じて、個々のバッファモジュール40の前段の各画像処理モジュール38に対応するスレッドの実行優先度を変更する。
That is, first, the current accumulated data amount of each
この実行優先度の変更は、蓄積データ量の比率が平均値よりも少ないバッファモジュール40の前段の画像処理モジュール38に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って増大し、蓄積データ量の比率が平均値よりも少ないバッファモジュールの前段の画像処理モジュール38に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って増大するように行うことができ、具体的には、例えば以下の式に従って行うことができる。
This change in the execution priority of the
実行優先度の変更率(%)=(平均値−蓄積データ量の比率)/平均値×100
変更後の実行優先度=元の実行優先度+(実行優先度×変更率)/100
なお、上記演算に際し、蓄積データ量の比率の平均値に代えて蓄積データ量の比率の中央値を用いてもよい。
Execution priority change rate (%) = (average value-ratio of accumulated data) / average value x 100
Execution priority after change = original execution priority + (execution priority x change rate) / 100
In the above calculation, the median value of the ratio of the accumulated data amount may be used instead of the average value of the ratio of the accumulated data amount.
蓄積データ量の比率が平均値よりも小さいバッファモジュール40は、後段の画像処理モジュール38における単位読出データ量に比して有効データのデータ量が乏しく、後段の画像処理モジュール38で比較的多数回の「待ち」が発生している可能性が高く、また当該バッファモジュール40の前段の画像処理モジュール38における画像処理が画像処理部全体としての画像処理のボトルネックになっている可能性が高いが、上記処理ではこのような画像処理モジュール38に対応するスレッドの実行優先度が増大される。また、蓄積データ量の比率が平均値よりも大きいバッファモジュール40には、後段の画像処理モジュール38における単位読出データ量に比して十分なデータ量の有効データが記憶されているので、当該バッファモジュールの前段の画像処理モジュール38よりも、蓄積データ量の比率が比較的小さい他のバッファモジュール40の前段の画像処理モジュール38における画像処理を優先させた方が画像処理部全体としての画像処理を効率化できるが上記処理ではこのような画像処理モジュール38に対応するスレッドの実行優先度が低下される。
The
これにより、個々の画像処理モジュール38に対応するスレッドの実行優先度が、後段のバッファモジュール40における蓄積データ量の比率(と蓄積データ量の比率の平均値との偏差)に応じて最適化されることになり、CPU12を有効に利用して高い処理効率で画像処理を行うことができる。また、メモリ取得待ち行列に登録される取得要求情報が、上記のようにして設定された実行優先度に従って配列されることで、要求されたメモリ領域を確保できずに複数のスレッドの実行を停止させた後に、確保可能なメモリ領域が増大したことでスレッドの実行停止状態を解除してメモリ領域を割り当てる場合にも、画像処理部50における以降の処理を高い処理効率で行わせることができる。なお、個々の画像処理モジュール38に対応するスレッドの実行優先度を上記のように設定・変更することは、請求項15記載の発明に対応している。
As a result, the execution priority of the thread corresponding to each
また、上記では本発明に係る記憶リソースとしてメモリ14を例に説明したが、本発明はこれに限定されるものではなく、メモリ以外にHDDやフラッシュメモリ、通信回線を介してコンピュータ10に接続された各種の外部記憶デバイスを記憶リソースとして適用することも可能である。また、記憶リソースとして確保する記憶デバイスを、上記のような複数種の記憶デバイスの中から選択可能に構成した場合、記憶リソースに対するアクセス速度が、記憶リソースとして使用する記憶デバイスの種類や、記憶デバイスとの間の通信回線の回線速度等の環境によって変化するので、記憶リソースの取得を要求しているスレッドが複数存在していた場合、アクセス速度が高速の記憶リソースを、実行優先度が高いスレッドに優先的に割り付けることが好ましい。
In the above description, the
更に、上記では上記では画像処理部50を並列処理方式で動作させるに際し、画像処理部50を構成する個々のモジュール(のプログラム)を各々別のスレッドとして実行させる態様を説明したが、これに限定されるものではなく、画像処理モジュール38が前段のバッファモジュール40から画像データを読み出す際及び後段のバッファモジュール40に画像データ等を書き込む際には、画像処理モジュール38における画像処理等が一時的に停止している状態であることを考慮すると、個々のバッファモジュール40のバッファ制御部に相当するプログラムを、データ書込処理を行う書込制御部40C(図3(B)参照)のプログラムと、データ読出処理を行う読出制御部40D(図3(B)参照)のプログラムに分離し、画像処理モジュール38のプログラムと、前記画像処理モジュール38の前段のバッファモジュール40の読出制御部のプログラムと、前記画像処理モジュール38の後段のバッファモジュール40の書込制御部のプログラムを単一のスレッドとして実行させ、画像処理部50を構成する個々の画像処理モジュール38について上記のスレッドを生成し、並列に実行させることで画像処理部50を並列処理方式で動作させるようにしてもよい。
Furthermore, in the above description, the mode in which the individual modules (programs) constituting the
10 コンピュータ
12 CPU
14 メモリ
20 記憶部
22 画像データ供給部
24 画像出力部
38 画像処理モジュール
38A 画像処理エンジン
38B 制御部
40 バッファモジュール
46 処理管理部
46A ワークフロー管理部
46B リソース管理部
50 画像処理部
10
14
Claims (17)
任意の実行単位プログラムから記憶リソースの割当が要求される毎に、割当が要求された記憶リソースを前記割当要求元の実行単位プログラムに割当可能か否かを判定し、割当可能でないと判断した場合に前記割当要求元の実行単位プログラムの動作を停止させると共に、前記割当が要求された記憶リソースを前記動作を停止させた前記割当要求元の実行単位プログラムに割当可能になったと判断した場合に、前記動作を停止させた前記割当要求元の実行単位プログラムの動作を再開させ、前記動作を再開させた前記割当要求元の実行単位プログラムに前記割当が要求された記憶リソースを割り当てる管理手段と、
を含む画像処理装置。 Processing for acquiring image data from the previous stage of the own module, performing predetermined image processing on the acquired image data, and outputting 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 A plurality of image processing modules having a function to be used are connected in a pipeline form or a directed acyclic graph form, and correspond to and correspond to different one or a plurality of image processing modules. A plurality of execution unit programs that request allocation and release of storage resources used by the image processing unit that are executed in parallel by the program execution resources; and
Each time a storage resource allocation is requested from an arbitrary execution unit program, it is determined whether or not the storage resource requested for allocation can be allocated to the execution unit program of the allocation request source. The operation of the execution unit program of the allocation request source is stopped, and when it is determined that the storage resource requested to be allocated can be allocated to the execution unit program of the allocation request source that has stopped the operation, Management means for allocating the storage resource requested for allocation to the execution unit program of the allocation request source that has resumed the operation, resuming the operation of the execution request program of the allocation request source that has stopped the operation;
An image processing apparatus.
前記管理手段は、割当可能な記憶リソース量が通知された必要記憶リソース量以上か否かを判断することで、前記割当が要求された記憶リソースを前記割当要求元の実行単位プログラムに割当可能か否かを判定することを特徴とする請求項1乃至請求項4の何れか1項記載の画像処理装置。 Each said execution unit program notifies the amount of storage resources required at the time of a storage resource allocation request,
Whether the management means can allocate the storage resource requested for allocation to the execution unit program of the allocation request source by determining whether or not the allocated storage resource amount exceeds the notified required storage resource amount. The image processing apparatus according to claim 1, wherein a determination is made as to whether or not.
前記管理手段は、前記画像処理の進行度合として、個々のバッファモジュールの後段の画像処理モジュールが前記個々のバッファモジュールから画像データを取得する際の単位データ量に対する、前記個々のバッファモジュールに記憶されている画像データのデータ量の比率を用い、前記個々のバッファモジュールにおける前記比率に応じて、対応する個々の実行単位プログラムの実行優先度を変更することを特徴とする請求項14記載の画像処理装置。 The image processing unit includes a buffer composed of storage resources in at least one of the preceding stage and the succeeding stage of each of the plurality of image processing modules, and when the image processing module is connected to the preceding stage of its own module, The image data output from the image processing module is written in the buffer, and when the image processing module is connected to the subsequent stage of the own module, the image data stored in the buffer is converted to the subsequent image processing module. The execution unit program corresponds to at least one of different single or plural image processing modules and different single or plural buffer modules, and corresponds to the buffer module. The execution unit program has a corresponding buffer Requesting allocation and release of memory resources used by the module,
The management means is stored in the individual buffer module as the degree of progress of the image processing with respect to a unit data amount when an image processing module subsequent to the individual buffer module acquires image data from the individual buffer module. 15. The image processing according to claim 14, wherein the execution priority of each corresponding execution unit program is changed in accordance with the ratio in the individual buffer modules using a ratio of the amount of image data being stored. apparatus.
自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する処理を記憶リソースを使用して行う機能を備えた複数の画像処理モジュールが、パイプライン形態又は有向非循環グラフ形態で連結されて成り、互いに異なる単一又は複数の画像処理モジュールに対応しかつ対応する画像処理モジュールが使用する記憶リソースの割当及び解放を要求する複数の実行単位プログラムが、プログラム実行リソースによって並列に実行されることによって動作する画像処理部、
及び、任意の実行単位プログラムから記憶リソースの割当が要求される毎に、割当が要求された記憶リソースを前記割当要求元の実行単位プログラムに割当可能か否かを判定し、割当可能でないと判断した場合に前記割当要求元の実行単位プログラムの動作を停止させると共に、前記割当が要求された記憶リソースを前記動作を停止させた前記割当要求元の実行単位プログラムに割当可能になったと判断した場合に、前記動作を停止させた前記割当要求元の実行単位プログラムの動作を再開させ、前記動作を再開させた前記割当要求元の実行単位プログラムに前記割当が要求された記憶リソースを割り当てる管理手段
として機能させる画像処理プログラム。 A computer having storage resources and program execution resources;
Processing for acquiring image data from the previous stage of the own module, performing predetermined image processing on the acquired image data, and outputting 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 A plurality of image processing modules having a function to be used are connected in a pipeline form or a directed acyclic graph form, and correspond to and correspond to different one or a plurality of image processing modules. An image processing unit that operates by executing a plurality of execution unit programs that request allocation and release of storage resources used by the program execution resources in parallel;
Each time storage resource allocation is requested by an arbitrary execution unit program, it is determined whether or not the storage resource requested for allocation can be allocated to the execution unit program of the allocation request source, and it is determined that allocation is not possible. When it is determined that the operation of the execution unit program of the allocation request source is stopped and the storage resource requested to be allocated can be allocated to the execution unit program of the allocation request source that has stopped the operation. Management means for resuming operation of the execution unit program of the allocation request source that has stopped the operation and allocating the storage resource requested for allocation to the execution unit program of the allocation request source that has resumed the operation An image processing program to function.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006153225A JP2007323393A (en) | 2006-06-01 | 2006-06-01 | Image processor and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006153225A JP2007323393A (en) | 2006-06-01 | 2006-06-01 | Image processor and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007323393A true JP2007323393A (en) | 2007-12-13 |
Family
ID=38856136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006153225A Pending JP2007323393A (en) | 2006-06-01 | 2006-06-01 | Image processor and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007323393A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013021441A1 (en) * | 2011-08-05 | 2013-02-14 | 富士通株式会社 | Data processing system and data processing method |
JP2013242796A (en) * | 2012-05-22 | 2013-12-05 | Fujitsu Ltd | Drawing process device and drawing process method |
CN103620548A (en) * | 2011-06-20 | 2014-03-05 | 微软公司 | Memory manager with enhanced application metadata |
US10069993B2 (en) | 2015-07-22 | 2018-09-04 | Canon Kabushiki Kaisha | Resource management apparatus, resource management method and image forming apparatus |
CN108780565A (en) * | 2016-03-24 | 2018-11-09 | 富士胶片株式会社 | Image processing apparatus, image processing method and image processing program |
-
2006
- 2006-06-01 JP JP2006153225A patent/JP2007323393A/en active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620548A (en) * | 2011-06-20 | 2014-03-05 | 微软公司 | Memory manager with enhanced application metadata |
JP2014517434A (en) * | 2011-06-20 | 2014-07-17 | マイクロソフト コーポレーション | Computer-implemented method and computer system |
US9558040B2 (en) | 2011-06-20 | 2017-01-31 | Microsoft Technology Licensing, Llc | Memory manager with enhanced application metadata |
CN103620548B (en) * | 2011-06-20 | 2017-07-28 | 微软技术许可有限责任公司 | Memory manager with enhanced application metadata |
WO2013021441A1 (en) * | 2011-08-05 | 2013-02-14 | 富士通株式会社 | Data processing system and data processing method |
JPWO2013021441A1 (en) * | 2011-08-05 | 2015-03-05 | 富士通株式会社 | Data processing system and data processing method |
US9405470B2 (en) | 2011-08-05 | 2016-08-02 | Fujitsu Limited | Data processing system and data processing method |
JP2013242796A (en) * | 2012-05-22 | 2013-12-05 | Fujitsu Ltd | Drawing process device and drawing process method |
US10069993B2 (en) | 2015-07-22 | 2018-09-04 | Canon Kabushiki Kaisha | Resource management apparatus, resource management method and image forming apparatus |
CN108780565A (en) * | 2016-03-24 | 2018-11-09 | 富士胶片株式会社 | Image processing apparatus, image processing method and image processing program |
US10878526B2 (en) | 2016-03-24 | 2020-12-29 | Fujifilm Corporation | Image processing apparatus, image processing method, and image processing program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4694266B2 (en) | Image processing apparatus, method, and program | |
JP4979287B2 (en) | Image processing apparatus and program | |
JP4694270B2 (en) | Image processing apparatus, method, and program | |
JP4694267B2 (en) | Image processing apparatus, method, and program | |
JP4795138B2 (en) | Image processing apparatus and program | |
JP5479519B2 (en) | Image processing apparatus, method, and program | |
JP4694268B2 (en) | Image processing apparatus, method, and program | |
JP5046801B2 (en) | Image processing apparatus and program | |
JP5703729B2 (en) | Data processing apparatus and program | |
JP4694264B2 (en) | Image processing apparatus, method, and program | |
JP2008009696A (en) | Image processor and program | |
JP4694265B2 (en) | Image processing apparatus, method, and program | |
JP2007287085A (en) | Program and device for processing images | |
JP2008140046A (en) | Image processor, image processing program | |
JP4694269B2 (en) | Image processing apparatus, method, and program | |
JP2007323393A (en) | Image processor and program | |
JP2007287084A (en) | Image processor and program | |
JP4762865B2 (en) | Image processing apparatus and image processing program | |
JP5440129B2 (en) | Image processing apparatus, image forming apparatus, and image processing program | |
JP2009053829A (en) | Information processor and information processing program | |
JP5047139B2 (en) | Image processing apparatus and program | |
JP5036588B2 (en) | Image processing apparatus and image processing program | |
JP2008139968A (en) | Image processor and program | |
JP2012043096A (en) | Device, method and program of image processing | |
JP2008140170A (en) | Image processor and program |