(57)【要約】      （修正有）【課題】  ページベクタデータとタイルベクタデータを利用する環境において、特に、タイルベクタデータからページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる画像処理装置を提供する。【解決手段】    画像入力部から画像データを入力して、画像出力部から出力する場合は、入力される画像データの形式に基づいて、第１変換部あるいは第３変換部を実行させて、得られる画像データを記憶部に記憶させ、記憶部に記憶された画像データの形式に基づいて、第２変換部あるいは展開部を実行させて、得られる画像データを画像出力部から出力させるように、装置内での処理対象の画像データの転送を制御する。【選択図】  図１
2006331308.tif 000002
【特許請求の範囲】
【請求項１】
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第１変換手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがラスタ画像データである場合は前記第１変換手段でブロックベクタ画像データに変換させ、前記入力手段から入力された画像データがページベクタ画像データである場合は前記第２変換手段でブロックベクタ画像データに変換させ、前記第１変換手段あるいは前記第２変換手段を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第２変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段を備える
ことを特徴とする画像処理装置。
【請求項２】
ブロックベクタ画像データをラスタ画像データに展開する展開手段を更に備え、
前記画像データ転送制御手段は、
前記出力手段から出力させるべき画像データの形式がラスタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記展開手段を実行させて得られるラスタ画像データを前記出力手段から出力させる
ように、装置内での処理対象の画像データの転送を制御する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
１ページ分のブロックベクタ画像データから、ページ全体を示すページベクタ画像データへ変換する第３変換手段と、
前記画像データ転送制御手段は、
前記出力手段から出力させるべき画像データの形式がベクタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記第３変換手段を実行させて得られるページベクタ画像データを前記出力手段から出力させる
ように、装置内での処理対象の画像データの転送を制御する
ことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記第３変換手段は、前記ブロックベクタ画像データから前記ページベクタ画像データへ変換する際に、分割後の文字列を含むブロックベクタ画像データについては、それに含まれる文字列識別情報に基づいて、分割後の文字列を分割前の文字列に復元する復元手段とを備える
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記記憶手段に記憶されたブロックベクタ画像データに含まれる文字列識別情報に基づいて、検索文字列を含むブロックベクタ画像データを検索する検索手段を更に備える
ことを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記検索手段で検索した検索文字列を含むブロックベクタ画像データに基づいて、前記出力手段から対応する画像データを出力する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記第２変換手段は、更に、前記ページベクタ画像データに含まれる文字列の分割後の文字列が属するブロックベクタ画像データを示すブロック識別情報を管理する第１テーブルを生成する第１テーブル生成手段を備える
ことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記検索手段は、前記第１テーブルを参照して、検索文字列を含むブロック画像データを検索する
ことを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記第２変換手段は、更に、前記ページベクタ画像データに含まれる文字列の各文字に対し、その各文字の後続文字を示す情報を管理する第２テーブルを生成する第２テーブル生成手段を備える
ことを特徴とする請求項７に記載の画像処理装置。
【請求項１０】
前記検索手段は、前記第１及び第２テーブルを参照して、検索文字列を含むブロック画像データを検索する
ことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがページベクタ画像データである場合は前記第２変換手段でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第２変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段を備える
ことを特徴とする画像処理装置。
【請求項１２】
ブロックベクタ画像データをラスタ画像データに展開する展開手段と、
１ページ分のブロックベクタ画像データから、ページ全体を示すページベクタ画像データへ変換する第３変換手段とを更に備え、
前記画像データ転送制御手段は、
前記出力手段から出力させるべき画像データの形式がラスタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記展開手段を実行させて得られるラスタ画像データを前記出力手段から出力させ、
前記出力手段から出力させるべき画像データの形式がベクタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記第３変換手段を実行させて得られるページベクタ画像データを前記出力手段から出力させる
ように、装置内での処理対象の画像データの転送を制御する
ことを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第１変換工程と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力部から入力された画像データがラスタ画像データである場合は前記第１変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第２変換工程でブロックベクタ画像データに変換させ、前記第１変換工程あるいは前記第２変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第２変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を備える
ことを特徴とする画像処理装置の制御方法。
【請求項１４】
入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第１変換工程のプログラムコードと、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力部から入力された画像データがラスタ画像データである場合は前記第１変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第２変換工程でブロックベクタ画像データに変換させ、前記第１変換工程あるいは前記第２変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、制御する制御工程のプログラムコードとを備え、
前記第２変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程のプログラムコードを備える
ことを特徴とするプログラム。
【請求項１５】
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力された画像データがページベクタ画像データである場合は前記第２変換工程でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第２変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を含む
ことを特徴とする画像処理装置の制御方法。
【請求項１６】
入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力された画像データがページベクタ画像データである場合は前記第２変換工程でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように制御する制御工程のプログラムコードとを備え、
前記第２変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程のプログラムコードを含む
ことを特徴とする画像処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された画像データに対して画像処理を施して管理する画像処理装置及びその制御方法、プログラムに関するものである。
【背景技術】
【０００２】
ネットワーク上に接続され、外部あるいは内部の画像データに対する画像データ処理を実行し、その処理した画像データを出力する画像データ入出力システムが知られている。
【０００３】
この画像データ入出力システムとしては、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）と呼ばれるものがある。
【０００４】
ここで、従来のＭＦＰを制御するコントローラ１００を図２８に示す。コントローラ１００は、システムバスブリッジ（ＳＢＢ）１０１により、ＣＰＵ１０２、メモリコントローラ（ＭＣ）１０３、汎用バス１０５、画像処理部１１０、画像データ展開部（ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ））１１３が接続されている。
【０００５】
汎用バス１０５には、画像データを蓄積するための：大容量記憶部（ＨＤＤ（ハードディスクドライブ））１０７を制御するハードディスクコントローラ（ＨＤＤＣｏｎｔ）１０６、ＭＦＰが接続されているネットワーク１０８を介して、外部機器間との画像データの転送を行うインターフェースになるネットワークＩ／Ｆ１０９が接続されている。この画像データとしては、ページベクタ形式（ＰＤＬ（ページ記述言語）、ＰＤＦ、ＳＶＧ等）の画像データがある。
【０００６】
ＨＤＤＣｏｎｔ１０６には、ＨＤＤ（ハードディスクドライブ）１０７が接続されており、画像データの記憶媒体として使われる。同様に、ＭＣ１０３には、システムメモリ（Ｍｅｍｏｒｙ）１０４が接続されており、画像データを一時記憶するための媒体として使われる。システムメモリ１０４には、一般的には、ＤＩＭＭが用いられる。
【０００７】
画像処理部１１０には、スキャナ１１１及びプリンタ１１２が接続されている。スキャナ１１１から入力された画像データは、画像処理部１１０によって所定の画像処理が実施された後、コントローラ１００へ入力される。また、コントローラ１００内に記憶されている画像データは、画像処理部１１０によって所定の画像処理が実施され、プリンタ１１２へ出力される。
【０００８】
コントローラ１００でハンドリングされる画像データは、ネットワーク経由での外部機器との入出力はページベクタ形式（ＰＤＬやＰＤＦ、ＳＶＧ等）、スキャナ１１１やプリンタ１１２との入出力はラスタデータ形式でインターフェースされる。外部機器から入力されたページベクタ形式の画像データは、ＣＰＵ１０２により、プリミティブなオブジェクトにインタプリットされ、ＤＬ（ＤｉｓｐｌａｙＬｉｓｔ）と呼ばれる中間データ（ＤＬデータ）に変換されてから、ＲＩＰ１１３に入力される。
【０００９】
これらの画像データはコントローラ１００の内部のシステムメモリ１０４に一旦記憶される。そのため、システムメモリ１０４上には、ラスタデータ、ページベクタデータ（ＰＤＬ等）、ＤＬデータ等の多種類のデータが存在する。
【００１０】
ＨＤＤ１０７には、画像データとしてスキャナ１１３から入力された画像データとＲＩＰ１１３でレンダリングされたラスタ画像データが記憶される。
【特許文献１】特開２００４−１２０６３９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述のようなＭＦＰが扱う画像データの中でも、ラスタ画像データはデータサイズが大きい。そのため、システムメモリ１０４のメモリサイズや、汎用バス１０５及びＨＤＤＣｏｎｔ１０６−ＨＤＤ１０７間のバンド幅等のシステム・リソースを多く消費する。
【００１２】
これに加え、ＰＤＬデータ等のページベクタデータでは、システム中でインタプリットを行い、描画オブジェクトを生成するＤＬデータに展開する。その際、ＤＬデータをシステムメモリ１０４にスプールするため、それによるメモリリソースの消費量も莫大なものとなっている。
【００１３】
一方、最近はユーザの出力画像の画質要求がますます高くなり、その解決策の１つとして、画像データに対する高解像度化（高画質化）が促進されている。また、画質と並行してシステムの処理速度向上も要求されている。
【００１４】
そのため、上述の様々な要求仕様を満足するために必要なシステム・リソースが肥大化してしまう。従って、プロダクトのコストパフォーマンスでの折り合いをつけることが課題となっている。
【００１５】
また、このプロダクトのコストパフォーマンスに対する課題とは別に、複雑、多様化するシステムを開発するための人的リソースの問題も解決することが要求されている。そして、これを満足するためには、様々な要求仕様に対し、１つの基本システムをスケーラブルな形で構成することにより、製品ラインナップを効率良く整備することが課題となっている。
【００１６】
例えば、図２８における画像処理部１１０やＲＩＰ１１３等のモジュールを、ハイエンドな機種では複数個実装し、分散処理できるようなシステムが必要となってくる。
【００１７】
他方、オフィスにおいてはペーパーレス化が進行しており、紙の出力物と電子データをシームレスに扱えるような要求も生まれてきている。そのためには、紙と電子データとのＩ／Ｆ機器であるＭＦＰにおいても、例えば、蓄積画像データの検索性の向上や、ラスタ画像データをオブジェクト化して再利用可能なオブジェクトデータに変換する、ＰＯＤ（Ｐｒｉｎｔ  Ｏｎ  Ｄｅｍａｎｄ）印刷に対応するために画像加工を高速化する、といったよりインテリジェントな機能を持つことが必要となっている。
【００１８】
ところで、上述のようなＭＦＰにおける課題を解決する構成として、以下のようなものが提案されている。
【００１９】
・ＭＦＰ内のデータ処理を高速化するために、システム内をベクトルデータでハンドリングする。
【００２０】
・ＭＦＰ内のページベクタデータをタイル化（変換）してタイルベクタデータを生成することにより、データ処理時間を高速化するとともに、並列処理に適応させる。
【００２１】
・外部機器に出力する時は、タイルベクタデータをページベクタデータに戻してから出力することにより再利用性を高める。
【００２２】
ここで、このようなＭＦＰにおいては、ページベクタデータをタイルベクタデータに変換する際に、ページベクタデータ内に含まれている文字列を分割し、文字の一部もしくは全部がタイル内に含まれる文字のみを、変換後の各タイルベクタデータに持たせる構成となっている。
【００２３】
しかしながら、この構成では、ページベクタデータ時に文字列として存在していた情報が、タイルベクタデータへの変換後には、その文字列が複数の文字列に分割されてしまうことになる。そのため、タイルベクタデータをページベクタデータに再結合した際に、タイルデータの境界をまたぐ文字列の連続性が失われてしまうため、検索性が落ちるという課題がある。
【００２４】
より具体的に説明すると、例えば、ページベクタデータ中に存在する「あいうえお」という文字列が、タイルベクタデータへの変換処理によって、「あい」と「うえお」という２つの文字列をそれぞれ有する、２つのタイルベクタデータに分割されたものとする。
【００２５】
この場合、元のページベクタデータにおいて存在した「あい」と「うえお」の連続性が失われてしまうため、ページベクタデータに再結合した際に、「いう」という文字列の検索ができない。
【００２６】
この課題は、特に、ページベクタデータを、ＭＦＰから他のホストコンピュータへファイルとして送信した場合や、ＨＤＤ内に保存したタイルベクタデータから所定の文字列を検索する場合に、大きな問題となる。
【００２７】
本発明は上記の課題を解決するためになされたものであり、ページベクタデータとタイルベクタデータを利用する環境において、特に、タイルベクタデータからページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる画像処理装置及びその制御方法、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２８】
上記課題を解決するための本発明による画像処理装置は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第１変換手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがラスタ画像データである場合は前記第１変換手段でブロックベクタ画像データに変換させ、前記入力手段から入力された画像データがページベクタ画像データである場合は前記第２変換手段でブロックベクタ画像データに変換させ、前記第１変換手段あるいは前記第２変換手段を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第２変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段と
を備える。
【００２９】
上記課題を解決するための本発明による画像処理装置は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがページベクタ画像データである場合は前記第２変換手段でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第２変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する。
【００３０】
上記課題を解決するための本発明による画像処理装置の制御方法は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第１変換工程と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力部から入力された画像データがラスタ画像データである場合は前記第１変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第２変換工程でブロックベクタ画像データに変換させ、前記第１変換工程あるいは前記第２変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第２変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を備える。
【００３１】
上記課題を解決するための本発明によるプログラムは以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第１変換工程のプログラムコードと、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第２変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力部から入力された画像データがラスタ画像データである場合は前記第１変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第２変換工程でブロックベクタ画像データに変換させ、前記第１変換工程あるいは前記第２変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、制御する制御工程のプログラムコードとを備え、
前記第２変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成するための生成工程のプログラムコードを備える。
【発明の効果】
【００３２】
本発明によれば、ページベクタデータとタイルベクタデータを利用する環境において、特に、タイルベクタデータからページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる画像処理装置及びその制御方法、プログラムを提供できる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００３４】
［実施形態１］
［ＭＦＰ装置概要］
図１は本発明の実施形態１の画像処理システムを構成するＭＦＰのコントローラの詳細を示すブロック図である。
【００３５】
ＭＦＰ１０００を制御するコントローラ１は、システムバスブリッジ（ＳＢＢ）２により、ＣＰＵ３、メモリコントローラ（ＭＣ）４、汎用バス６、タイル／ページベクタ変換部１３、ラスタ／ベクタ変換部１４、画像処理部１５、画像データ展開部（ＲＩＰ）１８が接続されている。
【００３６】
ここで、このＲＩＰ１８は、タイルベクタデータを展開することが可能であり、内部には、複数の小画像データ展開部（μＲＩＰ）１８ａ〜１８ｄが構成されている。
【００３７】
ＭＣ４には、システムメモリ（Ｍｅｍｏｒｙ）５が接続されており、画像データを一時記憶するための媒体として使われる。
【００３８】
汎用バス６には、画像データを蓄積するためのＨＤＤ８を制御するハードディスクコントローラ（ＨＤＤＣｏｎｔ）７及び操作部（例えば、ＬＣＤ等から構成されるタッチパネル）１０を制御する操作部コントローラ９及び、ＭＦＰ１０００が接続されているネットワーク１２を介して、外部機器間との画像データの転送を行うインターフェースになるネットワークＩ／Ｆ１１が接続されている。
【００３９】
尚、操作部１０では、実施形態１及び後述する各実施形態の各種処理の実行指示の入力や、処理結果等を表示するための操作画面が表示され、ユーザは、この操作画面を介して各種操作を実現することができる。
【００４０】
ラスタ／タイルベクタ変換部１４には、画像処理部１５が接続されている。また、画像処理部１５には、スキャナ１６及びプリンタ１７が接続されている。
【００４１】
また、ＳＢＢ２には、ＲＩＰ１８が接続されている。また、ＲＩＰ１８には、ＲＩＰ１８から出力されるデータを記憶するローカルメモリ（ＬｏｃａｌＭｅｍｏｒｙ）１９が接続されている。
【００４２】
コントローラ１でハンドリングされる画像データは、外部機器との入出力はベクタ（ＰＤＬ、ＰＤＦ、ＳＶＧなど）形式の画像データ（以下、ベクタデータとも言う）、スキャナ１６やプリンタ１７との入出力はラスタ形式の画像データ（以下、ラスタデータとも言う）でインターフェースされる。
【００４３】
コントローラ１では、スキャンデータ（ラスタデータ）はラスタ／タイルベクタ変換部１４でタイルベクタデータに変換される。また、このタイルベクタデータからＲＩＰ１８の処理によって得られるタイルＤＬデータは、ＲＩＰ１８に接続されたローカルメモリ１９に記憶される。
【００４４】
従って、システムメモリ５上には、ページベクタデータとタイルベクタデータの２種類の画像のみが記憶される。つまり、画像サイズの大きいラスタデータ及びＤＬデータをシステムメモリ５に記憶する必要がなくなる。そのため、システムメモリ５上で確保しなければならない画像データ領域を削減することができる。
【００４５】
また、ＲＩＰ１８から出力されるＤＬデータはタイル単位に分割された、タイルＤＬデータで記憶される。そのため、従来のページ単位のページＤＬデータに比べ、非常に少ないメモリ容量で記憶できる。従って、ローカルメモリ１９はオンチップ上に実装することが可能になり、メモリレイテンシを小さくできる。その結果、タイルデータ展開速度を高速化することが可能となる。
【００４６】
また、タイルベクタデータのみを画像データとして、ＨＤＤ８上に記憶すれば良いので、ＨＤＤ８へのアクセス速度のボトルネックが緩和され、データ処理の高速化が図れる。同時に、タイル単位で処理することにより、ＲＩＰ１８のコストダウンも可能となる。
【００４７】
より高い処理能力が要求される場合は、ＲＩＰ１８内に備えるμＲＩＰ１８ａ〜１８ｄを並列に複数実装することで、処理能力を可変にすることができる。このようにすることで、コントローラ１の処理能力がシンプルに調整できることから、スケーラビリティの確保が容易なシステムを構築できる。
【００４８】
尚、本発明では、ネットワークＩ／Ｆ１１及びスキャナ１６がコントローラ１内へ画像データを入力する画像入力部として機能する。また、ネットワークＩ／Ｆ１１及びプリンタ１７が画像データを出力する画像出力部として機能する。
【００４９】
以下に、ＭＦＰ１０００が実現可能な各種処理のデータフローについて説明する。
【００５０】
［コピー］
図２は本発明の実施形態１の画像処理システムでのコピー動作に係るデータフローを示す図である。
【００５１】
尚、このデータフローは、ＣＰＵ３の制御の下、ＭＦＰ１０００を構成する各種構成要素を協調動作させることで実現される。
【００５２】
また、図２中に示す矢印は、各種データフローを示している。特に、実線矢印はラスタデータ（ラスタ画像データ）、破線矢印はタイルベクタデータ（タイルベクタ画像データ）、１点鎖線矢印はページベクタデータ（ページベクタ画像データ）のデータフローを示している。ページベクタデータ及びタイルベクタデータについては、後述のタイル／ページベクタ変換部１３で詳細に説明する。
【００５３】
（Ｓ２１）：操作部１０より、ユーザがコピー開始を指示すると、スキャナ１６は原稿画像の読取動作を開始する。スキャナ１４より画像処理部１５へ入力された画像（Ｒ、Ｇ、Ｂ画像）は画像処理部１５のクロック同期に周波数変換された後、例えば、以下の処理が実行される。
【００５４】
１）スキャナ１６内のＣＣＤセンサのラインピッチや色収差等のスキャナ特性の補正処理
２）色空間補正やシャープネス等の入力画像データの画質補正処理
３）入力画像データの枠消やブック枠消等の画像加工処理
（Ｓ２２）：画像処理部１５による画像処理が終了し、画像処理部１５から出力された画像データはラスタ／タイルベクタ変換部１４に入力され、タイルベクタ変換処理が実行される。即ち、ラスタ／タイルベクタ変換部１４は、画像データを所定の大きさのブロック（タイル）に分割する。そして、各ブロック内のラスタデータに対して、ベクトル化処理を実行して、ブロック（タイル）単位のベクタデータ（タイルベクタデータ（ブロックベクタデータ））を生成する。
【００５５】
生成されたタイルベクタデータは、ＳＢＢ２によりバスの調停を受け、システムメモリ５へのバス権を取得し、ＭＣ４を介して、システムメモリ５に記憶される。（尚、ＳＢＢ２経由でデータパスが接続される場合は、基本的にバスの調停を受け、バス権を取得する手続きを踏むが、以降のフロー説明では省略する。）
（Ｓ２３）：システムメモリ５に記憶されたタイルベクタデータは、ＨＤＤＣｏｎｔ７とＭＣ４を介して、ＳＢＢ２経由でＨＤＤ８に記憶される。ＨＤＤ８にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、ＭＦＰ１０００内に保存画像データとして記憶したりすることができる。
【００５６】
（Ｓ２４）：ＨＤＤ８に記憶されたタイルベクタデータは、プリンタ１７内のプリンタＣＰＵ（不図示）から送られてくるプリンタレディのタイミングに合わせて、ＨＤＤＣｏｎｔ７により読み出され、ＳＢＢ２、ＭＣ４を経由してシステムメモリ５に一時的に記憶される。
【００５７】
仮に、読み取ったタイルベクタデータをＨＤＤ８からダイレクトにプリンタ１７へ出力する場合、ＨＤＤ８のアクセススピードが律則したり、汎用バス６のバスの混雑度合によりプリンタ１７に同期して出力することが保証できなくなる。そのため、プリンタ１７に同期してデータ転送を行う前に、システムメモリ５にページベクタデータをスプールしておくことで、リアルタイムなスループットを保証する。
【００５８】
（Ｓ２５）：システムメモリ５に記憶されたタイルベクタデータは、プリンタ１７からコントローラ１に送られる起動信号に従って、ＭＣ４によって読み出され、ＳＢＢ２を介してＲＩＰ１８に転送される。
【００５９】
ＲＩＰ１８では、まず、タイルベクタデータを解析し、タイル単位の描画オブジェクト（タイルＤＬデータ）の生成（インタプリット）を実行する。生成されたタイルＤＬデータはローカルメモリ１９に一旦記憶される。
【００６０】
ＲＩＰ１８はローカルメモリ１９からタイルＤＬデータを読み出して、タイル単位のラスタデータ（タイルラスタデータ）へと展開し、出力する。
【００６１】
実施形態１では、上述のように、ＲＩＰ１８内に４つの小画像データ展開部（μＲＩＰ）１８ａ〜１８ｄを備えている。コントローラ１は、μＲＩＰ１８ａ〜μＲＩＰ１８ｄを並列に動作させることにより、タイルベクタデータの展開を高速に行わせることができる。
【００６２】
ここで、画像処理システムの全体パフォーマンスは、ベクタデータ展開時間が支配的であり、このμＲＩＰの構成数を増やすことで、パフォーマンスアップが見込める。そのため、本発明のような構成を用いると、その構成数あるいは動作させる構成数を増減させることで、容易にスケーラブルなシステムを構築することが可能となる。
【００６３】
（Ｓ２６）：ＲＩＰ１８によって生成されたタイルラスタデータは、画像処理部１５に転送され、例えば、以下の処理が実行される。
【００６４】
１）タイルラスタデータからページラスタデータへの変換処理
２）プリンタの特性に合わせた出力画像の色や濃度の補正処理
３）画像データを量子化して出力画像の階調変換を行う中間調処理
４）プリンタＩ／Ｆクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部１５で、１）〜４）の画像処理が実行されて得られたラスタデータは、プリンタ１７に転送され、記録媒体上に印刷され出力される。
【００６５】
［プリント］
図３は本発明の実施形態１の画像処理システムでのプリント動作に係るデータフローを示す図である。
【００６６】
尚、このデータフローは、ＣＰＵ３の制御の下、ＭＦＰ１０００を構成する各種構成要素を協調動作させることで実現される。
【００６７】
（Ｓ３１）：ネットワーク１２に接続された外部機器より、汎用バス６に接続されたネットワークＩ／Ｆ１１がページベクタデータを受信する。そして、ＳＢＢ２の先に接続されたＭＣ４を介してシステムメモリ５に転送する。
【００６８】
（Ｓ３２）：システムメモリ５に記憶されたページベクタデータは、タイル／ページベクタ変換部１３より読み出され、タイルベクタ変換処理が実行される。即ち、タイル／ページベクタ変換部は、ページベクタデータ内に存在するオブジェクトを所定の大きさのブロック（タイル）内に収まるオブジェクトに分割する。そして、タイル単位のベクタデータ（タイルベクタデータ）を生成する。
【００６９】
（Ｓ３３）：生成されたタイルベクタデータは、ＳＢＢ２を介して再度システムメモリ５に記憶される。
【００７０】
（Ｓ３４）：システムメモリ５に記憶されたタイルベクタデータは、ＨＤＤＣｏｎｔ７とＭＣ４を介して、ＳＢＢ２経由でＨＤＤ８に記憶される。ＨＤＤ８にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、ＭＦＰ１０００内に保存画像データとして記憶したりすることができる。
【００７１】
（Ｓ３５）：ＨＤＤ８に記憶されたタイルベクタデータは、プリンタ１７内のＣＰＵ（不図示）から送られてくるプリンタレディのタイミングに合わせて、ＨＤＤＣｏｎｔ７により読み出され、ＳＢＢ２、ＭＣ４を経由してシステムメモリ５に一時的に記憶される。
【００７２】
読み取ったタイルベクタデータをＨＤＤ８からダイレクトにプリンタ１７へ出力する場合、ＨＤＤ８のアクセススピードが律則したり、汎用バス６のバスの混雑度合によりプリンタ１７に同期して出力することが保証できなくなる。そのため、プリンタ１７に同期してデータ転送を行う前に、システムメモリ５に１ページ分のベクタ画像データをスプールすることにより、リアルタイムなスループットを保証する。
【００７３】
（Ｓ３６）：システムメモリ５に記憶されたタイルベクタデータは、プリンタ１７からコントローラ１に送られる起動信号に従って、ＭＣ４によって読み出され、ＳＢＢ２を介してＲＩＰ１８に転送される。
【００７４】
ＲＩＰ１８では、まず、タイルベクタデータを解析し、タイル単位の描画オブジェクト（タイルＤＬデータ）の生成（インタプリット）を実行する。生成されたタイルＤＬデータはローカルメモリ１９に一旦記憶される。
【００７５】
ＲＩＰ１８はローカルメモリ１９からタイルＤＬデータを読み出して、タイル単位のラスタデータ（タイルラスタデータ）へと展開し、出力する。
【００７６】
（Ｓ３７）：ＲＩＰ１８によって生成されたタイルラスタデータは、画像処理部１５に転送され、例えば、以下の処理が実行される。
【００７７】
１）タイルラスタデータからページラスタデータへの変換処理
２）プリンタの特性に合わせた出力画像の色や濃度の補正処理
３）画像データを量子化して出力画像の階調変換を実行する中間調処理
４）プリンタＩ／Ｆクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部１５で、１）〜４）の画像処理が実行されて得られたラスタデータは、プリンタ１７に転送され、記録媒体上に印刷され出力される。
【００７８】
[送信]
図４は本発明の実施形態１の画像処理システムでの送信動作に係るデータフローを示す図である。
【００７９】
尚、このデータフローは、ＣＰＵ３の制御の下、ＭＦＰ１０００を構成する各種構成要素を協調動作させることで実現される。
【００８０】
また、画像データをＨＤＤ８に格納するまでのデータフローについては、ラスタデータの場合は［コピー］と、ネットワーク１２上の外部機器からの入力されたページベクタデータの場合は［プリント］と同一であるので、その説明は割愛する。
【００８１】
尚、画像データをＨＤＤ８に格納する処理は、ユーザからの格納指示によって実行されるようにしてもよいし、［コピー］や［プリント］の処理の際にＨＤＤ８に自動的に残しておくようにしてもよい。このようにして、ＨＤＤ８に格納された画像データの中から、ユーザによって指定された画像データを送信するように指示された際に行われる送信処理について説明する。
【００８２】
（Ｓ４１）：ＨＤＤ８に記憶されたタイルベクタデータはＳＢＢ２を介して、汎用バス６に接続されたＨＤＤＣｏｎｔ７より読み出され、システムメモリ５に一時的に記憶される。
【００８３】
（Ｓ４２）：システムメモリ５に記憶されたタイルベクタデータは、タイル／ページベクタ変換部１３より読み出され、タイルベクタ変換処理を実行する。即ち、ブロック単位に分割されたオブジェクトを結合し、ページ全体でオブジェクトを記述したページベクタデータを生成する。
【００８４】
（Ｓ４３）：生成されたページベクタデータは、ＳＢＢ２を介して再度システムメモリ５に記憶される。
【００８５】
（Ｓ４４）：システムメモリ５中に記憶されたページベクタデータは、汎用バス６に接続されたネットワークＩ／Ｆ１１から読み出され、ネットワーク１２に接続された外部機器へと送信転送される。
【００８６】
本発明のように、外部機器に送信する際に、タイルベクタデータをページベクタデータに戻して、そのデータを構成するオブジェクト数を減らすことで、送信データ量を削減することができる。また、ＰＤＦやＳＶＧ等の汎用フォーマットへ容易に変換することができる。
【００８７】
尚、本発明では、スキャナ１６から入力したラスタデータを、外部機器に送信することも可能である。この場合は、そのラスタデータをページベクタに変換してから、外部機器へ送信することが好ましい。
【００８８】
［ラスタ／タイルベクタ変換部］
次に、ラスタ／タイルベクタ変換部１４の処理の詳細について説明する。
【００８９】
図５は本発明の実施形態１のラスタ／タイルベクタ変換部が実行する処理を示すフローチャートである。
【００９０】
（ステップＳ５１：ブロックセレクション（領域分割：ＢＳ）処理）
画像処理部１５より入力されたラスタデータ（イメージデータ）を、文字あるいは線画を含む文字・線画領域と、ハーフトーンの写真領域、不定形の画像領域その他に分割する。さらに、文字・線画領域については、主に文字を含む文字領域と、主に表、図形等を含む線画領域とに分離し、線画領域は表領域と図形領域に分割する。
【００９１】
尚、実施形態１では、処理対象中の画像の連結画素を検知し、その連結画素の外接矩形領域の形状・サイズ・画素密度等の特徴量を用いて、属性毎の領域に分離するものとするが、その他の領域分割手法を用いても構わない。
【００９２】
文字領域については、文字段落ごとの纏まった塊をブロックとして矩形ブロック（文字領域矩形ブロック）にセグメント化する。線画領域では、表、図形等の個々のオブジェクト（表領域矩形ブロック、線画領域矩形ブロック）ごとに矩形ブロックにセグメント化する。
【００９３】
ハーフトーンで表現される写真領域は、画像領域矩形ブロック、背景領域矩形ブロック等のオブジェクトごとに、矩形ブロックにセグメント化する。
【００９４】
分離された各領域は、さらに所定の大きさの領域（タイル）単位に分割され、タイル単位で、次のベクトル化処理でベクトル化される。
【００９５】
（ステップＳ５２：ベクトル化処理）
ベクトル化処理により、各属性の領域のイメージデータをベクトルデータに変換する（ベクトル化する）。ベクトル化の方法は、例えば、以下、（ａ）〜（ｆ）等が存在する。
【００９６】
（ａ）属性領域が文字領域のとき、さらにＯＣＲによる文字画像のコード変換を行ったり、あるいは文字のサイズ、スタイル、字体を認識し、原稿を走査して得られた文字に可視的に忠実なフォントデータに変換する。
【００９７】
（ｂ）属性領域が文字領域であり、かつＯＣＲによる認識が不可能であったとき、文字の輪郭を追跡し、輪郭情報（アウトライン）を線分のつながりとして表現する形式に変換する。
【００９８】
（ｃ）属性領域が図形領域のとき、図形オブジェクトの輪郭を追跡し、輪郭情報を線分のつながりとして表現する形式に変換する。
【００９９】
（ｄ）（ｂ）及び（ｃ）の線分形式のアウトライン情報をベジエ関数等でフィッティングして、関数情報に変換する。
【０１００】
（ｅ）（ｃ）の図形オブジェクトの輪郭情報から、図形の形状を認識し、円、矩形、多角形、等の図形定義情報に変換する。
【０１０１】
（ｆ）属性領域が図形領域であって、特定領域の表形式のオブジェクトの場合、罫線や枠線を認識し、所定のフォーマットの帳票フォーマット情報に変換する。
【０１０２】
（ステップＳ５３：タイルベクタデータ生成処理）
ステップＳ５２で、（ａ）〜（ｆ）のフォーマットコード情報、図形情報、関数情報等のコマンド定義形式情報にベクトル変換されたデータに対し、コントローラ１内でページベクタデータかタイルベクタデータかを判別するベクタタイプや、当該タイルのページ内の座標位置等の座標情報を判別するためのヘッダ情報を付加した、タイルベクタデータを生成する。このようにして、タイル単位に各種情報が付加されたタイルベクタデータをＳＢＢ２へ出力する。
【０１０３】
（ステップＳ５４：終了判定処理）
処理対象のラスタデータの有無を判定する。処理対象のラスタデータがある場合（ステップＳ５４でＮＯ）、ステップＳ５１に戻る。一方、処理対象のラスタデータがない場合（ステップＳ５４でＹＥＳ）、処理を終了する。
【０１０４】
［タイル／ページベクタ変換部］
次に、タイル／ページベクタ変換部１３の処理の詳細を説明するにあたり、処理対象となるドキュメントデータ（画像データ）について説明する。
【０１０５】
図６は本発明の実施形態１のネットワークから転送されてくるドキュメントデータの一例を示している。
【０１０６】
図６では、ドキュメントデータ８０１の短手方向を「Ｘ」方向、長手方向を「Ｙ」方向とするデバイス座標系を定義する。ドキュメントデータ８０１としては、ページベクタデータ、タイルベクタデータ、あるいはラスタデータ表現を含むページベクタデータ（タイルベクタデータ）、あるいはラスタデータのいずれかで構成される可能性がある。
【０１０７】
ここで、ドキュメントデータ８０１が、ページベクタデータである場合、その内容を構成する記述例について、図７を用いて説明する。
【０１０８】
図７は本発明の実施形態１のページベクタデータの記述例を示す図である。
【０１０９】
図７において、９０１はドキュメントデータ全体の設定に関わるドキュメント設定命令部分、９０２及び９０３は文字の描画命令部分、９０４は図形の描画命令部分を示している。９０５は図６の色付きの１／４円における図形の描画命令部分、９０６は図６の３／４円における図形の描画命令部分を示している。
【０１１０】
各描画命令部分の詳細について説明する。
【０１１１】
ドキュメント設定命令部分９０１において、Ｃ１〜Ｃ５は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドＣ１〜Ｃ５は、ドキュメント１部について１ヶ所しか付いていない。
【０１１２】
これらドキュメントデータ全体に関係するコマンドには、例えば、キャラクタセットコマンド（フォント指定コマンド）、スケーラブルフォントコマンド（スケーラブルフォントを使用するか否かを指定するコマンド）、ハードリセットコマンド（以前のプリンタ使用環境をリセットするコマンド）等がある。
【０１１３】
ここで、Ｃ１はドキュメント設定開始コマンドである。Ｃ２はドキュメントデータの出力用紙サイズを示すコマンドであり、この場合には、Ａ４に設定されている。Ｃ３はドキュメントデータの方向を示すコマンドである。ここでは、ポートレートとランドスケープがあるが、この場合にはポートレート（ＰＯＲＴ）に設定されている。
【０１１４】
Ｃ４はドキュメントデータのタイプを示すコマンドであり、ページベクタで構成されるドキュメントデータであるかタイルベクタで構成されるドキュメントデータであるかを示している。この場合には、ページ（ＰＡＧＥ）に設定されている。Ｃ５はドキュメント設定終了コマンドである。
【０１１５】
文字の描画命令部分９０２及び９０３、及び図形の描画命令部分９０４を構成するＣ６〜Ｃ２７は、ドキュメントデータを出力するための各種コマンドである。
【０１１６】
Ｃ６はページの開始を示すコマンドである。Ｃ７は文字のフォントの種類を選択するためのコマンドであり、この場合には「１」という番号の付けられたフォントセットに設定されている。Ｃ８はフォントの大きさを設定するコマンドであり、この場合には「１０ポイント」の大きさに設定されている。
【０１１７】
Ｃ９は文字の色を設定するコマンドであり、順にＲ（赤），Ｇ（緑），Ｂ（青）各色成分の輝度を示してある。この輝度は、例えば、０から２５５の２５６段階で量子化されているものとする。この場合は、｛０，０，０｝に設定されている。Ｃ１０は文字を描画する開始位置の座標を示すコマンドである。座標位置（Ｘ，Ｙ）は、ページの左上を原点に指定する。この場合は、ページの｛１０，２｝の位置から文字の描画を開始するように設定されている。Ｃ１１は実際に描画する文字列（あいうえおかきくけこさしすせそたちつてと）を示すコマンドである。
【０１１８】
また、Ｃ１２〜Ｃ１６は、Ｃ７〜Ｃ１１までのコマンドと同様に、フォントセット、フォントの大きさ、文字の色等を示すコマンドである。
【０１１９】
Ｃ１７は図形描画の際の面の塗りつぶしの色を示すコマンドである。色の指定は、文字の色と同様である。Ｃ１８は図形描画の線の色を指定するコマンドである。Ｃ１９は図形を描画する位置の座標を示すコマンドである。
【０１２０】
Ｃ２０は円弧を描画する際の半径を指定するコマンドであり、この場合、「１０」座標単位を示している。Ｃ２１は閉円弧の描画をするコマンドである。コマンド内の２個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を０度として、この場合には０度から９０度の円弧を描画することを示している。
【０１２１】
Ｃ２２〜Ｃ２６は、Ｃ１７〜Ｃ２１までのコマンドと同様に、図形描画の際の面、線の色の指定、位置の指定等のコマンドである。Ｃ２７はページの終了を示すコマンドである。
【０１２２】
一方、ドキュメントデータ８０１がタイルベクタデータである場合について、図８を用いて説明する。
【０１２３】
図８は本発明の実施形態１のタイルベクタデータの例を示す図である。
【０１２４】
図８では、図６のドキュメントデータ８０１（ページベクタデータ）を、ブロック（タイル）単位で分割したタイルベクタデータ（ドキュメントデータ１００１）の一例を示している。
【０１２５】
図８では、ドキュメントデータ１００１の短手方向を「Ｘ」方向、長手方向を「Ｙ」と定義する。また、図中のＸ方向に配列された数列は、Ｘ方向のタイルＩＤ、Ｙ方向に配列された数列は、Ｙ方向のタイルＩＤを表す。Ａ〜Ｅは、それぞれタイルＩＤ＝（０，０）、（１，０）、（２，０）、（２、４）、（１，５）の位置にあるタイルベクタを示している。
【０１２６】
ここで、このドキュメントデータ１００１が、タイルベクタデータである場合、その内容を構成する記述例について、図９を用いて説明する。
【０１２７】
図９は本発明の実施形態１のタイルベクタデータの記述例を示す図である。
【０１２８】
図９において、１１０１はドキュメントデータ全体の設定に関わるドキュメント設定命令部分、１１０２は描画命令部分全体、１１０３〜１１０７はタイルＡ，Ｂ，Ｃ，Ｄ，Ｅの描画命令部分を示している。１１０８、１１０９はそれぞれタイルＥの文字の描画命令部分、図形の描画命令部分を示している。
【０１２９】
各描画命令の詳細について説明する。
【０１３０】
ドキュメント設定命令部分１１０１において、Ｃ１〜Ｃ５は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドＣ１〜Ｃ５は、ドキュメント１部について１ケ所しか付いていない。
【０１３１】
これらドキュメントデータ全体に関係するコマンドには、例えば、キャラクタセットコマンド（フォント指定コマンド）、スケーラブルフォントコマンド（スケーラブルフォントを使用するか否かを指定するコマンド）、ハードリセットコマンド（以前のプリンタ使用環境をリセットするコマンド）等がある。
【０１３２】
ここで、Ｃ１はドキュメント設定開始コマンドである。Ｃ２はドキュメントデータの出力用紙サイズを示すコマンドであり、この場合には、Ａ４に設定されている。Ｃ３はドキュメントデータの方向を示すコマンドである。ここでは、ポートレートとランドスケープがあるが、この場合にはポートレート（ＰＯＲＴ）に設定されている。
【０１３３】
Ｃ４はドキュメントデータのタイプを示すコマンドであり、ページベクタで構成されるドキュメントデータあるのかタイルベクタで構成されるドキュメントデータあるかを示している。この場合には、タイル（ＴＩＬＥ）に設定されている。Ｃ５はドキュメント設定終了コマンドである。
【０１３４】
描画命令部分１１０２を構成するＣ６〜Ｃ４００は、ドキュメントデータ１００１を出力するための各種コマンドである。
【０１３５】
Ｃ６はページの開始を示すコマンドである。Ｃ７は図８のタイルＡの描画コマンドの開始を示すコマンドである。ここで、ＴｉｌｅＳｔａｒｔ（０，０）中の２個のパラメータは、ドキュメントデータ内におけるタイルＩＤを、Ｘ方向、Ｙ方向の順に示している。Ｃ８はタイルＡの描画コマンドの終了を示すコマンドである。タイルＡのように、そのタイル内にオブジェクトが何も存在しない場合は、タイルの開始と終了を示すコマンドだけが記述される。
【０１３６】
Ｃ９は図８のタイルＢの描画コマンドの開始を示すコマンドである。Ｃ１０は文字のフォントの種類を選択するためのコマンドであり、この場合には「１」という番号の付けられたフォントセットが設定されている。Ｃ１１はフォントの大きさを設定するコマンドであり、この場合には「１０ポイント」の大きさが設定されている。
【０１３７】
Ｃ１２は文字の色を設定するコマンドであり、順にＲ（赤），Ｇ（緑），Ｂ（青）各色成分の輝度を示してある。この輝度は、例えば、０から２５５の２５６段階で量子化されているものとする。この場合は、｛０，０，０｝に設定されている。Ｃ１３は文字を描画する開始位置の座標を示すコマンドである。座標位置（Ｘ，Ｙ）は、タイルの左上を原点に指定する。この場合は、タイルの｛０，２｝の位置から文字の描画を開始するように設定されている。Ｃ１４は実際に描画する文字列（あいう）を示すコマンドである。
【０１３８】
Ｃ１５は、Ｃ１０〜Ｃ１４で示される文字列が、タイル化前のページベクタデータのいずれの文字列に含まれる文字列であるかを識別する文字列ＩＤである。これの詳細については、後述する。Ｃ１６はタイルＢの描画コマンドの終了を示すコマンドである。
【０１３９】
また、Ｃ１７〜Ｃ２４は、Ｃ９〜Ｃ１６までのコマンドと同様に、フォントセット、フォントの大きさ、文字の色等を示すコマンドである。特に、Ｃ１７は図８のタイルＣの描画コマンドの開始を示すコマンドである。
【０１４０】
Ｃ１００は図８のタイルＤの描画コマンドの開始を示すコマンドである。Ｃ１０１は図形描画の際の面の塗りつぶしの色を示すコマンドである。色の指定は、文字の色と同様である。Ｃ１０２は図形描画の線の色を指定するコマンドである。Ｃ１０３は図形を描画する位置の座標を示すコマンドである。
【０１４１】
Ｃ１０４は円弧を描画する際の半径を指定するコマンドであり、この場合、「１０」座標単位を表している。Ｃ１０５は閉円弧の描画をするコマンドである。コマンド内の２個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を０度として、この場合には０度から９０度の円弧を描画することを示している。Ｃ１０６はタイルＤの描画コマンドの終了を示すコマンドである。
【０１４２】
Ｃ２００は図８のタイルＥの描画コマンドの開始を示すコマンドである。Ｃ２０１〜Ｃ２１１は、Ｃ９〜Ｃ１６までのコマンドと同様に文字描画命令による文字のフォントの種類、色、大きさ等、及びＣ１００〜Ｃ１０６までのコマンドと同様に図形描画命令による図形の面、線の色の指定、位置等のコマンドである。Ｃ２２２はタイルＥの描画コマンドの終了を示すコマンドである。
【０１４３】
Ｃ４００はページの終了を示すコマンドである。
【０１４４】
次に、タイル／ページベクタ変換部１３の処理の詳細について、図１０を用いて説明する。
【０１４５】
図１０は本発明の実施形態１のタイル／ページベクタ変換部が実行する処理を示すフローチャートである。
【０１４６】
尚、このタイル／ページベクタ変換部１３では、ページベクタデータとタイルベクタデータ間での相互変換を行うことができる。あるいは、タイル／ページベクタ変換部１３は、ページベクタデータからタイルベクタデータへ変換する変換部と、タイルベクタデータからページベクタデータへ変換する変換部で構成されていても良い。
【０１４７】
（ステップＳ６０１）
まず、システムメモリ５中に記憶されたドキュメントデータ（ベクタデータ）から、ヘッダ部分に相当するコマンド列を読み込み、処理対象となるドキュメントデータ全体に関するコマンド部分を解析する。具体的には、図７または図９のＣ１〜Ｃ５に相当する部分の内容を解析する。
【０１４８】
（ステップＳ６０２）
解析の結果、ドキュメントデータのタイプが、ページベクタデータであるか否かを判定する。ページベクタデータである場合（ステップＳ６０２でＹＥＳ）、ステップＳ６０３以降のステップに進み、ページベクタ→タイルベクタ変換を実行する。一方、ページベクタデータでない場合、つまり、タイルベクタデータである場合（ステップＳ６０２でＮＯ）、ステップＳ６１０以降のステップに進み、タイルベクタ→ページベクタ変換を実行する。
【０１４９】
（ステップＳ６０３）
オブジェクトを記述するコマンド列を読み込む。
【０１５０】
（ステップＳ６０４）
ステップＳ６０３で読み込んだコマンド列を解析し、記述されているオブジェクトの大きさが分割したいタイルサイズを超えているか否かを判定する。つまり、オブジェクトの更なる分割が必要であるか否かを判定する。
【０１５１】
オブジェクトの大きさが分割したいタイルサイズを超えていない場合（ステップＳ６０４でＮＯ）、ステップＳ６０５をスキップして、ステップＳ６０６に進む。一方、オブジェクトの大きさが分割したいタイルサイズを超えている場合（ステップＳ６０４でＹＥＳ）、ステップＳ６０５に進む。
【０１５２】
（ステップＳ６０５）
ここでは、入力されたオブジェクトの分割処理を実行する。
【０１５３】
例えば、図７のページベクタデータでは、文字の描画命令部分９０２で、「あいうえお〜たちつてと」を含む全ての文字列の描画命令を記述している。これに対して、図９のタイルベクタデータでは、例えば、タイルＢに対する描画命令１１０４では、「あいう」の文字列の描画命令しか記述されていない。
【０１５４】
従って、タイルベクタデータでは、文字列が複数のタイルに跨がる場合は、その文字列を途中（タイル境界）で分割し、分割された後続の文字列は別の文字列として、次のタイルに記述を行う。次のタイルに記述が収まらなかったら、同様にまたタイルに含まれる文字列を分割し、分割された全ての文字列がタイルサイズに収まるまで繰り返す。文字列をどこで切るかは、フォントの種類、サイズからタイル内に収まる文字数を算出し、その数だけの文字を抽出する。
【０１５５】
例えば、図７のページベクタデータの文字の描画命令部分９０２に対して、タイル内に収まる文字数は４つとして算出され、図７のコマンドＣ１１の記述は、タイルＢに対する描画命令を構成するコマンドＣ１４の記述に変換される。
【０１５６】
また、この記述の変換によれば、各タイルの文字列間の連続性に関する情報が失われてしまう。そのため、タイルベクタデータからページベクタデータへの再結合時に、元の文字列情報（図６及び図７の例では、「あいうえおかきく〜たちつてと」）を復元できなくなってしまう。
【０１５７】
そこで、実施形態１では、タイル分割前の元の文字列情報「あいうえおかきく〜たちつてと」に、それを識別するための一意の文字列ＩＤ（例えば、ＩＤ＝０）を付加し、生成するタイルベクタデータとは別に、システムメモリ５に保持しておく。そして、この文字列ＩＤを、タイル分割後の文字列と対（タイル分割前後の文字列の関係）にしてタイルベクタデータに持たせることで、後の再結合時の文字列情報の再現性を持たせることができる。
【０１５８】
一方、図形の描画命令部分９０４では、コマンドＣ２２〜Ｃ２６で記述されている図形（図６の３／４円）は、図８のタイルベクタデータを構成するタイルの１つには収まらない。そのため、この図形は、タイルＥを含む複数のタイルに分割される。図形の分割は、図形の描画位置や図形の形、大きさからタイルの境界領域と接する部分を算出し、その境界とタイル内に収まっている図形の部分領域で構成される閉領域を新たな図形として記述し直す。
【０１５９】
図７の図形の描画命令部分９０４で記述される図形（図６の３／４円）は、図９では、その左下の部分領域が、図形の描画命令部分１１０９のコマンドＣ２０７からＣ２１１のような１／４円の記述に変換される。また、残りの領域も、同様な形の１／４円の記述に変換される。
【０１６０】
ここで、ステップＳ６０５のオブジェクトの分割処理の詳細について、図１１を用いて説明する。
【０１６１】
図１１は本発明の実施形態１のオブジェクトの分割処理の詳細を示すフローチャートである。
【０１６２】
（ステップＳ１４０１）
まず、処理対象の描画コマンドが複数タイルへの分割を必要とする場合、当該描画コマンドが文字列描画に関するものか、図形描画に関するものかを判定する。描画コマンドが文字列描画に関するものである場合（ステップＳ１４０１でＹＥＳ）、ステップＳ１４０２〜ステップＳ１４０７の処理を実行する。一方、描画コマンドが図形描画に関するものである場合（ステップＳ１４０１でＮＯ）、ステップＳ１４０８〜ステップＳ１４１０の処理を実行する。
【０１６３】
＜描画コマンドが文字列描画の場合＞
描画コマンドが文字列描画に関するものである場合の処理について、図７の文字の描画命令部分９０２を例に挙げて説明する。
【０１６４】
（ステップＳ１４０２）
ステップＳ１４０１で、描画命令部分９０２が文字列描画に関するものであると判定されると、これに含まれる文字列「あいうえおかきく…たちつてと」に対して一意な文字列ＩＤ＝０を割り当て、システムメモリ５に保持する。
【０１６５】
（ステップＳ１４０３）
次に、文字列「あいうえおかきく…たちつてと」が含まれるタイル（処理対象タイル）のタイルＩＤ＝（１，０）〜（４，０）、（１，１）〜（４，１）をすべて抽出する。
【０１６６】
（ステップＳ１４０４）
そして、抽出したタイルの１つに注目し、当該注目タイルに一部もしくは全部含まれる文字のみを文字列「あいうえおかきく…たちつてと」から抽出する。例えば、タイルＩＤ＝（１，０）のタイルに対しては、文字列「あいう」を抽出する。また、タイルＩＤ＝（２，０）のタイルに対しては、文字列「うえお」を抽出する。
【０１６７】
（ステップＳ１４０５）
抽出した文字列の描画情報（文字列情報）を、各タイルＩＤのタイルベクタデータに追加する。
【０１６８】
（ステップＳ１４０６）
さらに、当該文字列の属する文字列ＩＤを、タイルベクタデータに追加する。
【０１６９】
ここで、ステップＳ１４０２では、図８の文字列「あいうえおかきく…たちつてと」には文字列ＩＤ＝０が割り当てられたので、図７の描画命令部分９０２に対して、文字列の描画命令部分のオブジェクトの分割処理を実行した場合、図８のタイルＢ，Ｃのタイルベクタ中間データは、それぞれ図１２の１５０１、１５０２のようになる。
【０１７０】
（ステップＳ１４０７）
以上のステップＳ１４０４〜ステップＳ１４０６の処理を、ステップＳ１４０３で抽出したすべてのタイルに対して実行する。つまり、すべての処理対象のタイルの処理が終了したか否かを判定する。終了していない場合（ステップＳ１４０７でＮＯ）、ステップＳ１４０４に戻る。一方、終了した場合（ステップＳ１４０７でＹＥＳ）、文字列の描画命令部分に対するオブジェクトの分割処理を終了する。
【０１７１】
＜描画コマンドが図形描画の場合＞
描画コマンドが図形描画に関するものである場合の処理について、図７の図形の描画命令部分９０６を例に挙げて説明する。
【０１７２】
（ステップＳ１４０８）
ステップＳ１４０１で、描画命令部分９０６が図形描画に関するものであると判定されると、これが描画する３／４円が含まれるタイル（処理対象タイル）のタイルＩＤ＝（１，４）、（１，５）、（２，５）をすべて抽出する。
【０１７３】
（ステップＳ１４０９）
そして、抽出したタイルに対し、当該描画命令部分９０６を、抽出したタイルの各タイルベクタデータに追加する。
【０１７４】
例えば、図８のタイルＥは、描画命令部分９０６のオブジェクトの分割処理以前に、描画命令部分９０３のオブジェクトの分割処理と後述する座標変換（図１０のステップＳ６０６）で生成された、図１３のタイルベクタデータ１６０１が存在する。そのため、描画命令部分９０６に対して、ステップＳ１４０９の処理が実行されると、図１３のタイルベクタデータ１６０２が生成される。
【０１７５】
（ステップＳ１４１０）
以上のステップＳ１４０９の処理を、ステップＳ１４０８で抽出したすべてのタイルに対して実行する。つまり、すべての処理対象のタイルの処理が終了したか否かを判定する。終了していない場合（ステップＳ１４１０でＮＯ）、ステップＳ１４０９に戻る。一方、終了した場合（ステップＳ１４１０でＹＥＳ）、図形の描画命令部分に対するオブジェクトの分割処理を終了する。
【０１７６】
図１０の説明に戻る。
【０１７７】
（ステップＳ６０６）
入力されたオブジェクトのコマンドの記述に対し、タイルベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。ページベクタデータでは、ページの左上からの位置を記述していたのに対し、タイルベクタデータではタイルの左上からの位置に記述し直す。描画位置をタイル内の座標で記述することにより、座標計算に要するデータ長を削減することが可能になる。
【０１７８】
例えば、オブジェクトの分割処理で得られたタイルベクタデータの中間データである、図１２の１５０１、１５０２は、それぞれこの座標変換によって、図１４の１７０１、１７０２のように変換される。
【０１７９】
（ステップＳ６０７）
１つのオブジェクトに対するコマンドの記述変換が終了したら、ページ内の全てのオブジェクトのコマンドの記述変換が終了したか否かを判定する。終了していない場合（ステップＳ６０７でＮＯ）、ステップＳ６０３に戻り、次のコマンドに対して、ステップＳ６０３〜ステップＳ６０７の処理を繰り返す。一方、終了した場合（ステップＳ６０７でＹＥＳ）、ステップＳ６０８へ進む。
【０１８０】
（ステップＳ６０８）
全てのコマンドの記述変換が終了したら、図８のように分割されたタイルベクタデータ中の各タイルに対し、ページの左上から順にタイルベクタデータとしてシステムメモリ５への書出を実行する。タイルベクタデータとしては、ステップＳ６０５及びステップＳ６０６で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを追加するようなフォーマットで記述される。
【０１８１】
まず、ページの一番最初のコマンドの書出時点では、システムメモリ５内にオブジェクトがない状態のタイルベクタを生成しておく。オブジェクトがないタイルベクタとしては、例えば、図８のタイルＡがある。このタイルＡは、タイルの開始と終了を示すコマンドＣ７及びＣ８のみから構成される描画命令部分１１０３（図９）で記述される。
【０１８２】
次に、ステップＳ６０３〜ステップＳ６０７で処理されたコマンドが存在する座標のタイルに対し、オブジェクトの記述を追加する。例えば、図８のタイルＢの場合は、コマンドＣ９〜Ｃ１６から構成される描画命令部分１１０４（図９）で記述される。また、タイルＥのように、同じタイルに複数のオブジェクトが存在する場合には、描画命令部分１１０７のように、文字の描画命令部分１１０８を構成するオブジェクト記述と、図形の描画命令部分１１０９を構成するオブジェクト記述を列記する。
【０１８３】
（ステップＳ６０９）
１つのオブジェクトのタイルベクタへの書出が終了すると、そのページのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合（ステップＳ６０９でＮＯ）、ステップＳ６０３に戻る。一方、終了した場合（ステップＳ６０９でＹＥＳ）、処理を終了する。
【０１８４】
一方、ステップＳ６０２で、ドキュメントデータのタイプが、タイルベクタデータである場合（タイルベクタデータをページベクタデータに変換する場合）について説明する。
【０１８５】
（ステップＳ６１０）
タイルベクタデータから、オブジェクトを記述するコマンド列を読み込む。
【０１８６】
（ステップＳ６１１）
ステップＳ６１０で読み込んだコマンド列を解析し、記述されているオブジェクトがそれより以前に読み込まれたタイルと結合可能であるか否かを判定する。結合可能でない場合（ステップＳ６１１でＮＯ）、ステップＳ６１２をスキップし、ステップＳ６１３に進む。一方、結合可能である場合（ステップＳ６１１でＹＥＳ）、ステップＳ６１２に進む。
【０１８７】
尚、オブジェクトが結合可能であるか否かの判定は、読み込んだコマンドの座標位置や、図形の種別等を基に判定する。また、文字列の場合は、フォントサイズやフォントの種類を基に判定する。
【０１８８】
（ステップＳ６１２）
オブジェクトの結合処理を実行する。この処理は、基本的には、ステップＳ６０５の処理手順を逆にすることで実現する。ここで、ドキュメントタイプがタイルであるベクタデータは、タイルＩＤの昇順に処理されることが好ましく、実施形態１においても、結合処理はタイルＩＤの昇順に実行されるものとする。
【０１８９】
ここで、ステップＳ６１２のオブジェクトの結合処理の詳細について、図１５を用いて説明する。
【０１９０】
図１５は本発明の実施形態１のオブジェクトの結合処理の詳細を示すフローチャートである。
【０１９１】
（ステップＳ１８０１）
まず、処理対象の描画コマンドがページタイルデータへの結合を必要とする場合、当該コマンドが文字列描画に関するものか、図形描画に関するものかを判定する。描画コマンドが文字列描画に関するものである場合（ステップＳ１８０１でＹＥＳ）、ステップＳ１８０２〜ステップＳ１８０３、ステップＳ１８０６〜ステップＳ１８０９の処理を実行する。一方、描画コマンドが図形描画に関するものである場合（ステップＳ１８０１でＮＯ）、ステップＳ１８０４及びステップＳ１８０５の処理を実行する。
【０１９２】
＜描画コマンドが文字列描画の場合＞
描画コマンドが文字列描画に関するものである場合の処理について、図９の文字の描画命令部分１１０４と１１０５を例に挙げて説明する。
【０１９３】
（ステップＳ１８０２）
ステップＳ１８０１で、描画命令部分１１０４もしくは１１０５が文字列描画に関するものであると判定されると、これに含まれる文字列ＩＤ＝０に対する結合処理を以前実行したか否かを判定する。以前実行していない場合（ステップＳ１８０２でＮＯ）、処理を終了する。一方、以前実行している場合（ステップＳ１８０２でＹＥＳ）、ステップＳ１８０３に進む。
【０１９４】
（ステップＳ１８０３）
例えば、描画命令部分１１０４は、文字列ＩＤ＝０に対する最初の結合処理になるため、結合対象がページベクタデータに存在しない。そのため、描画命令部分１１０４に対して文字列の結合処理が実行されることはなく、後述の座標変換（図１０のステップＳ６１３）後、内容はそのままページベクタデータに書き出される。
【０１９５】
一方、描画命令部分１１０５は、それより以前に文字列ＩＤ＝０に対する処理として、描画命令部分１１０４で実行されている。そのため、描画命令部分１１０４によって、ページベクタデータに書き出された文字列「あいう」と、描画命令部分１１０５が記述する文字列「うえお」の結合処理を実行する。
【０１９６】
ステップＳ１８０３の文字列の結合処理の詳細を示すと、以下のようになる。
【０１９７】
（ステップＳ１８０６）
まず、描画命令部分１１０５が記述する文字列のＹ方向のＰｏｓｉｔｉｏｎの値が負であるか否かを判定する。この値が負でない場合（ステップＳ１８０６でＮＯ）、ステップＳ１８０７に進む。一方、この値が負である場合（ステップＳ１８０６でＹＥＳ）、ステップＳ１８１０に進む。
【０１９８】
（ステップＳ１８１０）
文字列のＹ方向のＰｏｓｉｔｉｏｎの値が負である場合、文字列のスタートは注目タイルの範囲より上方にあり、タイルの結合処理をタイルＩＤの昇順で実行するという前提下では、すでに上方にあるタイルの処理時に文字列の結合処理が実行されていることになる。（例えば、図１６のタイル１９０１は、既に注目タイル１９０２の上方のタイルであって、結合処理が実行されている）。そのため、処理無視ビットをアサートし、後続の処理の実行を禁止する。
【０１９９】
（ステップＳ１８０７）
描画命令部分１１０５の場合は、それが記述する文字列のＹ方向のＰｏｓｉｔｉｏｎの値は正であるので、続いて、Ｘ方向のＰｏｓｉｔｉｏｎの値が負であるか否かを判定する。この値が負である場合（ステップＳ１８０７でＹＥＳ）、文字列のスタートは注目している注目タイル１９０２の範囲より左方にあり、文字列の最初の１文字が左方のタイルと共有していることになる（例えば、図１６の注目タイル１９０２は「か」の文字を左方のタイルと共有している）。
【０２００】
そのため、文字列の最初の１文字は左方のタイルの結合処理時に結合処理済である。
【０２０１】
（ステップＳ１８０８）
従って、タイルベクタデータが持つ文字列の最小の１文字を削除する。
【０２０２】
（ステップＳ１８０９）
結合先のページベクタデータの文字列と結合する。
【０２０３】
例えば、描画命令部分１１０５の文字列「うえお」は、上記条件に該当するため、「う」の文字が削除されて、既に作成されているページベクタデータの「あいう」と結合され、ページベクタデータ上に「あいうえお」が復元される。
【０２０４】
一方、タイルベクタデータの文字列のＸ方向のＰｏｓｉｔｉｏｎの値が負でない場合（正である場合）、その文字列は当該処理以前の結合処理でまったく出現しなかった文字列の処理ということになる（図１６の注目タイル１９０２が持つ文字列「さし」は、注目タイル１９０２の処理で初めて処理される）。そのため、この文字列は、そのままページベクタデータに結合される。
【０２０５】
以上の処理によって、文字列の描画命令部分に対するオブジェクトの結合処理を終了する。
【０２０６】
＜コマンドが図形描画の場合＞
描画コマンドが図形描画に関するものである場合の処理について、図９の描画命令部分１１０９を例に挙げて説明する。
【０２０７】
（ステップＳ１８０４）
ステップＳ１８０１で、描画命令部分１１０９が図形描画に関するものであると判定されると、これが描画する図形に対する処理を、それより以前の結合処理時に実行したか否かを判定する。以前の結合処理時に実行していない場合（ステップＳ１８０４でＮＯ）、処理を終了する。一方、以前の結合処理時に実行している場合（ステップＳ１８０４でＹＥＳ）、ステップＳ１８０５に進む。
【０２０８】
（ステップＳ１８０５）
例えば、描画命令部分１１０９の３／４円は、図１０のタイルＥにおける処理であるが、同じ、３／４円の処理が、タイルＥから１つ上方のタイルの結合処理の中で実行されている。即ち、描画命令部分１１０９で描画する図形は、以前に結合処理時のタイルに含まれている。そのため、処理無視ビットをアサートし、後続の結合処理を禁止する。
【０２０９】
一方、描画命令部分で描画する図形が、当該タイルより以前に処理されたタイルで、ページベクタデータ上で形成されていない場合、当該描画命令部分はそのままページベクタデータに結合される。
【０２１０】
以上の処理によって、図形の描画命令部分に対するオブジェクト結合処理は終了する。  図１０の説明に戻る。
【０２１１】
（ステップＳ６１３）
入力されたオブジェクトの描画コマンドの記述に対し、ページベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。タイルベクタデータでは、タイルの左上からの位置を記述していたのに対し、ページベクタデータでは、ページの左上からの位置に記述し直す。但し、ステップＳ１８０５、ステップＳ１８１０で処理無視ビットがアサートされている場合、この処理はスキップされる。
【０２１２】
（ステップＳ６１４）
１つのオブジェクトに対する描画コマンドの記述変換が終了したら、タイル内の全てのオブジェクトの描画コマンドの記述変換が終了したか否かを判定する。終了していない場合（ステップＳ６１４でＮＯ）、ステップＳ６１０に戻り、次の描画コマンドに対して、ステップＳ６１０〜ステップＳ６１３の処理を繰り返す。一方、終了した場合（ステップＳ６１４でＹＥＳ）、ステップＳ６１５へ進む。
【０２１３】
（ステップＳ６１５）
全ての描画コマンドの記述変換が終了したら、ページベクタデータとしてシステムメモリ５への書出を実行する。ページベクタデータとしては、ステップＳ６１２及びステップＳ６１３で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを削除したようなフォーマットで記述される。
【０２１４】
まず、ページ内の一番最初のタイルに記述されたコマンドの書出時点では、システムメモリ５内にオブジェクトがない状態のページベクタを生成しておく。これは、図７の記述を用いて説明すると、コマンドＣ１〜Ｃ６、コマンドＣ２７だけで記述されるページベクタデータである。
【０２１５】
次に、ステップＳ６１０〜ステップＳ６１３で処理されたオブジェクトの記述を追加する。図７の記述の場合、文字の描画命令部分９０２を構成するコマンドＣ７〜Ｃ１１がそれにあたる。この場合のオブジェクトは、文字列｛あいうえおかきく〜たちつてと｝を示しているが、これは、ステップＳ６１２で、図９の文字の描画命令部分１１０４や１１０５等で記述される各タイル中の文字列を順次結合したオブジェクトの記述である。
【０２１６】
（ステップＳ６１６）
１つコマンドのページベクタへの書出が終了すると、そのタイルのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合（ステップＳ６１６でＮＯ）、ステップＳ６１０に戻る。一方、終了した場合（ステップＳ６１６でＹＥＳ）、ステップＳ６１７に進む。
【０２１７】
（ステップＳ６１７）
１つのタイルベクタデータの書出が終了すると、そのページのタイルベクタデータの記述に対する処理が全て終了したか否かを判定する。終了していない場合（ステップＳ６１７でＮＯ）、ステップＳ６１０に戻る。一方、終了した場合（ステップＳ６１７でＹＥＳ）、処理を終了する。
【０２１８】
[画像データ展開部（ＲＩＰ）]
次に、コントローラ１中の画像データ展開部１８の詳細について説明する。
【０２１９】
まず、コピーやプリント、送信等の画像データに対する処理を開始する前に、ローカルメモリ１９の初期化と、作成するオブジェクトの解像度の設定を行っておく。実施形態１では、生成解像度は６００ｄｐｉとし、ポイントサイズやｍｍ等の単位系で指定された印刷コマンドは、この値を用いてドット数に変換されることになる。
【０２２０】
以下では、画像データ展開部１８によって、タイルベクタデータ展開を実行する場合の処理について、図１７を用いて説明する。
【０２２１】
図１７は本発明の実施形態１の画像データ展開部が実行する処理を示すフローチャートである。
【０２２２】
（ステップＳ７１）
システムメモリ５より、ＳＢＢ２を経由して、ＲＩＰ１８に一定サイズ分入力されたタイルベクタデータは、ローカルメモリ１９のタイルベクタ領域に一時的に格納する。
【０２２３】
（ステップＳ７２）
タイルベクタデータをローカルメモリ１９に格納したら、ＲＩＰ１８内のμＲＩＰ１８ａ〜１８ｄのいずれかが、タイルベクタデータを展開可能（処理可能）であるか否かを判定する。μＲＩＰ１８ａ〜１８ｄのいずれもタイルベクタデータの展開（処理）中である場合（ステップＳ７２でＮＯ）、それらのいずれかが展開可能になるまで待機する。
【０２２４】
（ステップＳ７３）
μＲＩＰ１８ａ〜１８ｄのいずれかがタイルベクタデータを展開可能になれば、予め定められた文法に従って、ローカルメモリ１９に格納されたタイルベクタデータのコマンド解析を実行する。
【０２２５】
（ステップＳ７４）
コマンド解析結果に基づいて、コマンドが描画命令であるか排紙命令であるかを判定する。描画命令である場合（ステップＳ７４でＹＥＳ）、ステップＳ７５に進む。一方、排紙命令である場合（ステップＳ７４でＮＯ）、ステップＳ７６に進む。
【０２２６】
（ステップＳ７５）
コマンドが描画命令である場合、描画オブジェクト（ＤＬデータ）の生成を実行する。タイルベクタデータ内のコマンドが文字の描画命令である場合、そのコマンドで指定されるフォントの書体や、文字サイズ、文字コードを元にフォントオブジェクトを生成して、ローカルメモリ１９のＤＬデータ領域に格納する。また、文字以外の描画命令、つまり、図形の描画命令である場合、そのコマンドで指定された図形（ラインや円、多角形等）の描画オブジェクトを生成し、ローカルメモリ１９のＤＬデータ領域に格納する。
【０２２７】
また、コマンドが描画命令で指定されない印刷データである場合には、この印刷データに応じて印刷位置移動や印刷環境設定等の印刷制御処理を実行し、一単位分のコマンド解釈を終了する。
【０２２８】
これは、タイルベクタデータ内のコマンド全ての解釈が終了するまで、上記処理を繰り返す。
【０２２９】
（ステップＳ７６）
コマンドが排紙命令である場合、μＲＩＰは、ローカルメモリ１９上のタイルラスタ領域に空き領域があるか否かを判定する。空き領域がない場合（ステップＳ７６でＮＯ）、他のμＲＩＰの処理が終了して、タイルラスタ領域が解放されて、空き領域ができるまで待機する。一方、空き領域がある場合（ステップＳ７６でＹＥＳ）、ステップＳ７７に進む。
【０２３０】
（ステップＳ７７）
タイルラスタ領域に空き領域がある場合、ステップＳ７５で生成された描画オブジェクトを読み出し、タイルラスタ領域に描画（ラスタライズ）する。この時、生成解像度が６００ｄｐｉであれば、タイルラスタ領域には６００ｄｐｉの画像としてラスタライズされる。そして、描画が終了したタイルラスタ画像は、ＳＢＢ２を介して、画像処理部１５に出力する。
【０２３１】
（ステップＳ７８）
ステップＳ７５またはステップＳ７７で一つのタイルベクタデータに対する、コマンド解析または描画処理が終了したら、タイルベクタ領域に格納したタイルベクタデータのすべてに対して処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合（ステップＳ７８でＮＯ）、ステップＳ７２に戻り、次のタイルベクタデータの処理を続ける。一方、未処理のタイルベクタデータがない場合（ステップＳ７８でＹＥＳ）、ステップＳ７９に進む。
【０２３２】
（ステップＳ７９）
１ページ分のタイルベクタデータに対し、全ての処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合（ステップＳ７９でＮＯ）、ステップＳ７１に戻り、システムメモリ５から、タイルベクタデータを読み出して、処理を続ける。一方、未処理のタイルベクタデータがない場合（ステップＳ７９でＹＥＳ）、処理を終了する。
【０２３３】
以上説明したように、実施形態１によれば、ページベクタデータをタイルベクタデータに分割する際に、ページベクタデータ中の文字列も分割された各タイルベクタデータ毎に保持する構成において、その文字列の連続性を維持するための情報（文字列ＩＤ）を保持する。これにより、ページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる。
【０２３４】
［実施形態２］
実施形態１では、ＭＦＰから外部機器への送信を行う際には、タイルベクタデータをページベクタデータに変換して、データ量の削減や画像データの汎用性を高めているが、これに限定されない。例えば、画像データを記憶する際にタイルベクタデータだけではなく、ページベクタデータも併せて記憶するようにしても良い。このような構成の場合、タイルベクタデータからページベクタデータへ変換することなく、外部機器にページベクタデータを送信することもできる。
【０２３５】
尚、システム全体の構成は、実施形態１と同様なので、その詳細については割愛する
以下、実施形態２における画像処理システムでの送信動作について説明する。
【０２３６】
[送信]
図１８は本発明の実施形態２の画像処理システムでの送信動作に係るデータフローを示す図である。
【０２３７】
尚、このデータフローは、ＣＰＵ３の制御の下、ＭＦＰ１０００を構成する各種構成要素を協調動作させることで実現される。
【０２３８】
（Ｓ１３１）：実施形態２では、１つの画像データに対し、ＨＤＤ８にはタイルベクタデータとページベクタデータが記憶される。送信時は、その内のページベクタデータが選択され、ＳＢＢ２を介して、汎用バス６に接続されたＨＤＤＣｏｎｔ７より読み出され、システムメモリ５に一時的に記憶される。
【０２３９】
（Ｓ１３２）：システムメモリ５に記憶されたページベクタデータは、汎用バス６に接続されたネットワークＩ／Ｆ１１から読み出され、ネットワーク１２に接続された外部機器へと転送される。
【０２４０】
尚、実施形態２では、実施形態１に比べて、ＨＤＤ８に記憶すべき画像データ容量が多くなるが、送信時のフローが非常に簡略化される。
【０２４１】
以上説明したように、実施形態２によれば、実施形態１で説明した効果に加えて、１つの画像データに対して、タイルベクタデータと、それに対応するページベクタデータを併せてＨＤＤに記憶管理しておく。これにより、記憶管理されている２種類のベクタデータをＨＤＤから適宜選択するだけで、画像データの出力時により適切なベクタデータを、変換処理を行うことなく、出力することができる。
【０２４２】
［実施形態３］
実施形態２では、画像データを記憶する際にタイルベクタデータだけではなく、ページベクタデータも併せて記憶することで、タイルベクタデータからページベクタデータへの変換を実行することなく、外部機器にページベクタデータを送信できる構成について説明しているが、これに限定されない。
【０２４３】
例えば、送信先が、実施形態１に示すＭＦＰと同様の機能を有するＭＦＰである場合、タイルベクタデータの結合化（ページベクタデータ化）を実行することなく、タイルベクタデータとそれに付随する情報（例えば、文字列ＩＤ情報等）で、画像データの送受信を実行する構成としても良い。
【０２４４】
この場合、タイルベクタデータとページベクタデータ間でのデータ変換を極力実行せずに、画像データの送受信や送信先での画像処理を実行することが可能となる。
【０２４５】
［実施形態４］
実施形態１では、特に、ＭＦＰ内部でタイルベクタデータを扱うことで、画像処理の並列性を高めている。また、元のページベクタデータで存在している文字列を中間データとしてタイルベクタデータ毎に分割しても、再結合の際に、元の文字列を復元でき、検索性を維持したページベクタデータ（画像データ）を外部機器に転送する構成について説明した。
【０２４６】
ここで、ＭＦＰは、このような外部機器への画像データ転送機能に加え、自身のもつＨＤＤ８内に画像データを保存することができる。この場合、ユーザが、ＨＤＤ８内の画像データに対して操作部１０から検索指示を入力して、その検索結果をプレビュー表示する機能の要求がある。
【０２４７】
本発明では、中間データとして生成されるタイルベクタデータを画像データとしてＨＤＤ８内に保存する。特に、この際に、発生する文字列の分割による検索性の低下の可能性は、実施形態１で説明した文字列ＩＤによって、タイル分割前の文字列情報をタイルベクタデータとともに管理しておくことで、解消される。
【０２４８】
以下、実施形態４では、ＨＤＤ８から画像データを検索する場合の検索処理について、図１９を用いて説明する。
【０２４９】
図１９は本発明の実施形態４の検索処理を示すフローチャートである。
【０２５０】
尚、この検索処理は、ユーザより操作部１０を介して、検索条件である検索文字列が入力され、かつその検索条件による検索指示が入力された場合に実行する。
【０２５１】
（ステップＳ２００１）
まず、文字列ＩＤの値をカウントするためのカウンタを初期化する（文字列ＩＤ＝０）。
【０２５２】
（ステップＳ２００２）
文字列ＩＤ＝０から順に、ＨＤＤ８で管理されるタイルベクタデータ中の文字列ＩＤが割り当てられた文字列に注目し、当該注目文字列に検索文字列が含まれているか否かを判定する。文字列ＩＤが割り当てられた文字列に、検索文字列が含まれていない場合（ステップＳ２００２でＮＯ）、ステップＳ２００３へ進む。検索文字列が含まれている場合（ステップＳ２００２でＹＥＳ）、ステップＳ２００５へ進む。
【０２５３】
（ステップＳ２００３）
カウンタを１インクリメントする（文字列ＩＤ＝文字列ＩＤ＋１）。
【０２５４】
（ステップＳ２００４）
すべての文字列に対して、検索処理が終了したか否かを判定する。この判定は、文字列ＩＤの最大値ＭＡＸと、現在のカウンタが示す文字列ＩＤの値を比較することによって実行する。すべての文字列に対して検索処理が終了した場合（ステップＳ２００４でＹＥＳ）、処理を終了する。一方、すべての文字列に対して、検索処理が終了していない場合（ステップＳ２００４でＮＯ）、ステップＳ２００２へ戻る。
【０２５５】
（ステップＳ２００５）
ステップＳ２００２において、注目文字列に検索文字列が含まれている場合、すべてのタイルベクタデータから、注目文字列に割り当てられた文字列ＩＤと、検索文字列の一部もしくは全部が含まれているタイルベクタデータを抽出する。
【０２５６】
（ステップＳ２００６）
そして、プレビュー表示のために必要な所望の画像サイズになるように、抽出したタイルベクタデータをその周辺のタイルベクタデータとを結合して、ページベクタデータを生成する。尚、この結合処理は、タイル／ページベクタ変換部１３で実行する。
【０２５７】
（ステップＳ２００７）
生成したページベクタデータをラスタリングして、操作部１０に検索結果として表示する。尚、このラスタリングは、例えば、画像データ展開部１８で実行する。
【０２５８】
以上の処理によって、ＨＤＤ８内に保存されたタイルベクタデータから、文字列の検索と、その検索結果のプレビューを実行することが可能となる。
【０２５９】
具体例として、図８及び図９に示すタイルベクタデータがＨＤＤ８内に保存されていて、このタイルベクタデータから、検索条件として「つて」という文字列（検索文字列）を検索する場合の処理フローについて、図１９に基づいて説明する。
【０２６０】
まず、文字列ＩＤ＝０（ステップＳ２００１）が割り当てられた注目文字列「あいうえおかきく〜たちつてと」から検索文字列「つて」を検索する（ステップＳ２００２）。検索文字列「つて」は、注目文字列「あいうえおかきく〜たちつてと」に含まれるので、すべてのタイルベクタデータの中から、文字列ＩＤ＝０を含み、かつ、文字列「つて」の一部もしくは全部を含むタイルベクタである、タイルＩＤ＝（３，１）、（４，１）のタイルを抽出する（ステップＳ２００５）。
【０２６１】
そして、検索結果として表示するプレビュー画像に好ましい画像サイズにするために、抽出したタイルを、その周辺タイルであるタイルＩＤ＝（５，１）、（３，２）、（４，２）、（５，２）のタイルと結合処理を実行して、部分ページベクタデータを生成する（ステップＳ２００６）。
【０２６２】
生成した部分ページベクタを、ＣＰＵ３の制御の下、ラスタリングして、操作部１０に転送して表示する（ステップＳ２００７）。この場合、図２０（ａ）に示すような検索結果プレビュー画像が表示される。
【０２６３】
また、タイルベクタデータ結合前後のベクタデータに対して、検索文字列「つて」の色反転処理を実行した上で、操作部１０に表示すれば、図２０（ｂ）に示すような検索文字列の強調表示が容易に可能となる。尚、この反転処理以外にも、ブリンク表示や、下線、フォント変更等の加工処理を実行して、検索文字列の強調表示をするようにしても良い。
【０２６４】
以上説明したように、実施形態４によれば、実施形態１で説明した効果に加えて、タイル分割前の文字列情報をタイルベクタデータとともに管理しておくことで、タイルベクタデータに対しても、効率的にかつ精度良く、所望の文字列を含むタイルベクタデータを検索することができる。
【０２６５】
［実施形態５］
実施形態４では、図１９のステップＳ２００５において、検索文字列を含む文字列の文字列ＩＤを持ち、かつ、検索文字列の一部もしくは全部を含むタイルを抽出するためには、ページないしは複数ページから構成されるページベクタデータを構成するすべてのタイルについて、検索処理を実行する必要がある。そのため、場合によっては、検索結果のプレビュー表示の応答性が低下する可能性がある。
【０２６６】
そこで、実施形態５では、この点を解消するために、文字列ＩＤが割り当てられた文字列に含まれる各文字エントリに対する、当該文字が含まれるタイルのタイルＩＤを管理するテーブルをシステムメモリ５に生成する。
【０２６７】
即ち、実施形態１では、各タイルに文字列を関連付けるために、文字列に文字列ＩＤを付加して用いたが、実施形態５では、文字列の各文字をタイルに関連付けるクロスリファレンスとして、図２１に示すタイルリファレンステーブル（以下、ＴＲＴと略称する）２２０３を、ページベクタデータからタイルベクタデータへの分割時に生成して用いることで、検索結果のプレビュー応答性の向上を図る。
【０２６８】
以下、ＴＲＴを用いた検索結果のプレビュー応答性の向上の方法について詳細に説明する。ここで、実施形態５の基本的なタイルベクタデータの生成処理は、実施形態１とほぼ同様であるため、実施形態５ではその差分のみ説明する。
【０２６９】
ＴＲＴエントリへデータを登録するＴＲＴエントリ登録（ＴＲＴ生成）処理は、図１０のステップＳ６０５のオブジェクトの分割処理で実行される。より詳細には、図１１のステップＳ１４０４とステップＳ１４０５の間で実行される。
【０２７０】
以下、このＴＲＴエントリ登録処理について、図２２を用いて説明する。
【０２７１】
図２２は本発明の実施形態５のＴＲＴエントリ登録処理を示すフローチャートである。
【０２７２】
（ステップＳ２３０１）
上述したように、ＴＲＴエントリ登録処理は、図１１のステップＳ１４０４とステップＳ１４０５の間で実行される。ここまでの処理過程について補足しておくと、これは、あるページベクタデータの文字列描画に関するコマンドを分割処理するシーケンスである。そして、ステップＳ２３０１の処理に入る段階では、文字列ＩＤは既にステップＳ１４０２で、一意に決定されており、分割処理の際の注目タイルおよび、注目タイルに含まれる分割された文字列も抽出されている。
【０２７３】
（ステップＳ２３０２）
ＴＲＴエントリ登録処理では、まず、注目タイルに含まれる、分割された文字列の１文字目を注目文字に設定する。
【０２７４】
（ステップＳ２３０３）
そして、注目文字のエントリがＴＲＴに登録されているか否かを判定する。登録されていない場合（ステップＳ２３０３でＮＯ）、ステップＳ２３０４へ進む。一方、登録されている場合（ステップＳ２３０３でＹＥＳ）、ステップＳ２３０５へ進む。
【０２７５】
（ステップＳ２３０４→ステップＳ２３０５）
注目文字を対応する文字列ＩＤの新たなエントリとしてＴＲＴに登録（追加）する。そして、当該新規エントリに注目タイルを登録（追加）する。
【０２７６】
（ステップＳ２３０３→ステップＳ２３０５）
一方、注目文字のエントリがＴＲＴに登録されている場合、既に登録されているエントリに対して、注目タイルを登録（追加）する。
【０２７７】
（ステップＳ２３０６）
以上のステップＳ２３０３〜ステップＳ２３０５の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合（ステップＳ２３０６でＮＯ）、ステップＳ２３０３へ戻る。一方、処理が終了している場合（ステップＳ２３０６でＹＥＳ）、ＴＲＴエントリ登録処理を終了する。
【０２７８】
具体例として、図２１のタイルベクタデータ２２０１を生成する際の、ＴＲＴの生成処理について、図２２に基づいて説明する。
【０２７９】
まず、２２０２に示す文字列ＩＤ＝０が付加された文字列「十二月十九日〜でしょう。」の分割処理において、図２２のステップＳ１４０４での注目タイルはタイルＩＤ＝（０，０）のタイルに設定される。注目タイル（タイルＩＤ＝（０，０））に含まれる文字列は、「十二」であるので、その１文字目である「十」がまず、注目文字に設定される（ステップＳ２３０２）。
【０２８０】
「十」はＴＲＴのエントリとして登録されていないので（ステップＳ２３０３でＮＯ）、新規に「十」の文字を登録する（ステップＳ２３０４）。次に、注目タイルであるタイルＩＤ＝（０，０）のタイルを新規エントリ「十」に登録する（ステップＳ２３０６）。次に、注目文字を「二」に設定し、「十」の時と同様に、新規エントリ登録し、注目タイル（０，０）を登録する。
【０２８１】
以下、同様に、タイルＩＤ＝（５，０）の注目タイルまで処理した段階でのＴＲＴの登録状態を、図２１の２２０４に示す。
【０２８２】
引き続き、タイルＩＤ＝（０，１）の注目タイルに対するＴＲＴエントリ登録処理を説明する。タイルＩＤ＝（０，１）の注目タイルに含まれる文字列は、「十二」と「日は」であるので、その１文字目である「十」が、まず、注目文字に設定される（ステップＳ２３０２）。
【０２８３】
タイルＩＤ＝（０，０）の注目タイルにおける処理によって、「十」はＴＲＴのエントリとして登録されているので（ステップＳ２３０３でＹＥＳ）、現在の注目タイルである（０，１）をエントリ「十」に登録する（ステップＳ２３０６）。
【０２８４】
以下、注目文字「二」のエントリは既存なので、既存エントリにタイルＩＤ＝（０，１）の注目タイルを登録する。注目文字「日」のエントリも、タイルＩＤ＝（３，０）の注目タイルに対する処理によって登録されているので、現在のタイルＩＤ＝（０，１）の注目タイルを既存エントリに追加する。
【０２８５】
注目文字「は」のエントリは登録されていないので、ＴＲＴに新規登録した上で、タイルＩＤ＝（１，０）の注目タイルが当該エントリに登録される。
【０２８６】
文字列ＩＤ＝０の文字列の一部もしくは全部を含むタイルに対して、以上の処理を繰り返し実行すると、図２１のＴＲＴ２２０３のＳｔｒｉｎｇＩＤ：０に相当するテーブルが生成される。また、文字列ＩＤ＝１が付加された文字列「十二月二十日の月曜日は、」に関する描画コマンドに対しても、同様の処理を実行すると、図２１のＴＲＴ２２０３のＳｔｒｉｎｇＩＤ：１に相当するテーブルが生成される。
【０２８７】
続いて、ＴＲＴを用いた検索結果プレビュー表示の高速化を実現する検索処理について、図２３を用いて説明する。
【０２８８】
図２３は本発明の実施形態５の検索処理を示すフローチャートである。
【０２８９】
尚、図２３において、実施形態４の図１９のフローチャートと同一の処理については、同一のステップ番号を付加して、その詳細については省略する。
【０２９０】
（ステップＳ２４０５）
ステップＳ２００２において、文字列ＩＤが割り当てられた文字列に検索文字列が含まれている場合（ステップＳ２４０２でＹＥＳ）、エントリサーチ処理を実行する。
【０２９１】
（ステップＳ２４０８）
エントリサーチ処理では、まず、検索文字列の各文字に対するエントリ（タイルＩＤ）を、該当する文字列ＩＤのＴＲＴから抽出する（サーチする）。
【０２９２】
（ステップＳ２４０９）
そして、当該抽出（サーチ）されたエントリに対して、検索文字列を含むタイルを抽出する。
【０２９３】
以上の処理によって、実施形態４の図１９のステップＳ２００５のような、すべてのタイルベクタデータを構成するすべてのタイルを走査して、検索条件に合致したタイルを検索する処理を簡略化することができる。つまり、実施形態５では、ＴＲＴのエントリに登録されたタイルのみに対して、検索処理を実行すれば良い。
【０２９４】
具体例として、図２１に示すタイルベクタデータ２２０１がＨＤＤ８内に保存されていて、このタイルベクタデータ２２０１から、検索条件として「日と」という文字列（検索文字列）を検索する場合の処理フローについて、図２３に基づいて説明する。
【０２９５】
尚、ここでは、実施形態４の図１９の処理と、実施形態５の図２３の処理との差異について説明する。
【０２９６】
まず、実施形態４においては、「日と」という文字列の先頭が出現するタイルＩＤ＝（４，２）のタイルまで、すべてのタイルベクタデータを検索していく必要がある。これに対し、実施形態５の場合、ＴＲＴ２２０３のエントリ「日」および「と」が含まれた７つのタイルベクタデータを検索すれば足りる。
【０２９７】
また、タイルＩＤから文字列の連続性を考慮すれば、タイルＩＤ＝（４，２），（５，２）に検索文字列「日と」が含まれることは明白にわかり、検索効率が向上する。即ち、検索に対する応答性を向上させることができる。
【０２９８】
以上説明したように、実施形態５によれば、実施形態１で説明した効果に加えて、ページベクタデータに含まれる文字列の各文字が、タイルベクタデータへの分割時に、いずれのタイルに含まれるか（属するか）を示すタイルリファレンステーブルを生成する。
【０２９９】
これにより、タイルベクタデータとして保持された画像データ内の文字列検索を実行して、その検索結果をプレビュー表示する際には、そのタイルリファレンステーブルを用いることで、検索文字列が含まれるタイルだけを参照して、検索文字列を含むタイルを効率的に抽出することができる。その結果、検索結果表示を高速化することができる。即ち、検索の応答性を向上することできる。
【０３００】
［実施形態６］
実施形態５では、図２３のステップＳ２４０９の検索文字列を含むタイル抽出処理においては、検索文字列の連続性を、文字列の含まれるタイルの位置関係、および、タイル内の文字列データの位置情報から算出して判定する必要がある。
【０３０１】
これに対し、実施形態６では、更に、文字列ＩＤが付加された文字列の、それぞれ隣り合った文字同士の隣接関係（特に、各文字に後続する後続文字）を示す情報を管理する、図２４に示すインデックステーブル（以下、ＩＤＴ）２５０３をシステムメモリ５に生成する。
【０３０２】
このＩＤＴによって、ＴＲＴの各文字エントリに一意のエントリＩＤを割り当てて文字列内の同一文字を別エントリとして登録したものを用いることで、検索文字列の連続性に係る計算を実行することなく、さらに高速な検索を可能とすることができる。
【０３０３】
以下、ＩＤＴとＴＲＴを用いた検索結果のプレビュー応答性の向上の方法について詳細に説明する。ここで、実施形態６の基本的なタイルベクタデータの生成処理は、実施形態５と同様であるため、実施形態６ではその差分のみ説明する。
【０３０４】
ＩＤＴエントリへデータを登録するＩＤＴエントリ登録（ＩＤＴ生成）処理は、図１０のステップＳ６０５のオブジェクトの分割処理で実行される。より詳細には、図１１のステップＳ１４０２とステップＳ１４０３の間で実行される。
【０３０５】
以下、このＩＤＴエントリ登録処理について、図２５を用いて説明する。
【０３０６】
図２５は本発明の実施形態６のＩＤＴエントリ登録処理を示すフローチャートである。
【０３０７】
（ステップＳ２７０１）
上述したように、ＩＤＴの生成は、図１１のステップＳ１４０２とステップＳ１４０３の間で実行される。ここまでの処理過程について補足しておくと、これは、あるページベクタデータの文字列描画に関するコマンドを分割処理するシーケンスである。そして、ステップＳ２７０１の処理に入る段階では、文字列ＩＤは既にステップＳ１４０２で、一意に決定されている。
【０３０８】
ＩＤＴの生成では、まず、文字列ＩＤが付加された文字列の各文字に対して、エントリＩＤを割り当てる。このエントリＩＤは、ＨＤＤ８内に保存されるすべてのタイルベクタデータの各文字に対して一意である必要がある。
【０３０９】
（ステップＳ２７０２）
ＩＤＴエントリ登録処理を実行する。
【０３１０】
（ステップＳ２７０３）
ＩＤＴエントリ登録処理では、まず、ステップＳ１４０２で文字列ＩＤが割り当てられた注目文字列の１文字目を注目文字に設定する。
【０３１１】
（ステップＳ２７０４）
そして、注目文字のインデックスがＩＤＴに登録されているか否かを判定する。登録されていない場合（ステップＳ２７０４でＮＯ）、ステップＳ２７０５へ進む。一方、登録されている場合（ステップＳ２７０４でＹＥＳ）、ステップＳ２７０６へ進む。
【０３１２】
（ステップＳ２７０５→ステップＳ２７０６）
注目文字を、新たなインデックスとしてＩＤＴに登録する。そして、当該新規インデックスに対して、注目文字の後続の１文字とそのエントリＩＤとを組とする情報を登録（追加）する。
【０３１３】
（ステップＳ２７０４→ステップＳ２７０６）
一方、注目文字のインデックスがＩＤＴに登録されている場合、既に登録されているインデックスに対して、注目文字の後続の１文字とそのエントリＩＤとを組とする情報を登録（追加）する。
【０３１４】
（ステップＳ２７０７）
以上のステップＳ２７０４〜ステップＳ２７０６の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合（ステップＳ２７０７でＮＯ）、ステップＳ２７０４へ戻る。一方、処理が終了している場合（ステップＳ２７０７でＹＥＳ）、ＩＤＴエントリ登録処理を終了する。
【０３１５】
以上の処理によって、例えば、図２４の文字列２５０１に対しては、ＩＤＴ２５０３が生成される。
【０３１６】
次に、実施形態６のＴＲＴエントリ登録処理について説明する。
【０３１７】
ＴＲＴエントリ登録処理は、図１０ステップＳ６０５のオブジェクトの分割処理で実行される。より詳細には、図１１のステップＳ１４０４とステップＳ１４０５の間で実行される。
【０３１８】
以下、このＴＲＴエントリ登録処理について、図２６を用いて説明する。
【０３１９】
図２６は本発明の実施形態６のＴＲＴエントリ登録処理を示すフローチャートである。
【０３２０】
尚、図２６において、実施形態５の図２２のフローチャートと同一の処理については、同一のステップ番号を付加して、その詳細については省略する。
【０３２１】
（ステップＳ２６０３）
ステップＳ２００２で注目文字が設定されると、注目文字のＸ／Ｙ方向のＰｏｓｉｔｉｏｎの値が共に正であるか否かを判定する。値が共に正である場合（ステップＳ２６０３でＹＥＳ）、ステップＳ２６０４へ進む。一方、値のいずれかが負である場合（ステップＳ２６０３でＮＯ）、ステップＳ２６０５へ進む。
【０３２２】
（ステップＳ２６０３→ステップＳ２６０５）
注目文字のＸ／Ｙ方向のＰｏｓｉｔｉｏｎの値が共に正である場合は、以前の処理において注目文字のエントリが登録されていないと判断される。そのため、一意のエントリＩＤを割り当てて、当該注目文字を、対応する文字列ＩＤの新たなエントリとしてＴＲＴに登録（追加）する。そして、当該新規エントリに注目タイルを登録（追加）する。
【０３２３】
（ステップＳ２６０３→ステップＳ２６０５）
一方、注目文字のＸ／Ｙ方向のＰｏｓｉｔｉｏｎの値のいずれかが負である場合、以前の処理において既に登録されているエントリに対して、注目タイルを登録（追加）する。
【０３２４】
（ステップＳ２６０６）
以上のステップＳ２６０２〜ステップＳ２６０５の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合（ステップＳ２６０６でＮＯ）、ステップＳ２６０３へ戻る。一方、処理が終了している場合（ステップＳ２６０６でＹＥＳ）、ＴＲＴエントリ登録処理を終了する。
【０３２５】
具体例として、図２１のタイルベクタデータ２２０１を生成する際の、ＴＲＴの生成処理について、図２６に基づいて説明する。
【０３２６】
ここで、処理対象の文字列２５０１（図２４）の各文字には、その上部に図示されるようなエントリＩＤが割り当てられている場合、ＴＲＴ２５０２が生成される。実施形態５の図２１のＴＲＴ２２０３との差分としては、各文字に対するエントリＩＤが一緒に保持されていることと、文字列内の同一文字が別エントリとして登録されていることである（ＴＲＴ２５０２において、同一文字列内で「十」という文字がエントリＩＤ：０と３で重複登録されている）。
【０３２７】
次に、ＴＲＴ及びＩＤＴを用いた検索処理について、図２７を用いて説明する。
【０３２８】
図２７は本発明の実施形態６の検索処理を示すフローチャートである。
【０３２９】
尚、図２７において、実施形態５の図２３のフローチャートと同一の処理については、同一のステップ番号を付加して、その詳細については省略する。
【０３３０】
（ステップＳ２８０５）
ステップＳ２００２において、文字列ＩＤが割り当てられた文字列に検索文字列が含まれている場合（ステップＳ２００２でＹＥＳ）、エントリサーチ処理を実行する。
【０３３１】
（ステップＳ２８０８）
エントリサーチ処理では、まず、検索文字列の最初の文字を注目文字として設定する。
【０３３２】
（ステップＳ２８０９）
そして、検索文字列内の注目文字に後続文字があるか否かを判定する。後続文字がある場合（ステップＳ２８０９でＹＥＳ）、ステップＳ２８１０へ進む。一方、後続文字がない場合（ステップＳ２８０９でＮＯ）、ステップＳ２８１３へ進む。
【０３３３】
（ステップＳ２８１０）
ＩＤＴから注目文字のインデックスをサーチする。
【０３３４】
（ステップＳ２８１１）
当該インデックスに対して、後続文字をもつエントリをサーチして、ヒットしたエントリのもつエントリＩＤを保持する。
【０３３５】
（ステップＳ２８１２）
さらに、注目文字をインクリメントする。そして、ステップＳ２８１０からステップＳ２８１２の処理を、注目文字に対する後続文字がなくなるまで、即ち、注目文字が検索文字列の最終文字に至るまで反復する。
【０３３６】
（ステップＳ２８１３）
一方、注目文字の後続文字がない場合、即ち、検索文字列が１文字の場合、１文字目のエントリＩＤを算出する。
【０３３７】
具体的には、検索文字列が２文字以上からなる場合、ステップＳ２８１１にて、２文字目以降のエントリＩＤはすべて抽出されているので、２文字目のエントリＩＤから１を減じた値を１文字目のエントリＩＤとする。また、検索文字列が１文字からなる場合、当該文字のインデックスに対するエントリのいずれかのエントリＩＤから１を減じた値を１文字目のエントリＩＤとする。
【０３３８】
以上の処理によって、実施形態５の図２３のステップＳ２４０９のような、２文字以上の検索文字列の検索に対して、被検索文字列の連続性を判定して、検索条件に合致したタイルを検索する処理を簡略化することができる。
【０３３９】
これにより、実施形態６では、ＩＤＴのサーチによって、抽出される文字列の各文字のエントリＩＤを容易に特定でき、また、当該抽出したエントリＩＤによってＴＲＴから検索文字列の含まれるタイルのタイルＩＤ、もしくは、その周辺のタイルのタイルＩＤを容易に抽出することができる。
【０３４０】
具体例として、図２１のタイルベクタデータ２２０１がＨＤＤ８内に保存されていて、このタイルベクタデータ２２０１から、検索条件として「九日」という文字列（検索文字列）を検索する場合の処理フローについて、図２７に基づいて説明する。
【０３４１】
尚、ここでは、実施形態５の図２３の処理と、実施形態６の図２７の処理との差異について説明する。
【０３４２】
まず、実施形態５においては、「九日」という文字列の連続性を考慮して当該文字の含まれるタイルＩＤを抽出するために、ＴＲＴから抽出した文字「九」に対するタイルＩＤ＝（２，０）、（３，０）、（２，１）、（３，１）のタイルと、文字「日」に対するタイルＩＤ＝（３，０）、（４，０）、（０，１）、（３，１）、（４，１）、（４，２）のタイルと、各タイルに含まれるベクタデータのＰｏｓｉｔｉｏｎ情報等から２文字の連続性を算出する必要がある。
【０３４３】
これに対して、実施形態６の場合、「九」と「日」の連続性は、ＩＤＴ２５０３から、「４」のエントリＩＤをもつ「九」と、「５」のエントリＩＤをもつ「日」が該当することが容易にサーチできる。そして、ＴＲＴ２５０２のエントリＩＤ「４」及び「５」から、当該文字列の含まれるタイルＩＤが容易に抽出できるので、検索効率が向上する。即ち、検索に対する応答性が向上させることができる。
【０３４４】
以上説明したように、実施形態６によれば、実施形態１で説明した効果に加えて、ページベクタデータに含まれる文字列の各文字に対して、隣接する文字の情報を保持するインデックステーブルを生成する。
【０３４５】
これにより、タイルベクタデータとして保持された画像データ内の文字列検索を実行して、その検索結果をプレビュー表示する際には、そのインデックステーブルを用いることで、検索文字列の連続性を満足するタイルだけを参照して、検索文字列を含むタイルを効率的に抽出することができる。その結果、検索結果表示を高速化することができる。即ち、検索の応答性を向上することできる。
【０３４６】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０３４７】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【０３４８】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０３４９】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０３５０】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０３５１】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０３５２】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０３５３】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０３５４】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０３５５】
【図１】本発明の実施形態１の画像処理システムを構成するＭＦＰのコントローラの詳細を示すブロック図である。
【図２】本発明の実施形態１の画像処理システムでのコピー動作に係るデータフローを示す図である。
【図３】本発明の実施形態１の画像処理システムでのプリント動作に係るデータフローを示す図である。
【図４】本発明の実施形態１の画像処理システムでの送信動作に係るデータフローを示す図である。
【図５】本発明の実施形態１のラスタ／タイルベクタ変換部が実行する処理を示すフローチャートである。
【図６】本発明の実施形態１のネットワークから転送されてくるドキュメントデータの一例を示している。
【図７】本発明の実施形態１のページベクタデータの記述例を示す図である。
【図８】本発明の実施形態１のタイルベクタデータの例を示す図である。
【図９】本発明の実施形態１のタイルベクタデータの記述例を示す図である。
【図１０】本発明の実施形態１のタイル／ページベクタ変換部が実行する処理を示すフローチャートである。
【図１１】本発明の実施形態１のオブジェクトの分割処理の詳細を示すフローチャートである。
【図１２】本発明の実施形態１のオブジェクトの分割処理における、分割文字列データをタイルベクタデータに追加する際の中間データ例を示す図である。
【図１３】本発明の実施形態１のオブジェクトの分割処理における、分割図形データをタイルベクタデータに追加する際の中間データ例を示す図である。
【図１４】本発明の実施形態１のオブジェクトの分割処理における、中間データをタイルベクタデータの座標空間に座標変換を実行した後のデータを示す図である。
【図１５】本発明の実施形態１のオブジェクトの結合処理の詳細を示すフローチャートである。
【図１６】本発明の実施形態１のオブジェクトの結合処理を具体的に説明するための図である。
【図１７】本発明の実施形態１の画像データ展開部が実行する処理を示すフローチャートである。
【図１８】本発明の実施形態２の画像処理システムでの送信動作に係るデータフローを示す図である。
【図１９】本発明の実施形態４の検索処理を示すフローチャートである。
【図２０】本発明の実施形態４のプレビュー画像表示例を示す図である。
【図２１】本発明の実施形態５のタイルベクタデータと、文字列ＩＤと、タイルリファレンステーブルとの関係を説明するための図である。
【図２２】本発明の実施形態５のＴＲＴエントリ登録処理を示すフローチャートである。
【図２３】本発明の実施形態５の検索処理を示すフローチャートである。
【図２４】本発明の実施形態６のタイルベクタデータと、タイルリファレンステーブルと、インデックステーブルとの関係を説明するための図である。
【図２５】本発明の実施形態６のＩＤＴエントリ登録処理を示すフローチャートである。
【図２６】本発明の実施形態６のＴＲＴエントリ登録処理を示すフローチャートである。
【図２７】本発明の実施形態６の検索処理を示すフローチャートである。
【図２８】従来の画像処理システムの構成を示す図である。
【符号の説明】
【０３５６】
１  コントローラ
２  システムバスブリッジ
３  ＣＰＵ
４  メモリコントローラ
５  システムメモリ
６  汎用バス
７  ハードディスクコントローラ
８  ハードディスクドライブ
９  操作部コントローラ
１０  操作部
１１  ネットワークＩ／Ｆ
１２  ネットワーク
１３  タイル／ページベクタ変換部
１４  ラスタ／タイルベクタ変換部
１５  画像処理部
１６  スキャナ
１７  プリンタ
１８  画像データ展開部
１８ａ〜１８ｄ  小画像データ展開部
１９  ローカルメモリ
【図１】
2006331308.tif 000003
【図２】
2006331308.tif 000004
【図３】
2006331308.tif 000005
【図４】
2006331308.tif 000006
【図５】
2006331308.tif 000007
【図６】
2006331308.tif 000008
【図７】
2006331308.tif 000009
【図８】
2006331308.tif 000010
【図９】
2006331308.tif 000011
【図１０】
2006331308.tif 000012
【図１１】
2006331308.tif 000013
【図１２】
2006331308.tif 000014
【図１３】
2006331308.tif 000015
【図１４】
2006331308.tif 000016
【図１５】
2006331308.tif 000017
【図１６】
2006331308.tif 000018
【図１７】
2006331308.tif 000019
【図１８】
2006331308.tif 000020
【図１９】
2006331308.tif 000021
【図２０】
2006331308.tif 000022
【図２１】
2006331308.tif 000023
【図２２】
2006331308.tif 000024
【図２３】
2006331308.tif 000025
【図２４】
2006331308.tif 000026
【図２５】
2006331308.tif 000027
【図２６】
2006331308.tif 000028
【図２７】
2006331308.tif 000029
【図２８】
2006331308.tif 000030