JP2009053829A - 情報処理装置、情報処理プログラム - Google Patents

情報処理装置、情報処理プログラム Download PDF

Info

Publication number
JP2009053829A
JP2009053829A JP2007218462A JP2007218462A JP2009053829A JP 2009053829 A JP2009053829 A JP 2009053829A JP 2007218462 A JP2007218462 A JP 2007218462A JP 2007218462 A JP2007218462 A JP 2007218462A JP 2009053829 A JP2009053829 A JP 2009053829A
Authority
JP
Japan
Prior art keywords
execution
processing
unit
queue
predetermined
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
Application number
JP2007218462A
Other languages
English (en)
Inventor
Takashi Nagao
隆 長尾
Yoichi Isaka
洋一 井坂
Takashi Igarashi
貴 五十嵐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Corp
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2007218462A priority Critical patent/JP2009053829A/ja
Publication of JP2009053829A publication Critical patent/JP2009053829A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

【課題】複数のモジュールを効率よく実行することを可能とする情報処理装置、情報処理プログラムを提供する。
【解決手段】待ち行列から、次に実行する所定の処理を示す識別情報を取得し、取得された識別情報が示す所定の処理が実行可能か否か判断し、判断結果を出力し、出力された判断結果が実行可能を示す場合に、所定の処理のうちの一部の処理を演算処理手段を用いることにより実行し、一部の処理が複数回にわたり実行されたことにより、対応する所定の処理の全てが終了したか否か判断し、所定の処理が実行不可能な場合、又は所定の処理が終了していない場合に、所定の処理を示す識別情報を待ち行列に復帰させ、所定の処理が終了したと判断された場合に、所定の処理を示す識別情報を待ち行列に復帰させずに破棄する。
【選択図】図10

Description

