(57)【要約】【課題】符号化されたコード情報を含む画像からコード情報を、高精度かつ短時間で認識する画像処理装置、画像処理方法、およびプログラムを提供すること。【解決手段】画像処理装置３００は、１つ以上の符号化したコード画像を付加した電子ドキュメントの印刷データを作成し、電子ドキュメントから描画データを作成するグラフィックエンジン３１４と、描画データからコード画像を読取ってコード画像をデコードし、デコードの結果からコード画像のコーディング種類、範囲情報および回転角度を取得してコード配置情報を作成し、コード配置情報をインデックスコード画像にエンコードして、インデックスコード画像を作成し、インデックスコード画像を描画データに合成することによりインデックスコード付画像を作成するインデックスコード付画像作成部３３０とを含んでいる。【選択図】図３
2010057058.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の符号化したコード画像を付加した電子ドキュメントの印刷データを作成する画像処理装置であって、
前記電子ドキュメントから描画データを作成する描画データ作成手段と、
前記描画データから前記コード画像を読取って前記コード画像をデコードし、前記デコードの結果から少なくとも前記コード画像が配置されている範囲に関する情報である範囲情報を取得してコード配置情報を作成し、前記コード配置情報をインデックスコード画像にエンコードして、インデックスコード画像を作成し、前記インデックスコード画像を前記描画データに合成することによりインデックスコード付画像を作成するインデックスコード付画像作成手段と、
を含む画像処理装置。
【請求項２】
請求項１に記載の画像処理装置はさらに、
前記描画データを受領して前記インデックスコード画像作成手段に渡し、前記インデックスコード付画像を受領して印刷データを作成する印刷データ作成手段と、
前記印刷データ作成手段の作成した前記印刷データを受領順に出力して印刷物を作成させるキュー手段と、
を含むことを特徴とする画像処理装置。
【請求項３】
前記インデックスコード付画像作成手段は、コード配置情報取得手段と、インデックスコード作成手段と、画像合成手段とを含み、
前記コード配置情報取得手段は、前記描画データを受領してデコーダにより前記描画データの画像をデコードし、前記範囲情報を前記コーディング情報と対として登録する前記コード配置情報を作成し、
前記インデックスコード作成手段は、前記コード配置情報を受領し、エンコーダによりインデックスコード画像を作成し、
前記画像合成手段は、前記インデックスコード画像を、前記描画データの画像を描画するための描画コマンドの付属データに追加して前記インデックスコード画像が付加されたインデックスコード付画像を作成して、前記印刷データ作成手段に渡す、請求項１または２に記載の画像処理装置。
【請求項４】
前記コード配置情報はさらに、前記コード画像のコーディング種類、および、回転角度を含み、
前記コード配置情報取得手段は、前記描画データを受領してデコーダにより前記描画データの画像をデコードし、前記コード画像のコーディング種類、前記範囲情報、および、回転角度を前記コーディング情報と対として登録する前記コード配置情報を作成する、
請求項１から３のいずれか１項に記載の画像処理装置。
【請求項５】
前記コード配置情報は、複数の前記コード画像に対応する前記コーディング種類、前記範囲情報および前記回転角度を対応付けて登録するコード配置情報リストである、請求項１から４のいずれか１項に記載の画像処理装置。
【請求項６】
前記インデックスコード画像は、前記描画データに対し単一または複数配置される、請求項１から５のいずれか１項に記載の画像処理装置。
【請求項７】
単一の前記インデックスコード画像は、前記電子ドキュメントが含む前記コード画像の全部のコード配置情報を含み、複数の前記インデックスコード画像が配置される場合、前記インデックスコード画像は、前記コード画像の全部のコード配置情報を含むか、または複数の前記インデックスコード画像を総合した場合に、前記コード画像の全部の前記コード配置情報を与えるように、分散された前記コード配置情報を含む、請求項６に記載の画像処理装置。
【請求項８】
１つ以上のコード画像と、少なくとも前記コード画像が配置されている範囲に関する情報である範囲情報を指定するインデックスコード画像とを含む印刷物から、前記コード画像を抽出して画像処理を制御する画像処理装置であって、
前記印刷物を読取ってインデックスコード付画像を生成するスキャナ手段と、
前記スキャナ手段が作成した前記インデックスコード付画像を受領し、前記インデックスコード付画像から取得された前記コード画像を使用して画像処理を実行するアプリケーション手段と、
前記アプリケーション手段から、前記インデックスコード付画像を受領し、インデックスコードを読取り、読取ったインデックスコードをデコードしてデコードが成功した場合にデコード結果を使用して前記インデックスコード付画像が含む前記コード画像をデコードし一般コード情報を取得して前記アプリケーション手段に返す、インデックスコード付画像読取手段と
を含む画像処理装置。
【請求項９】
前記インデックスコード画像はさらに、前記コード画像のコーディング種類、および、回転角度を含み、
前記インデックスコード付画像読取手段は、インデックスコード読取手段と、一般コード情報読取手段とを含み、
前記インデックスコード読取手段は、前記インデックスコード付画像を受領してデコーダにより前記インデックスコード付画像から、インデックスコードを識別して前記コーディング情報、前記範囲情報および前記回転角度を前記コーディング情報と対として登録する前記コード配置情報をデコードし、
前記一般コード情報読取手段は、前記インデックスコード読取手段の前記デコード結果として前記コード配置情報を受領し、前記インデックスコード付画像が含む前記コード画像をデコードし一般コード情報を取得して前記アプリケーション手段に返す、請求項８に記載の画像処理装置。
【請求項１０】
前記コード配置情報は、複数の前記コード画像に対応する前記コーディング種類、前記範囲情報および前記回転角度を対応付けて登録するコード配置情報リストである、請求項８または９に記載の画像処理装置。
【請求項１１】
前記インデックスコード画像は、前記描画データに対し単一または複数配置され、単一の前記インデックスコード画像は、前記インデックスコード付画像が含む前記コード画像の全部のコード配置情報を含み、複数の前記インデックスコード画像が配置される場合、前記インデックスコード画像は、前記コード画像の全部のコード配置情報を含むか、または複数の前記インデックスコード画像を総合した場合に、前記コード画像の全部の前記コード配置情報を与えるように、分散された前記コード配置情報を含む、請求項８から１０のいずれか１項に記載の画像処理装置。
【請求項１２】
１つ以上の符号化したコード画像を付加した電子ドキュメントの印刷データを作成する画像処理装置であって、
前記電子ドキュメントから描画データを作成する描画データ作成手段と、
前記描画データから前記コード画像を読取って前記コード画像をデコードし、前記デコードの結果から少なくとも前記コード画像が配置されている範囲に関する情報である範囲情報を取得してコード配置情報を作成し、前記コード配置情報をインデックスコード画像にエンコードして、インデックスコード画像を作成し、前記インデックスコード画像を前記描画データに合成することによりインデックスコード付画像を作成するインデックスコード付画像作成手段と、
前記印刷物を読取って生成されたインデックスコード付画像を受領し、前記インデックスコード付画像から取得された前記コード画像を使用して画像処理を実行するアプリケーション手段と、
前記アプリケーション手段から、前記インデックスコード付画像を受領し、インデックスコードを読取り、読取ったインデックスコードをデコードしてデコードが成功した場合にデコード結果を使用して前記インデックスコード付画像が含む前記コード画像をデコードし一般コード情報を取得して前記アプリケーション手段に返す、インデックスコード付画像読取手段と
を含む画像処理装置。
【請求項１３】
前記コード配置情報は、複数の前記コード画像に対応する前記コーディング種類、前記範囲情報および前記回転角度を対応付けて登録するコード配置情報リストである、請求項１２に記載の画像処理装置。
【請求項１４】
前記画像処理装置は、複写機またはパーソナルコンピュータである、請求項１２または１３に記載の画像処理装置。
【請求項１５】
画像処理装置が実行し、１つ以上の符号化したコード画像を付加した電子ドキュメントの印刷データを作成する画像処理方法であって、前記画像処理装置が、
前記電子ドキュメントから描画データを作成するステップと、
前記描画データから前記コード画像を読取って前記コード画像をデコードするステップと、
前記デコードの結果から少なくとも前記コード画像が配置されている範囲に関する情報である範囲情報を取得してコード配置情報を作成するステップと、
前記コード配置情報をインデックスコード画像にエンコードして、インデックスコード画像を作成し、前記インデックスコード画像を前記描画データに合成することによりインデックスコード付画像を作成するステップと
を実行する、画像処理方法。
【請求項１６】
画像処理装置が実行し、１つ以上のコード画像と、前記コード画像のコーディング種類、範囲情報および回転角度を指定するインデックスコード画像とを含む印刷物から、前記コード画像を抽出して画像処理を制御する画像処理方法であって、
前記印刷物を読取ってインデックスコード付画像を生成するステップと、
前記スキャナ手段が作成した前記インデックスコード付画像を受領するステップと、
前記インデックスコード付画像を受領し、インデックスコードを読取り、読取ったインデックスコードをデコードするステップと、
前記デコードが成功した場合にデコード結果であるコード配置情報を使用して前記インデックスコード付画像が含む前記コード画像をデコードし、一般コード情報を取得して画像処理を実行するステップと
を実行する、画像処理方法。
【請求項１７】
請求項１〜７のいずれか１項に記載の機能手段を、画像処理装置上に実現するための装置実行可能なプログラム。
【請求項１８】
請求項８〜１１のいずれか１項に記載の機能手段を、画像処理装置上に実現するための装置実行可能なプログラム。
【請求項１９】
請求項１２に記載の機能手段を画像処理装置上に実現するための装置実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理技術に関し、より詳細には、符号化されたコード情報を含む画像からコード情報を、高精度かつ短時間で認識する画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、画像処理装置が処理する画像データは、画像の利用制限、検索その他画像を特徴付けるためのコード情報を含むものも知られている。これらのコード情報は、画像ファイルのヘッダ情報など適切な領域に記述することもできるし、出力後の画像上の画像認識に影響を与えない箇所に、バーコード、２次元バーコードなどのコード情報として出力させることもできる。画像処理装置は、コード情報を含んだ印刷物をスキャナなどで読取った場合、コード情報をデコードして、画像処理装置が利用するべき制御データを生成し、当該印刷物の複製、編集、画像転送など画像処理装置上で、印刷物の画像を利用する各種処理（以下、本発明における画像処理として参照する。）の制御を行う。
【０００３】
このため、印刷物からコード情報を抽出する処理が効率的に行われない場合、コード情報の取得に時間がかかり、コード情報を使用して実行される後続処理までの処理効率が低下する。また、印刷物にコード情報が付加されていても、認識精度が充分でない場合、読取り側の画像処理装置で効果的にコード情報を利用した画像処理の制御ができないという問題も発生する。
【０００４】
これまで、画像に対して各種のコード情報を追加する技術が提案されており、例えば、特開２００６−２１１５３５号公報（特許文献１）、特開２００５−１７３６４６号公報（特許文献２）、特開２００４−３０３２２３号公報（特許文献３）を挙げることができる。特許文献１では、符号化したコード画像を処理対象ドキュメントに合成し、処理対象ドキュメント上で情報コード画像の合成位置を示す合成位置情報を符号化した位置指定コード画像を処理対象ドキュメントの所定位置に合成する画像処理装置を開示している。また、特許文献２は、入力画像を矩形ブロック単位で選択し、ブロックが所定の要件を満たしているか否かを判定し、ブロック内のコードの種類を判定するコード種類判別方法を開示している。さらに、特許文献３は、２次元的に情報を記憶した長方形のパターンを含むデジタル化された文書を複数の小領域に分割し、分割された領域に対してパターン読み取りを実行させ、複数の領域から読み出した複数の情報を同時に出力する画像認識装置を開示している。
【特許文献１】特開２００６−２１１５３５号公報
【特許文献２】特開２００５−１７３６４６号公報
【特許文献３】特開２００４−３０３２２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１では、所定情報コード画像を探し出すために、同一の位置指定コードを複数の所定位置に配置する。また、複数位置に配置された異なる位置指定コードを使用して所定情報コード画像を探し出す技術を開示している。特許文献１では、所定情報コード画像の位置が指定されるのみであり、複数のコード情報が存在する場合について対応できるものではない。また、位置指定コードを複数読み込ませる場合、位置指定コードのみでは、２次元的な広がりを有するコード画像の範囲を取得することができず、指定されたコード画像が存在する可能性のある領域全体をトライアンドエラー的に読出し、デコードして当該コード画像が与えるコード情報がＥＯＦを与えるまで、網羅的に処理しなければならないという問題もある。すなわち、位置指定コードは、画像データ中に埋設されたコード画像の位置を指定するために利用されるものである。しかしながら、コード画像がさらにデコード処理を伴ってコード情報を提供するフォーマットで記録されている場合、位置指定のみでは、印刷物の読取り角度、ズレなどがある場合、についても充分な精度でコード情報を提供できない場合もあるという問題点もあった。さらに特許文献１に記載の技術は、予めコンテンツとして電子文書に一般コードが存在する場合には対応できず、汎用的な電子文書作成アプリケーションによって作成された電子文書に対しては適用できないという問題点があった。
【０００６】
また、特許文献２および特許文献３では、画像を分割し、分割された領域から取得した情報を使用してコード種類およびコード情報を取得する。特許文献２および特許文献３に記載された方法は、コード種類の決定およびデコード処理によるコード情報の取得を可能とするものの、印刷画像の全体を処理してからでなければエンコード種類およびデコード処理ができない点、およびコード情報の認識は、目的の画像を構成する画像ドットからコード情報を提供するドットを識別しながら、トライアンドエラー的にドットを抽出して実行しなければならないという点で、精度、コード画像の領域識別性、コード画像の認識開始からデコード完了までの速度といった点で充分ではなかった。
【０００７】
また、コード情報を記録する場合、画像データの認識性を低下させないように、画像データとの関係でコード情報のサイズが変動する可能性もある。この様な場合、従来の技術では、コード情報の位置を指定する点は開示するものの、コード情報が画像データ中でどの範囲に広がっているのかについては何ら開示するものではなく、高精度かつ高速のデコード処理を実行するためには、コード情報が画像データ中に占める空間的領域を指定することが必要とされていた。
【課題を解決するための手段】
【０００８】
本発明は、上記従来技術の問題点に鑑みてなされたものであり、本発明では、画像処理装置は、画像データが含むコード画像のコーディング種類、範囲情報、および回転角度を、コード画像と対として登録するコード配置情報を作成する。コード配置情報は、複数のコード画像が画像データに含まれる場合でも対応できるように、コード配置情報リストとして作成される。コード配置情報リストは、画像処理装置が設定するコーディング種類を使用してインデックスコード画像へとエンコードされる。エンコード後のインデックスコード画像は、描画データの画像描画を行う描画コマンドに対応付けられた付属データに、インデックスコード画像、位置、サイズなどが追加されて、描画データに合成され、インデックスコード付画像が生成される。インデックスコード付画像は、ページ記述言語を使用して印刷データとされ、プリンタ制御言語を使用して駆動される画像形成エンジンを介して印刷物とされる。
【０００９】
印刷物は、スキャナなどの画像読取り装置を使用して読取られ、コード画像をデコードして生成される制御情報を使用して画像処理を制御する画像処理装置によって画像処理を制御するために利用される。画像処理装置は、インデックスコード付き画像からインデックスコードをデコードし、デコードが成功した場合に、デコード結果としてコード配置情報を作成する。作成されたコード配置情報は、画像処理装置がその制御に利用するための一般コード情報を作成するために利用される。一般コード情報は、画像処理装置が実装するアプリケーションプログラムに送られて、アプリケーションプログラムが以後の処理を制御する。
【００１０】
本発明の画像処理装置は、インデックスコード付画像を生成する形態として実装することができる。また、本発明の画像処理装置は、インデックスコード付画像から、インデックスコード画像をデコードし、デコード結果を使用してアプリケーション制御データなどを提供する一般コード情報をデコードすることによって画像処理を制御する画像処理装置としても実装することができる。
【００１１】
さらに、画像処理装置は、上述したインデックスコード付画像を印刷物として出力し、同時にインデックスコード付画像をデコードして、一般コード情報を使用して画像処理を制御する画像処理装置としても実装することができる。
【００１２】
また、上述した画像処理装置は、複写機、多機能複写機として実装できるほか、パーソナルコンピュータとしても実装することができる。
【００１３】
さらに本発明では、上述した画像処理装置が実行する画像処理方法およびプログラムを提供する。
【００１４】
本発明によれば、符号化されたコード情報を高精度かつ高速にデコードすることを可能とするインデックスコード付画像を、電子ドキュメントに追加して外部出力することが可能な画像処理装置、画像処理方法、およびプログラムを提供することができる。また、本発明によれば、インデックスコード付画像を取得して高精度・高速に制御データなどを含む一般コード情報をデコードし、以後の画像処理の制御のために提供することが可能な、画像処理装置、画像処理方法、およびプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施形態をもって説明するが、本発明は後述する実施形態に限定されるものではない。図１は、本実施形態の画像処理装置の実施形態のハードウェア機能ブロックを示す。図１に示す実施形態では、画像処理装置は、パーソナルコンピュータ１００として実装される。パーソナルコンピュータ１００は、中央処理装置（ＣＰＵ）１０２と、各種制御プログラムや各種データなどを記憶するＲＯＭ／ＲＡＭといった固体記憶素子１０４とを備えており、ＣＰＵ１０２がアプリケーションを実行するためのデータを提供するとともに、アプリケーションの実行空間を提供している。パーソナルコンピュータ１００は、さらにＨＤＤ１０６を備えており、ＨＤＤ１０６は、ＣＰＵ１０２が実行する各種アプリケーションプログラムや各種データを記憶する。
【００１６】
また、パーソナルコンピュータ１００は、外部装置とのデータ通信を制御する通信部１０８を備えている。通信部１０８は、特に限定されるものではなく、例えば、ＵＳＢ、ＳＣＳＩ、ＩＥＥＥ１２９４などのバスラインを介するシリアル／パラレル通信のための通信部として構成することができる。また、通信部１０８は、ネットワークインタフェースカード（ＮＩＣ）として参照されるネットワーク通信機能を備えていてもよい。通信部１０８が、ネットワーク通信機能を備えている場合、画像処理装置は、イーサネット（登録商標）などを介してインターネットまたはローカルエリアネットワーク（ＬＡＮ）などを介して外部装置と通信することができる。
【００１７】
また、パーソナルコンピュータ１００は、ワイアドまたはワイアレスなどの適切な接続方式を使用して、液晶表示装置、ＣＲＴなどにより構成される表示装置１１２、マウスやキーボードなどの入力装置１１４が接続されていて、適切なインタフェースを介してＣＰＵ１０２に対して指令を行う。また、パーソナルコンピュータ１００は、ＣＰＵ１０２によるアプリケーション実行結果をユーザに対して表示している。パーソナルコンピュータ１００は、さらに、ＣＤ−ＲＯＭ、ＤＶＤ、またはＭＯなどの外付けドライブ装置１１０を備えていて、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯなどの記録媒体１１６との間でデータ送受信を行っている。パーソナルコンピュータ１００の上述した各ハードウェア機能ブロックは、システムバスおよびＩ／Ｏバス１１８を介して相互通信し、パーソナルコンピュータ１００に対して本実施形態の画像処理装置の機能を提供させている。
【００１８】
パーソナルコンピュータ１００は、また、外部プリンタに印刷を実行させるためのプリンタドライバおよびフラットベッドスキャナなどのスキャナ装置を駆動するためのＴＷＡＩＮドライバを実装することができる。パーソナルコンピュータ１００は、アプリケーションからのドライバの呼出に応じてプリンタドライバやＴＷＡＩＮドライバを起動して、外部プリンタを使用した印刷実行や、画像データの取り込みなどの処理を実行する。
【００１９】
図２は、本実施形態の画像処理装置を、他の実施形態である複写機２００として実装した場合の複写機２００のハードウェア機能ブロックを示す。図２に示すように、複写機２００は、コントローラ部２１０と、エンジン部２４０とを含んで構成される。コントローラ部２１０とエンジン部２４０とは、ＰＣＩ（Peripheral Component Interconnect）バスで接続され、コントローラ部２１０の処理に対応してエンジン部２４０が起動される。コントローラ２１０は、複写機２００の処理を制御し、描画、通信、ユーザからの入力を制御する。このため、コントローラ２１０は、ＣＰＵ２１２を備えており、バスブリッジ２１４、２１６を介して、ＲＯＭ／ＲＡＭからなる記憶部２１８およびＡＳＩＣ２２４にアクセスし、またＩ／Ｏ入力などを受領する。
【００２０】
ＡＳＩＣ２２４は、複写機２００の処理結果の外部出力を制御するための特定用途集積回路として構成され、コントローラ部２１０への入力を行うための操作パネル２３０からのユーザ入力を受領し、ＣＰＵ２１２への指令を行うとともに、ＮＶＲＡＭなどで構成されるＭＥＭ−Ｃ２２０、ＨＤＤドライブ２２２などとの間の入出力制御を管理する。
【００２１】
ＡＳＩＣ２２４は、例えば、後述するスキャナエンジンが取得したデジタルデータに対して、圧縮処理を実行してファクシミリ送信データを作成し、ファックス送受信を制御するファクシミリコントロールユニット（ＦＣＵ）２３２を制御して、ＩＴＵ−Ｔ勧告によるＧ３またはＧ４などの規格でのファックス通信を実行する。入来したファクシミリデータを、画像データに伸張する処理を行い、伸張した画像データをエンジン部２４０に送付する処理を実行する。
また、ＡＳＩＣ２２４は、ＵＳＢ(Universal Serial Buss)２３４、ＩＥＥＥ１３３４バス２３６などを介して外部機器とのデータ送信を可能としている。エンジン部２４０は、ＰＣＩバスに接続可能なプリンタエンジンおよびスキャナエンジンを含んで構成される。
【００２２】
プリンタエンジンは、感光体ドラムやインクノズルを含むが像形成プロセスを使用する白黒プリンタまたはカラープリンタなどの印刷部（いずれも図示せず）を備える。なお、エンジン部２４０は、画像データを面積階調で表現するための誤差拡散やガンマ変換などの画像処理部分を含んで構成されていて、ＲＧＢの例えばそれぞれ８ビット深度のデジタル画像を、ＣＭＹＫ系の面積階調画像へと変換し、出力を可能とする。また、スキャナは、ＣＣＤなどを備えるラインスキャナなどとして構成することができ、原稿台に載置された印刷物を読み取ってデジタル変換し、ＲＧＢの８ビット深度の画像データを生成し、以後ＡＳＩＣ２２４などによる処理を可能としている。その他、ＣＰＵ２１２は、計時機能を有し、現在日時を計時しており、図２に示した複写機２００の機能は、より詳細に例えば特開２００６−１７７９９０号公報に記載された構成として実装することができる。
【００２３】
図３は、本実施形態の画像処理装置３００のソフトウェア機能ブロックを示す。図３に示した画像処理装置３００は、上述したようにパーソナルコンピュータとして実装されている。画像処理装置３００は、アプリケーションが作成したデータを外部出力する印刷物出力機能部３１０と、印刷物をスキャナで読み取ってアプリケーションで処理するインデックスコード付画像取得部３５０とを含んで構成される。
【００２４】
以下、画像処理装置３００の印刷物出力機能部３１０と、インデックスコード付画像取得部３５０の機能を分離して説明する。なお、印刷物出力機能部３１０とインデックスコード付画像取得部３５０は、画像処理装置３００の特定の実装型式にあっては、いずれか一方のみ実装された形態とすることができる。印刷物出力機能部３１０は、アプリケーション３１２と、グラフィックエンジン３１４と、プリンタドライバ３１６と、スプーラ３１８とを含んで構成される。アプリケーション３１２は、文書データなど、複写機やプリンタに印刷させる情報を作成するために利用されるワープロソフトウェア、表計算ソフトウェア、グラフィックソフトウェアといった汎用アプリケーションである。
【００２５】
また、グラフィックエンジン３１４は、複写機、プリンタ、ディスプレイなどのデバイスの差異を吸収した描画用の関数インタフェースをアプリケーション３１２に提供するモジュールである。グラフィックエンジン３１４は、アプリケーション３１２からの関数呼び出しに応じ、文書データをアプリケーション非依存の形式の、例えばＥＭＦ（Enhanced Meta File）形式などのデータに変換し、生成されたデータをプリンタドライバ３１６に出力するモジュールであり、ＯＳ（Operating
System）によって提供される。例えば、Ｗｉｎｄｏｗｓ（登録商標）、環境においては、ＧＤＩ（Graphics Device Interface）がグラフィックエンジン３１４の機能を提供する。また、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）環境では、Ｘ−ウィンドウシステムおよびＤＥＶＭＯＤＥ構造体がグラフィックスエンジン３１４の機能を提供する。以下、グラフィックスエンジン３１４により生成されたデータを描画データとして参照する。
【００２６】
プリンタドライバ３１６は、本実施形態では、印刷データ作成手段として機能し、グラフィックエンジン３１４によって出力された描画データを、当該プリンタドライバ３１６が出力対象の複写機またはプリンタが処理可能な形式、例えばＰＤＬ（Page Description Language）、以下「印刷データ」として参照する。）に変換する。描画データから印刷データを作成する処理は、従来と同様の処理を使用する。しかしながら、本実施形態におけるプリンタドライバ３１６は、描画データを印刷データに変換する処理中に、描画データをインデックスコード付画像作成手段として機能するインデックスコード付画像作成部３３０に渡し、描画データに追加するコード情報の描画データ中での領域を示すインデックスコードを生成させる。その後、インデックスコード付画像作成部３３０は、インデックスコードを元の描画データに付加してプリンタドライバ３１６に戻し、インデックスコード付の描画データを印刷データに変換する処理を実行する。
【００２７】
スプーラ３１８は、印刷ジョブを記憶しておき、印刷データを、印刷指令の順にプリントアウトできるようにするキュー手段として機能するモジュールである。スプーラ３１８は、プリンタドライバ３１６から印刷データを受取り、画像形成エンジン３２０へと印刷データの受領した順で印刷データを送る。なお、画像形成エンジン３２０は、複写機、プリンタなど画像形成機能を提供する機能部を総称するものとして参照する。
【００２８】
なお、機能説明を明確化する目的から、プリンタドライバ３１６と、インデックスコード付画像作成部３３０とを異なる機能モジュールとして説明するが、インデックスコード付画像作成部３３０は、プリンタドライバ３１６の機能モジュールとして実装することもできる。
【００２９】
以下、インデックスコード付画像作成部３３０の処理について説明する。インデックスコード付画像作成部３３０は、描画データを受取り、ユーザが当該描画データに追加することを指令したコード情報について、エンコード種類、描画データ中での領域範囲を示す範囲情報、および画像の回転角度などの要素情報をエンコードして、インデックスコード画像とし、当該インデックスコード画像を付加した描画データを生成するモジュールである。
【００３０】
インデックスコード付画像作成部３３０は、コード配置情報取得部３３２と、デコーダ３３４とを含んで構成されている。コード配置情報取得部３３２は、描画データを受け取って描画データ中に含まれるコード情報を解析し、コード情報が描画データ中に示す領域情報、コード種類情報などを取得してコード配置情報リストを生成する、コード配置情報取得手段として機能する。また、デコーダ３３４は、コード配置情報取得部３３２が取得した描画データを解釈し、デコード結果をコード配置情報取得部３３２に返し、描画データ中にコード情報が含まれているか否かの判断を可能とさせている。さらに、インデックスコード付画像作成部３３０は、インデックスコード作成部３３６と、エンコーダ３３８と、画像合成処理部３４０とを含んで構成されている。
【００３１】
インデックスコード作成部３３６は、コード配置情報取得部３３２が作成したコード配置情報リストを受け取って、エンコーダ３３８に渡し、エンコード後のコード配置情報リストを受領して設定されたコード種類でのインデックスコード画像を生成する、インデックスコード作成手段として機能する。エンコーダ３３８は、指定された文字列やバイト配列等を１次元バーコードや２次元コードの画像に符号化する。１次元バーコードとしては、Ｃｏｄｅ３９、ＥＡＮ−８、ＥＡＮ−１３、ＮＷ−７、Ｃｏｄｅ１２８などを挙げることができる。また、２次元コードとしては、ＱＲ、ＤａｔａＭａｔｒｉｘ、ＰＤＦ４１７等を挙げることができる。デコーダ３３４は、上述した１次元バーコードや２次元コードの画像から元の文字列やバイト配列を復号する。デコーダ３３４およびエンコーダ３３８については、公知の技術を使用して実装することができる。画像合成部３４０は、描画データにインデックスコード画像のデータを追加し、インデックスコード付画像を生成する、画像合成手段として機能する。
【００３２】
画像合成部３４０で作成されたインデックスコード付画像は、プラインタドライバ３１６において、ＰＤＬに変換され、ＰＪＬ(Printer Job Language)などのプリンタ制御言語が付加されて、印刷データとされ、スプーラ３１８に転送される。スプーラ３１８は、印列データを、ＩＥＥＥ１２９４、ＵＳＢ、イーサネット（登録商標）などのバス、またはネットワークを介して画像形成エンジン３２０に送付する。複写機、プリンタなどとして実装することができる画像形成エンジン３２０は、プリンタ制御言語を使用して、送付されたインデックスコード付画像を含む印刷データについて、印刷処理を実行する。なお、画像を印刷する場合に、拡大や縮小を行う場合、画像合成部３４０は、拡大縮小率に対応してインデックスコード画像の印刷位置を修正する。
【００３３】
図３に示す画像処理装置３００は、またインデックスコード付画像取得部３５０を含んでいる。図３に示した実施形態では、画像処理装置３００は、ＴＷＡＩＮドライバ３５４を起動してスキャナ３５６から画像データを取得する。取得した画像データは、画像処理を実行するアプリケーション３５２に送られる。アプリケーション３５２は、ＯＣＲソフトなどの画像処理を可能とするアプリケーションのモジュールとして実装することができる。アプリケーション３５２は、受領したインデックスコード付画像を、インデックスコード付画像読取手段として機能する、インデックスコード付画像読取部３６０に送付する。インデックスコード付画像読取部３６０は、さらにインデックスコード読取部３６４と、一般コード情報読取部３６６と、デコーダ３６２とを備えている。
【００３４】
読取られた画像データは、インデックスコード読取手段として機能するインデックスコード読取部３６４と、コード情報をデコードした制御情報として機能する一般コード情報を提供する一般コード情報読取部３６６とに入力される。インデックスコード読取部３６４は、スキャンされたインデックスコード付画像を受取ってコード配置情報リストを復号するモジュールである。一般コード情報読取部３６６は、画像データとコード配置情報リストとを受け取って画像データ中に含まれる一般コードの位置、エンコード種類、デコードされたバイト列情報などを指定する一般コード情報リストを生成する。デコーダ３６２は、１次元バーコードや２次元コードの画像から元の文字列やバイト配列を復号するモジュールであり、デコーダ３３４と同様の機能を有している。なお、一般コード情報は、画像処理装置３００の読込画像に関してアプリケーション３５２が実行する処理を制御する制御情報として機能し、制御情報に基づいて、画像処理装置３００は、画像編集、複製出力、画像転送などの処理を実行する。
【００３５】
なお、図３に示す画像処理装置３００は、インデックスコード付画像作成部３３０とインデックスコード付画像読取部３６０とを同時に含む場合、デコーダ３３４、デコーダ３６２、およびエンコーダ３３８とをコーデックとして機能的に統合し、共用することができる。また、図３に示した実施形態では、アプリケーション３１２およびアプリケーション３５２は、例えば同一のドキュメント管理アプリケーション、ドキュメント作成アプリケーション、画像処理アプリケーションなどの、それぞれ出力モジュールおよび読取りモジュールとして実装することができる。
【００３６】
図４は、図３に示したインデックスコード付画像作成部３３０が実行する処理の実施形態のフローチャートである。図４の処理は、ステップＳ４００から開始し、ステップＳ４０１で描画データを受取る。ステップＳ４０２では、描画データをコード配置情報取得部３３２が解析し、画像データ部分を抜き出す。なお、ステップＳ４０２で解析する描画データの構成についてはより詳細に後述する。ステップＳ４０３では、描画データに未処理の画像データがあるか否かを判断する。未処理の画像データがない場合（ｎｏ）、処理をステップＳ４０７に分岐させ、コード配置リストを返し、ステップＳ４０８で処理を終了する。
【００３７】
一方、ステップＳ４０３で、未処理の画像データがあると判断された場合（ｙｅｓ）、処理をステップＳ４０４に分岐させ、画像データをデコーダ３３４に渡し、デコード結果を生成する。その後ステップＳ４０５でデコード成功か否かを判断し、デコードが不成功であった場合（ｎｏ）、処理をステップＳ４０３に分岐させ、さらに未処理の画像の有無を判断する。ステップＳ４０５で、デコードが成功した場合（ｙｅｓ）、ステップＳ４０６でコード配置情報リストに新に検出されたコード情報を追加し、コード配置情報リストを更新する。なお、デコードの成功・失敗の判断は、デフォルトのコード情報について失敗した場合でも、コード配置情報取得部３３２が処理画像領域を例えば９０°ごとに回転させ、デコードの角度による成功・失敗を判断し、その回転角度の値を生成する処理も実行する。その後、処理をステップＳ４０３に戻し、さらに残りの画像データについての処理を反復させる。
【００３８】
図５は、図４の処理で使用する描画データ５００、付随データ５１０、およびコード配置情報リスト５２０のデータ構造の実施形態を示した図である。図５に示す描画データ５００は、描画コマンド１と、描画コマンド１に対応する付随データ１とが対となって描画を制御する。また、同様に、描画データ５００は、描画コマンド２、描画コマンド３などを含み、それぞれに対応する付随データ２、３を登録して構成されている。なお、描画コマンドは、ＤＥＶＭＯＤＥ構造体などにより指定される文字、画像、ベクタなどの画像種類に対して、それぞれの位置情報を登録した構造として構成される。
【００３９】
付随データ５１０は、付随データのデータ構成を示した実施形態を示す。データ構造５１０は、例えば文字列を記述する描画コマンド、画像を記述する描画コマンド、ベクタを記述する描画コマンドに対し、付随データ５１０として、文字列、位置、サイズ、色の各情報が対応して付随データ５１２、５１４、５１６として登録されている。コード配置情報取得部３３２は、プリンタドライバ３１６は、描画データ５００を一旦バッファリングし、コード配置情報取得部３３２へと描画データ５００を渡してデコーダ３３４によるデコード処理を実行させ、描画データが含むコード情報を取得する。
【００４０】
取得したコード情報は、コード配置情報リスト５２０に、コード種類、その範囲情報、および回転角度を対応させたレコード５２２〜レコード５３０とし、配置情報として登録される。また、デコーダによるデコード結果が失敗した場合には、コード配置情報取得部３３２は、適切な角度ごとに描画データを回転させ、デコード処理を設定された角度ごとに画像を回転変換することによって試行する。そして、コード配置情報リスト５２０には、コード配置情報取得部３３２がコード情報のデコードに成功したときのコード情報の回転角度を、「度」単位で登録する。なお、パーソナルコンピュータ３００が作成するコード情報の配置が予め規定されている場合には、回転角度（ｄｅｇ）のフィールドは、必要ではない。
【００４１】
図５に示した実施形態では、コードの範囲情報は、例えば描画データの左上を原点としたときのコード画像の左上隅の（ｘｌ，ｙｌ）座標および右下隅の（ｘｒ、ｙｒ）座標の各値を、適切な単位、例えばｍｍ（ミリメートル）で示した値を使用して登録されている。しかしながら、本実施形態では、コード画像の四隅のカーテジアン座標を範囲情報として使用することもできるし、単位についてもミリメートルではなくインチを使用して表現することもできる。また、コードの回転角度についても、ｄｅｇで表現する他、他の単位や表現を用いることができる。さらに、コード配置情報の登録データは、図５の実施形態に限定されるものではなく、登録フィールドとして登録されたデータ種類のうち、不要な場合には不要な要素情報登録する必要は無いし、またさらに追加するべき情報がある場合には要素情報のフィールドを追加することができる。追加することができる要素情報としては、例えばコードサイズに関連する情報、例えば、１次元バーコードやスタック型２次元コードの最細バー幅、マトリクス型２次元コードのセルサイズなど、後述の一般コード読み取り処理時のデコード処理をサポートするような付加情報を挙げることができる。
【００４２】
図６は、インデックスコード作成部３３６がインデックスコードを作成する処理の実施形態についてのフローチャートである。インデックスコード作成処理は、ステップＳ６００から開始し、ステップＳ６０１でコード配置情報リスト５２０を受領する。ステップＳ６０２では、コード配置情報リスト５２０からインデックスコード作成データを作成する。インデックスコード作成用データとは、コード配置情報リスト５２０に登録されたレコードに含まれる文字列、数値などをバイト配列に変換したデータを意味する。ステップＳ６０３では、インデックスコード作成用データをエンコーダ３３８に渡し、インデックスコード画像を作成する。インデックスコード画像は、コードの種類は限定されないが、インデックスコード画像のサイズを小さくする点で、１次元バーコードよりも２次元コードを用いる方が望ましい。インデックスコード画像のエンコードが終了した段階でインデックスコード作成部３３６は、ステップＳ６０４で作成したインデックスコード画像を画像合成部３４０に渡して処理を終了する。
【００４３】
図７は、画像合成部３４０が実行する処理のフローチャートである。図７の処理は、ステップＳ７００から開始し、ステップＳ７０１で、バッファメモリから描画データを読出し、また画像合成部３４０がバッファリングしておいたインデックスコード画像を読み出す。ステップＳ７０２では、描画データを画像データに対応する付随データとして、インデックスコード画像の位置、サイズなどの情報を追加する。ステップＳ７０３で、画像合成が終了したインデックスコード付画像をプリンタドライバ３１６に返し、バッファリングさせ、処理をステップＳ７０４で終了させる。
【００４４】
プリンタドライバ３１６は、受領した描画データをＰＤＬに変換し、プリンタ制御言語のコードを追加した後、スプーラ３１８に渡す。スプーラ３１８は、画像形成エンジン３２０と通信してインデックスコード付画像を画像形成エンジン３２０に転送する。画像形成エンジン３２０は、受領した印刷データを、プリンタ制御言語を使用して印刷データの印刷を実行することで、インデックスコード付画像の印刷が完了する。
【００４５】
図８は、本実施形態の画像処理装置３００が作成した電子ドキュメント８００の実施形態を示す。図８に示した電子ドキュメント８００は、複数の画像データ８０２〜８２４が存在している。画像処理装置３００は、図８に示す印刷物を与えるこの電子ドキュメント８００に対するプリント指令を受領すると、グラフィックエンジン３１４によってコード情報を含む電子ドキュメントを描画データに変換する。描画データは、その後、プリンタドライバ３１６に渡される。プリンタドライバ３１６は、描画データをインデックスコード付画像作成部３３２に渡す。
【００４６】
インデックスコード付画像作成部３１６は、コード配置情報取得部３３２は、描画データ中の画像データ８０２〜８２４を抽出する。抽出された画像データは、図５に示した描画コマンドの付随情報を抽出することによって取得される。そして、画像データ８０２〜８２４は、それぞれデコーダ３３４に渡されて、デコードが試行されるので、画像データがコード画像である場合は確実にデコードが可能である。図８の電子ドキュメント８００では、画像データ８０２（Ｃｏｄｅ３９）、８１０（ＰＤＦ４１７）、８１６(Ｃｏｄｅ１２８）、８２０（ＱＲ）、８２４（ＤａｔａＭａｔｒｉｘ）についてデコード試行が成功したものとして説明する。デコード結果は、コード配置情報リスト５２０に追加され、生成されたコード配置情報リスト５２０がインデックスコード付画像作成部３３６に渡される。
【００４７】
インデックスコード付画像作成部３３６は、コード情報リスト５２０をインデックスコード作成部３３６に渡し、コード情報リスト５２０からインデックスコード作成用データをバイト列として生成する。作成されたインデックスコード作成用データは、エンコーダ３３８に渡され、インデックスコード画像が作成される。作成されたインデックスコード画像は、画像合成処理部３４０に渡され、付属データを画像として規定する描画コマンドに対応する付属データの画像として、その、画像、位置およびサイズなどの情報を記述して画像合成を完了する。作成されたインデックスコード付画像は、プリンタドライバ３１６へと渡され、印刷データとされ、スプーラ３１８を介して画像形成エンジン３２０に転送され、印刷物が作成される。
【００４８】
図９は、図８で説明した処理を経て画像形成エンジン３２０から出力された印刷物９００の実施形態を示す。印刷物９００は、電子ドキュメント８００に対応する画像を、指定された印刷用紙上に形成している。また、画像処理装置３００が作成したインデックスコード画像９１０が合成されており、合成されたインデックスコード画像９１０は、図９に示した実施形態では、印刷物の左上の文書・画像認識性に影響を与えない領域に追加されているのが示されている。なお、他の実施形態ではインデックスコード画像は、印刷物９００の左右上下に４箇所形成させることもできる。左右上下の４箇所に作成する場合には、印刷物をスキャナにより読み込ませる場合の読み取り方向によらず効率的にインデックスコード画像を取得することが可能となる。また、インデックスコード画像を複数形成する場合には、それぞれコード情報の内容を変更し、インデックスコード画像全部が取得された段階で、全コード情報を与えるように、コード情報の内容を互いに変えることもできる。
【００４９】
図１０は、本実施形態の画像処理装置がインデックスコート付画像の読取りを実行する場合、インデックスコード読取部３６０が実行する処理のフローチャートを示す。インデックスコード付画像の読み取り処理は、ステップＳ１０００から開始し、ステップＳ１００１で、スキャナなどが取得した画像データを受取る。ステップＳ１００２では、画像中の領域をインデックスコード抽出の目的で切り出す。ステップＳ１００３では、未処理の領域があるか否かを判断し、未処理の領域がない場合（ｎｏ）処理をステップＳ１０１０に分岐させ、デコード失敗のエラー通知を返し、処理をアプリケーションに返し、処理を終了する。
【００５０】
一方、ステップＳ１００３で未処理の領域がある場合（ｙｅｓ）、ステップＳ１００４で切り出した領域をインデックスコード読取部３６４に渡し、ステップＳ１００５で、デコーダ３６２を呼出し、デコード試行を実行する。なお、ステップＳ１００５のデコード試行は、切り出した領域について、デコード失敗した場合でも、角度を修正しながら、デコード試行を行う。デコード試行が結果的に成功しなかった場合（ｎｏ）、処理をステップＳ１００３に戻し、他の領域の判断を実行させる。また、ステップＳ１００５でデコードに成功した場合（ｙｅｓ）、処理をステップＳ１００６に分岐させ、デコード結果からコード配置情報リストを取得する。さらにステップＳ１００７では、デコードされたインデックスコードの回転角度を取得し、画像読取りの読み取り角度を取得し、読み取り角度およびデコードしたコード配置情報リスト５２０を後述する一般コード情報読取部３６６に返し、ステップＳ１００９で処理を終了させる。
【００５１】
図１１は、読取り角度およびデコードしたコード配置情報リスト５２０を取得した一般コード情報読取部３６６が実行する処理の実施形態を示す。図１１に示す一般コード情報読取部３６６の処理は、ステップＳ１１００から開始し、ステップＳ１１０１で画像データを受領し、ステップＳ１１０２で画像の向きとコード配置情報リストを受け取ったか否かを判断する。ステップＳ１１０２で、画像の向きとコード配置情報リストを受け取っていないと判断された場合（ｎｏ）、画像データの全域探索を行い、一般コード情報の取得を行い、ステップＳ１１１１で、アプリケーションに対して一般コード情報リストを返し、処理をステップＳ１１１２で終了させる。
【００５２】
また、ステップＳ１１０２で、画像の向きとコード配置情報リストを受け取ったと判断された場合（ｙｅｓ）、ステップＳ１１０４で画像データを画像向きの一致させるように回転変換を行い、ステップＳ１１０５で、未処理のコード配置情報があるかを判断する。なお、画像の向きの一致処理は、画像データ全体を画像の向きに合わせて回転させた後に画像データの領域切り出し処理をおこなうこともできるし、画像全体の回転を行う代わりに、切り出し領域を画像の向きに合わせて補正するようにしてもよい。切り出し領域の方向を修正する場合、画像データ全体を処理しなくて済むため、処理速度が向上する。未処理のコード配置情報が無いと判断された場合（ｎｏ）、ステップＳ１１１１に処理を分岐させ、一般コード情報リストをアプリケーションに返し、ステップＳ１１１２で処理を終了させる。
【００５３】
ステップＳ１１０５の判断で未処理のコード配置情報があると判断された場合（ｙｅｓ）、ステップＳ１１０６でコード配置情報を基に画像データの領域を切り出し、ステップＳ１１０７で切り出した領域の画像をコード配置情報で指定されるデコーダに渡し、デコード結果を作成する。ステップＳ１１０８では、デコードが成功したか否かを判断し、デコードに成功しない場合（ｎｏ）、処理をステップＳ１１０５に戻し、処理を繰り返す。また、ステップＳ１１０８でデコードが成功した場合（ｙｅｓ）、処理をステップＳ１１０９に分岐させ、一般コード情報リストを更新する。その後、さらに未処理の領域があるか否かを、処理をステップＳ１１０５に戻して、未処理のコード配置情報が無くなるまで処理を反復させる。
【００５４】
図１２は、一般コード情報読取部３６６が生成する一般コード情報リスト１２００の実施形態を示す。一般コード情報リスト１２００は、コードごとにリストのレコード１２０２〜１２１０が形成されており、レコード内には、コードを特徴付けるための情報が登録されており、各列がコード情報のそれぞれ対応する情報を与えている。一般コード情報を構成する要素情報としては、コードの種類、デコードデータ、コードの位置情報、コードの回転角度などを登録することができる。コード種類、コードの位置情報、コードの回転角度は、コード配置情報リスト５２０のエンコード種類、範囲情報、回転角度と同様の機能を有する情報である。
【００５５】
また、デコードデータには、図１１のステップＳ１１０７のデコード処理によって得られた文字列などのバイト配列が格納される。なお、一般コード情報リスト１２００に登録できる要素情報は、図１２に示した情報に限定されるものではなく、要素情報を適宜削減したり、追加することができる。例えば、追加することができる要素情報としては、例えば誤り訂正レベルや特定産業規格（Industrial Standard）の情報など、デコード処理によって得られる他の情報を追加してもよい。
【００５６】
図１３を参照してアプリケーション３５２がスキャナ３５６を使用して画像を取得し、取得した画像データから一般コード情報リスト１２００を生成するまでの処理の実施形態を説明する。図１３に示した実施形態では、図９に示した画像をスキャナ３５６によって読み込むものとする。
【００５７】
スキャナ３５６に図９に示した画像を載置して、読取り指令を受領したアプリケーション３５２は、ＴＷＡＩＮドライバ３５４を呼出し画像９００の読み取り処理を実行し、図１３に示されるスキャン画像１３００を得る。アプリケーション３５２は、スキャン画像１３００のデータをインデックスコード付画像読取部３６０に渡す。その後、インデックスコード付画像読取部３６０は、スキャン画像をインデックスコード読取部３６４に渡す。
【００５８】
スキャン画像１３００は、インデックスコード付画像読取部３６０に渡されると、インデックスコード読取部３６４は、スキャン画像１３００中でインデックスコード画像の存在する可能性のある領域として規定される四隅領域１３０２、１３０６、１３１４、１３１６を切り出す。切り出した領域１３０２〜１３１６は、デコーダ３６２に渡され、デコード結果が生成される。図１３に示した実施形態では、領域１３０６にコード画像が形成されている。領域１３０６について、インデックスコードのデコード試行処理では、コード画像の回転が行われ、図示した実施形態では、回転角度２７０°時計回りにコード画像を回転させた段階でデコードが成功するものとして、以下さらに説明する。
【００５９】
デコード結果は、図５に示したコード配置情報リスト５２０をアプリケーション３５２に対して取得させ、デコードしたインデックスコード画像の向き情報および領域１３０６の位置から、スキャン画像１３００の読み取り方向が時計周りに２７０°回転されていたことが判断される。この判断の結果、アプリケーション３５２は、取得したコード配置情報リスト５２０と、スキャン画像１３００の向き情報とをインデックスコード付画像読取部３６０に渡す。
【００６０】
次いで、インデックスコード付画像読取部３６０は、スキャン画像１３００と、コード配置情報リスト５２０と、スキャン画像の向き情報とを、一般コード情報読取部３６６に渡す。一般コード情報読取部３６６は、コード配置情報リスト５２０と、スキャン画像１３００の向き情報とを使用して、領域１３０４、１３０８、１３１２、１３１８、１３２０を切り出す。そして切り出した領域１３０４、１３０８、１３１２、１３１８、１３２０のそれぞれを、デコーダ３６２に渡し、デコードを実行する。その結果、切り出した領域１３０４、１３０８、１３１２、１３１８、１３２０に含まれる画像は、コード配置情報リスト５２０に登録されたエンコード方式Ｃｏｄｅ３９、ＰＤＦ４１７、Ｃｏｄｅ１２８、ＱＲ、ＤａｔａＭａｔｒｉｘを使用しながらも、各コード画像に対してそれぞれのエンコード方式をトライアンドエラーさせることなくデコードされる。
【００６１】
また、図１２に示す一般コード情報リスト１２００は、本実施形態により、デコード結果から高精度、かつ高速に作成することができる。その後、一般コード情報リスト１２００は、インデックスコード付画像読取部３６０に渡される。インデックスコード付画像読取部３６０は、取得した一般コード情報リスト１２００をアプリケーション３５２に返し、一般コード情報を使用した後続処理を可能とする。
【００６２】
以上の例では、画像処理装置３００のアプリケーション３５２がＴＷＡＩＮドライバ３５４を介して画像データを取得するものとして説明した。しかしながら、他の実施形態では、画像データを取得できる限り他のシーケンスを用いることができる。例えば、複写機として実装された画像形成エンジン３２０が読み取った画像データをファイル化し、画像ファイルをネットワーク上の任意のストレージ領域に保存しておく。アプリケーション３５２は、保存された画像ファイルにアクセスし、ＦＴＰ、ＨＴＴＰなどのファイル転送プロトコルを使用して画像ファイルをダウンロードし、上述したデコード処理に提供することもできる。
【００６３】
以上説明したように、本実施形態では、写真や図表などとともに任意の位置・大きさ・回転角度で埋め込まれた複数多種のエンコード方式を有するコード情報を含む電子ドキュメントについて、高精度・短時間での高効率のコード認識が可能となる。また、印刷処理時にインデックスコードを四隅のいずれかに付与し、読取処理時にインデックスコード検出領域として四隅領域をとるようにすることで、スキャン時の紙原稿の向きによらずに確実にコードを認識させることができる。さらに、本実施形態は、特定の文書作成アプリケーションに限定されることなく、汎用的な電子文書作成アプリケーションによって作成された電子文書に対して適用可能である。
【００６４】
以下、図１４を参照して、画像処理装置の第２の実施形態について説明する。第２の実施形態の画像処理装置１４００は、機能ブロックとしては第１の実施形態の画像処理装置と同様の構成を備える。しかしながら、各機能ブロックが画像処理装置として実装されるパーソナルコンピュータ１４１０と、複写機１４３０とに分離して実装される点で、第１実施形態の画像処理装置とは相違する。
【００６５】
図１４に示す画像処理装置１４００は、パーソナルコンピュータ１４１０と、パーソナルコンピュータ１４１０がネットワークプリンタなどとして接続する複写機１４３０として実装されている。インデックスコード付画像作成部１４５０は、複写機１４３０の機能モジュールとして実装され、パーソナルコンピュータ１４１０は、専らコード情報を埋め込む処理を実行する。図１４に示した実施形態では、プリンタドライバ１４１６は、既存のものが利用され、複写機１４３０の機能モジュールが、本実施形態のインデックスコード付画像を作成する。
【００６６】
なお、図１４に示すインデックスコード付画像作成部１４５０は、第１の実施形態で説明したと同様の機能を提供している。第２の実施形態では、コード配置情報取得部１４５２および画像合成処理部１４５６は、描画データではなく、プリンタ制御言語のコマンドを含むＰＤＬなどのフォーマットで作成された印刷データを解析することを除き、第１の実施例と同様の処理を実行するため、これ以上の詳細な説明は省略する。第２の実施形態では、インデックスコード付画像の作成を複写機の機能として提供することができる。
【００６７】
図１５は、第３の実施形態の画像処理装置１５００を示す。第３の実施形態の画像処理装置１５００は、インデックスコード付画像読取部１５１０は、第１の実施形態と同様の機能モジュールを含んで構成される。しかしながら、第３の実施形態では、読取処理シーケンスでスキャナ１５３０からの画像データを使用してインデックスコードを読取り、一般コード情報リスト生成処理を実行する点で相違する。図１５の画像処理装置１５００を詳細に説明すると、画像処理装置１５００は、スキャナ１５３０と、スキャナを制御し、ラスタデータなどにイメージ変換し、さらに処理要求を外部から受領して画像に対して各種の処理を実行するアプリケーションとを含んでいる。読取られた画像データは、インデックスコード読取手段として機能するインデックスコード読取部１５１２と、コード情報をデコードした制御情報として機能する一般コード情報を提供する一般コード情報読取部１５１４とに入力される。インデックスコード読取部１５１２は、スキャンされたインデックスコード付画像を受取ってコード配置情報リストを復号するモジュールである。一般コード情報読取部１５１４は、画像データとコード配置情報リストとを受け取って画像データ中に含まれる一般コードの位置、エンコード種類、デコードされたバイト列情報などを指定する一般コード情報リストを生成する。デコーダ１５１６は、１次元バーコードや２次元コードの画像から元の文字列やバイト配列を復号するモジュールであり、デコーダ３３４と同様の機能を有している。なお、一般コード情報は、画像処理装置１５００の読込画像に関してアプリケーション１５２０が実行する処理を制御する制御情報として機能し、制御情報に基づいて、画像処理装置３００は、画像編集、複製出力、画像転送などの処理を実行させている。
【００６８】
画像処理装置の第４の実施形態では、画像処理装置は、インデックスコード付画像に、インデックスコードを複数画像データに配置する処理を実行する。第４の実施形態では、インデックスコード画像は、画像処理装置３００により指定される描画データの複数の指定領域、例えば四隅に配置される。四隅に配置されるインデックスコード画像は、すべて同一の情報（全ての一般コードの配置情報）をエンコードすることができる。上述したインデックスコードを使用することにより、インデックスコード読取処理時に一部のインデックスコードが読めなかった場合でも残りのインデックスコードから一般コード情報リストを取得でき、コード認識精度を向上させることができる。
【００６９】
また、全てのインデックスコードに同じ情報（全ての一般コードの配置情報）をエンコードすることに代えて、各インデックスコードに一般コードの配置情報を分散してエンコードするように実装することができる。各インデックスコードに一般コードの情報を分散して配置することにより、インデックスコード１つあたりの画像サイズを小さく抑えることができ、文書のレイアウトや見た目に対する影響を低減させることができる。
【００７０】
以下、画像処理装置の第５の実施形態について説明する。画像処理装置の第５の実施形態では、機能モジュール構成は、第１の実施形態のものと同様に実装される。しかしながら、インデックスコード作成部３３６およびコード配置情報取得部３３２の処理が異なる。図１６は、画像処理装置の第５の実施形態におけるインデックスコード作成部３３６の処理のフローチャートである。図６の処理とは異なり、図１６の処理では、インデックスコード作成用データをエンコーダに渡す前に、ステップＳ１６０３でインデックスコード作成用データにヘッダデータを付加する。
【００７１】
ヘッダデータは、例えば２４ビットの固定長データとして構成することができ、後述するインデックスコード読取部の処理において、インデックスコードを、一般のコードとの区別を容易に識別するための識別データとして用いられる。第５の実施形態では、画像データ中に複数のコード情報が存在する場合であってもデコード処理を排除して直接インデックスコードを識別することができ、インデックスコード画像を付加する位置を予め定めずとも、画像データの特性に応じて適切な箇所に埋設することが可能となる。
【００７２】
図１７は、画像処理装置の第５の実施形態で、コード配置情報取得部３３２が実行する処理のフローチャートである。図１０とは、ステップＳ１００６で、デコード結果からコード配置情報リストを取得する処理を実行する前に、ステップＳ１７０６でデコードデータがインデックスコードのデータかを判断する。説明する実施形態では、デコードデータの最初の３ｂｙｔｅ（２４ビット）の固定長データが、インデックスコードを示す値と一致しているか否かを比較する。ステップＳ１７０６でデコードデータがインデックスコードのデータであると判断された場合（ｙｅｓ）、ステップＳ１７０７でコード配置情報リストを取得し、ステップＳ１７０８で画像の向き情報の取得を行い、ステップＳ１７１０で取得した情報をアプリケーションに返し、ステップＳ１７１１で処理を終了させる。
【００７３】
一方、ステップＳ１７０６でデコードデータがインデックスコードのデータでない（一般コードのデータである）と判断された場合（ｎｏ）、処理をステップＳ１７０３に戻し、未処理の領域があるか否かを判断し、未処理の領域が無くなるまで、処理を反復させる。
図１６および図１７に示した処理を使用することで、インデックスコード検出領域に一般コードが含まれている場合でも一般コードをインデックスコードとみなして処理することがなくなるので、誤動作を防止し、検出効率を高めることが可能となる。
【００７４】
なお、第５の実施形態では、インデックスコードを一般コードと区別するための識別データとしての固定長データを、インデックスコード作成データの先頭に付加するものとして説明した。さらに他の実施形態では、例えば固定長データをインデックスコード作成データの末尾に付加することもできる。さらに、他の実施形態では、インデックスコード作成データからＳＨＡ−１、ＭＤ−５などの既知の一方向関数を使用してハッシュ値を算出し、ハッシュ値を識別データとして使用することもできる。
【００７５】
以下、図１８、図１９を使用して本発明の第６の実施形態における画像処理装置について説明する。第６の実施形態における画像処理装置は、第１の実施形態を同様に実装することができるが、コード配置情報リストおよびインデックスコード読取部３６４、一般コード情報読取部３６６での処理が異なる。図１８は、第６の実施形態の画像処理装置が使用するコード配置情報リスト１８００である。なお、図１８に示すコード配置情報リストは、図５のコード配置情報リスト５２０と比較し、インデックスコード自身の位置および回転角度の情報を格納するレコードが追加されている点に留意されたい。
【００７６】
図１９は、第６の実施形態におけるインデックスコード読取部３６４の処理のフローチャートである。処理は、図１０に示した処理とは、ステップＳ１９０７で画像の向き情報ではなく、デコードされたインデックスコードの位置・回転角度を一般コード情報読取部３６６に返すことを除き、図１０の処理と同様にして処理が実行される。また、図２０は、本発明の第６の実施形態におけるインデックスコード読取部３６４の処理のフローチャートを示す。図２０に示した実施形態は、図１１の処理とは、画像の向き情報ではなく、ステップＳ２００２で、デコードされたインデックスコードの位置・回転角度を受取り、以後の処理に利用する点で相違する。
【００７７】
さらに、ステップＳ２００４では、画像データの位置補正を実行する点で相違する。その他の処理ステップは、図１０の処理と共通するので詳細な説明は省略する。ステップＳ２００４の位置補正処理は、インデックスコード読取部３６４は、コード情報リスト１８００に記載されているインデックスコードの位置・回転角度と、実際にデコードされたインデックスコードの位置・回転角度とを比較し、位置および回転角度が、それぞれ一致するように画像データを回転・並進移動を行う処理を実行する。
【００７８】
第６の実施形態では、スキャン時に紙文書がある程度ずれている場合でもスキャン画像のズレを補正することができ、一般コード情報の領域を適切に切り出すことが可能になり、コード認識精度を向上させることができる。第６の実施形態では、ステップＳ２００４で画像データの位置補正処理を行った後、ステップＳ２００６で画像データの領域切り出し処理を行なうものとして説明している。しかしながら、さらに他の実施形態では、画像全体の位置補正処理を行う代わりに、ステップＳ２００６で切り出し領域について位置補正を実行するようにしてもよい。説明する他の実施形態では、画像データ全体について回転および並進移動処理を実行する必要が無くなるのでさらに、処理速度を向上させることができる。
【００７９】
以下、図２１を使用して次に、第７の実施形態の画像処理装置が実行する処理を説明する。第７の実施形態における画像処理装置は、第４の実施形態および第６の実施形態を組合わせた構成を備え、一般コード情報読取部３６４での処理内容が異なる。図２１に示したインデックスコード読取部３６４の処理についてのフローチャートを示す。図２０の処理とは、画像データの回転処理ではなく、ステップＳ２１０４で画像データのスキュー補正処理を実行する。スキュー補正は、四隅に配置された各々のインデックスコードにおけるコード情報リスト１８００に記載の位置と、実際にデコードされた位置の差を計算し、スキュー補正処理を行うことで実現される。
【００８０】
したがって、図２１の実施形態は、四隅に配置されたインデックスコードをスキュー補正のためのタイミングマークとして利用するものである。第７の実施形態は、スキャン時に印刷物がある程度ズレて読込まれた場合や、ソータなどの搬送装置による搬送時に歪みが生じた印刷物でもスキャン画像のズレや歪みを補正することができ、一般コードの領域を適切に切り出すことで、第４の実施例よりもさらにコード認識精度を向上させることができる。
【００８１】
図２２は、本実施形態の画像処理装置の実装形態２２００を示す。図２２に示すように、画像処理装置の実装形態２２００としては、パーソナルコンピュータ２２０２または多機能複写機２２０６として実装することができる。画像処理装置をパーソナルコンピュータ２２０２として実装する場合、パーソナルコンピュータ２２０２は、本実施形態の画像処理方法を実装する機能をプリンタドライバとして実装する。また、パーソナルコンピュータ２２０２は、例えばドキュメント管理アプリケーション、ドキュメント作成アプリケーションとしてインデックスコード付画像読取り部３６０を実装する。
【００８２】
パーソナルコンピュータ２２０２は、ドキュメント管理アプリケーションなどを使用して作成した電子ドキュメントに対して、以後の画像処理を制御するためのコード情報を追加する。ドキュメント管理アプリケーションは、制御情報を適切なエンコード方式を使用してコード画像とする。パーソナルコンピュータ２２０２は、コード画像からコード配置情報、インデックスコード画像を作成し、電子ドキュメントに付加し、インデックスコード付画像を印刷データとして生成する。
【００８３】
印刷データは、例えば、ローカルプリンタ、ネットワークプリンタなどとして構成された多機能複写機２２０６に転送され、印刷物２２０８として出力される。印刷物２２０８は、パーソナルコンピュータ２２０２に接続されたフラットベットタイプのスキャナ２２０４によりインデックスコード付画像としてパーソナルコンピュータ２２０２へと転送される。パーソナルコンピュータ２２０２は、インデックスコード付画像を解析し、制御情報などを含む一般コード情報を取得し、読み込んだ印刷物に対する以後の画像処理を制御している。
【００８４】
また、複写機として本実施形態の画像処理装置を実装する場合、画像処理装置の各機能モジュールは、複写機のアプリケーションまたはミドルウェアとして実装される。多機能複写機２２０６は、電子ドキュメントに対して画像処理を制御するための制御情報からコード画像を作成し、電子ドキュメントに付加して、電子写真方式、インクジェット記録方式などのプロセスを使用して印刷物２２０８を作成する。作成された印刷物２２０８は、ユーザに配布される。印刷物２２０８の配布を受けたユーザが印刷物２２０８に対して画像形成、画像編集、画像転送などを含む画像処理を行うために、多機能複写機２２０６で印刷物２２０８を読み込ませる。多機能複写機２２０６は、インデックスコード付画像を解析し、一般コード情報として制御情報を取得し、多機能複写機２２０６における以後の画像処理を制御している。
【００８５】
本実施形態の上記機能は、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、など、レガシープログラミング言語やオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、当該プログラムは、ハードディスク装置、ＣＤ−ＲＯＭ、ＭＯ、フレキシブルディスク、ＥＥＰＲＯＭ、ＥＰＲＯＭなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
【００８６】
これまで本実施形態につき説明してきたが、本発明は、上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【図面の簡単な説明】
【００８７】
【図１】本実施形態の画像処理装置の実施形態のハードウェア機能ブロックを示した図。
【図２】本実施形態の画像処理装置を、他の実施形態である複写機２００として実装した場合の複写機２００のハードウェア機能ブロックを示した図。
【図３】本実施形態の画像処理装置３００のソフトウェア機能ブロックを示した図。
【図４】図３に示したインデックスコード付画像作成部３３０が実行する処理の実施形態のフローチャート。
【図５】図４の処理で使用する描画データのデータ構造５００、付随データのデータ構造５１０、およびコード配置情報リストのデータ構造５２０の実施形態を示した図。
【図６】インデックスコード作成部３３６がインデックスコードを作成する処理の実施形態についてのフローチャート。
【図７】画像合成部３４０が実行する処理のフローチャート。
【図８】本実施形態の画像処理装置３００が作成した電子ドキュメント８００の実施形態を示した図。
【図９】図８で説明した処理を経て画像形成エンジン３２０から出力された印刷物９００の実施形態を示した図。
【図１０】本実施形態の画像処理装置がインデックスコート付画像の読取りを実行する場合、インデックスコード読取部３６０が実行する処理のフローチャート。
【図１１】読取り角度およびデコードしたコード配置情報リスト５２０を取得した一般コード情報読取部３６６が実行する処理の実施形態を示した図。
【図１２】一般コード情報読取部３６６が生成する一般コード情報リスト１２００の実施形態を示した図。
【図１３】アプリケーション３５２がスキャナ３５６を使用して画像を取得し、取得した画像データから一般コード情報リスト１２００を生成するまでの処理の説明図。
【図１４】画像処理装置の第２の実施形態についての説明図。
【図１５】第３の実施形態の画像処理装置１５００を示した図。
【図１６】画像処理装置の第５の実施形態におけるインデックスコード作成部３３６の処理のフローチャート。
【図１７】画像処理装置の第５の実施形態で、インデックスコード取得部３３２が実行する処理のフローチャート。
【図１８】第６の実施形態の画像処理装置が使用するコード配置情報リスト１８００の実施形態を示した図。
【図１９】第６の実施形態におけるインデックスコード読取部３６４の処理のフローチャート。
【図２０】本発明の第６の実施形態におけるインデックスコード読取部３６４の処理のフローチャート。
【図２１】第７の実施形態の画像処理装置が実行する処理のフローチャート。
【図２２】本実施形態の画像処理装置の実装形態２２００を示した図。
【符号の説明】
【００８８】
１００…パーソナルコンピュータ、１０２…ＣＰＵ、１０４…ＲＯＭ／ＲＡＭ、１０６…ＨＤＤ、１０８…通信部、１１０…ドライブ装置、１１２…表示装置、１１４…入力装置、１１６…記録媒体、１１８…システムバス・Ｉ／Ｏバス、２００…複写機、２１０…コントローラ、２４０…エンジン部、３００…画像処理装置、３１０…印刷物出力機能部、３５０…インデックスコード付画像取得部、３１２、３５２…アプリケーション、３１４…グラフィックエンジン、３１６…プリンタドライバ、３１８…スプーラ、３２０…画像形成エンジン、３５４…ＴＷＡＩＮドライバ、３６０…インデックスコード付画像読取部、３６２…デコーダ、３６４…インデックスコード読取部、３６６…一般コード情報読取部
【図１】
2010057058.tif 000003
【図２】
2010057058.tif 000004
【図３】
2010057058.tif 000005
【図４】
2010057058.tif 000006
【図５】
2010057058.tif 000007
【図６】
2010057058.tif 000008
【図７】
2010057058.tif 000009
【図８】
2010057058.tif 000010
【図９】
2010057058.tif 000011
【図１０】
2010057058.tif 000012
【図１１】
2010057058.tif 000013
【図１２】
2010057058.tif 000014
【図１３】
2010057058.tif 000015
【図１４】
2010057058.tif 000016
【図１５】
2010057058.tif 000017
【図１６】
2010057058.tif 000018
【図１７】
2010057058.tif 000019
【図１８】
2010057058.tif 000020
【図１９】
2010057058.tif 000021
【図２０】
2010057058.tif 000022
【図２１】
2010057058.tif 000023
【図２２】
2010057058.tif 000024