JP2006331308A - 画像処理装置及びその制御方法、プログラム - Google Patents
画像処理装置及びその制御方法、プログラム Download PDFInfo
- Publication number
- JP2006331308A JP2006331308A JP2005157608A JP2005157608A JP2006331308A JP 2006331308 A JP2006331308 A JP 2006331308A JP 2005157608 A JP2005157608 A JP 2005157608A JP 2005157608 A JP2005157608 A JP 2005157608A JP 2006331308 A JP2006331308 A JP 2006331308A
- Authority
- JP
- Japan
- Prior art keywords
- image data
- character string
- vector image
- tile
- page
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Abstract
【課題】 ページベクタデータとタイルベクタデータを利用する環境において、特に、タイルベクタデータからページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる画像処理装置を提供する。
【解決手段】 画像入力部から画像データを入力して、画像出力部から出力する場合は、入力される画像データの形式に基づいて、第1変換部あるいは第3変換部を実行させて、得られる画像データを記憶部に記憶させ、記憶部に記憶された画像データの形式に基づいて、第2変換部あるいは展開部を実行させて、得られる画像データを画像出力部から出力させるように、装置内での処理対象の画像データの転送を制御する。
【選択図】 図1
【解決手段】 画像入力部から画像データを入力して、画像出力部から出力する場合は、入力される画像データの形式に基づいて、第1変換部あるいは第3変換部を実行させて、得られる画像データを記憶部に記憶させ、記憶部に記憶された画像データの形式に基づいて、第2変換部あるいは展開部を実行させて、得られる画像データを画像出力部から出力させるように、装置内での処理対象の画像データの転送を制御する。
【選択図】 図1
Description
本発明は、入力された画像データに対して画像処理を施して管理する画像処理装置及びその制御方法、プログラムに関するものである。
ネットワーク上に接続され、外部あるいは内部の画像データに対する画像データ処理を実行し、その処理した画像データを出力する画像データ入出力システムが知られている。
この画像データ入出力システムとしては、MFP(Multi Function Peripheral)と呼ばれるものがある。
ここで、従来のMFPを制御するコントローラ100を図28に示す。コントローラ100は、システムバスブリッジ(SBB)101により、CPU102、メモリコントローラ(MC)103、汎用バス105、画像処理部110、画像データ展開部(RIP(Raster Image Processor))113が接続されている。
汎用バス105には、画像データを蓄積するための:大容量記憶部(HDD(ハードディスクドライブ))107を制御するハードディスクコントローラ(HDDCont)106、MFPが接続されているネットワーク108を介して、外部機器間との画像データの転送を行うインターフェースになるネットワークI/F109が接続されている。この画像データとしては、ページベクタ形式(PDL(ページ記述言語)、PDF、SVG等)の画像データがある。
HDDCont106には、HDD(ハードディスクドライブ)107が接続されており、画像データの記憶媒体として使われる。同様に、MC103には、システムメモリ(Memory)104が接続されており、画像データを一時記憶するための媒体として使われる。システムメモリ104には、一般的には、DIMMが用いられる。
画像処理部110には、スキャナ111及びプリンタ112が接続されている。スキャナ111から入力された画像データは、画像処理部110によって所定の画像処理が実施された後、コントローラ100へ入力される。また、コントローラ100内に記憶されている画像データは、画像処理部110によって所定の画像処理が実施され、プリンタ112へ出力される。
コントローラ100でハンドリングされる画像データは、ネットワーク経由での外部機器との入出力はページベクタ形式(PDLやPDF、SVG等)、スキャナ111やプリンタ112との入出力はラスタデータ形式でインターフェースされる。外部機器から入力されたページベクタ形式の画像データは、CPU102により、プリミティブなオブジェクトにインタプリットされ、DL(DisplayList)と呼ばれる中間データ(DLデータ)に変換されてから、RIP113に入力される。
これらの画像データはコントローラ100の内部のシステムメモリ104に一旦記憶される。そのため、システムメモリ104上には、ラスタデータ、ページベクタデータ(PDL等)、DLデータ等の多種類のデータが存在する。
HDD107には、画像データとしてスキャナ113から入力された画像データとRIP113でレンダリングされたラスタ画像データが記憶される。
特開2004−120639号公報
上述のようなMFPが扱う画像データの中でも、ラスタ画像データはデータサイズが大きい。そのため、システムメモリ104のメモリサイズや、汎用バス105及びHDDCont106−HDD107間のバンド幅等のシステム・リソースを多く消費する。
これに加え、PDLデータ等のページベクタデータでは、システム中でインタプリットを行い、描画オブジェクトを生成するDLデータに展開する。その際、DLデータをシステムメモリ104にスプールするため、それによるメモリリソースの消費量も莫大なものとなっている。
一方、最近はユーザの出力画像の画質要求がますます高くなり、その解決策の1つとして、画像データに対する高解像度化(高画質化)が促進されている。また、画質と並行してシステムの処理速度向上も要求されている。
そのため、上述の様々な要求仕様を満足するために必要なシステム・リソースが肥大化してしまう。従って、プロダクトのコストパフォーマンスでの折り合いをつけることが課題となっている。
また、このプロダクトのコストパフォーマンスに対する課題とは別に、複雑、多様化するシステムを開発するための人的リソースの問題も解決することが要求されている。そして、これを満足するためには、様々な要求仕様に対し、1つの基本システムをスケーラブルな形で構成することにより、製品ラインナップを効率良く整備することが課題となっている。
例えば、図28における画像処理部110やRIP113等のモジュールを、ハイエンドな機種では複数個実装し、分散処理できるようなシステムが必要となってくる。
他方、オフィスにおいてはペーパーレス化が進行しており、紙の出力物と電子データをシームレスに扱えるような要求も生まれてきている。そのためには、紙と電子データとのI/F機器であるMFPにおいても、例えば、蓄積画像データの検索性の向上や、ラスタ画像データをオブジェクト化して再利用可能なオブジェクトデータに変換する、POD(Print On Demand)印刷に対応するために画像加工を高速化する、といったよりインテリジェントな機能を持つことが必要となっている。
ところで、上述のようなMFPにおける課題を解決する構成として、以下のようなものが提案されている。
・MFP内のデータ処理を高速化するために、システム内をベクトルデータでハンドリングする。
・MFP内のページベクタデータをタイル化(変換)してタイルベクタデータを生成することにより、データ処理時間を高速化するとともに、並列処理に適応させる。
・外部機器に出力する時は、タイルベクタデータをページベクタデータに戻してから出力することにより再利用性を高める。
ここで、このようなMFPにおいては、ページベクタデータをタイルベクタデータに変換する際に、ページベクタデータ内に含まれている文字列を分割し、文字の一部もしくは全部がタイル内に含まれる文字のみを、変換後の各タイルベクタデータに持たせる構成となっている。
しかしながら、この構成では、ページベクタデータ時に文字列として存在していた情報が、タイルベクタデータへの変換後には、その文字列が複数の文字列に分割されてしまうことになる。そのため、タイルベクタデータをページベクタデータに再結合した際に、タイルデータの境界をまたぐ文字列の連続性が失われてしまうため、検索性が落ちるという課題がある。
より具体的に説明すると、例えば、ページベクタデータ中に存在する「あいうえお」という文字列が、タイルベクタデータへの変換処理によって、「あい」と「うえお」という2つの文字列をそれぞれ有する、2つのタイルベクタデータに分割されたものとする。
この場合、元のページベクタデータにおいて存在した「あい」と「うえお」の連続性が失われてしまうため、ページベクタデータに再結合した際に、「いう」という文字列の検索ができない。
この課題は、特に、ページベクタデータを、MFPから他のホストコンピュータへファイルとして送信した場合や、HDD内に保存したタイルベクタデータから所定の文字列を検索する場合に、大きな問題となる。
本発明は上記の課題を解決するためになされたものであり、ページベクタデータとタイルベクタデータを利用する環境において、特に、タイルベクタデータからページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる画像処理装置及びその制御方法、プログラムを提供することを目的とする。
上記課題を解決するための本発明による画像処理装置は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがラスタ画像データである場合は前記第1変換手段でブロックベクタ画像データに変換させ、前記入力手段から入力された画像データがページベクタ画像データである場合は前記第2変換手段でブロックベクタ画像データに変換させ、前記第1変換手段あるいは前記第2変換手段を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第2変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段と
を備える。
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがラスタ画像データである場合は前記第1変換手段でブロックベクタ画像データに変換させ、前記入力手段から入力された画像データがページベクタ画像データである場合は前記第2変換手段でブロックベクタ画像データに変換させ、前記第1変換手段あるいは前記第2変換手段を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第2変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段と
を備える。
上記課題を解決するための本発明による画像処理装置は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがページベクタ画像データである場合は前記第2変換手段でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第2変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する。
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがページベクタ画像データである場合は前記第2変換手段でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第2変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する。
上記課題を解決するための本発明による画像処理装置の制御方法は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換工程と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力部から入力された画像データがラスタ画像データである場合は前記第1変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させ、前記第1変換工程あるいは前記第2変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第2変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を備える。
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換工程と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力部から入力された画像データがラスタ画像データである場合は前記第1変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させ、前記第1変換工程あるいは前記第2変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第2変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を備える。
上記課題を解決するための本発明によるプログラムは以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換工程のプログラムコードと、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力部から入力された画像データがラスタ画像データである場合は前記第1変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させ、前記第1変換工程あるいは前記第2変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、制御する制御工程のプログラムコードとを備え、
前記第2変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成するための生成工程のプログラムコードを備える。
入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換工程のプログラムコードと、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力部から入力された画像データがラスタ画像データである場合は前記第1変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させ、前記第1変換工程あるいは前記第2変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、制御する制御工程のプログラムコードとを備え、
前記第2変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成するための生成工程のプログラムコードを備える。
本発明によれば、ページベクタデータとタイルベクタデータを利用する環境において、特に、タイルベクタデータからページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる画像処理装置及びその制御方法、プログラムを提供できる。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
[実施形態1]
[MFP装置概要]
図1は本発明の実施形態1の画像処理システムを構成するMFPのコントローラの詳細を示すブロック図である。
[MFP装置概要]
図1は本発明の実施形態1の画像処理システムを構成するMFPのコントローラの詳細を示すブロック図である。
MFP1000を制御するコントローラ1は、システムバスブリッジ(SBB)2により、CPU3、メモリコントローラ(MC)4、汎用バス6、タイル/ページベクタ変換部13、ラスタ/ベクタ変換部14、画像処理部15、画像データ展開部(RIP)18が接続されている。
ここで、このRIP18は、タイルベクタデータを展開することが可能であり、内部には、複数の小画像データ展開部(μRIP)18a〜18dが構成されている。
MC4には、システムメモリ(Memory)5が接続されており、画像データを一時記憶するための媒体として使われる。
汎用バス6には、画像データを蓄積するためのHDD8を制御するハードディスクコントローラ(HDDCont)7及び操作部(例えば、LCD等から構成されるタッチパネル)10を制御する操作部コントローラ9及び、MFP1000が接続されているネットワーク12を介して、外部機器間との画像データの転送を行うインターフェースになるネットワークI/F11が接続されている。
尚、操作部10では、実施形態1及び後述する各実施形態の各種処理の実行指示の入力や、処理結果等を表示するための操作画面が表示され、ユーザは、この操作画面を介して各種操作を実現することができる。
ラスタ/タイルベクタ変換部14には、画像処理部15が接続されている。また、画像処理部15には、スキャナ16及びプリンタ17が接続されている。
また、SBB2には、RIP18が接続されている。また、RIP18には、RIP18から出力されるデータを記憶するローカルメモリ(LocalMemory)19が接続されている。
コントローラ1でハンドリングされる画像データは、外部機器との入出力はベクタ(PDL、PDF、SVGなど)形式の画像データ(以下、ベクタデータとも言う)、スキャナ16やプリンタ17との入出力はラスタ形式の画像データ(以下、ラスタデータとも言う)でインターフェースされる。
コントローラ1では、スキャンデータ(ラスタデータ)はラスタ/タイルベクタ変換部14でタイルベクタデータに変換される。また、このタイルベクタデータからRIP18の処理によって得られるタイルDLデータは、RIP18に接続されたローカルメモリ19に記憶される。
従って、システムメモリ5上には、ページベクタデータとタイルベクタデータの2種類の画像のみが記憶される。つまり、画像サイズの大きいラスタデータ及びDLデータをシステムメモリ5に記憶する必要がなくなる。そのため、システムメモリ5上で確保しなければならない画像データ領域を削減することができる。
また、RIP18から出力されるDLデータはタイル単位に分割された、タイルDLデータで記憶される。そのため、従来のページ単位のページDLデータに比べ、非常に少ないメモリ容量で記憶できる。従って、ローカルメモリ19はオンチップ上に実装することが可能になり、メモリレイテンシを小さくできる。その結果、タイルデータ展開速度を高速化することが可能となる。
また、タイルベクタデータのみを画像データとして、HDD8上に記憶すれば良いので、HDD8へのアクセス速度のボトルネックが緩和され、データ処理の高速化が図れる。同時に、タイル単位で処理することにより、RIP18のコストダウンも可能となる。
より高い処理能力が要求される場合は、RIP18内に備えるμRIP18a〜18dを並列に複数実装することで、処理能力を可変にすることができる。このようにすることで、コントローラ1の処理能力がシンプルに調整できることから、スケーラビリティの確保が容易なシステムを構築できる。
尚、本発明では、ネットワークI/F11及びスキャナ16がコントローラ1内へ画像データを入力する画像入力部として機能する。また、ネットワークI/F11及びプリンタ17が画像データを出力する画像出力部として機能する。
以下に、MFP1000が実現可能な各種処理のデータフローについて説明する。
[コピー]
図2は本発明の実施形態1の画像処理システムでのコピー動作に係るデータフローを示す図である。
図2は本発明の実施形態1の画像処理システムでのコピー動作に係るデータフローを示す図である。
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
また、図2中に示す矢印は、各種データフローを示している。特に、実線矢印はラスタデータ(ラスタ画像データ)、破線矢印はタイルベクタデータ(タイルベクタ画像データ)、1点鎖線矢印はページベクタデータ(ページベクタ画像データ)のデータフローを示している。ページベクタデータ及びタイルベクタデータについては、後述のタイル/ページベクタ変換部13で詳細に説明する。
(S21):操作部10より、ユーザがコピー開始を指示すると、スキャナ16は原稿画像の読取動作を開始する。スキャナ14より画像処理部15へ入力された画像(R、G、B画像)は画像処理部15のクロック同期に周波数変換された後、例えば、以下の処理が実行される。
1)スキャナ16内のCCDセンサのラインピッチや色収差等のスキャナ特性の補正処理
2)色空間補正やシャープネス等の入力画像データの画質補正処理
3)入力画像データの枠消やブック枠消等の画像加工処理
(S22):画像処理部15による画像処理が終了し、画像処理部15から出力された画像データはラスタ/タイルベクタ変換部14に入力され、タイルベクタ変換処理が実行される。即ち、ラスタ/タイルベクタ変換部14は、画像データを所定の大きさのブロック(タイル)に分割する。そして、各ブロック内のラスタデータに対して、ベクトル化処理を実行して、ブロック(タイル)単位のベクタデータ(タイルベクタデータ(ブロックベクタデータ))を生成する。
2)色空間補正やシャープネス等の入力画像データの画質補正処理
3)入力画像データの枠消やブック枠消等の画像加工処理
(S22):画像処理部15による画像処理が終了し、画像処理部15から出力された画像データはラスタ/タイルベクタ変換部14に入力され、タイルベクタ変換処理が実行される。即ち、ラスタ/タイルベクタ変換部14は、画像データを所定の大きさのブロック(タイル)に分割する。そして、各ブロック内のラスタデータに対して、ベクトル化処理を実行して、ブロック(タイル)単位のベクタデータ(タイルベクタデータ(ブロックベクタデータ))を生成する。
生成されたタイルベクタデータは、SBB2によりバスの調停を受け、システムメモリ5へのバス権を取得し、MC4を介して、システムメモリ5に記憶される。(尚、SBB2経由でデータパスが接続される場合は、基本的にバスの調停を受け、バス権を取得する手続きを踏むが、以降のフロー説明では省略する。)
(S23):システムメモリ5に記憶されたタイルベクタデータは、HDDCont7とMC4を介して、SBB2経由でHDD8に記憶される。HDD8にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP1000内に保存画像データとして記憶したりすることができる。
(S23):システムメモリ5に記憶されたタイルベクタデータは、HDDCont7とMC4を介して、SBB2経由でHDD8に記憶される。HDD8にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP1000内に保存画像データとして記憶したりすることができる。
(S24):HDD8に記憶されたタイルベクタデータは、プリンタ17内のプリンタCPU(不図示)から送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出され、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
仮に、読み取ったタイルベクタデータをHDD8からダイレクトにプリンタ17へ出力する場合、HDD8のアクセススピードが律則したり、汎用バス6のバスの混雑度合によりプリンタ17に同期して出力することが保証できなくなる。そのため、プリンタ17に同期してデータ転送を行う前に、システムメモリ5にページベクタデータをスプールしておくことで、リアルタイムなスループットを保証する。
(S25):システムメモリ5に記憶されたタイルベクタデータは、プリンタ17からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
RIP18では、まず、タイルベクタデータを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を実行する。生成されたタイルDLデータはローカルメモリ19に一旦記憶される。
RIP18はローカルメモリ19からタイルDLデータを読み出して、タイル単位のラスタデータ(タイルラスタデータ)へと展開し、出力する。
実施形態1では、上述のように、RIP18内に4つの小画像データ展開部(μRIP)18a〜18dを備えている。コントローラ1は、μRIP18a〜μRIP18dを並列に動作させることにより、タイルベクタデータの展開を高速に行わせることができる。
ここで、画像処理システムの全体パフォーマンスは、ベクタデータ展開時間が支配的であり、このμRIPの構成数を増やすことで、パフォーマンスアップが見込める。そのため、本発明のような構成を用いると、その構成数あるいは動作させる構成数を増減させることで、容易にスケーラブルなシステムを構築することが可能となる。
(S26):RIP18によって生成されたタイルラスタデータは、画像処理部15に転送され、例えば、以下の処理が実行される。
1)タイルラスタデータからページラスタデータへの変換処理
2)プリンタの特性に合わせた出力画像の色や濃度の補正処理
3)画像データを量子化して出力画像の階調変換を行う中間調処理
4)プリンタI/Fクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部15で、1)〜4)の画像処理が実行されて得られたラスタデータは、プリンタ17に転送され、記録媒体上に印刷され出力される。
2)プリンタの特性に合わせた出力画像の色や濃度の補正処理
3)画像データを量子化して出力画像の階調変換を行う中間調処理
4)プリンタI/Fクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部15で、1)〜4)の画像処理が実行されて得られたラスタデータは、プリンタ17に転送され、記録媒体上に印刷され出力される。
[プリント]
図3は本発明の実施形態1の画像処理システムでのプリント動作に係るデータフローを示す図である。
図3は本発明の実施形態1の画像処理システムでのプリント動作に係るデータフローを示す図である。
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
(S31):ネットワーク12に接続された外部機器より、汎用バス6に接続されたネットワークI/F11がページベクタデータを受信する。そして、SBB2の先に接続されたMC4を介してシステムメモリ5に転送する。
(S32):システムメモリ5に記憶されたページベクタデータは、タイル/ページベクタ変換部13より読み出され、タイルベクタ変換処理が実行される。即ち、タイル/ページベクタ変換部は、ページベクタデータ内に存在するオブジェクトを所定の大きさのブロック(タイル)内に収まるオブジェクトに分割する。そして、タイル単位のベクタデータ(タイルベクタデータ)を生成する。
(S33):生成されたタイルベクタデータは、SBB2を介して再度システムメモリ5に記憶される。
(S34):システムメモリ5に記憶されたタイルベクタデータは、HDDCont7とMC4を介して、SBB2経由でHDD8に記憶される。HDD8にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP1000内に保存画像データとして記憶したりすることができる。
(S35):HDD8に記憶されたタイルベクタデータは、プリンタ17内のCPU(不図示)から送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出され、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
読み取ったタイルベクタデータをHDD8からダイレクトにプリンタ17へ出力する場合、HDD8のアクセススピードが律則したり、汎用バス6のバスの混雑度合によりプリンタ17に同期して出力することが保証できなくなる。そのため、プリンタ17に同期してデータ転送を行う前に、システムメモリ5に1ページ分のベクタ画像データをスプールすることにより、リアルタイムなスループットを保証する。
(S36):システムメモリ5に記憶されたタイルベクタデータは、プリンタ17からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
RIP18では、まず、タイルベクタデータを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を実行する。生成されたタイルDLデータはローカルメモリ19に一旦記憶される。
RIP18はローカルメモリ19からタイルDLデータを読み出して、タイル単位のラスタデータ(タイルラスタデータ)へと展開し、出力する。
(S37):RIP18によって生成されたタイルラスタデータは、画像処理部15に転送され、例えば、以下の処理が実行される。
1)タイルラスタデータからページラスタデータへの変換処理
2)プリンタの特性に合わせた出力画像の色や濃度の補正処理
3)画像データを量子化して出力画像の階調変換を実行する中間調処理
4)プリンタI/Fクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部15で、1)〜4)の画像処理が実行されて得られたラスタデータは、プリンタ17に転送され、記録媒体上に印刷され出力される。
2)プリンタの特性に合わせた出力画像の色や濃度の補正処理
3)画像データを量子化して出力画像の階調変換を実行する中間調処理
4)プリンタI/Fクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部15で、1)〜4)の画像処理が実行されて得られたラスタデータは、プリンタ17に転送され、記録媒体上に印刷され出力される。
[送信]
図4は本発明の実施形態1の画像処理システムでの送信動作に係るデータフローを示す図である。
図4は本発明の実施形態1の画像処理システムでの送信動作に係るデータフローを示す図である。
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
また、画像データをHDD8に格納するまでのデータフローについては、ラスタデータの場合は[コピー]と、ネットワーク12上の外部機器からの入力されたページベクタデータの場合は[プリント]と同一であるので、その説明は割愛する。
尚、画像データをHDD8に格納する処理は、ユーザからの格納指示によって実行されるようにしてもよいし、[コピー]や[プリント]の処理の際にHDD8に自動的に残しておくようにしてもよい。このようにして、HDD8に格納された画像データの中から、ユーザによって指定された画像データを送信するように指示された際に行われる送信処理について説明する。
(S41):HDD8に記憶されたタイルベクタデータはSBB2を介して、汎用バス6に接続されたHDDCont7より読み出され、システムメモリ5に一時的に記憶される。
(S42):システムメモリ5に記憶されたタイルベクタデータは、タイル/ページベクタ変換部13より読み出され、タイルベクタ変換処理を実行する。即ち、ブロック単位に分割されたオブジェクトを結合し、ページ全体でオブジェクトを記述したページベクタデータを生成する。
(S43):生成されたページベクタデータは、SBB2を介して再度システムメモリ5に記憶される。
(S44):システムメモリ5中に記憶されたページベクタデータは、汎用バス6に接続されたネットワークI/F11から読み出され、ネットワーク12に接続された外部機器へと送信転送される。
本発明のように、外部機器に送信する際に、タイルベクタデータをページベクタデータに戻して、そのデータを構成するオブジェクト数を減らすことで、送信データ量を削減することができる。また、PDFやSVG等の汎用フォーマットへ容易に変換することができる。
尚、本発明では、スキャナ16から入力したラスタデータを、外部機器に送信することも可能である。この場合は、そのラスタデータをページベクタに変換してから、外部機器へ送信することが好ましい。
[ラスタ/タイルベクタ変換部]
次に、ラスタ/タイルベクタ変換部14の処理の詳細について説明する。
次に、ラスタ/タイルベクタ変換部14の処理の詳細について説明する。
図5は本発明の実施形態1のラスタ/タイルベクタ変換部が実行する処理を示すフローチャートである。
(ステップS51:ブロックセレクション(領域分割:BS)処理)
画像処理部15より入力されたラスタデータ(イメージデータ)を、文字あるいは線画を含む文字・線画領域と、ハーフトーンの写真領域、不定形の画像領域その他に分割する。さらに、文字・線画領域については、主に文字を含む文字領域と、主に表、図形等を含む線画領域とに分離し、線画領域は表領域と図形領域に分割する。
画像処理部15より入力されたラスタデータ(イメージデータ)を、文字あるいは線画を含む文字・線画領域と、ハーフトーンの写真領域、不定形の画像領域その他に分割する。さらに、文字・線画領域については、主に文字を含む文字領域と、主に表、図形等を含む線画領域とに分離し、線画領域は表領域と図形領域に分割する。
尚、実施形態1では、処理対象中の画像の連結画素を検知し、その連結画素の外接矩形領域の形状・サイズ・画素密度等の特徴量を用いて、属性毎の領域に分離するものとするが、その他の領域分割手法を用いても構わない。
文字領域については、文字段落ごとの纏まった塊をブロックとして矩形ブロック(文字領域矩形ブロック)にセグメント化する。線画領域では、表、図形等の個々のオブジェクト(表領域矩形ブロック、線画領域矩形ブロック)ごとに矩形ブロックにセグメント化する。
ハーフトーンで表現される写真領域は、画像領域矩形ブロック、背景領域矩形ブロック等のオブジェクトごとに、矩形ブロックにセグメント化する。
分離された各領域は、さらに所定の大きさの領域(タイル)単位に分割され、タイル単位で、次のベクトル化処理でベクトル化される。
(ステップS52:ベクトル化処理)
ベクトル化処理により、各属性の領域のイメージデータをベクトルデータに変換する(ベクトル化する)。ベクトル化の方法は、例えば、以下、(a)〜(f)等が存在する。
ベクトル化処理により、各属性の領域のイメージデータをベクトルデータに変換する(ベクトル化する)。ベクトル化の方法は、例えば、以下、(a)〜(f)等が存在する。
(a)属性領域が文字領域のとき、さらにOCRによる文字画像のコード変換を行ったり、あるいは文字のサイズ、スタイル、字体を認識し、原稿を走査して得られた文字に可視的に忠実なフォントデータに変換する。
(b)属性領域が文字領域であり、かつOCRによる認識が不可能であったとき、文字の輪郭を追跡し、輪郭情報(アウトライン)を線分のつながりとして表現する形式に変換する。
(c)属性領域が図形領域のとき、図形オブジェクトの輪郭を追跡し、輪郭情報を線分のつながりとして表現する形式に変換する。
(d)(b)及び(c)の線分形式のアウトライン情報をベジエ関数等でフィッティングして、関数情報に変換する。
(e)(c)の図形オブジェクトの輪郭情報から、図形の形状を認識し、円、矩形、多角形、等の図形定義情報に変換する。
(f)属性領域が図形領域であって、特定領域の表形式のオブジェクトの場合、罫線や枠線を認識し、所定のフォーマットの帳票フォーマット情報に変換する。
(ステップS53:タイルベクタデータ生成処理)
ステップS52で、(a)〜(f)のフォーマットコード情報、図形情報、関数情報等のコマンド定義形式情報にベクトル変換されたデータに対し、コントローラ1内でページベクタデータかタイルベクタデータかを判別するベクタタイプや、当該タイルのページ内の座標位置等の座標情報を判別するためのヘッダ情報を付加した、タイルベクタデータを生成する。このようにして、タイル単位に各種情報が付加されたタイルベクタデータをSBB2へ出力する。
ステップS52で、(a)〜(f)のフォーマットコード情報、図形情報、関数情報等のコマンド定義形式情報にベクトル変換されたデータに対し、コントローラ1内でページベクタデータかタイルベクタデータかを判別するベクタタイプや、当該タイルのページ内の座標位置等の座標情報を判別するためのヘッダ情報を付加した、タイルベクタデータを生成する。このようにして、タイル単位に各種情報が付加されたタイルベクタデータをSBB2へ出力する。
(ステップS54:終了判定処理)
処理対象のラスタデータの有無を判定する。処理対象のラスタデータがある場合(ステップS54でNO)、ステップS51に戻る。一方、処理対象のラスタデータがない場合(ステップS54でYES)、処理を終了する。
処理対象のラスタデータの有無を判定する。処理対象のラスタデータがある場合(ステップS54でNO)、ステップS51に戻る。一方、処理対象のラスタデータがない場合(ステップS54でYES)、処理を終了する。
[タイル/ページベクタ変換部]
次に、タイル/ページベクタ変換部13の処理の詳細を説明するにあたり、処理対象となるドキュメントデータ(画像データ)について説明する。
次に、タイル/ページベクタ変換部13の処理の詳細を説明するにあたり、処理対象となるドキュメントデータ(画像データ)について説明する。
図6は本発明の実施形態1のネットワークから転送されてくるドキュメントデータの一例を示している。
図6では、ドキュメントデータ801の短手方向を「X」方向、長手方向を「Y」方向とするデバイス座標系を定義する。ドキュメントデータ801としては、ページベクタデータ、タイルベクタデータ、あるいはラスタデータ表現を含むページベクタデータ(タイルベクタデータ)、あるいはラスタデータのいずれかで構成される可能性がある。
ここで、ドキュメントデータ801が、ページベクタデータである場合、その内容を構成する記述例について、図7を用いて説明する。
図7は本発明の実施形態1のページベクタデータの記述例を示す図である。
図7において、901はドキュメントデータ全体の設定に関わるドキュメント設定命令部分、902及び903は文字の描画命令部分、904は図形の描画命令部分を示している。905は図6の色付きの1/4円における図形の描画命令部分、906は図6の3/4円における図形の描画命令部分を示している。
各描画命令部分の詳細について説明する。
ドキュメント設定命令部分901において、C1〜C5は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドC1〜C5は、ドキュメント1部について1ヶ所しか付いていない。
これらドキュメントデータ全体に関係するコマンドには、例えば、キャラクタセットコマンド(フォント指定コマンド)、スケーラブルフォントコマンド(スケーラブルフォントを使用するか否かを指定するコマンド)、ハードリセットコマンド(以前のプリンタ使用環境をリセットするコマンド)等がある。
ここで、C1はドキュメント設定開始コマンドである。C2はドキュメントデータの出力用紙サイズを示すコマンドであり、この場合には、A4に設定されている。C3はドキュメントデータの方向を示すコマンドである。ここでは、ポートレートとランドスケープがあるが、この場合にはポートレート(PORT)に設定されている。
C4はドキュメントデータのタイプを示すコマンドであり、ページベクタで構成されるドキュメントデータであるかタイルベクタで構成されるドキュメントデータであるかを示している。この場合には、ページ(PAGE)に設定されている。C5はドキュメント設定終了コマンドである。
文字の描画命令部分902及び903、及び図形の描画命令部分904を構成するC6〜C27は、ドキュメントデータを出力するための各種コマンドである。
C6はページの開始を示すコマンドである。C7は文字のフォントの種類を選択するためのコマンドであり、この場合には「1」という番号の付けられたフォントセットに設定されている。C8はフォントの大きさを設定するコマンドであり、この場合には「10ポイント」の大きさに設定されている。
C9は文字の色を設定するコマンドであり、順にR(赤),G(緑),B(青)各色成分の輝度を示してある。この輝度は、例えば、0から255の256段階で量子化されているものとする。この場合は、{0,0,0}に設定されている。C10は文字を描画する開始位置の座標を示すコマンドである。座標位置(X,Y)は、ページの左上を原点に指定する。この場合は、ページの{10,2}の位置から文字の描画を開始するように設定されている。C11は実際に描画する文字列(あいうえおかきくけこさしすせそたちつてと)を示すコマンドである。
また、C12〜C16は、C7〜C11までのコマンドと同様に、フォントセット、フォントの大きさ、文字の色等を示すコマンドである。
C17は図形描画の際の面の塗りつぶしの色を示すコマンドである。色の指定は、文字の色と同様である。C18は図形描画の線の色を指定するコマンドである。C19は図形を描画する位置の座標を示すコマンドである。
C20は円弧を描画する際の半径を指定するコマンドであり、この場合、「10」座標単位を示している。C21は閉円弧の描画をするコマンドである。コマンド内の2個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を0度として、この場合には0度から90度の円弧を描画することを示している。
C22〜C26は、C17〜C21までのコマンドと同様に、図形描画の際の面、線の色の指定、位置の指定等のコマンドである。C27はページの終了を示すコマンドである。
一方、ドキュメントデータ801がタイルベクタデータである場合について、図8を用いて説明する。
図8は本発明の実施形態1のタイルベクタデータの例を示す図である。
図8では、図6のドキュメントデータ801(ページベクタデータ)を、ブロック(タイル)単位で分割したタイルベクタデータ(ドキュメントデータ1001)の一例を示している。
図8では、ドキュメントデータ1001の短手方向を「X」方向、長手方向を「Y」と定義する。また、図中のX方向に配列された数列は、X方向のタイルID、Y方向に配列された数列は、Y方向のタイルIDを表す。A〜Eは、それぞれタイルID=(0,0)、(1,0)、(2,0)、(2、4)、(1,5)の位置にあるタイルベクタを示している。
ここで、このドキュメントデータ1001が、タイルベクタデータである場合、その内容を構成する記述例について、図9を用いて説明する。
図9は本発明の実施形態1のタイルベクタデータの記述例を示す図である。
図9において、1101はドキュメントデータ全体の設定に関わるドキュメント設定命令部分、1102は描画命令部分全体、1103〜1107はタイルA,B,C,D,Eの描画命令部分を示している。1108、1109はそれぞれタイルEの文字の描画命令部分、図形の描画命令部分を示している。
各描画命令の詳細について説明する。
ドキュメント設定命令部分1101において、C1〜C5は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドC1〜C5は、ドキュメント1部について1ケ所しか付いていない。
これらドキュメントデータ全体に関係するコマンドには、例えば、キャラクタセットコマンド(フォント指定コマンド)、スケーラブルフォントコマンド(スケーラブルフォントを使用するか否かを指定するコマンド)、ハードリセットコマンド(以前のプリンタ使用環境をリセットするコマンド)等がある。
ここで、C1はドキュメント設定開始コマンドである。C2はドキュメントデータの出力用紙サイズを示すコマンドであり、この場合には、A4に設定されている。C3はドキュメントデータの方向を示すコマンドである。ここでは、ポートレートとランドスケープがあるが、この場合にはポートレート(PORT)に設定されている。
C4はドキュメントデータのタイプを示すコマンドであり、ページベクタで構成されるドキュメントデータあるのかタイルベクタで構成されるドキュメントデータあるかを示している。この場合には、タイル(TILE)に設定されている。C5はドキュメント設定終了コマンドである。
描画命令部分1102を構成するC6〜C400は、ドキュメントデータ1001を出力するための各種コマンドである。
C6はページの開始を示すコマンドである。C7は図8のタイルAの描画コマンドの開始を示すコマンドである。ここで、TileStart(0,0)中の2個のパラメータは、ドキュメントデータ内におけるタイルIDを、X方向、Y方向の順に示している。C8はタイルAの描画コマンドの終了を示すコマンドである。タイルAのように、そのタイル内にオブジェクトが何も存在しない場合は、タイルの開始と終了を示すコマンドだけが記述される。
C9は図8のタイルBの描画コマンドの開始を示すコマンドである。C10は文字のフォントの種類を選択するためのコマンドであり、この場合には「1」という番号の付けられたフォントセットが設定されている。C11はフォントの大きさを設定するコマンドであり、この場合には「10ポイント」の大きさが設定されている。
C12は文字の色を設定するコマンドであり、順にR(赤),G(緑),B(青)各色成分の輝度を示してある。この輝度は、例えば、0から255の256段階で量子化されているものとする。この場合は、{0,0,0}に設定されている。C13は文字を描画する開始位置の座標を示すコマンドである。座標位置(X,Y)は、タイルの左上を原点に指定する。この場合は、タイルの{0,2}の位置から文字の描画を開始するように設定されている。C14は実際に描画する文字列(あいう)を示すコマンドである。
C15は、C10〜C14で示される文字列が、タイル化前のページベクタデータのいずれの文字列に含まれる文字列であるかを識別する文字列IDである。これの詳細については、後述する。C16はタイルBの描画コマンドの終了を示すコマンドである。
また、C17〜C24は、C9〜C16までのコマンドと同様に、フォントセット、フォントの大きさ、文字の色等を示すコマンドである。特に、C17は図8のタイルCの描画コマンドの開始を示すコマンドである。
C100は図8のタイルDの描画コマンドの開始を示すコマンドである。C101は図形描画の際の面の塗りつぶしの色を示すコマンドである。色の指定は、文字の色と同様である。C102は図形描画の線の色を指定するコマンドである。C103は図形を描画する位置の座標を示すコマンドである。
C104は円弧を描画する際の半径を指定するコマンドであり、この場合、「10」座標単位を表している。C105は閉円弧の描画をするコマンドである。コマンド内の2個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を0度として、この場合には0度から90度の円弧を描画することを示している。C106はタイルDの描画コマンドの終了を示すコマンドである。
C200は図8のタイルEの描画コマンドの開始を示すコマンドである。C201〜C211は、C9〜C16までのコマンドと同様に文字描画命令による文字のフォントの種類、色、大きさ等、及びC100〜C106までのコマンドと同様に図形描画命令による図形の面、線の色の指定、位置等のコマンドである。C222はタイルEの描画コマンドの終了を示すコマンドである。
C400はページの終了を示すコマンドである。
次に、タイル/ページベクタ変換部13の処理の詳細について、図10を用いて説明する。
図10は本発明の実施形態1のタイル/ページベクタ変換部が実行する処理を示すフローチャートである。
尚、このタイル/ページベクタ変換部13では、ページベクタデータとタイルベクタデータ間での相互変換を行うことができる。あるいは、タイル/ページベクタ変換部13は、ページベクタデータからタイルベクタデータへ変換する変換部と、タイルベクタデータからページベクタデータへ変換する変換部で構成されていても良い。
(ステップS601)
まず、システムメモリ5中に記憶されたドキュメントデータ(ベクタデータ)から、ヘッダ部分に相当するコマンド列を読み込み、処理対象となるドキュメントデータ全体に関するコマンド部分を解析する。具体的には、図7または図9のC1〜C5に相当する部分の内容を解析する。
まず、システムメモリ5中に記憶されたドキュメントデータ(ベクタデータ)から、ヘッダ部分に相当するコマンド列を読み込み、処理対象となるドキュメントデータ全体に関するコマンド部分を解析する。具体的には、図7または図9のC1〜C5に相当する部分の内容を解析する。
(ステップS602)
解析の結果、ドキュメントデータのタイプが、ページベクタデータであるか否かを判定する。ページベクタデータである場合(ステップS602でYES)、ステップS603以降のステップに進み、ページベクタ→タイルベクタ変換を実行する。一方、ページベクタデータでない場合、つまり、タイルベクタデータである場合(ステップS602でNO)、ステップS610以降のステップに進み、タイルベクタ→ページベクタ変換を実行する。
解析の結果、ドキュメントデータのタイプが、ページベクタデータであるか否かを判定する。ページベクタデータである場合(ステップS602でYES)、ステップS603以降のステップに進み、ページベクタ→タイルベクタ変換を実行する。一方、ページベクタデータでない場合、つまり、タイルベクタデータである場合(ステップS602でNO)、ステップS610以降のステップに進み、タイルベクタ→ページベクタ変換を実行する。
(ステップS603)
オブジェクトを記述するコマンド列を読み込む。
オブジェクトを記述するコマンド列を読み込む。
(ステップS604)
ステップS603で読み込んだコマンド列を解析し、記述されているオブジェクトの大きさが分割したいタイルサイズを超えているか否かを判定する。つまり、オブジェクトの更なる分割が必要であるか否かを判定する。
ステップS603で読み込んだコマンド列を解析し、記述されているオブジェクトの大きさが分割したいタイルサイズを超えているか否かを判定する。つまり、オブジェクトの更なる分割が必要であるか否かを判定する。
オブジェクトの大きさが分割したいタイルサイズを超えていない場合(ステップS604でNO)、ステップS605をスキップして、ステップS606に進む。一方、オブジェクトの大きさが分割したいタイルサイズを超えている場合(ステップS604でYES)、ステップS605に進む。
(ステップS605)
ここでは、入力されたオブジェクトの分割処理を実行する。
ここでは、入力されたオブジェクトの分割処理を実行する。
例えば、図7のページベクタデータでは、文字の描画命令部分902で、「あいうえお〜たちつてと」を含む全ての文字列の描画命令を記述している。これに対して、図9のタイルベクタデータでは、例えば、タイルBに対する描画命令1104では、「あいう」の文字列の描画命令しか記述されていない。
従って、タイルベクタデータでは、文字列が複数のタイルに跨がる場合は、その文字列を途中(タイル境界)で分割し、分割された後続の文字列は別の文字列として、次のタイルに記述を行う。次のタイルに記述が収まらなかったら、同様にまたタイルに含まれる文字列を分割し、分割された全ての文字列がタイルサイズに収まるまで繰り返す。文字列をどこで切るかは、フォントの種類、サイズからタイル内に収まる文字数を算出し、その数だけの文字を抽出する。
例えば、図7のページベクタデータの文字の描画命令部分902に対して、タイル内に収まる文字数は4つとして算出され、図7のコマンドC11の記述は、タイルBに対する描画命令を構成するコマンドC14の記述に変換される。
また、この記述の変換によれば、各タイルの文字列間の連続性に関する情報が失われてしまう。そのため、タイルベクタデータからページベクタデータへの再結合時に、元の文字列情報(図6及び図7の例では、「あいうえおかきく〜たちつてと」)を復元できなくなってしまう。
そこで、実施形態1では、タイル分割前の元の文字列情報「あいうえおかきく〜たちつてと」に、それを識別するための一意の文字列ID(例えば、ID=0)を付加し、生成するタイルベクタデータとは別に、システムメモリ5に保持しておく。そして、この文字列IDを、タイル分割後の文字列と対(タイル分割前後の文字列の関係)にしてタイルベクタデータに持たせることで、後の再結合時の文字列情報の再現性を持たせることができる。
一方、図形の描画命令部分904では、コマンドC22〜C26で記述されている図形(図6の3/4円)は、図8のタイルベクタデータを構成するタイルの1つには収まらない。そのため、この図形は、タイルEを含む複数のタイルに分割される。図形の分割は、図形の描画位置や図形の形、大きさからタイルの境界領域と接する部分を算出し、その境界とタイル内に収まっている図形の部分領域で構成される閉領域を新たな図形として記述し直す。
図7の図形の描画命令部分904で記述される図形(図6の3/4円)は、図9では、その左下の部分領域が、図形の描画命令部分1109のコマンドC207からC211のような1/4円の記述に変換される。また、残りの領域も、同様な形の1/4円の記述に変換される。
ここで、ステップS605のオブジェクトの分割処理の詳細について、図11を用いて説明する。
図11は本発明の実施形態1のオブジェクトの分割処理の詳細を示すフローチャートである。
(ステップS1401)
まず、処理対象の描画コマンドが複数タイルへの分割を必要とする場合、当該描画コマンドが文字列描画に関するものか、図形描画に関するものかを判定する。描画コマンドが文字列描画に関するものである場合(ステップS1401でYES)、ステップS1402〜ステップS1407の処理を実行する。一方、描画コマンドが図形描画に関するものである場合(ステップS1401でNO)、ステップS1408〜ステップS1410の処理を実行する。
まず、処理対象の描画コマンドが複数タイルへの分割を必要とする場合、当該描画コマンドが文字列描画に関するものか、図形描画に関するものかを判定する。描画コマンドが文字列描画に関するものである場合(ステップS1401でYES)、ステップS1402〜ステップS1407の処理を実行する。一方、描画コマンドが図形描画に関するものである場合(ステップS1401でNO)、ステップS1408〜ステップS1410の処理を実行する。
<描画コマンドが文字列描画の場合>
描画コマンドが文字列描画に関するものである場合の処理について、図7の文字の描画命令部分902を例に挙げて説明する。
描画コマンドが文字列描画に関するものである場合の処理について、図7の文字の描画命令部分902を例に挙げて説明する。
(ステップS1402)
ステップS1401で、描画命令部分902が文字列描画に関するものであると判定されると、これに含まれる文字列「あいうえおかきく…たちつてと」に対して一意な文字列ID=0を割り当て、システムメモリ5に保持する。
ステップS1401で、描画命令部分902が文字列描画に関するものであると判定されると、これに含まれる文字列「あいうえおかきく…たちつてと」に対して一意な文字列ID=0を割り当て、システムメモリ5に保持する。
(ステップS1403)
次に、文字列「あいうえおかきく…たちつてと」が含まれるタイル(処理対象タイル)のタイルID=(1,0)〜(4,0)、(1,1)〜(4,1)をすべて抽出する。
次に、文字列「あいうえおかきく…たちつてと」が含まれるタイル(処理対象タイル)のタイルID=(1,0)〜(4,0)、(1,1)〜(4,1)をすべて抽出する。
(ステップS1404)
そして、抽出したタイルの1つに注目し、当該注目タイルに一部もしくは全部含まれる文字のみを文字列「あいうえおかきく…たちつてと」から抽出する。例えば、タイルID=(1,0)のタイルに対しては、文字列「あいう」を抽出する。また、タイルID=(2,0)のタイルに対しては、文字列「うえお」を抽出する。
そして、抽出したタイルの1つに注目し、当該注目タイルに一部もしくは全部含まれる文字のみを文字列「あいうえおかきく…たちつてと」から抽出する。例えば、タイルID=(1,0)のタイルに対しては、文字列「あいう」を抽出する。また、タイルID=(2,0)のタイルに対しては、文字列「うえお」を抽出する。
(ステップS1405)
抽出した文字列の描画情報(文字列情報)を、各タイルIDのタイルベクタデータに追加する。
抽出した文字列の描画情報(文字列情報)を、各タイルIDのタイルベクタデータに追加する。
(ステップS1406)
さらに、当該文字列の属する文字列IDを、タイルベクタデータに追加する。
さらに、当該文字列の属する文字列IDを、タイルベクタデータに追加する。
ここで、ステップS1402では、図8の文字列「あいうえおかきく…たちつてと」には文字列ID=0が割り当てられたので、図7の描画命令部分902に対して、文字列の描画命令部分のオブジェクトの分割処理を実行した場合、図8のタイルB,Cのタイルベクタ中間データは、それぞれ図12の1501、1502のようになる。
(ステップS1407)
以上のステップS1404〜ステップS1406の処理を、ステップS1403で抽出したすべてのタイルに対して実行する。つまり、すべての処理対象のタイルの処理が終了したか否かを判定する。終了していない場合(ステップS1407でNO)、ステップS1404に戻る。一方、終了した場合(ステップS1407でYES)、文字列の描画命令部分に対するオブジェクトの分割処理を終了する。
以上のステップS1404〜ステップS1406の処理を、ステップS1403で抽出したすべてのタイルに対して実行する。つまり、すべての処理対象のタイルの処理が終了したか否かを判定する。終了していない場合(ステップS1407でNO)、ステップS1404に戻る。一方、終了した場合(ステップS1407でYES)、文字列の描画命令部分に対するオブジェクトの分割処理を終了する。
<描画コマンドが図形描画の場合>
描画コマンドが図形描画に関するものである場合の処理について、図7の図形の描画命令部分906を例に挙げて説明する。
描画コマンドが図形描画に関するものである場合の処理について、図7の図形の描画命令部分906を例に挙げて説明する。
(ステップS1408)
ステップS1401で、描画命令部分906が図形描画に関するものであると判定されると、これが描画する3/4円が含まれるタイル(処理対象タイル)のタイルID=(1,4)、(1,5)、(2,5)をすべて抽出する。
ステップS1401で、描画命令部分906が図形描画に関するものであると判定されると、これが描画する3/4円が含まれるタイル(処理対象タイル)のタイルID=(1,4)、(1,5)、(2,5)をすべて抽出する。
(ステップS1409)
そして、抽出したタイルに対し、当該描画命令部分906を、抽出したタイルの各タイルベクタデータに追加する。
そして、抽出したタイルに対し、当該描画命令部分906を、抽出したタイルの各タイルベクタデータに追加する。
例えば、図8のタイルEは、描画命令部分906のオブジェクトの分割処理以前に、描画命令部分903のオブジェクトの分割処理と後述する座標変換(図10のステップS606)で生成された、図13のタイルベクタデータ1601が存在する。そのため、描画命令部分906に対して、ステップS1409の処理が実行されると、図13のタイルベクタデータ1602が生成される。
(ステップS1410)
以上のステップS1409の処理を、ステップS1408で抽出したすべてのタイルに対して実行する。つまり、すべての処理対象のタイルの処理が終了したか否かを判定する。終了していない場合(ステップS1410でNO)、ステップS1409に戻る。一方、終了した場合(ステップS1410でYES)、図形の描画命令部分に対するオブジェクトの分割処理を終了する。
以上のステップS1409の処理を、ステップS1408で抽出したすべてのタイルに対して実行する。つまり、すべての処理対象のタイルの処理が終了したか否かを判定する。終了していない場合(ステップS1410でNO)、ステップS1409に戻る。一方、終了した場合(ステップS1410でYES)、図形の描画命令部分に対するオブジェクトの分割処理を終了する。
図10の説明に戻る。
(ステップS606)
入力されたオブジェクトのコマンドの記述に対し、タイルベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。ページベクタデータでは、ページの左上からの位置を記述していたのに対し、タイルベクタデータではタイルの左上からの位置に記述し直す。描画位置をタイル内の座標で記述することにより、座標計算に要するデータ長を削減することが可能になる。
入力されたオブジェクトのコマンドの記述に対し、タイルベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。ページベクタデータでは、ページの左上からの位置を記述していたのに対し、タイルベクタデータではタイルの左上からの位置に記述し直す。描画位置をタイル内の座標で記述することにより、座標計算に要するデータ長を削減することが可能になる。
例えば、オブジェクトの分割処理で得られたタイルベクタデータの中間データである、図12の1501、1502は、それぞれこの座標変換によって、図14の1701、1702のように変換される。
(ステップS607)
1つのオブジェクトに対するコマンドの記述変換が終了したら、ページ内の全てのオブジェクトのコマンドの記述変換が終了したか否かを判定する。終了していない場合(ステップS607でNO)、ステップS603に戻り、次のコマンドに対して、ステップS603〜ステップS607の処理を繰り返す。一方、終了した場合(ステップS607でYES)、ステップS608へ進む。
1つのオブジェクトに対するコマンドの記述変換が終了したら、ページ内の全てのオブジェクトのコマンドの記述変換が終了したか否かを判定する。終了していない場合(ステップS607でNO)、ステップS603に戻り、次のコマンドに対して、ステップS603〜ステップS607の処理を繰り返す。一方、終了した場合(ステップS607でYES)、ステップS608へ進む。
(ステップS608)
全てのコマンドの記述変換が終了したら、図8のように分割されたタイルベクタデータ中の各タイルに対し、ページの左上から順にタイルベクタデータとしてシステムメモリ5への書出を実行する。タイルベクタデータとしては、ステップS605及びステップS606で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを追加するようなフォーマットで記述される。
全てのコマンドの記述変換が終了したら、図8のように分割されたタイルベクタデータ中の各タイルに対し、ページの左上から順にタイルベクタデータとしてシステムメモリ5への書出を実行する。タイルベクタデータとしては、ステップS605及びステップS606で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを追加するようなフォーマットで記述される。
まず、ページの一番最初のコマンドの書出時点では、システムメモリ5内にオブジェクトがない状態のタイルベクタを生成しておく。オブジェクトがないタイルベクタとしては、例えば、図8のタイルAがある。このタイルAは、タイルの開始と終了を示すコマンドC7及びC8のみから構成される描画命令部分1103(図9)で記述される。
次に、ステップS603〜ステップS607で処理されたコマンドが存在する座標のタイルに対し、オブジェクトの記述を追加する。例えば、図8のタイルBの場合は、コマンドC9〜C16から構成される描画命令部分1104(図9)で記述される。また、タイルEのように、同じタイルに複数のオブジェクトが存在する場合には、描画命令部分1107のように、文字の描画命令部分1108を構成するオブジェクト記述と、図形の描画命令部分1109を構成するオブジェクト記述を列記する。
(ステップS609)
1つのオブジェクトのタイルベクタへの書出が終了すると、そのページのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合(ステップS609でNO)、ステップS603に戻る。一方、終了した場合(ステップS609でYES)、処理を終了する。
1つのオブジェクトのタイルベクタへの書出が終了すると、そのページのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合(ステップS609でNO)、ステップS603に戻る。一方、終了した場合(ステップS609でYES)、処理を終了する。
一方、ステップS602で、ドキュメントデータのタイプが、タイルベクタデータである場合(タイルベクタデータをページベクタデータに変換する場合)について説明する。
(ステップS610)
タイルベクタデータから、オブジェクトを記述するコマンド列を読み込む。
タイルベクタデータから、オブジェクトを記述するコマンド列を読み込む。
(ステップS611)
ステップS610で読み込んだコマンド列を解析し、記述されているオブジェクトがそれより以前に読み込まれたタイルと結合可能であるか否かを判定する。結合可能でない場合(ステップS611でNO)、ステップS612をスキップし、ステップS613に進む。一方、結合可能である場合(ステップS611でYES)、ステップS612に進む。
ステップS610で読み込んだコマンド列を解析し、記述されているオブジェクトがそれより以前に読み込まれたタイルと結合可能であるか否かを判定する。結合可能でない場合(ステップS611でNO)、ステップS612をスキップし、ステップS613に進む。一方、結合可能である場合(ステップS611でYES)、ステップS612に進む。
尚、オブジェクトが結合可能であるか否かの判定は、読み込んだコマンドの座標位置や、図形の種別等を基に判定する。また、文字列の場合は、フォントサイズやフォントの種類を基に判定する。
(ステップS612)
オブジェクトの結合処理を実行する。この処理は、基本的には、ステップS605の処理手順を逆にすることで実現する。ここで、ドキュメントタイプがタイルであるベクタデータは、タイルIDの昇順に処理されることが好ましく、実施形態1においても、結合処理はタイルIDの昇順に実行されるものとする。
オブジェクトの結合処理を実行する。この処理は、基本的には、ステップS605の処理手順を逆にすることで実現する。ここで、ドキュメントタイプがタイルであるベクタデータは、タイルIDの昇順に処理されることが好ましく、実施形態1においても、結合処理はタイルIDの昇順に実行されるものとする。
ここで、ステップS612のオブジェクトの結合処理の詳細について、図15を用いて説明する。
図15は本発明の実施形態1のオブジェクトの結合処理の詳細を示すフローチャートである。
(ステップS1801)
まず、処理対象の描画コマンドがページタイルデータへの結合を必要とする場合、当該コマンドが文字列描画に関するものか、図形描画に関するものかを判定する。描画コマンドが文字列描画に関するものである場合(ステップS1801でYES)、ステップS1802〜ステップS1803、ステップS1806〜ステップS1809の処理を実行する。一方、描画コマンドが図形描画に関するものである場合(ステップS1801でNO)、ステップS1804及びステップS1805の処理を実行する。
まず、処理対象の描画コマンドがページタイルデータへの結合を必要とする場合、当該コマンドが文字列描画に関するものか、図形描画に関するものかを判定する。描画コマンドが文字列描画に関するものである場合(ステップS1801でYES)、ステップS1802〜ステップS1803、ステップS1806〜ステップS1809の処理を実行する。一方、描画コマンドが図形描画に関するものである場合(ステップS1801でNO)、ステップS1804及びステップS1805の処理を実行する。
<描画コマンドが文字列描画の場合>
描画コマンドが文字列描画に関するものである場合の処理について、図9の文字の描画命令部分1104と1105を例に挙げて説明する。
描画コマンドが文字列描画に関するものである場合の処理について、図9の文字の描画命令部分1104と1105を例に挙げて説明する。
(ステップS1802)
ステップS1801で、描画命令部分1104もしくは1105が文字列描画に関するものであると判定されると、これに含まれる文字列ID=0に対する結合処理を以前実行したか否かを判定する。以前実行していない場合(ステップS1802でNO)、処理を終了する。一方、以前実行している場合(ステップS1802でYES)、ステップS1803に進む。
ステップS1801で、描画命令部分1104もしくは1105が文字列描画に関するものであると判定されると、これに含まれる文字列ID=0に対する結合処理を以前実行したか否かを判定する。以前実行していない場合(ステップS1802でNO)、処理を終了する。一方、以前実行している場合(ステップS1802でYES)、ステップS1803に進む。
(ステップS1803)
例えば、描画命令部分1104は、文字列ID=0に対する最初の結合処理になるため、結合対象がページベクタデータに存在しない。そのため、描画命令部分1104に対して文字列の結合処理が実行されることはなく、後述の座標変換(図10のステップS613)後、内容はそのままページベクタデータに書き出される。
例えば、描画命令部分1104は、文字列ID=0に対する最初の結合処理になるため、結合対象がページベクタデータに存在しない。そのため、描画命令部分1104に対して文字列の結合処理が実行されることはなく、後述の座標変換(図10のステップS613)後、内容はそのままページベクタデータに書き出される。
一方、描画命令部分1105は、それより以前に文字列ID=0に対する処理として、描画命令部分1104で実行されている。そのため、描画命令部分1104によって、ページベクタデータに書き出された文字列「あいう」と、描画命令部分1105が記述する文字列「うえお」の結合処理を実行する。
ステップS1803の文字列の結合処理の詳細を示すと、以下のようになる。
(ステップS1806)
まず、描画命令部分1105が記述する文字列のY方向のPositionの値が負であるか否かを判定する。この値が負でない場合(ステップS1806でNO)、ステップS1807に進む。一方、この値が負である場合(ステップS1806でYES)、ステップS1810に進む。
まず、描画命令部分1105が記述する文字列のY方向のPositionの値が負であるか否かを判定する。この値が負でない場合(ステップS1806でNO)、ステップS1807に進む。一方、この値が負である場合(ステップS1806でYES)、ステップS1810に進む。
(ステップS1810)
文字列のY方向のPositionの値が負である場合、文字列のスタートは注目タイルの範囲より上方にあり、タイルの結合処理をタイルIDの昇順で実行するという前提下では、すでに上方にあるタイルの処理時に文字列の結合処理が実行されていることになる。(例えば、図16のタイル1901は、既に注目タイル1902の上方のタイルであって、結合処理が実行されている)。そのため、処理無視ビットをアサートし、後続の処理の実行を禁止する。
文字列のY方向のPositionの値が負である場合、文字列のスタートは注目タイルの範囲より上方にあり、タイルの結合処理をタイルIDの昇順で実行するという前提下では、すでに上方にあるタイルの処理時に文字列の結合処理が実行されていることになる。(例えば、図16のタイル1901は、既に注目タイル1902の上方のタイルであって、結合処理が実行されている)。そのため、処理無視ビットをアサートし、後続の処理の実行を禁止する。
(ステップS1807)
描画命令部分1105の場合は、それが記述する文字列のY方向のPositionの値は正であるので、続いて、X方向のPositionの値が負であるか否かを判定する。この値が負である場合(ステップS1807でYES)、文字列のスタートは注目している注目タイル1902の範囲より左方にあり、文字列の最初の1文字が左方のタイルと共有していることになる(例えば、図16の注目タイル1902は「か」の文字を左方のタイルと共有している)。
描画命令部分1105の場合は、それが記述する文字列のY方向のPositionの値は正であるので、続いて、X方向のPositionの値が負であるか否かを判定する。この値が負である場合(ステップS1807でYES)、文字列のスタートは注目している注目タイル1902の範囲より左方にあり、文字列の最初の1文字が左方のタイルと共有していることになる(例えば、図16の注目タイル1902は「か」の文字を左方のタイルと共有している)。
そのため、文字列の最初の1文字は左方のタイルの結合処理時に結合処理済である。
(ステップS1808)
従って、タイルベクタデータが持つ文字列の最小の1文字を削除する。
従って、タイルベクタデータが持つ文字列の最小の1文字を削除する。
(ステップS1809)
結合先のページベクタデータの文字列と結合する。
結合先のページベクタデータの文字列と結合する。
例えば、描画命令部分1105の文字列「うえお」は、上記条件に該当するため、「う」の文字が削除されて、既に作成されているページベクタデータの「あいう」と結合され、ページベクタデータ上に「あいうえお」が復元される。
一方、タイルベクタデータの文字列のX方向のPositionの値が負でない場合(正である場合)、その文字列は当該処理以前の結合処理でまったく出現しなかった文字列の処理ということになる(図16の注目タイル1902が持つ文字列「さし」は、注目タイル1902の処理で初めて処理される)。そのため、この文字列は、そのままページベクタデータに結合される。
以上の処理によって、文字列の描画命令部分に対するオブジェクトの結合処理を終了する。
<コマンドが図形描画の場合>
描画コマンドが図形描画に関するものである場合の処理について、図9の描画命令部分1109を例に挙げて説明する。
描画コマンドが図形描画に関するものである場合の処理について、図9の描画命令部分1109を例に挙げて説明する。
(ステップS1804)
ステップS1801で、描画命令部分1109が図形描画に関するものであると判定されると、これが描画する図形に対する処理を、それより以前の結合処理時に実行したか否かを判定する。以前の結合処理時に実行していない場合(ステップS1804でNO)、処理を終了する。一方、以前の結合処理時に実行している場合(ステップS1804でYES)、ステップS1805に進む。
ステップS1801で、描画命令部分1109が図形描画に関するものであると判定されると、これが描画する図形に対する処理を、それより以前の結合処理時に実行したか否かを判定する。以前の結合処理時に実行していない場合(ステップS1804でNO)、処理を終了する。一方、以前の結合処理時に実行している場合(ステップS1804でYES)、ステップS1805に進む。
(ステップS1805)
例えば、描画命令部分1109の3/4円は、図10のタイルEにおける処理であるが、同じ、3/4円の処理が、タイルEから1つ上方のタイルの結合処理の中で実行されている。即ち、描画命令部分1109で描画する図形は、以前に結合処理時のタイルに含まれている。そのため、処理無視ビットをアサートし、後続の結合処理を禁止する。
例えば、描画命令部分1109の3/4円は、図10のタイルEにおける処理であるが、同じ、3/4円の処理が、タイルEから1つ上方のタイルの結合処理の中で実行されている。即ち、描画命令部分1109で描画する図形は、以前に結合処理時のタイルに含まれている。そのため、処理無視ビットをアサートし、後続の結合処理を禁止する。
一方、描画命令部分で描画する図形が、当該タイルより以前に処理されたタイルで、ページベクタデータ上で形成されていない場合、当該描画命令部分はそのままページベクタデータに結合される。
以上の処理によって、図形の描画命令部分に対するオブジェクト結合処理は終了する。 図10の説明に戻る。
(ステップS613)
入力されたオブジェクトの描画コマンドの記述に対し、ページベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。タイルベクタデータでは、タイルの左上からの位置を記述していたのに対し、ページベクタデータでは、ページの左上からの位置に記述し直す。但し、ステップS1805、ステップS1810で処理無視ビットがアサートされている場合、この処理はスキップされる。
入力されたオブジェクトの描画コマンドの記述に対し、ページベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。タイルベクタデータでは、タイルの左上からの位置を記述していたのに対し、ページベクタデータでは、ページの左上からの位置に記述し直す。但し、ステップS1805、ステップS1810で処理無視ビットがアサートされている場合、この処理はスキップされる。
(ステップS614)
1つのオブジェクトに対する描画コマンドの記述変換が終了したら、タイル内の全てのオブジェクトの描画コマンドの記述変換が終了したか否かを判定する。終了していない場合(ステップS614でNO)、ステップS610に戻り、次の描画コマンドに対して、ステップS610〜ステップS613の処理を繰り返す。一方、終了した場合(ステップS614でYES)、ステップS615へ進む。
1つのオブジェクトに対する描画コマンドの記述変換が終了したら、タイル内の全てのオブジェクトの描画コマンドの記述変換が終了したか否かを判定する。終了していない場合(ステップS614でNO)、ステップS610に戻り、次の描画コマンドに対して、ステップS610〜ステップS613の処理を繰り返す。一方、終了した場合(ステップS614でYES)、ステップS615へ進む。
(ステップS615)
全ての描画コマンドの記述変換が終了したら、ページベクタデータとしてシステムメモリ5への書出を実行する。ページベクタデータとしては、ステップS612及びステップS613で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを削除したようなフォーマットで記述される。
全ての描画コマンドの記述変換が終了したら、ページベクタデータとしてシステムメモリ5への書出を実行する。ページベクタデータとしては、ステップS612及びステップS613で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを削除したようなフォーマットで記述される。
まず、ページ内の一番最初のタイルに記述されたコマンドの書出時点では、システムメモリ5内にオブジェクトがない状態のページベクタを生成しておく。これは、図7の記述を用いて説明すると、コマンドC1〜C6、コマンドC27だけで記述されるページベクタデータである。
次に、ステップS610〜ステップS613で処理されたオブジェクトの記述を追加する。図7の記述の場合、文字の描画命令部分902を構成するコマンドC7〜C11がそれにあたる。この場合のオブジェクトは、文字列{あいうえおかきく〜たちつてと}を示しているが、これは、ステップS612で、図9の文字の描画命令部分1104や1105等で記述される各タイル中の文字列を順次結合したオブジェクトの記述である。
(ステップS616)
1つコマンドのページベクタへの書出が終了すると、そのタイルのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合(ステップS616でNO)、ステップS610に戻る。一方、終了した場合(ステップS616でYES)、ステップS617に進む。
1つコマンドのページベクタへの書出が終了すると、そのタイルのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合(ステップS616でNO)、ステップS610に戻る。一方、終了した場合(ステップS616でYES)、ステップS617に進む。
(ステップS617)
1つのタイルベクタデータの書出が終了すると、そのページのタイルベクタデータの記述に対する処理が全て終了したか否かを判定する。終了していない場合(ステップS617でNO)、ステップS610に戻る。一方、終了した場合(ステップS617でYES)、処理を終了する。
1つのタイルベクタデータの書出が終了すると、そのページのタイルベクタデータの記述に対する処理が全て終了したか否かを判定する。終了していない場合(ステップS617でNO)、ステップS610に戻る。一方、終了した場合(ステップS617でYES)、処理を終了する。
[画像データ展開部(RIP)]
次に、コントローラ1中の画像データ展開部18の詳細について説明する。
次に、コントローラ1中の画像データ展開部18の詳細について説明する。
まず、コピーやプリント、送信等の画像データに対する処理を開始する前に、ローカルメモリ19の初期化と、作成するオブジェクトの解像度の設定を行っておく。実施形態1では、生成解像度は600dpiとし、ポイントサイズやmm等の単位系で指定された印刷コマンドは、この値を用いてドット数に変換されることになる。
以下では、画像データ展開部18によって、タイルベクタデータ展開を実行する場合の処理について、図17を用いて説明する。
図17は本発明の実施形態1の画像データ展開部が実行する処理を示すフローチャートである。
(ステップS71)
システムメモリ5より、SBB2を経由して、RIP18に一定サイズ分入力されたタイルベクタデータは、ローカルメモリ19のタイルベクタ領域に一時的に格納する。
システムメモリ5より、SBB2を経由して、RIP18に一定サイズ分入力されたタイルベクタデータは、ローカルメモリ19のタイルベクタ領域に一時的に格納する。
(ステップS72)
タイルベクタデータをローカルメモリ19に格納したら、RIP18内のμRIP18a〜18dのいずれかが、タイルベクタデータを展開可能(処理可能)であるか否かを判定する。μRIP18a〜18dのいずれもタイルベクタデータの展開(処理)中である場合(ステップS72でNO)、それらのいずれかが展開可能になるまで待機する。
タイルベクタデータをローカルメモリ19に格納したら、RIP18内のμRIP18a〜18dのいずれかが、タイルベクタデータを展開可能(処理可能)であるか否かを判定する。μRIP18a〜18dのいずれもタイルベクタデータの展開(処理)中である場合(ステップS72でNO)、それらのいずれかが展開可能になるまで待機する。
(ステップS73)
μRIP18a〜18dのいずれかがタイルベクタデータを展開可能になれば、予め定められた文法に従って、ローカルメモリ19に格納されたタイルベクタデータのコマンド解析を実行する。
μRIP18a〜18dのいずれかがタイルベクタデータを展開可能になれば、予め定められた文法に従って、ローカルメモリ19に格納されたタイルベクタデータのコマンド解析を実行する。
(ステップS74)
コマンド解析結果に基づいて、コマンドが描画命令であるか排紙命令であるかを判定する。描画命令である場合(ステップS74でYES)、ステップS75に進む。一方、排紙命令である場合(ステップS74でNO)、ステップS76に進む。
コマンド解析結果に基づいて、コマンドが描画命令であるか排紙命令であるかを判定する。描画命令である場合(ステップS74でYES)、ステップS75に進む。一方、排紙命令である場合(ステップS74でNO)、ステップS76に進む。
(ステップS75)
コマンドが描画命令である場合、描画オブジェクト(DLデータ)の生成を実行する。タイルベクタデータ内のコマンドが文字の描画命令である場合、そのコマンドで指定されるフォントの書体や、文字サイズ、文字コードを元にフォントオブジェクトを生成して、ローカルメモリ19のDLデータ領域に格納する。また、文字以外の描画命令、つまり、図形の描画命令である場合、そのコマンドで指定された図形(ラインや円、多角形等)の描画オブジェクトを生成し、ローカルメモリ19のDLデータ領域に格納する。
コマンドが描画命令である場合、描画オブジェクト(DLデータ)の生成を実行する。タイルベクタデータ内のコマンドが文字の描画命令である場合、そのコマンドで指定されるフォントの書体や、文字サイズ、文字コードを元にフォントオブジェクトを生成して、ローカルメモリ19のDLデータ領域に格納する。また、文字以外の描画命令、つまり、図形の描画命令である場合、そのコマンドで指定された図形(ラインや円、多角形等)の描画オブジェクトを生成し、ローカルメモリ19のDLデータ領域に格納する。
また、コマンドが描画命令で指定されない印刷データである場合には、この印刷データに応じて印刷位置移動や印刷環境設定等の印刷制御処理を実行し、一単位分のコマンド解釈を終了する。
これは、タイルベクタデータ内のコマンド全ての解釈が終了するまで、上記処理を繰り返す。
(ステップS76)
コマンドが排紙命令である場合、μRIPは、ローカルメモリ19上のタイルラスタ領域に空き領域があるか否かを判定する。空き領域がない場合(ステップS76でNO)、他のμRIPの処理が終了して、タイルラスタ領域が解放されて、空き領域ができるまで待機する。一方、空き領域がある場合(ステップS76でYES)、ステップS77に進む。
コマンドが排紙命令である場合、μRIPは、ローカルメモリ19上のタイルラスタ領域に空き領域があるか否かを判定する。空き領域がない場合(ステップS76でNO)、他のμRIPの処理が終了して、タイルラスタ領域が解放されて、空き領域ができるまで待機する。一方、空き領域がある場合(ステップS76でYES)、ステップS77に進む。
(ステップS77)
タイルラスタ領域に空き領域がある場合、ステップS75で生成された描画オブジェクトを読み出し、タイルラスタ領域に描画(ラスタライズ)する。この時、生成解像度が600dpiであれば、タイルラスタ領域には600dpiの画像としてラスタライズされる。そして、描画が終了したタイルラスタ画像は、SBB2を介して、画像処理部15に出力する。
タイルラスタ領域に空き領域がある場合、ステップS75で生成された描画オブジェクトを読み出し、タイルラスタ領域に描画(ラスタライズ)する。この時、生成解像度が600dpiであれば、タイルラスタ領域には600dpiの画像としてラスタライズされる。そして、描画が終了したタイルラスタ画像は、SBB2を介して、画像処理部15に出力する。
(ステップS78)
ステップS75またはステップS77で一つのタイルベクタデータに対する、コマンド解析または描画処理が終了したら、タイルベクタ領域に格納したタイルベクタデータのすべてに対して処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合(ステップS78でNO)、ステップS72に戻り、次のタイルベクタデータの処理を続ける。一方、未処理のタイルベクタデータがない場合(ステップS78でYES)、ステップS79に進む。
ステップS75またはステップS77で一つのタイルベクタデータに対する、コマンド解析または描画処理が終了したら、タイルベクタ領域に格納したタイルベクタデータのすべてに対して処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合(ステップS78でNO)、ステップS72に戻り、次のタイルベクタデータの処理を続ける。一方、未処理のタイルベクタデータがない場合(ステップS78でYES)、ステップS79に進む。
(ステップS79)
1ページ分のタイルベクタデータに対し、全ての処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合(ステップS79でNO)、ステップS71に戻り、システムメモリ5から、タイルベクタデータを読み出して、処理を続ける。一方、未処理のタイルベクタデータがない場合(ステップS79でYES)、処理を終了する。
1ページ分のタイルベクタデータに対し、全ての処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合(ステップS79でNO)、ステップS71に戻り、システムメモリ5から、タイルベクタデータを読み出して、処理を続ける。一方、未処理のタイルベクタデータがない場合(ステップS79でYES)、処理を終了する。
以上説明したように、実施形態1によれば、ページベクタデータをタイルベクタデータに分割する際に、ページベクタデータ中の文字列も分割された各タイルベクタデータ毎に保持する構成において、その文字列の連続性を維持するための情報(文字列ID)を保持する。これにより、ページベクタデータへの再結合の際に、元の文字列情報を容易に復元することができ、かつ検索性を損なわないようにすることができる。
[実施形態2]
実施形態1では、MFPから外部機器への送信を行う際には、タイルベクタデータをページベクタデータに変換して、データ量の削減や画像データの汎用性を高めているが、これに限定されない。例えば、画像データを記憶する際にタイルベクタデータだけではなく、ページベクタデータも併せて記憶するようにしても良い。このような構成の場合、タイルベクタデータからページベクタデータへ変換することなく、外部機器にページベクタデータを送信することもできる。
実施形態1では、MFPから外部機器への送信を行う際には、タイルベクタデータをページベクタデータに変換して、データ量の削減や画像データの汎用性を高めているが、これに限定されない。例えば、画像データを記憶する際にタイルベクタデータだけではなく、ページベクタデータも併せて記憶するようにしても良い。このような構成の場合、タイルベクタデータからページベクタデータへ変換することなく、外部機器にページベクタデータを送信することもできる。
尚、システム全体の構成は、実施形態1と同様なので、その詳細については割愛する
以下、実施形態2における画像処理システムでの送信動作について説明する。
以下、実施形態2における画像処理システムでの送信動作について説明する。
[送信]
図18は本発明の実施形態2の画像処理システムでの送信動作に係るデータフローを示す図である。
図18は本発明の実施形態2の画像処理システムでの送信動作に係るデータフローを示す図である。
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
(S131):実施形態2では、1つの画像データに対し、HDD8にはタイルベクタデータとページベクタデータが記憶される。送信時は、その内のページベクタデータが選択され、SBB2を介して、汎用バス6に接続されたHDDCont7より読み出され、システムメモリ5に一時的に記憶される。
(S132):システムメモリ5に記憶されたページベクタデータは、汎用バス6に接続されたネットワークI/F11から読み出され、ネットワーク12に接続された外部機器へと転送される。
尚、実施形態2では、実施形態1に比べて、HDD8に記憶すべき画像データ容量が多くなるが、送信時のフローが非常に簡略化される。
以上説明したように、実施形態2によれば、実施形態1で説明した効果に加えて、1つの画像データに対して、タイルベクタデータと、それに対応するページベクタデータを併せてHDDに記憶管理しておく。これにより、記憶管理されている2種類のベクタデータをHDDから適宜選択するだけで、画像データの出力時により適切なベクタデータを、変換処理を行うことなく、出力することができる。
[実施形態3]
実施形態2では、画像データを記憶する際にタイルベクタデータだけではなく、ページベクタデータも併せて記憶することで、タイルベクタデータからページベクタデータへの変換を実行することなく、外部機器にページベクタデータを送信できる構成について説明しているが、これに限定されない。
実施形態2では、画像データを記憶する際にタイルベクタデータだけではなく、ページベクタデータも併せて記憶することで、タイルベクタデータからページベクタデータへの変換を実行することなく、外部機器にページベクタデータを送信できる構成について説明しているが、これに限定されない。
例えば、送信先が、実施形態1に示すMFPと同様の機能を有するMFPである場合、タイルベクタデータの結合化(ページベクタデータ化)を実行することなく、タイルベクタデータとそれに付随する情報(例えば、文字列ID情報等)で、画像データの送受信を実行する構成としても良い。
この場合、タイルベクタデータとページベクタデータ間でのデータ変換を極力実行せずに、画像データの送受信や送信先での画像処理を実行することが可能となる。
[実施形態4]
実施形態1では、特に、MFP内部でタイルベクタデータを扱うことで、画像処理の並列性を高めている。また、元のページベクタデータで存在している文字列を中間データとしてタイルベクタデータ毎に分割しても、再結合の際に、元の文字列を復元でき、検索性を維持したページベクタデータ(画像データ)を外部機器に転送する構成について説明した。
実施形態1では、特に、MFP内部でタイルベクタデータを扱うことで、画像処理の並列性を高めている。また、元のページベクタデータで存在している文字列を中間データとしてタイルベクタデータ毎に分割しても、再結合の際に、元の文字列を復元でき、検索性を維持したページベクタデータ(画像データ)を外部機器に転送する構成について説明した。
ここで、MFPは、このような外部機器への画像データ転送機能に加え、自身のもつHDD8内に画像データを保存することができる。この場合、ユーザが、HDD8内の画像データに対して操作部10から検索指示を入力して、その検索結果をプレビュー表示する機能の要求がある。
本発明では、中間データとして生成されるタイルベクタデータを画像データとしてHDD8内に保存する。特に、この際に、発生する文字列の分割による検索性の低下の可能性は、実施形態1で説明した文字列IDによって、タイル分割前の文字列情報をタイルベクタデータとともに管理しておくことで、解消される。
以下、実施形態4では、HDD8から画像データを検索する場合の検索処理について、図19を用いて説明する。
図19は本発明の実施形態4の検索処理を示すフローチャートである。
尚、この検索処理は、ユーザより操作部10を介して、検索条件である検索文字列が入力され、かつその検索条件による検索指示が入力された場合に実行する。
(ステップS2001)
まず、文字列IDの値をカウントするためのカウンタを初期化する(文字列ID=0)。
まず、文字列IDの値をカウントするためのカウンタを初期化する(文字列ID=0)。
(ステップS2002)
文字列ID=0から順に、HDD8で管理されるタイルベクタデータ中の文字列IDが割り当てられた文字列に注目し、当該注目文字列に検索文字列が含まれているか否かを判定する。文字列IDが割り当てられた文字列に、検索文字列が含まれていない場合(ステップS2002でNO)、ステップS2003へ進む。検索文字列が含まれている場合(ステップS2002でYES)、ステップS2005へ進む。
文字列ID=0から順に、HDD8で管理されるタイルベクタデータ中の文字列IDが割り当てられた文字列に注目し、当該注目文字列に検索文字列が含まれているか否かを判定する。文字列IDが割り当てられた文字列に、検索文字列が含まれていない場合(ステップS2002でNO)、ステップS2003へ進む。検索文字列が含まれている場合(ステップS2002でYES)、ステップS2005へ進む。
(ステップS2003)
カウンタを1インクリメントする(文字列ID=文字列ID+1)。
カウンタを1インクリメントする(文字列ID=文字列ID+1)。
(ステップS2004)
すべての文字列に対して、検索処理が終了したか否かを判定する。この判定は、文字列IDの最大値MAXと、現在のカウンタが示す文字列IDの値を比較することによって実行する。すべての文字列に対して検索処理が終了した場合(ステップS2004でYES)、処理を終了する。一方、すべての文字列に対して、検索処理が終了していない場合(ステップS2004でNO)、ステップS2002へ戻る。
すべての文字列に対して、検索処理が終了したか否かを判定する。この判定は、文字列IDの最大値MAXと、現在のカウンタが示す文字列IDの値を比較することによって実行する。すべての文字列に対して検索処理が終了した場合(ステップS2004でYES)、処理を終了する。一方、すべての文字列に対して、検索処理が終了していない場合(ステップS2004でNO)、ステップS2002へ戻る。
(ステップS2005)
ステップS2002において、注目文字列に検索文字列が含まれている場合、すべてのタイルベクタデータから、注目文字列に割り当てられた文字列IDと、検索文字列の一部もしくは全部が含まれているタイルベクタデータを抽出する。
ステップS2002において、注目文字列に検索文字列が含まれている場合、すべてのタイルベクタデータから、注目文字列に割り当てられた文字列IDと、検索文字列の一部もしくは全部が含まれているタイルベクタデータを抽出する。
(ステップS2006)
そして、プレビュー表示のために必要な所望の画像サイズになるように、抽出したタイルベクタデータをその周辺のタイルベクタデータとを結合して、ページベクタデータを生成する。尚、この結合処理は、タイル/ページベクタ変換部13で実行する。
そして、プレビュー表示のために必要な所望の画像サイズになるように、抽出したタイルベクタデータをその周辺のタイルベクタデータとを結合して、ページベクタデータを生成する。尚、この結合処理は、タイル/ページベクタ変換部13で実行する。
(ステップS2007)
生成したページベクタデータをラスタリングして、操作部10に検索結果として表示する。尚、このラスタリングは、例えば、画像データ展開部18で実行する。
生成したページベクタデータをラスタリングして、操作部10に検索結果として表示する。尚、このラスタリングは、例えば、画像データ展開部18で実行する。
以上の処理によって、HDD8内に保存されたタイルベクタデータから、文字列の検索と、その検索結果のプレビューを実行することが可能となる。
具体例として、図8及び図9に示すタイルベクタデータがHDD8内に保存されていて、このタイルベクタデータから、検索条件として「つて」という文字列(検索文字列)を検索する場合の処理フローについて、図19に基づいて説明する。
まず、文字列ID=0(ステップS2001)が割り当てられた注目文字列「あいうえおかきく〜たちつてと」から検索文字列「つて」を検索する(ステップS2002)。検索文字列「つて」は、注目文字列「あいうえおかきく〜たちつてと」に含まれるので、すべてのタイルベクタデータの中から、文字列ID=0を含み、かつ、文字列「つて」の一部もしくは全部を含むタイルベクタである、タイルID=(3,1)、(4,1)のタイルを抽出する(ステップS2005)。
そして、検索結果として表示するプレビュー画像に好ましい画像サイズにするために、抽出したタイルを、その周辺タイルであるタイルID=(5,1)、(3,2)、(4,2)、(5,2)のタイルと結合処理を実行して、部分ページベクタデータを生成する(ステップS2006)。
生成した部分ページベクタを、CPU3の制御の下、ラスタリングして、操作部10に転送して表示する(ステップS2007)。この場合、図20(a)に示すような検索結果プレビュー画像が表示される。
また、タイルベクタデータ結合前後のベクタデータに対して、検索文字列「つて」の色反転処理を実行した上で、操作部10に表示すれば、図20(b)に示すような検索文字列の強調表示が容易に可能となる。尚、この反転処理以外にも、ブリンク表示や、下線、フォント変更等の加工処理を実行して、検索文字列の強調表示をするようにしても良い。
以上説明したように、実施形態4によれば、実施形態1で説明した効果に加えて、タイル分割前の文字列情報をタイルベクタデータとともに管理しておくことで、タイルベクタデータに対しても、効率的にかつ精度良く、所望の文字列を含むタイルベクタデータを検索することができる。
[実施形態5]
実施形態4では、図19のステップS2005において、検索文字列を含む文字列の文字列IDを持ち、かつ、検索文字列の一部もしくは全部を含むタイルを抽出するためには、ページないしは複数ページから構成されるページベクタデータを構成するすべてのタイルについて、検索処理を実行する必要がある。そのため、場合によっては、検索結果のプレビュー表示の応答性が低下する可能性がある。
実施形態4では、図19のステップS2005において、検索文字列を含む文字列の文字列IDを持ち、かつ、検索文字列の一部もしくは全部を含むタイルを抽出するためには、ページないしは複数ページから構成されるページベクタデータを構成するすべてのタイルについて、検索処理を実行する必要がある。そのため、場合によっては、検索結果のプレビュー表示の応答性が低下する可能性がある。
そこで、実施形態5では、この点を解消するために、文字列IDが割り当てられた文字列に含まれる各文字エントリに対する、当該文字が含まれるタイルのタイルIDを管理するテーブルをシステムメモリ5に生成する。
即ち、実施形態1では、各タイルに文字列を関連付けるために、文字列に文字列IDを付加して用いたが、実施形態5では、文字列の各文字をタイルに関連付けるクロスリファレンスとして、図21に示すタイルリファレンステーブル(以下、TRTと略称する)2203を、ページベクタデータからタイルベクタデータへの分割時に生成して用いることで、検索結果のプレビュー応答性の向上を図る。
以下、TRTを用いた検索結果のプレビュー応答性の向上の方法について詳細に説明する。ここで、実施形態5の基本的なタイルベクタデータの生成処理は、実施形態1とほぼ同様であるため、実施形態5ではその差分のみ説明する。
TRTエントリへデータを登録するTRTエントリ登録(TRT生成)処理は、図10のステップS605のオブジェクトの分割処理で実行される。より詳細には、図11のステップS1404とステップS1405の間で実行される。
以下、このTRTエントリ登録処理について、図22を用いて説明する。
図22は本発明の実施形態5のTRTエントリ登録処理を示すフローチャートである。
(ステップS2301)
上述したように、TRTエントリ登録処理は、図11のステップS1404とステップS1405の間で実行される。ここまでの処理過程について補足しておくと、これは、あるページベクタデータの文字列描画に関するコマンドを分割処理するシーケンスである。そして、ステップS2301の処理に入る段階では、文字列IDは既にステップS1402で、一意に決定されており、分割処理の際の注目タイルおよび、注目タイルに含まれる分割された文字列も抽出されている。
上述したように、TRTエントリ登録処理は、図11のステップS1404とステップS1405の間で実行される。ここまでの処理過程について補足しておくと、これは、あるページベクタデータの文字列描画に関するコマンドを分割処理するシーケンスである。そして、ステップS2301の処理に入る段階では、文字列IDは既にステップS1402で、一意に決定されており、分割処理の際の注目タイルおよび、注目タイルに含まれる分割された文字列も抽出されている。
(ステップS2302)
TRTエントリ登録処理では、まず、注目タイルに含まれる、分割された文字列の1文字目を注目文字に設定する。
TRTエントリ登録処理では、まず、注目タイルに含まれる、分割された文字列の1文字目を注目文字に設定する。
(ステップS2303)
そして、注目文字のエントリがTRTに登録されているか否かを判定する。登録されていない場合(ステップS2303でNO)、ステップS2304へ進む。一方、登録されている場合(ステップS2303でYES)、ステップS2305へ進む。
そして、注目文字のエントリがTRTに登録されているか否かを判定する。登録されていない場合(ステップS2303でNO)、ステップS2304へ進む。一方、登録されている場合(ステップS2303でYES)、ステップS2305へ進む。
(ステップS2304→ステップS2305)
注目文字を対応する文字列IDの新たなエントリとしてTRTに登録(追加)する。そして、当該新規エントリに注目タイルを登録(追加)する。
注目文字を対応する文字列IDの新たなエントリとしてTRTに登録(追加)する。そして、当該新規エントリに注目タイルを登録(追加)する。
(ステップS2303→ステップS2305)
一方、注目文字のエントリがTRTに登録されている場合、既に登録されているエントリに対して、注目タイルを登録(追加)する。
一方、注目文字のエントリがTRTに登録されている場合、既に登録されているエントリに対して、注目タイルを登録(追加)する。
(ステップS2306)
以上のステップS2303〜ステップS2305の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合(ステップS2306でNO)、ステップS2303へ戻る。一方、処理が終了している場合(ステップS2306でYES)、TRTエントリ登録処理を終了する。
以上のステップS2303〜ステップS2305の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合(ステップS2306でNO)、ステップS2303へ戻る。一方、処理が終了している場合(ステップS2306でYES)、TRTエントリ登録処理を終了する。
具体例として、図21のタイルベクタデータ2201を生成する際の、TRTの生成処理について、図22に基づいて説明する。
まず、2202に示す文字列ID=0が付加された文字列「十二月十九日〜でしょう。」の分割処理において、図22のステップS1404での注目タイルはタイルID=(0,0)のタイルに設定される。注目タイル(タイルID=(0,0))に含まれる文字列は、「十二」であるので、その1文字目である「十」がまず、注目文字に設定される(ステップS2302)。
「十」はTRTのエントリとして登録されていないので(ステップS2303でNO)、新規に「十」の文字を登録する(ステップS2304)。次に、注目タイルであるタイルID=(0,0)のタイルを新規エントリ「十」に登録する(ステップS2306)。次に、注目文字を「二」に設定し、「十」の時と同様に、新規エントリ登録し、注目タイル(0,0)を登録する。
以下、同様に、タイルID=(5,0)の注目タイルまで処理した段階でのTRTの登録状態を、図21の2204に示す。
引き続き、タイルID=(0,1)の注目タイルに対するTRTエントリ登録処理を説明する。タイルID=(0,1)の注目タイルに含まれる文字列は、「十二」と「日は」であるので、その1文字目である「十」が、まず、注目文字に設定される(ステップS2302)。
タイルID=(0,0)の注目タイルにおける処理によって、「十」はTRTのエントリとして登録されているので(ステップS2303でYES)、現在の注目タイルである(0,1)をエントリ「十」に登録する(ステップS2306)。
以下、注目文字「二」のエントリは既存なので、既存エントリにタイルID=(0,1)の注目タイルを登録する。注目文字「日」のエントリも、タイルID=(3,0)の注目タイルに対する処理によって登録されているので、現在のタイルID=(0,1)の注目タイルを既存エントリに追加する。
注目文字「は」のエントリは登録されていないので、TRTに新規登録した上で、タイルID=(1,0)の注目タイルが当該エントリに登録される。
文字列ID=0の文字列の一部もしくは全部を含むタイルに対して、以上の処理を繰り返し実行すると、図21のTRT2203のStringID:0に相当するテーブルが生成される。また、文字列ID=1が付加された文字列「十二月二十日の月曜日は、」に関する描画コマンドに対しても、同様の処理を実行すると、図21のTRT2203のStringID:1に相当するテーブルが生成される。
続いて、TRTを用いた検索結果プレビュー表示の高速化を実現する検索処理について、図23を用いて説明する。
図23は本発明の実施形態5の検索処理を示すフローチャートである。
尚、図23において、実施形態4の図19のフローチャートと同一の処理については、同一のステップ番号を付加して、その詳細については省略する。
(ステップS2405)
ステップS2002において、文字列IDが割り当てられた文字列に検索文字列が含まれている場合(ステップS2402でYES)、エントリサーチ処理を実行する。
ステップS2002において、文字列IDが割り当てられた文字列に検索文字列が含まれている場合(ステップS2402でYES)、エントリサーチ処理を実行する。
(ステップS2408)
エントリサーチ処理では、まず、検索文字列の各文字に対するエントリ(タイルID)を、該当する文字列IDのTRTから抽出する(サーチする)。
エントリサーチ処理では、まず、検索文字列の各文字に対するエントリ(タイルID)を、該当する文字列IDのTRTから抽出する(サーチする)。
(ステップS2409)
そして、当該抽出(サーチ)されたエントリに対して、検索文字列を含むタイルを抽出する。
そして、当該抽出(サーチ)されたエントリに対して、検索文字列を含むタイルを抽出する。
以上の処理によって、実施形態4の図19のステップS2005のような、すべてのタイルベクタデータを構成するすべてのタイルを走査して、検索条件に合致したタイルを検索する処理を簡略化することができる。つまり、実施形態5では、TRTのエントリに登録されたタイルのみに対して、検索処理を実行すれば良い。
具体例として、図21に示すタイルベクタデータ2201がHDD8内に保存されていて、このタイルベクタデータ2201から、検索条件として「日と」という文字列(検索文字列)を検索する場合の処理フローについて、図23に基づいて説明する。
尚、ここでは、実施形態4の図19の処理と、実施形態5の図23の処理との差異について説明する。
まず、実施形態4においては、「日と」という文字列の先頭が出現するタイルID=(4,2)のタイルまで、すべてのタイルベクタデータを検索していく必要がある。これに対し、実施形態5の場合、TRT2203のエントリ「日」および「と」が含まれた7つのタイルベクタデータを検索すれば足りる。
また、タイルIDから文字列の連続性を考慮すれば、タイルID=(4,2),(5,2)に検索文字列「日と」が含まれることは明白にわかり、検索効率が向上する。即ち、検索に対する応答性を向上させることができる。
以上説明したように、実施形態5によれば、実施形態1で説明した効果に加えて、ページベクタデータに含まれる文字列の各文字が、タイルベクタデータへの分割時に、いずれのタイルに含まれるか(属するか)を示すタイルリファレンステーブルを生成する。
これにより、タイルベクタデータとして保持された画像データ内の文字列検索を実行して、その検索結果をプレビュー表示する際には、そのタイルリファレンステーブルを用いることで、検索文字列が含まれるタイルだけを参照して、検索文字列を含むタイルを効率的に抽出することができる。その結果、検索結果表示を高速化することができる。即ち、検索の応答性を向上することできる。
[実施形態6]
実施形態5では、図23のステップS2409の検索文字列を含むタイル抽出処理においては、検索文字列の連続性を、文字列の含まれるタイルの位置関係、および、タイル内の文字列データの位置情報から算出して判定する必要がある。
実施形態5では、図23のステップS2409の検索文字列を含むタイル抽出処理においては、検索文字列の連続性を、文字列の含まれるタイルの位置関係、および、タイル内の文字列データの位置情報から算出して判定する必要がある。
これに対し、実施形態6では、更に、文字列IDが付加された文字列の、それぞれ隣り合った文字同士の隣接関係(特に、各文字に後続する後続文字)を示す情報を管理する、図24に示すインデックステーブル(以下、IDT)2503をシステムメモリ5に生成する。
このIDTによって、TRTの各文字エントリに一意のエントリIDを割り当てて文字列内の同一文字を別エントリとして登録したものを用いることで、検索文字列の連続性に係る計算を実行することなく、さらに高速な検索を可能とすることができる。
以下、IDTとTRTを用いた検索結果のプレビュー応答性の向上の方法について詳細に説明する。ここで、実施形態6の基本的なタイルベクタデータの生成処理は、実施形態5と同様であるため、実施形態6ではその差分のみ説明する。
IDTエントリへデータを登録するIDTエントリ登録(IDT生成)処理は、図10のステップS605のオブジェクトの分割処理で実行される。より詳細には、図11のステップS1402とステップS1403の間で実行される。
以下、このIDTエントリ登録処理について、図25を用いて説明する。
図25は本発明の実施形態6のIDTエントリ登録処理を示すフローチャートである。
(ステップS2701)
上述したように、IDTの生成は、図11のステップS1402とステップS1403の間で実行される。ここまでの処理過程について補足しておくと、これは、あるページベクタデータの文字列描画に関するコマンドを分割処理するシーケンスである。そして、ステップS2701の処理に入る段階では、文字列IDは既にステップS1402で、一意に決定されている。
上述したように、IDTの生成は、図11のステップS1402とステップS1403の間で実行される。ここまでの処理過程について補足しておくと、これは、あるページベクタデータの文字列描画に関するコマンドを分割処理するシーケンスである。そして、ステップS2701の処理に入る段階では、文字列IDは既にステップS1402で、一意に決定されている。
IDTの生成では、まず、文字列IDが付加された文字列の各文字に対して、エントリIDを割り当てる。このエントリIDは、HDD8内に保存されるすべてのタイルベクタデータの各文字に対して一意である必要がある。
(ステップS2702)
IDTエントリ登録処理を実行する。
IDTエントリ登録処理を実行する。
(ステップS2703)
IDTエントリ登録処理では、まず、ステップS1402で文字列IDが割り当てられた注目文字列の1文字目を注目文字に設定する。
IDTエントリ登録処理では、まず、ステップS1402で文字列IDが割り当てられた注目文字列の1文字目を注目文字に設定する。
(ステップS2704)
そして、注目文字のインデックスがIDTに登録されているか否かを判定する。登録されていない場合(ステップS2704でNO)、ステップS2705へ進む。一方、登録されている場合(ステップS2704でYES)、ステップS2706へ進む。
そして、注目文字のインデックスがIDTに登録されているか否かを判定する。登録されていない場合(ステップS2704でNO)、ステップS2705へ進む。一方、登録されている場合(ステップS2704でYES)、ステップS2706へ進む。
(ステップS2705→ステップS2706)
注目文字を、新たなインデックスとしてIDTに登録する。そして、当該新規インデックスに対して、注目文字の後続の1文字とそのエントリIDとを組とする情報を登録(追加)する。
注目文字を、新たなインデックスとしてIDTに登録する。そして、当該新規インデックスに対して、注目文字の後続の1文字とそのエントリIDとを組とする情報を登録(追加)する。
(ステップS2704→ステップS2706)
一方、注目文字のインデックスがIDTに登録されている場合、既に登録されているインデックスに対して、注目文字の後続の1文字とそのエントリIDとを組とする情報を登録(追加)する。
一方、注目文字のインデックスがIDTに登録されている場合、既に登録されているインデックスに対して、注目文字の後続の1文字とそのエントリIDとを組とする情報を登録(追加)する。
(ステップS2707)
以上のステップS2704〜ステップS2706の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合(ステップS2707でNO)、ステップS2704へ戻る。一方、処理が終了している場合(ステップS2707でYES)、IDTエントリ登録処理を終了する。
以上のステップS2704〜ステップS2706の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合(ステップS2707でNO)、ステップS2704へ戻る。一方、処理が終了している場合(ステップS2707でYES)、IDTエントリ登録処理を終了する。
以上の処理によって、例えば、図24の文字列2501に対しては、IDT2503が生成される。
次に、実施形態6のTRTエントリ登録処理について説明する。
TRTエントリ登録処理は、図10ステップS605のオブジェクトの分割処理で実行される。より詳細には、図11のステップS1404とステップS1405の間で実行される。
以下、このTRTエントリ登録処理について、図26を用いて説明する。
図26は本発明の実施形態6のTRTエントリ登録処理を示すフローチャートである。
尚、図26において、実施形態5の図22のフローチャートと同一の処理については、同一のステップ番号を付加して、その詳細については省略する。
(ステップS2603)
ステップS2002で注目文字が設定されると、注目文字のX/Y方向のPositionの値が共に正であるか否かを判定する。値が共に正である場合(ステップS2603でYES)、ステップS2604へ進む。一方、値のいずれかが負である場合(ステップS2603でNO)、ステップS2605へ進む。
ステップS2002で注目文字が設定されると、注目文字のX/Y方向のPositionの値が共に正であるか否かを判定する。値が共に正である場合(ステップS2603でYES)、ステップS2604へ進む。一方、値のいずれかが負である場合(ステップS2603でNO)、ステップS2605へ進む。
(ステップS2603→ステップS2605)
注目文字のX/Y方向のPositionの値が共に正である場合は、以前の処理において注目文字のエントリが登録されていないと判断される。そのため、一意のエントリIDを割り当てて、当該注目文字を、対応する文字列IDの新たなエントリとしてTRTに登録(追加)する。そして、当該新規エントリに注目タイルを登録(追加)する。
注目文字のX/Y方向のPositionの値が共に正である場合は、以前の処理において注目文字のエントリが登録されていないと判断される。そのため、一意のエントリIDを割り当てて、当該注目文字を、対応する文字列IDの新たなエントリとしてTRTに登録(追加)する。そして、当該新規エントリに注目タイルを登録(追加)する。
(ステップS2603→ステップS2605)
一方、注目文字のX/Y方向のPositionの値のいずれかが負である場合、以前の処理において既に登録されているエントリに対して、注目タイルを登録(追加)する。
一方、注目文字のX/Y方向のPositionの値のいずれかが負である場合、以前の処理において既に登録されているエントリに対して、注目タイルを登録(追加)する。
(ステップS2606)
以上のステップS2602〜ステップS2605の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合(ステップS2606でNO)、ステップS2603へ戻る。一方、処理が終了している場合(ステップS2606でYES)、TRTエントリ登録処理を終了する。
以上のステップS2602〜ステップS2605の処理を、注目文字列のすべての文字に対して実行する。すべての文字についての処理が終了したか否かを判定する。処理が終了していない場合(ステップS2606でNO)、ステップS2603へ戻る。一方、処理が終了している場合(ステップS2606でYES)、TRTエントリ登録処理を終了する。
具体例として、図21のタイルベクタデータ2201を生成する際の、TRTの生成処理について、図26に基づいて説明する。
ここで、処理対象の文字列2501(図24)の各文字には、その上部に図示されるようなエントリIDが割り当てられている場合、TRT2502が生成される。実施形態5の図21のTRT2203との差分としては、各文字に対するエントリIDが一緒に保持されていることと、文字列内の同一文字が別エントリとして登録されていることである(TRT2502において、同一文字列内で「十」という文字がエントリID:0と3で重複登録されている)。
次に、TRT及びIDTを用いた検索処理について、図27を用いて説明する。
図27は本発明の実施形態6の検索処理を示すフローチャートである。
尚、図27において、実施形態5の図23のフローチャートと同一の処理については、同一のステップ番号を付加して、その詳細については省略する。
(ステップS2805)
ステップS2002において、文字列IDが割り当てられた文字列に検索文字列が含まれている場合(ステップS2002でYES)、エントリサーチ処理を実行する。
ステップS2002において、文字列IDが割り当てられた文字列に検索文字列が含まれている場合(ステップS2002でYES)、エントリサーチ処理を実行する。
(ステップS2808)
エントリサーチ処理では、まず、検索文字列の最初の文字を注目文字として設定する。
エントリサーチ処理では、まず、検索文字列の最初の文字を注目文字として設定する。
(ステップS2809)
そして、検索文字列内の注目文字に後続文字があるか否かを判定する。後続文字がある場合(ステップS2809でYES)、ステップS2810へ進む。一方、後続文字がない場合(ステップS2809でNO)、ステップS2813へ進む。
そして、検索文字列内の注目文字に後続文字があるか否かを判定する。後続文字がある場合(ステップS2809でYES)、ステップS2810へ進む。一方、後続文字がない場合(ステップS2809でNO)、ステップS2813へ進む。
(ステップS2810)
IDTから注目文字のインデックスをサーチする。
IDTから注目文字のインデックスをサーチする。
(ステップS2811)
当該インデックスに対して、後続文字をもつエントリをサーチして、ヒットしたエントリのもつエントリIDを保持する。
当該インデックスに対して、後続文字をもつエントリをサーチして、ヒットしたエントリのもつエントリIDを保持する。
(ステップS2812)
さらに、注目文字をインクリメントする。そして、ステップS2810からステップS2812の処理を、注目文字に対する後続文字がなくなるまで、即ち、注目文字が検索文字列の最終文字に至るまで反復する。
さらに、注目文字をインクリメントする。そして、ステップS2810からステップS2812の処理を、注目文字に対する後続文字がなくなるまで、即ち、注目文字が検索文字列の最終文字に至るまで反復する。
(ステップS2813)
一方、注目文字の後続文字がない場合、即ち、検索文字列が1文字の場合、1文字目のエントリIDを算出する。
一方、注目文字の後続文字がない場合、即ち、検索文字列が1文字の場合、1文字目のエントリIDを算出する。
具体的には、検索文字列が2文字以上からなる場合、ステップS2811にて、2文字目以降のエントリIDはすべて抽出されているので、2文字目のエントリIDから1を減じた値を1文字目のエントリIDとする。また、検索文字列が1文字からなる場合、当該文字のインデックスに対するエントリのいずれかのエントリIDから1を減じた値を1文字目のエントリIDとする。
以上の処理によって、実施形態5の図23のステップS2409のような、2文字以上の検索文字列の検索に対して、被検索文字列の連続性を判定して、検索条件に合致したタイルを検索する処理を簡略化することができる。
これにより、実施形態6では、IDTのサーチによって、抽出される文字列の各文字のエントリIDを容易に特定でき、また、当該抽出したエントリIDによってTRTから検索文字列の含まれるタイルのタイルID、もしくは、その周辺のタイルのタイルIDを容易に抽出することができる。
具体例として、図21のタイルベクタデータ2201がHDD8内に保存されていて、このタイルベクタデータ2201から、検索条件として「九日」という文字列(検索文字列)を検索する場合の処理フローについて、図27に基づいて説明する。
尚、ここでは、実施形態5の図23の処理と、実施形態6の図27の処理との差異について説明する。
まず、実施形態5においては、「九日」という文字列の連続性を考慮して当該文字の含まれるタイルIDを抽出するために、TRTから抽出した文字「九」に対するタイルID=(2,0)、(3,0)、(2,1)、(3,1)のタイルと、文字「日」に対するタイルID=(3,0)、(4,0)、(0,1)、(3,1)、(4,1)、(4,2)のタイルと、各タイルに含まれるベクタデータのPosition情報等から2文字の連続性を算出する必要がある。
これに対して、実施形態6の場合、「九」と「日」の連続性は、IDT2503から、「4」のエントリIDをもつ「九」と、「5」のエントリIDをもつ「日」が該当することが容易にサーチできる。そして、TRT2502のエントリID「4」及び「5」から、当該文字列の含まれるタイルIDが容易に抽出できるので、検索効率が向上する。即ち、検索に対する応答性が向上させることができる。
以上説明したように、実施形態6によれば、実施形態1で説明した効果に加えて、ページベクタデータに含まれる文字列の各文字に対して、隣接する文字の情報を保持するインデックステーブルを生成する。
これにより、タイルベクタデータとして保持された画像データ内の文字列検索を実行して、その検索結果をプレビュー表示する際には、そのインデックステーブルを用いることで、検索文字列の連続性を満足するタイルだけを参照して、検索文字列を含むタイルを効率的に抽出することができる。その結果、検索結果表示を高速化することができる。即ち、検索の応答性を向上することできる。
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
1 コントローラ
2 システムバスブリッジ
3 CPU
4 メモリコントローラ
5 システムメモリ
6 汎用バス
7 ハードディスクコントローラ
8 ハードディスクドライブ
9 操作部コントローラ
10 操作部
11 ネットワークI/F
12 ネットワーク
13 タイル/ページベクタ変換部
14 ラスタ/タイルベクタ変換部
15 画像処理部
16 スキャナ
17 プリンタ
18 画像データ展開部
18a〜18d 小画像データ展開部
19 ローカルメモリ
2 システムバスブリッジ
3 CPU
4 メモリコントローラ
5 システムメモリ
6 汎用バス
7 ハードディスクコントローラ
8 ハードディスクドライブ
9 操作部コントローラ
10 操作部
11 ネットワークI/F
12 ネットワーク
13 タイル/ページベクタ変換部
14 ラスタ/タイルベクタ変換部
15 画像処理部
16 スキャナ
17 プリンタ
18 画像データ展開部
18a〜18d 小画像データ展開部
19 ローカルメモリ
Claims (16)
- 入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがラスタ画像データである場合は前記第1変換手段でブロックベクタ画像データに変換させ、前記入力手段から入力された画像データがページベクタ画像データである場合は前記第2変換手段でブロックベクタ画像データに変換させ、前記第1変換手段あるいは前記第2変換手段を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第2変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段を備える
ことを特徴とする画像処理装置。 - ブロックベクタ画像データをラスタ画像データに展開する展開手段を更に備え、
前記画像データ転送制御手段は、
前記出力手段から出力させるべき画像データの形式がラスタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記展開手段を実行させて得られるラスタ画像データを前記出力手段から出力させる
ように、装置内での処理対象の画像データの転送を制御する
ことを特徴とする請求項1に記載の画像処理装置。 - 1ページ分のブロックベクタ画像データから、ページ全体を示すページベクタ画像データへ変換する第3変換手段と、
前記画像データ転送制御手段は、
前記出力手段から出力させるべき画像データの形式がベクタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記第3変換手段を実行させて得られるページベクタ画像データを前記出力手段から出力させる
ように、装置内での処理対象の画像データの転送を制御する
ことを特徴とする請求項1または2に記載の画像処理装置。 - 前記第3変換手段は、前記ブロックベクタ画像データから前記ページベクタ画像データへ変換する際に、分割後の文字列を含むブロックベクタ画像データについては、それに含まれる文字列識別情報に基づいて、分割後の文字列を分割前の文字列に復元する復元手段とを備える
ことを特徴とする請求項3に記載の画像処理装置。 - 前記記憶手段に記憶されたブロックベクタ画像データに含まれる文字列識別情報に基づいて、検索文字列を含むブロックベクタ画像データを検索する検索手段を更に備える
ことを特徴とする請求項1に記載の画像処理装置。 - 前記検索手段で検索した検索文字列を含むブロックベクタ画像データに基づいて、前記出力手段から対応する画像データを出力する
ことを特徴とする請求項5に記載の画像処理装置。 - 前記第2変換手段は、更に、前記ページベクタ画像データに含まれる文字列の分割後の文字列が属するブロックベクタ画像データを示すブロック識別情報を管理する第1テーブルを生成する第1テーブル生成手段を備える
ことを特徴とする請求項6に記載の画像処理装置。 - 前記検索手段は、前記第1テーブルを参照して、検索文字列を含むブロック画像データを検索する
ことを特徴とする請求項7に記載の画像処理装置。 - 前記第2変換手段は、更に、前記ページベクタ画像データに含まれる文字列の各文字に対し、その各文字の後続文字を示す情報を管理する第2テーブルを生成する第2テーブル生成手段を備える
ことを特徴とする請求項7に記載の画像処理装置。 - 前記検索手段は、前記第1及び第2テーブルを参照して、検索文字列を含むブロック画像データを検索する
ことを特徴とする請求項9に記載の画像処理装置。 - 入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
画像データを出力する出力手段と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換手段と、
ブロックベクタ画像データを記憶する記憶手段と、
前記入力手段から入力された画像データがページベクタ画像データである場合は前記第2変換手段でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御手段とを備え、
前記第2変換手段は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成手段を備える
ことを特徴とする画像処理装置。 - ブロックベクタ画像データをラスタ画像データに展開する展開手段と、
1ページ分のブロックベクタ画像データから、ページ全体を示すページベクタ画像データへ変換する第3変換手段とを更に備え、
前記画像データ転送制御手段は、
前記出力手段から出力させるべき画像データの形式がラスタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記展開手段を実行させて得られるラスタ画像データを前記出力手段から出力させ、
前記出力手段から出力させるべき画像データの形式がベクタ画像データ形式であると判断した場合は、前記記憶手段に記憶されたブロックベクタ画像データに対して前記第3変換手段を実行させて得られるページベクタ画像データを前記出力手段から出力させる
ように、装置内での処理対象の画像データの転送を制御する
ことを特徴とする請求項11に記載の画像処理装置。 - 入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換工程と、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力部から入力された画像データがラスタ画像データである場合は前記第1変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させ、前記第1変換工程あるいは前記第2変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第2変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を備える
ことを特徴とする画像処理装置の制御方法。 - 入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ラスタ画像データを、所定の大きさのブロック毎に分割し、ベクトル化処理を実行することにより、当該所定の大きさに分割された各ブロックに対応するブロックベクタ画像データに変換する第1変換工程のプログラムコードと、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力部から入力された画像データがラスタ画像データである場合は前記第1変換工程でブロックベクタ画像データに変換させ、入力部から入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させ、前記第1変換工程あるいは前記第2変換工程を用いて変換された前記ブロックベクタ画像データを前記記憶手段に記憶させるように、制御する制御工程のプログラムコードとを備え、
前記第2変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程のプログラムコードを備える
ことを特徴とするプログラム。 - 入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程と、
ブロックベクタ画像データを記憶手段に記憶する記憶工程と、
入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように、装置内での処理対象の画像データの転送を制御する画像データ転送制御工程とを備え、
前記第2変換工程は、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程を含む
ことを特徴とする画像処理装置の制御方法。 - 入力された画像データに対する処理を実行する画像処理装置の制御を実現するプログラムであって、
ページベクタ画像データを、所定の大きさのブロックに対応するブロックベクタ画像データへ変換する第2変換工程のプログラムコードと、
ブロックベクタ画像データを記憶手段に記憶する記憶工程のプログラムコードと、
入力された画像データがページベクタ画像データである場合は前記第2変換工程でブロックベクタ画像データに変換させて、当該変換されたブロックベクタ画像データを前記記憶手段に記憶させるように制御する制御工程のプログラムコードとを備え、
前記第2変換工程のプログラムコードは、前記ページベクタ画像データから前記ブロックベクタ画像データへ変換する際に、前記ページベクタ画像データに含まれる文字列が、複数のブロックベクタ画像データに分割されて変換される場合には、分割前後の文字列の関係を示す文字列識別情報を、その分割後の文字列を含むブロックベクタ画像データ中に生成する生成工程のプログラムコードを含む
ことを特徴とする画像処理装置の制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005157608A JP2006331308A (ja) | 2005-05-30 | 2005-05-30 | 画像処理装置及びその制御方法、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005157608A JP2006331308A (ja) | 2005-05-30 | 2005-05-30 | 画像処理装置及びその制御方法、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006331308A true JP2006331308A (ja) | 2006-12-07 |
Family
ID=37552908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005157608A Withdrawn JP2006331308A (ja) | 2005-05-30 | 2005-05-30 | 画像処理装置及びその制御方法、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006331308A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009271729A (ja) * | 2008-05-07 | 2009-11-19 | Canon Inc | 画像処理装置及びその制御方法、プログラム。 |
JP2010231654A (ja) * | 2009-03-27 | 2010-10-14 | Sharp Corp | 画像処理方法、画像処理装置、画像形成装置、コンピュータプログラム及び記録媒体 |
-
2005
- 2005-05-30 JP JP2005157608A patent/JP2006331308A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009271729A (ja) * | 2008-05-07 | 2009-11-19 | Canon Inc | 画像処理装置及びその制御方法、プログラム。 |
US8224091B2 (en) | 2008-05-07 | 2012-07-17 | Canon Kabushiki Kaisha | Image processing apparatus, method of controlling the same, and program for extracting information usable for a search |
JP2010231654A (ja) * | 2009-03-27 | 2010-10-14 | Sharp Corp | 画像処理方法、画像処理装置、画像形成装置、コンピュータプログラム及び記録媒体 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4408836B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
JP4164518B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
JP5111268B2 (ja) | 画像処理装置、画像処理方法、そのプログラムおよび記憶媒体 | |
JP4757120B2 (ja) | 画像処理装置及びその制御方法 | |
JP6729766B2 (ja) | 印刷データ処理装置及びプログラム | |
JP4766657B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
US20060114484A1 (en) | Image processing apparatus and method therefor | |
US20120250048A1 (en) | Image processing apparatus and image processing method | |
JP5199727B2 (ja) | 画像処理方法及び画像処理装置とその制御方法 | |
JP5188201B2 (ja) | 画像処理装置及びその制御方法、プログラム、記憶媒体 | |
JP2009032186A (ja) | 画像処理装置、その制御方法、ならびにそのプログラムおよび記憶媒体 | |
JP2008311930A (ja) | 画像処理装置及び画像処理方法、コンピュータプログラム及び記憶媒体 | |
JP2006023944A (ja) | 画像処理システム及び画像処理方法 | |
JP2006331308A (ja) | 画像処理装置及びその制御方法、プログラム | |
JP5098614B2 (ja) | 文章処理装置の制御方法および文章処理装置 | |
JP2006327155A (ja) | 画像処理装置及びその制御方法、プログラム | |
JP4475680B2 (ja) | 画像処理装置及びその制御方法、プログラム | |
JP2009277093A (ja) | 画像処理装置、方法、及び、プログラム | |
JP3133848B2 (ja) | 画像処理装置及び画像処理システム | |
JP5100354B2 (ja) | 画像処理装置、画像処理方法、及びコンピュータプログラム | |
JP3236053B2 (ja) | 画像処理システム及び画像処理方法 | |
JP2008153764A (ja) | 画像処理システム | |
JP3226583B2 (ja) | カラー画像処理システム及び画像処理装置 | |
JP3297448B2 (ja) | 画像処理装置及び画像処理方法 | |
JP2008294831A (ja) | 画像歪み補正装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080805 |