本発明は、情報処理装置、情報処理プログラムに関する。
複数の画像処理モジュールを組み合わせて所望の処理手順を構築して、画像処理を行う方式としては、特許文献1に記載されているように、画像処理モジュールを直接接続して各モジュールが自身の前段の画像処理モジュールを呼び出して処理する方式や、各画像処理モジュールの間に画像データを一時保持するバッファを配置し、バッファに出力要求に応えられるだけのデータが蓄積されていなければ前段の画像処理モジュールに処理を行わせる事で全体を連携させて処理する方式が提案されている。
さらに、上記複数の画像処理モジュールを組み合わせる方式を高速処理するため、並列処理による高速化も提案されており、特許文献1に対応する並列化方式としては特許文献2がある。
また、パイプラインまたはDAG構造の末端モジュールに対して処理指示を行うか、または制御手段に末端モジュールを指定して制御手段に処理指示をし、制御手段が末端を呼び出して処理を行うよう構成の場合、DAG構造のように末端が複数あっても良いケースなどでは、ユーザや制御部は複数の末端(例えばA,B)を管理し、その呼び出し方(AAAAA…,BBBBB… とするか ABABABABAB… とするかなど)を制御する必要があり、制御が複雑になっている。
特許第3617851号明細書 特開平10−304184号公報 特開2005−250565号公報 特開2006−4382号公報
このような技術背景において、複数の画像処理モジュールを組み合わせて処理する方式では、複数のスレッドを割り付けて並列化する事により処理速度を向上させる手法が提案されている。しかしながら、並列処理には排他制御という(逐次制御にはない)余分なコストが発生し、また装置には固有の/その時点での有効に動作可能なスレッド数があるため、A個のモジュールを並列に処理する場合に単純にA個のスレッドで処理すれば良いとは限らない。
また、図13に示されるように、A個(図では5個)のモジュールをA個のスレッドに割り付け、装置の有効演算リソース数がN個の場合には(A>N)、OS(Operating System)がそのスケジューリングを行うが、余分なスレッドの切り替えが発生して効率が落ちるし、さらに1つの演算リソースに適当にスレッドが配置されるので均等に演算リソースが使用されず、結果として(総処理コスト/演算リソース)よりもかなり多くの処理コストがかかる場合がある。上記の特許文献2に開示された技術などでは、この課題に対応できていなかった。
このような、割り付け不均等による並列化効率の低下を避けるため、これまで各種の考案がなされている。
例えば特許文献3では、直前の実行結果から負荷を見積もり、それによって処理モジュールを負荷の重いもの/軽いものの2つのグループに分ける技術が開示されている。最初に重いモジュールの単位処理を割り付け、割り付け終わったら予測負荷が少ないスレッドから順に軽いモジュールの単位処理を割り付ける。こうする事で、割り付けの不均等を少なくしている。
しかし、特許文献3に開示された技術では、処理モジュールの順序などを考慮せずに割り当てしているため、各モジュール間に何らかの排他制御が必要になり、演算リソースが少なく有効なスレッド数がモジュール数よりも少ない時に、無駄な排他制御が入り効果が少ない並列化を行う事になる。
また特許文献4に開示された技術では、処理やその順序が固定の場合には利用可能だが、処理や順序が異なる場合には利用できない。
更に他の方法として、図14に示されるように、A個のモジュール群をN個のグループに分け、グループ間は排他制御付きのバッファで接続し、グループ内は排他制御なしのバッファで接続し、N個のグループをN個のスレッドに割り付けることで、余分な排他制御コストなしに、並列化効果が高い、任意の処理や処理順序に対応可能なものもある。
しかし上記方法では、モジュール群をなるべく負荷均等になるようにN個にグループ分けする前処理が必要であった。
このように、従来の技術では、本来の処理以外の処理が必要となる等のため、複数のモジュールを効率よく実行することが出来ないという問題点があった。
本発明は上記問題点に鑑み、複数のモジュールを効率よく実行することを可能とする情報処理装置、情報処理プログラムを提供することを目的とする。
上記目的を達成するために、請求項1の発明は、所定の処理を実行するための演算を行う演算処理手段と、複数の前記所定の処理を識別するために、前記複数の所定の処理の各々に設けられた識別情報を用いて、前記複数の所定の処理を実行する順番を定めた待ち行列が記憶された待ち行列記憶手段と、前記待ち行列記憶手段により記憶された待ち行列から、次に実行する所定の処理を示す識別情報を取得する取得手段と、前記取得手段により取得された識別情報が示す所定の処理が実行可能か否か判断し、判断結果を出力する実行判断手段と、前記実行判断手段により出力された判断結果が実行可能を示す場合に、前記所定の処理のうちの一部の処理を前記演算処理手段を用いることにより実行する実行手段と、前記実行手段により前記一部の処理が複数回にわたり実行されたことにより、対応する所定の処理の全てが終了したか否か判断する終了判断手段と、前記実行判断手段により出力された判断結果が実行不可能を示す場合、又は前記所定の処理が前記終了判断手段により終了していないと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させる待ち行列復帰手段と、前記所定の処理が前記終了判断手段により終了したと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させずに破棄する識別情報破棄手段と、を有する。
また、請求項2の発明は、請求項1の発明において、前記実行手段による前記一部の処理の実行後に、続けて前記一部の処理が実行可能か否か判断する再実行判断手段を更に有し、前記実行手段は、前記再実行判断手段により実行可能と判断された場合に、再び前記一部の処理を実行するものである。
また、請求項3の発明は、請求項1又は請求項2の発明において、前記実行判断手段は、前記識別情報が示す所定の処理が実行不可能な場合には、実行可能と判断できるまで待機した後に、判断結果を出力するものである。
また、請求項4の発明は、請求項1〜請求項3のいずれか1項の発明において、前記演算処理手段は、一つの前記実行手段による前記一部の処理を実行するとともに、複数の前記実行手段による前記一部の処理を同時に実行可能な複数の演算手段が設けられているものである。
また、請求項5の発明は、請求項4の発明において、前記実行手段により前記一部の処理を実行する際に用いられる処理対象情報を記憶する処理対象情報記憶手段と、異なる2つの前記実行手段により前記一部の処理を実行する際に共有して用いられる前記処理対象情報記憶手段に設けられた記憶領域を管理する管理手段と、を更に有し、前記管理手段は、一方の前記実行手段が前記記憶領域を用いている場合には、他方の前記実行手段が前記記憶領域を用いることを禁止するものである。
また、請求項6の発明は、請求項4又は請求項5の発明において、前記実行手段は、前記演算手段の数だけ設けられるものである。
また、請求項7の発明は、請求項4又は請求項5の発明において、前記演算手段が演算している度合いを示す使用率を検出する検出手段を更に有し、前記実行手段は、前記検出手段により検出された使用率が所定の使用率以下の演算手段の数だけ設けられるものである。
また、請求項8の発明は、請求項4〜請求項7のいずれか1項の発明において、前記実行手段が一部の処理を複数回にわたり実行する場合には、前記実行手段は複数の前記演算手段のうちの予め定められた一つの前記演算手段を用いるものである。
また、請求項9の発明は、請求項4〜請求項7のいずれか1項の発明において、前記実行手段が一部の処理を複数回にわたり実行する場合には、前記実行手段は複数の前記演算手段のうちの予め定められた一つの前記演算手段を優先的に用いるものである。
また、請求項10の発明は、複数の前記所定の処理を識別するために、前記複数の所定の処理の各々に設けられた識別情報を用いて、前記複数の所定の処理を実行する順番を定めた待ち行列が記憶された待ち行列記憶手段により記憶された待ち行列から、次に実行する所定の処理を示す識別情報を取得する取得ステップと、前記取得ステップにより取得された識別情報が示す所定の処理が実行可能か否か判断し、判断結果を出力する実行判断ステップと、前記実行判断ステップにより出力された判断結果が実行可能を示す場合に、前記所定の処理のうちの一部の処理を、前記所定の処理を実行するための演算を行う演算処理手段を用いることにより実行する実行ステップと、前記実行ステップにより前記一部の処理が複数回にわたり実行されたことにより、対応する所定の処理の全てが終了したか否か判断する終了判断ステップと、前記実行判断ステップにより出力された判断結果が実行不可能を示す場合、又は前記所定の処理が前記終了判断ステップにより終了していないと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させる待ち行列復帰ステップと、前記所定の処理が前記終了判断ステップにより終了したと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させずに破棄する識別情報破棄ステップと、を有する処理をコンピュータで実行するための情報処理プログラムである。
請求項1の発明によれば、複数のモジュールを効率よく実行することを可能とする情報処理装置を提供することができるという効果が得られる。
請求項2の発明によれば、続けて処理を実行できるので、効率よく複数のモジュールを実行することができる。
請求項3の発明によれば、処理が実行できる可能性がある場合には、待ち行列に復帰させずに処理を実行できるので、効率よく複数のモジュールを実行することができる。
請求項4の発明によれば、演算処理手段として、複数の演算手段が設けられたものを用いることができる。
請求項5の発明によれば、一方の前記実行手段が前記記憶領域を用いている場合には、他方の前記実行手段が前記記憶領域を用いることを禁止することにより、処理対象情報ではない無効な情報に対する処理の実行を回避することができる。
請求項6の発明によれば、同時に実行可能な数だけ実行手段が設けられるため、効率よく複数のモジュールを実行することができる。
請求項7の発明によれば、使用率が高い演算手段で実行しても効率は良くないため、実質的に同時に実行可能な数だけ実行手段が設けることで効率よく複数のモジュールを実行することができる。
請求項8の発明によれば、実行手段は予め定められた演算手段を用いるので、演算手段の切り替えに要する無駄な処理を排除することができる。
請求項9の発明によれば、実行手段は予め定められた演算手段を優先的に用いるので、演算手段の切り替えに要する無駄な処理を排除することができる。
請求項10の発明によれば、複数のモジュールを効率よく実行することを可能とする情報処理プログラムを提供することができるという効果が得られる。
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図1には、本発明に係る画像処理装置として機能することが可能なコンピュータ10が示されている。なお、このコンピュータ10は、複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機、スキャナ、写真プリンタ等のように内部で画像処理を行う必要のある任意の画像取扱機器に組み込まれていてもよいし、パーソナル・コンピュータ(PC)等の独立したコンピュータであってもよく、更にPDA(Personal Digital Assistant)や携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
コンピュータ10はCPU12、メモリ14、表示部16、操作部18、記憶部20、画像データ供給部22及び画像出力部24を備えており、これらはバス26を介して互いに接続されている。コンピュータ10が上述したような画像取扱機器に組み込まれている場合、表示部16や操作部18としては、画像取扱機器に設けられたLCD等から成る表示パネルやテンキー等を適用することができる。また、コンピュータ10が独立したコンピュータである場合、表示部16や操作部18としては、当該コンピュータに接続されたディスプレイやキーボード、マウス等を適用することができる。また、記憶部20としてはHDD(Hard Disk Drive)が好適であるが、これに代えてフラッシュメモリ等の他の不揮発性記憶手段を用いることも可能である。
また、画像データ供給部22は処理対象の画像データを供給できるものであればよく、例えば紙や写真フイルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部、通信回線を介して外部から画像データを受信する受信部、画像データを記憶する画像記憶部(メモリ14又は記憶部20)等を適用することができる。
また、画像出力部24は画像処理を経た画像データ又は該画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部、画像データが表す画像をディスプレイ等に表示する表示部、画像データを記録メディアに書き込む書込装置、画像データを通信回線を介して送信する送信部を適用することができる。また、画像出力部24は画像処理を経た画像データを単に記憶する画像記憶部(メモリ14又は記憶部20)であっても構わない。
図1に示すように、記憶部20には、CPU12によって実行される各種のプログラムとして、メモリ14等のリソースの管理やCPU12によるプログラムの実行の管理、コンピュータ10と外部との通信等を司るオペレーティングシステム30のプログラム、コンピュータ10を本発明に係る画像処理装置として機能させるための画像処理プログラム群34、CPU12が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション32のプログラム(図1ではアプリケーションプログラム群32と表記)が各々記憶されている。
画像処理プログラム群34は、前述した各種の画像取扱機器や携帯機器を開発する際の開発負荷を軽減したり、PC等で利用可能な画像処理プログラムを開発する際の開発負荷を軽減することを目的として、各種の画像取扱機器や携帯機器、PC等の各種機器(プラットフォーム)で共通に使用可能に開発されたプログラムであり、本発明に係る画像処理プログラムに対応している。
画像処理プログラム群34によって実現される画像処理装置は、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理部を構築し、アプリケーション32からの実行指示に従い、前記画像処理部によって画像処理を行う(詳細は後述)。画像処理プログラム群34は、所望の画像処理を行う画像処理部(所望の構成の画像処理部)の構築を指示したり、構築された画像処理部による画像処理の実行を指示するためのインタフェースをアプリケーション32に提供している。
このため、内部で画像処理を行う必要のある任意の機器を新規開発する等の場合にも、前記画像処理を行うプログラムの開発に関しては、当該機器で必要とされる画像処理を上記のインタフェースを利用して画像処理プログラム群34に行わせるアプリケーション32を開発するのみで済み、実際に画像処理を行うプログラムを新たに開発する必要が無くなるので、開発負荷を軽減することができる。
また、画像処理プログラム群34によって実現される画像処理装置は、前述のように、アプリケーション32からの構築指示に従い、アプリケーション32が指示した画像処理を行う画像処理部を構築し、構築した画像処理部によって画像処理を行うので、例えば画像処理対象の画像データの色空間や1画素当たりのビット数が不定であったり、実行すべき画像処理の内容や手順・パラメータ等が不定である場合にも、アプリケーション32が画像処理部の再構築を指示することで、画像処理装置(画像処理部)によって実行される画像処理を、処理対象の画像データ等に応じて柔軟に変更することができる。
以下、画像処理プログラム群34について説明する。図1に示すように、画像処理プログラム群34はモジュールライブラリ36と、処理構築部42のプログラムと、処理管理部46に大別される。
本実施形態に係る処理構築部42は、アプリケーションからの指示により、例として図2に示すように、予め定められた画像処理を行うための1つ以上の画像処理モジュール38と、個々の画像処理モジュール38の前段及び後段の少なくとも一方に配置され画像データを記憶するためのバッファを備えたバッファモジュール40と、がパイプライン形態又はDAG(Directed Acyclic Graph:有向非循環グラフ)形態で連結されて成る画像処理部50を構築する。上記画像処理モジュール38は所定の処理であり、この画像処理モジュール38は、後述するスレッドにより実行される。
上記バッファは、スレッドにより一部の処理を実行する際に用いられる処理対象情報を記憶するメモリ14に設けられる。また、バッファモジュール40は、異なる2つのスレッドにより一部の処理を実行する際に共有して用いられるメモリ14に設けられた記憶領域を管理する管理手段であり、バッファモジュール40は、一方のスレッドが記憶領域を用いている場合には、他方のスレッドが記憶領域を用いることを禁止するようにしている。
画像処理部50を構成する個々の画像処理モジュールの実体はCPU12によって実行されCPU12で所定の画像処理を行わせるための第1プログラム、又は、CPU12によって実行されCPU12により図1に図示されていない外部の画像処理装置(例えば専用画像処理ボード等)に対する処理の実行を指示するための第2プログラムである。上述したモジュールライブラリ36には、予め定められた互いに異なる画像処理(例えば入力処理やフィルタ処理、色変換処理、拡大・縮小処理、スキュー角検知処理、画像回転処理、画像合成処理、出力処理等)を行う複数種の画像処理モジュール38のプログラムが各々登録されている。以下では、説明を簡単にするために、画像処理部50を構成する個々の画像処理モジュールの実体が上記の第1プログラムであるものとして説明する。
個々の画像処理モジュール38は、例として図3(A)にも示すように、画像データに対する画像処理を所定の単位処理データ量(処理の一部)ずつ行う画像処理エンジン38Aと、画像処理モジュール38の前段及び後段のモジュールとの画像データの入出力及び画像処理エンジン38Aの制御を行う制御部38Bから構成されている。
個々の画像処理モジュール38における単位処理データ量は、画像の1ライン分、画像の複数ライン分、画像の1画素分、画像1面分等を含む任意のバイト数の中から、画像処理エンジン38Aが行う画像処理の種類等に応じて予め選択・設定されている。例えば色変換処理やフィルタ処理を行う画像処理モジュール38では単位処理データ量が1画素分とされ、拡大・縮小処理を行う画像処理モジュール38では単位処理データ量が画像の1ライン分又は画像の複数ライン分とされ、画像回転処理を行う画像処理モジュール38では単位処理データ量が画像1面分とされ、画像圧縮伸長処理を行う画像処理モジュール38では単位処理データ量が実行環境に依存するNバイトとされている。
また、モジュールライブラリ36には、画像処理エンジン38Aが実行する画像処理の種類が同一でかつ実行する画像処理の内容が異なる画像処理モジュール38も登録されている(図1では、この種の画像処理モジュールを「モジュール1」「モジュール2」と表記して示している)。
例えば拡大・縮小処理を行う画像処理モジュール38については、入力された画像データを1画素おきに間引くことで50%に縮小する縮小処理を行う画像処理モジュール38、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール38等の複数の画像処理モジュール38が各々用意されている。また、例えば色変換処理を行う画像処理モジュール38については、RGB色空間をCMY色空間へ変換する画像処理モジュール38やその逆へ変換する画像処理モジュール38、L*a*b*色空間等の他の色空間変換を行う画像処理モジュール38が各々用意されている。
また、画像処理モジュール38の制御部38Bは、画像処理エンジン38Aが単位処理データ量ずつ処理するために必要な画像データを入力するために、自モジュールの前段のモジュール(例えばバッファモジュール40)から画像データを単位読出データ量ずつ取得し、画像処理エンジン38Aから出力される画像データを単位書込データずつ後段のモジュール(例えばバッファモジュール40)へ出力する(画像処理エンジン38Aで圧縮等のデータ量の増減を伴う画像処理が行われなければ単位書込データ量=単位処理データ量となる)か、画像処理エンジン38Aによる画像処理の結果を自モジュールの外部へ出力する(例えば画像処理エンジン38Aがスキュー角検知処理等の画像解析処理を行う場合、画像データに代えてスキュー角検知結果等の画像解析処理結果が出力されることがある)処理を行うが、モジュールライブラリ36には、画像処理エンジン38Aが実行する画像処理の種類及び内容が同一で、上記の単位処理データ量や単位読出データ量、単位書込データ量が異なる画像処理モジュール38も登録されている。例えば、画像回転処理を行う画像処理モジュール38についても、前述のように単位処理データ量が画像1面分の画像処理モジュール38のプログラム以外に、単位処理データ量が画像の1ライン分や画像の複数ライン分の画像処理モジュール38のプログラムがモジュールライブラリ36に登録されていても良い。
また、モジュールライブラリ36に登録されている個々の画像処理モジュール38のプログラムは、画像処理エンジン38Aに相当するプログラムと制御部38Bに相当するプログラムから構成されているが、制御部38Bに相当するプログラムは部品化されており、個々の画像処理モジュール38のうち単位読出データ量及び単位書込データ量が同一の画像処理モジュール38は、画像処理エンジン38Aで実行される画像処理の種類や内容に拘わらず、制御部38Bに相当するプログラムが共通化されている(制御部38Bに相当するプログラムとして同一のプログラムが用いられている)。これにより、画像処理モジュール38のプログラムの開発にあたっての開発負荷が軽減される。
なお、画像処理モジュール38の中には、入力される画像の属性が未知の状態では単位読出データ量及び単位書込データ量が確定しておらず、入力画像データの属性を取得し、取得した属性を所定の演算式に代入して演算することで単位読出データ量や単位書込データ量が確定するモジュールが存在している。この種の画像処理モジュール38については、単位読出データ量と単位書込データ量が互いに同一の演算式を用いて導出される画像処理モジュール38について、制御部38Bに相当するプログラムを共通化するようにすればよい。
また、本実施形態に係る画像処理プログラム群34は、前述のように各種機器に実装可能であるが、画像処理プログラム群34のうちモジュールライブラリ36に登録する画像処理モジュール38の数や種類等については、画像処理プログラム群34を実装する各種機器で必要とされる画像処理に応じて、適宜追加・削除・入替等が可能であることは言うまでもない。
また、画像処理部50を構成する個々のバッファモジュール40は、例として図3(B)にも示すように、バッファ40Aと、バッファ制御部40Bとから構成されている。バッファ40Aは、コンピュータ10に設けられたメモリ14からオペレーティングシステム30を通じて確保されたメモリ領域で構成される。バッファ制御部40Bは、バッファモジュール40の前段及び後段のモジュールとの画像データの入出力及びバッファ40Aの管理を行う。個々のバッファモジュール40のバッファ制御部40Bもその実体はCPU12によって実行されるプログラムであり、モジュールライブラリ36にはバッファ制御部40Bのプログラムも登録されている(図1ではバッファ制御部40Bのプログラムを「バッファモジュール」と表記して示している)。
また、アプリケーション32からの指示に従って画像処理部50を構築する処理構築部42は、図1に示すように複数種のモジュール生成部44から構成されている。複数種のモジュール生成部44は互いに異なる画像処理に対応しており、アプリケーション32によって起動されることで、対応する画像処理を実現するための画像処理モジュール38及びバッファモジュール40から成るモジュール群を生成する処理を行う。
なお、図1ではモジュール生成部44の一例として、モジュールライブラリ36に登録されている個々の画像処理モジュール38が実行する画像処理の種類に対応するモジュール生成部44を示しているが、個々のモジュール生成部44に対応する画像処理は、複数種の画像処理モジュール38によって実現される画像処理(例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理)であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション32は複数種の画像処理の何れかに対応するモジュール生成部44を順次起動する。これにより、アプリケーション32によって順次起動されたモジュール生成部44により、必要とされる画像処理を行う画像処理部50が構築されることになる。
また図1に示すように、処理管理部46は、画像処理部50における画像処理の実行を制御するワークフロー管理部46A、画像処理部50の各モジュールによるメモリ14や各種のファイル等のコンピュータ10のリソースの使用を管理するリソース管理部46B、及び、画像処理部50で発生したエラーを管理するエラー管理部46Cを含んで構成される。
画像処理プログラム群34が実装されている機器において、何らかの画像処理を行う必要のある状況になると、この状況が特定のアプリケーション32によって検知される。
なお、画像処理を行う必要のある状況としては、例えば画像データ供給部22としての画像読取部によって画像を読み取り、画像出力部24としての画像記録部により記録材料に画像として記録するか、画像出力部24としての表示部に画像として表示させるか、画像出力部24としての書込装置により画像データを記録メディアに書き込むか、画像出力部24としての送信部により画像データを送信するか、画像出力部24としての画像記憶部に記憶させるジョブの実行がユーザによって指示された場合、或いは、画像データ供給部22としての受信部によって受信されるか、画像データ供給部22としての画像記憶部に記憶されている画像データに対して、上記の記録材料への記録、表示部への表示、記録メディアへの書き込み、送信、画像記憶部への記憶の何れかを行うジョブの実行がユーザによって指示された場合が挙げられる。
また、画像処理を行う必要のある状況は上記に限られるものではなく、例えばユーザからの指示に応じてアプリケーション32が実行可能な処理の名称等を表示部16に一覧表示している状態で、実行対象の処理がユーザによって選択された等の場合であってもよい。
以下、本実施の形態において行われる処理について、フローチャート等を用いて説明する。なお、以下の説明では、画像処理モジュールを単にモジュールと表現し、バッファモジュールを単にバッファと表現する。最初に、図4を用いて、本実施の形態における処理の概要について説明する。
同図には、キュー60、3つのスレッド62A、62B、62C、及び3つのCPUコア70A、70B、70Cが示されている。以下では、スレッド62A、62Bのように、末尾にA、B等の添字が付与された符号により表される複数の要素を総称して指し示す時、或いは、それら複数の要素のうちの任意の1つを指し示す時は、末尾の添字を省いて説明する。
同図に示されるキュー60は、モジュールである所定の処理を識別するために、複数のモジュールの各々に設けられた識別情報(モジュールID、図では、1〜5)を用いて、複数のモジュールを実行する順番を定めたものであり、このキューは、例えばメモリ14に記憶されている。
スレッド62は、識別情報が示すモジュールが実行可能である場合に、モジュールのうちの一部の処理をCPU12を用いることにより実行するものである。なお、モジュールのうちの一部の処理とは、上述した画像の1ライン分、画像の複数ライン分、画像の1画素分等、モジュールが実行すべき処理のうちの一部の処理を意味する。
また、CPUコアについてであるが、CPU12は、一つのスレッド62による一部の処理を実行するとともに、複数のスレッド62による一部の処理を同時に実行可能な複数の演算手段が設けられており、この演算手段がCPUコアである。なお、コアが一つであっても、複数のスレッド62が同時に実行可能なCPUがある。その場合のコアの数は、同時に実行可能なスレッド62の数を意味することとなる。
同図では、3つのCPUコア70が設けられているため、スレッド62は、CPUコア70の数である3つだけ設けるようにしている。しかし、そのCPUコア70が演算している度合いを示す使用率を検出するシステムコールを用いて各CPUコア70の使用率を検出し、例えば3つのCPUコア70のうち、検出された使用率が所定の使用率以下のCPUコア70の数だけスレッド62を設けるようにしても良い。このような使用率に基づきスレッド62を設ける方式は、多くの処理を実行している汎用的なコンピュータの場合に有効である。
また、スレッド62が一部の処理を複数回にわたり実行する場合には、複数のCPUコア70のうちの予め定められた一つのCPUコア70を用いるようにしても良い。このように、スレッド62を特定のCPUコア70に割り当てることは、システムコールにより実現することが出来る。なお、OSによっては、スレッド62を特定のCPUコア70に優先的に割り当てシステムコールのみが用意されている場合があるため、その場合のスレッド62は、予め定められた一つのCPUコア70を優先的に用いるようにしても良い。
このように、スレッド62を割り付けるCPUコア70を固定、または優先するCPUコア70を指定することで、従来のように、CPUコア数と等しい数のスレッド62を生成しても、OSの割付機構により動作するCPUコア70が切り替わり、結果として並列化効率が下がることなく、スレッド62が割り付けられるCPUコア70の切り替わりを低減させ、効率の良い並列処理を実現することができる。
なお、図2に示したように、各モジュールは、前段のモジュールが実行されない限り、処理ができないので、スレッド62の数をCPUコア数+1など、多少多めにしても良い。その場合は、上記システムコールによるCPUへの割り付けは行わないか、または半数のスレッド62のみに対して割り付けを行うなどになる。また、処理を実行するスレッド62以外にも他の処理が動作しているので、スレッド数はCPUコア数−1などとしても良い。
以上説明した図4に示した構成で、3つのスレッド62は、キューから次に実行するモジュールを示す識別情報を取得する。この割り当ての処理等の詳細を、図5〜図8を用いて説明する。図5には、処理管理部46、キュー60、複数のモジュール38、及び複数のバッファ40が示されている。モジュールは、Ma、Mb等と表現され、a、b等は、そのモジュールの識別情報を示している。バッファは、Ba、Bb等と表現され、a、b等は、バッファを区別するためのものである。
まず、図示していないスレッド62は、キュー60から次に実行するモジュールを示す識別情報aを取得し、対応するモジュールMaを起動する。そして、一部の処理が終了すると、再びキュー60に識別情報を復帰する。基本的な処理の流れはこのようになっている。
図5に示した例は、先頭のモジュール38に対する処理の流れを示すものであったが、2番目のモジュールMbに対しても、図6に示されるように同様なものとなっている。具体的にスレッド62は、キュー60から次に実行するモジュールを示す識別情報bを取得し、対応するモジュールMbを起動する。そして、一部の処理が終了すると、再びキュー60に識別情報を復帰する。
また、次の図7、図8に示される処理の流れは、一部の処理の実行後に、続けて一部の処理が実行可能と判断された場合に、再び一部の処理を実行する場合の流れを示すものである。
同図に示されるように、スレッド62は、キュー60から識別情報aを取得し、対応するモジュールMaを起動する。そして、一部の処理が終了し、続けて一部の処理が実行可能と判断された場合に、再び一部の処理を実行する。実行可能と判断される限り処理を続けることで、モジュールMaの全ての処理が終了した場合に、スレッド62は、識別情報aをキュー60に復帰させずに破棄するため、同図に復帰は示されていない。
モジュールMaの全ての処理が終了すると、図8に示されるように、スレッド62は、キュー60から識別情報bを取得し、対応するモジュールMbを起動する。そして、一部の処理が終了し、続けて一部の処理が実行可能と判断された場合に、再び一部の処理を実行する。実行可能と判断される限り処理を続けるが、モジュールMbの全ての処理が終了しなかった場合に、スレッド62は、識別情報bをキュー60に復帰させる。
次に、複数のスレッド62を用いる場合の処理の流れを、図9を用いて説明する。スレッド62Aは、識別情報aを取得し、モジュールMaを起動する。そして、一部の処理が終了すると、再びキュー60に識別情報aを復帰する。同様に、スレッド62Bは、識別情報bを取得し、モジュールMbを起動する。そして、一部の処理が終了すると、再びキュー60に識別情報bを復帰する。
このように複数のスレッド62を用いて実行する場合は、スレッド62がキュー60から識別情報を取得する際に、異なるスレッド62が同じ識別情報を取得しないための排他制御が必要となる。
以上説明した処理の流れをフローチャートを用いて説明する。図10はスレッド62の処理を示すフローチャートである。まず、ステップ101で、キュー60が空、すなわち並んでいる識別情報があるか否か判断する。キュー60が空の場合は、処理を終了する。一方、キュー60が空ではない場合には、ステップ102で、キュー60から識別情報を一つ取得し、ステップ103でモジュールを起動する。次のステップ104で、処理が成功したか否かを判断する。この処理の成功とは、一部の処理が実行できたか否かを示すものである。一部の処理が成功しなかった場合には、ステップ107で、識別情報をキュー60に復帰し、再びステップ101の処理に戻る。
一方、一部の処理が成功した場合には、一部の処理が複数回にわたり実行されたことにより、対応する所定の処理の全てが終了したか否かステップ105で判断する。全ての処理が終了した場合には、ステップ106で識別情報を破棄し、再びステップ101の処理に戻る。
一方、ステップ105で、所定の処理の全てが終了していないと判断した場合には、ステップ107で、識別情報をキューに復帰し、再びステップ101の処理に戻る。
次に、バッファが行う処理について説明する。この処理は2種類あり、それぞれ図11、図12を用いて説明する。
まず、図11のフローチャートを用いてバッファ処理(その1)について説明する。まず、ステップ201で、スレッド62が要求したデータである要求データが記憶されているか否か判断する。上述したように、各モジュールは、バッファが管理する記憶領域に記憶されたデータを用いて処理をするため、このデータがない場合には、一部の処理の実行が不可能である。
従って、ステップ201で、否定判断した場合には、ステップ202で、要求データを返せないことをスレッド62に戻り値として出力して処理を終了する。この場合の「要求データを返せないこと」が実行不可能を示す判断結果である。要求データを返せないことが出力されると、スレッド62により一部の処理が実行できないため、上記ステップ104で処理が成功しなかったと判断される。
一方、ステップ201で肯定判断した場合には、ステップ203で、要求データが記憶されている先頭アドレスを出力し、処理を終了する。この場合の「要求データが記憶されている先頭アドレス」が、実行可能を示す判断結果である。要求データが記憶されている先頭アドレスが出力されると、スレッド62により一部の処理が実行され、上記ステップ104で処理が成功したと判断される。
次に、図12を用いて、バッファ処理(その2)について説明する。まず、ステップ301で、要求データが記憶されているか否か判断する。ステップ302で、既に1回以上処理したデータを返しているか否か判断する。言い換えると、1回以上処理をしたか否か判断する。ステップ302で否定判断した場合には、ステップ303で、要求データを返せないことをスレッド62に戻り値として出力して処理を終了する。この場合の「要求データを返せないこと」が実行不可能を示す判断結果である。要求データを返せないことが出力されると、スレッド62により一部の処理が実行できないため、上記ステップ104で処理が成功しなかったと判断される。
一方、ステップ301で肯定判断した場合には、ステップ304で、要求データが記憶されている先頭アドレスを出力し、処理を終了する。この場合の「要求データが記憶されている先頭アドレス」が、実行可能を示す判断結果である。要求データが記憶されている先頭アドレスが出力されると、スレッド62により一部の処理が実行され、上記ステップ104で処理が成功したと判断される。
また、ステップ302で肯定判断した場合には、ステップ305で、要求データが記憶されるまで待ち、記憶されると要求データが記憶されている先頭アドレスを戻す。すなわち、実行可能と判断できるまで待機した後に、判断結果を出力するようになっている。
上記ステップ302の判断について説明する。要求データがまだ記憶されていない時に、要求データを返せない事をすぐに出力してしまうと、モジュールが待ち行列に戻され次のモジュールが取り出されるが、例えば面処理の場合には一回以上処理したモジュールは(その前段側モジュールが動作しているという事なので)キュー60に戻さずに、要求データが記憶されるのを待ち、識別情報をキュー60に復帰させない方が効率が良い可能性が高い。
従って、一回も処理していないモジュールの場合はすぐに識別情報をキューに復帰させ、一回以上処理している場合には要求データが記憶されるまで待機するということを行っている。
以上説明したように、本実施の形態では、モジュールをキュー60から順番に取得して起動するようになっている。モジュールは、バッファにデータを要求し、バッファは上述したように、要求データがあれば出力し、なければ出力できない事を通知する。その結果、モジュールは、要求データが取得できれば一部の処理を実行し、できなければそのまま終わり、全ての所定の処理が終わってなければ待ち行列に戻るようにしている。
さらに、要求データに対して処理し終わったモジュールを、キュー60に戻して次のモジュールを起動すれば、一部の処理ずつ実行する例えばライン単位などの単位データ量毎の処理方式になり、キューに戻さず全ての処理が終わるまで一部の処理を繰り返せば面単位の処理方式になる。
また、本実施の形態では、N個のスレッド62を生成して全モジュールのうち処理可能なもの(要求データが準備できたもの)にだけスレッド割付を行うことが出来、余分なスレッド62を生成せず、かつ図14のようなグループに分けるなどの前処理なしに、N個のスレッド62で処理を行う事ができる。
なお、モジュール並列(例えば図13の方式)では、各モジュールがスレッドに1対1で割り付けられ、そのスレッドが(OSのスケジューラにより待ち行列制御などが行われて)CPUに割り付けられるが、この方式が上述した本実施の形態における処理と異なる点について説明する。
図13の方式では、CPUコアとスレッド62の対応はスケジューラによって頻繁に切り替えられ、キャッシュが無効になったり、切り替え時点でCPUコアが処理していない事等により性能が落ちる。
そこで、一つのスレッド62とCPUコア70はなるべく固定して実行する事が望ましいが、図13の方式ではスレッド数とCPUコア数は無関係なので、CPUコアとスレッドの対応を固定できない。しかし本実施の形態ではCPUコア数(または使用率が所定の使用率以下のCPUコア数)と同じ数のスレッド62を生成させるので、対応を固定させる事ができる。
なお、以上説明した各フローチャートの処理の流れは一例であり、本発明の主旨を逸脱しない範囲内で処理順序を入れ替えたり、新たなステップを追加したり、不要なステップを削除したりすることができることは言うまでもない。
本実施形態に係るコンピュータ(画像処理装置)の概略構成を示すブロック図である。 画像処理部の構成例を示すブロック図である。 (A)は画像処理モジュール、(B)はバッファモジュールの概略構成及び実行される処理を各々示すブロック図である。 本実施の形態における処理の概要示す図である。 先頭のモジュールに対する処理の流れを示す図である。 2番目のモジュールに対する処理の流れを示す図である。 先頭のモジュールにおいて続けて一部の処理が実行可能と判断された場合に、再び一部の処理を実行する場合の流れを示す図である。 2番目のモジュールにおいて続けて一部の処理が実行可能と判断された場合に、再び一部の処理を実行する場合の流れを示す図である。 複数のスレッドを用いる場合の処理の流れを示す図である。 スレッドの処理を示すフローチャートである。 バッファ処理を示すフローチャートである(その1)。 バッファ処理を示すフローチャートである(その2)。 従来技術を示す図である(その1)。 従来技術を示す図である(その2)。
符号の説明
10 コンピュータ
12 CPU
14 メモリ
20 記憶部
22 画像データ供給部
24 画像出力部
30 オペレーティングシステム
32 アプリケーションプログラム群
34 画像処理プログラム群
36 モジュールライブラリ
38 画像処理モジュール
38A 画像処理エンジン
38B 制御部
40 バッファモジュール
40A バッファ
40B バッファ制御部
42 処理構築部
44 モジュール生成部
46C エラー管理部
46B リソース管理部
46A ワークフロー管理部
46 処理管理部
50 画像処理部
60 キュー
62 スレッド
62A、62B スレッド
70、70A、70B、70C CPUコア

Claims (10)

  1. 所定の処理を実行するための演算を行う演算処理手段と、
    複数の前記所定の処理を識別するために、前記複数の所定の処理の各々に設けられた識別情報を用いて、前記複数の所定の処理を実行する順番を定めた待ち行列が記憶された待ち行列記憶手段と、
    前記待ち行列記憶手段により記憶された待ち行列から、次に実行する所定の処理を示す識別情報を取得する取得手段と、
    前記取得手段により取得された識別情報が示す所定の処理が実行可能か否か判断し、判断結果を出力する実行判断手段と、
    前記実行判断手段により出力された判断結果が実行可能を示す場合に、前記所定の処理のうちの一部の処理を前記演算処理手段を用いることにより実行する実行手段と、
    前記実行手段により前記一部の処理が複数回にわたり実行されたことにより、対応する所定の処理の全てが終了したか否か判断する終了判断手段と、
    前記実行判断手段により出力された判断結果が実行不可能を示す場合、又は前記所定の処理が前記終了判断手段により終了していないと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させる待ち行列復帰手段と、
    前記所定の処理が前記終了判断手段により終了したと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させずに破棄する識別情報破棄手段と、
    を有する情報処理装置。
  2. 前記実行手段による前記一部の処理の実行後に、続けて前記一部の処理が実行可能か否か判断する再実行判断手段を更に有し、
    前記実行手段は、前記再実行判断手段により実行可能と判断された場合に、再び前記一部の処理を実行する請求項1に記載の情報処理装置。
  3. 前記実行判断手段は、前記識別情報が示す所定の処理が実行不可能な場合には、実行可能と判断できるまで待機した後に、判断結果を出力する請求項1又は請求項2に記載の情報処理装置。
  4. 前記演算処理手段は、一つの前記実行手段による前記一部の処理を実行するとともに、複数の前記実行手段による前記一部の処理を同時に実行可能な複数の演算手段が設けられている請求項1〜請求項3のいずれか1項に記載の情報処理装置。
  5. 前記実行手段により前記一部の処理を実行する際に用いられる処理対象情報を記憶する処理対象情報記憶手段と、
    異なる2つの前記実行手段により前記一部の処理を実行する際に共有して用いられる前記処理対象情報記憶手段に設けられた記憶領域を管理する管理手段と、
    を更に有し、
    前記管理手段は、一方の前記実行手段が前記記憶領域を用いている場合には、他方の前記実行手段が前記記憶領域を用いることを禁止する請求項4に記載の情報処理装置。
  6. 前記実行手段は、前記演算手段の数だけ設けられる請求項4又は請求項5に記載の情報処理装置。
  7. 前記演算手段が演算している度合いを示す使用率を検出する検出手段を更に有し、
    前記実行手段は、前記検出手段により検出された使用率が所定の使用率以下の演算手段の数だけ設けられる請求項4又は請求項5に記載の情報処理装置。
  8. 前記実行手段が一部の処理を複数回にわたり実行する場合には、前記実行手段は複数の前記演算手段のうちの予め定められた一つの前記演算手段を用いる請求項4〜請求項7のいずれか1項に記載の情報処理装置。
  9. 前記実行手段が一部の処理を複数回にわたり実行する場合には、前記実行手段は複数の前記演算手段のうちの予め定められた一つの前記演算手段を優先的に用いる請求項4〜請求項7のいずれか1項に記載の情報処理装置。
  10. 複数の前記所定の処理を識別するために、前記複数の所定の処理の各々に設けられた識別情報を用いて、前記複数の所定の処理を実行する順番を定めた待ち行列が記憶された待ち行列記憶手段により記憶された待ち行列から、次に実行する所定の処理を示す識別情報を取得する取得ステップと、
    前記取得ステップにより取得された識別情報が示す所定の処理が実行可能か否か判断し、判断結果を出力する実行判断ステップと、
    前記実行判断ステップにより出力された判断結果が実行可能を示す場合に、前記所定の処理のうちの一部の処理を、前記所定の処理を実行するための演算を行う演算処理手段を用いることにより実行する実行ステップと、
    前記実行ステップにより前記一部の処理が複数回にわたり実行されたことにより、対応する所定の処理の全てが終了したか否か判断する終了判断ステップと、
    前記実行判断ステップにより出力された判断結果が実行不可能を示す場合、又は前記所定の処理が前記終了判断ステップにより終了していないと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させる待ち行列復帰ステップと、
    前記所定の処理が前記終了判断ステップにより終了したと判断された場合に、当該所定の処理を示す識別情報を前記待ち行列記憶手段により記憶された待ち行列に復帰させずに破棄する識別情報破棄ステップと、
    を有する処理をコンピュータで実行するための情報処理プログラム。
JP2007218462A 2007-08-24 2007-08-24 情報処理装置、情報処理プログラム Pending JP2009053829A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007218462A JP2009053829A (ja) 2007-08-24 2007-08-24 情報処理装置、情報処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007218462A JP2009053829A (ja) 2007-08-24 2007-08-24 情報処理装置、情報処理プログラム

Publications (1)

Publication Number Publication Date
JP2009053829A true JP2009053829A (ja) 2009-03-12

Family

ID=40504878

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007218462A Pending JP2009053829A (ja) 2007-08-24 2007-08-24 情報処理装置、情報処理プログラム

Country Status (1)

Country Link
JP (1) JP2009053829A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015028740A (ja) * 2013-07-31 2015-02-12 株式会社リコー サービス提供システム、サービス提供方法及びプログラム
JP2017062666A (ja) * 2015-09-25 2017-03-30 富士ゼロックス株式会社 情報処理装置および画像形成装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338505A (ja) * 2005-06-03 2006-12-14 Fuji Xerox Co Ltd 画像処理装置、方法及びプログラム
JP2007122596A (ja) * 2005-10-31 2007-05-17 Toshiba Corp 演算処理システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338505A (ja) * 2005-06-03 2006-12-14 Fuji Xerox Co Ltd 画像処理装置、方法及びプログラム
JP2007122596A (ja) * 2005-10-31 2007-05-17 Toshiba Corp 演算処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015028740A (ja) * 2013-07-31 2015-02-12 株式会社リコー サービス提供システム、サービス提供方法及びプログラム
JP2017062666A (ja) * 2015-09-25 2017-03-30 富士ゼロックス株式会社 情報処理装置および画像形成装置

Similar Documents

Publication Publication Date Title
JP5479519B2 (ja) 画像処理装置、方法及びプログラム
JP5046801B2 (ja) 画像処理装置及びプログラム
JP5703729B2 (ja) データ処理装置及びプログラム
JP4795138B2 (ja) 画像処理装置及びプログラム
JP2008140046A (ja) 画像処理装置、画像処理プログラム
JP4694264B2 (ja) 画像処理装置、方法及びプログラム
US20070248288A1 (en) Image processing device, and recording medium
JP2006338505A (ja) 画像処理装置、方法及びプログラム
JP4694265B2 (ja) 画像処理装置、方法及びプログラム
JP2006338500A (ja) 画像処理装置、方法及びプログラム
JP2006338501A (ja) 画像処理装置、方法及びプログラム
JP2008009696A (ja) 画像処理装置及びプログラム
JP4619868B2 (ja) 画像処理装置、方法及びプログラム
JP4694269B2 (ja) 画像処理装置、方法及びプログラム
US20070247466A1 (en) Image processing apparatus and program
JP2007323393A (ja) 画像処理装置及びプログラム
JP2009053829A (ja) 情報処理装置、情報処理プログラム
JP4964219B2 (ja) 画像処理装置、方法及びプログラム
JP4762865B2 (ja) 画像処理装置、画像処理プログラム
JP2008140007A (ja) 画像処理装置及びプログラム
JP5440129B2 (ja) 画像処理装置、画像形成装置、及び画像処理プログラム
WO2012023318A1 (ja) 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体
JP4920725B2 (ja) 画像処理装置及びプログラム
JP5036588B2 (ja) 画像処理装置、画像処理プログラム
JP5047139B2 (ja) 画像処理装置及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110221

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110322