説明

画像処理装置及びその制御方法、プログラム

【課題】 ブロック単位でベクトル化したオブジェクトのベクトルデータを、ベクトル化前のラスタデータに忠実に再現可能なベクトル化を実現することができる画像処理装置及びその制御方法、プログラムを提供する。
【解決手段】 画像データを、設定されたブロックサイズのブロック毎に分割する際に、該画像データ中に複数ブロックに跨がるオブジェクトが存在する場合、オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する。ブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、分割されたオブジェクトのオブジェクト情報を再設定する。再設定されたオブジェクト情報を有するオブジェクトを用いて、ブロックベクタ画像データを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力された画像データに対する処理を実行する画像処理装置及びその制御方法、プログラムに関するものである。
【背景技術】
【0002】
ネットワーク上に接続され、外部あるいは内部の画像データに対する画像データ処理を実行し、その処理した画像データを出力する画像データ入出力システムが知られている。
【0003】
この画像データ入出力システムとしては、MFP(Multi Function Peripheral)と呼ばれるものがある。
【0004】
ここで、従来のMFPを制御するコントローラ100を図20に示す。コントローラ100は、システムバスブリッジ(SBB)101により、CPU102、メモリコントローラ(MC)103、汎用バス105、画像処理部110、画像データ展開部(RIP)113が接続されている。ここで、RIPは、Raster Image Processorの略称である。
【0005】
汎用バス105には、画像データを蓄積するための大容量記憶部(HDD(ハードディスクドライブ))107を制御するハードディスクコントローラ(HDDCont)106が接続されている。また、汎用バス105には、MFPが接続されているネットワーク108を介して、外部機器間との画像データの転送を行うインターフェースになるネットワークI/F109が接続されている。この画像データとしては、ページベクタ形式(PDL(ページ記述言語)、PDF、SVG等)の画像データがある。
【0006】
HDDCont106には、HDD(ハードディスクドライブ)107が接続されており、画像データの記憶媒体として使われる。同様に、MC103には、システムメモリ(Memory)104が接続されており、画像データを一時記憶するための媒体として使われる。システムメモリ104には、一般的には、DIMMが用いられる。
【0007】
画像処理部110には、スキャナ111及びプリンタ112が接続されている。スキャナ111から入力された画像データは、画像処理部110によって所定の画像処理が実施された後、コントローラ100へ入力される。また、コントローラ100内に記憶されている画像データは、画像処理部110によって所定の画像処理が実施され、プリンタ112へ出力される。
【0008】
コントローラ100でハンドリングされる画像データは、ネットワーク経由での外部機器との入出力はページベクタ形式(PDLやPDF、SVG等)、スキャナ111やプリンタ112との入出力はラスタデータ形式である。外部機器から入力されたページベクタ形式の画像データは、CPU102により、プリミティブなオブジェクトにインタプリットされ、DL(DisplayList)と呼ばれる中間データ(DLデータ)に変換されてから、RIP113に入力される。
【0009】
これらの画像データはコントローラ100の内部のシステムメモリ104に一旦記憶される。そのため、システムメモリ104上には、ラスタデータ、ページベクタデータ(PDL等)、DLデータ等の多種類のデータが存在する。
【0010】
HDD107には、画像データとしてスキャナ113から入力された画像データとRIP113でレンダリングされたラスタ画像データが記憶される。
【0011】
また、RIP113では、ページ単位で処理するのではなく、予め定めたバンドやタイル等の所定サイズのブロック単位を処理領域として処理する方法がしばしば用いられる。この処理領域を、ページよりも小さいバンドやタイル等のブロック単位にすることで、RIP113におけるラスタライズの処理時に必要となる画像データ展開用のメモリ容量を削減することができるという利点がある。更には、ブロック単位の処理を並列動作させることで、RIP113におけるラスタライズの処理を高速化することができるという利点がある。
【0012】
以上のような画像処理システムにおいて、例えば、ページ内で、複数ブロックに跨がる直線または曲線オブジェクトが存在する場合がある。この場合のラスタライズ処理方法を大きく分類すると、当該オブジェクトを各ブロックに含まれる部分だけ切り出してラスタライズする方法と、当該オブジェクトを予めブロック単位のオブジェクトとして分割してラスタライズする方法2通りの方法が考えられる。
【0013】
前者の方法の場合、各ブロックの処理として、当該オブジェクトをRIP113にてラスタライズ処理する際、当該オブジェクトが有する制御点座標及び属性情報を元に、当該オブジェクトを途中までラスタライズする。そして、当該オブジェクトが各ブロックに含まれるか否かを判別し、ブロック内に含まれるならば、含まれる部分だけをラスタライズして、各ブロックにおける当該オブジェクトのラスタライズ処理を終了する。
【0014】
後者の方法の場合、当該オブジェクトが有する制御点座標及び属性情報から、当該オブジェクトがブロック単位で有する制御点座標及び属性情報に変換され、一時記憶される。その後に、当該オブジェクトをRIP113にてラスタライズ処理する際、当該オブジェクトがブロック単位で有する制御点座標及び属性情報を元に、ラスタライズして、各ブロックにおける当該オブジェクトのラスタライズ処理を終了する。
【0015】
尚、直線及び曲線オブジェクトのラスタライズ処理としては、主に3種類の処理がある。(1)当該オブジェクトのアウトライン座標を算出するアウトライン処理、(2)アウトラインから一定距離だけ離れた座標を算出する線幅処理、(3)アウトラインの端点から属性情報に基づく形状の座標を算出する端点処理である。そして、これらの処理によって、当該オブジェクトの塗りつぶし処理を行う。
【特許文献1】特開2004−120639号公報
【発明の開示】
【発明が解決しようとする課題】
【0016】
従来例において、直線及び曲線オブジェクトを各ブロックに含まれる部分だけ切り出してラスタライズする場合には、処理単位がある程度大きなバンドやタイルならば有効である。しかしながら、処理単位を小さくしすぎると、各ブロックでラスタライズ対象とするオブジェクトの数は減少せず、逆に、処理ブロック数が増加する分だけ処理量が増加してしまう。従って、更なる処理時間の短縮と記憶容量の削減を実現することは難しい。
【0017】
一方、従来例において、直線及び曲線オブジェクトを予めブロック単位のオブジェクトとして分割してラスタライズする場合には、処理単位を更に小さくすれば、各ブロックでラスタライズ対象とするオブジェクト数が減少する。これにより、単位ブロック当たりの処理時間を短縮することができる。しかしながら、オリジナルのオブジェクトをブロック単位に分割し、それをブロック単位で、ビットマップ画像にラスタライズを行う場合、分割されたブロックがそれぞれ、独立にラスタライズされるために問題が生じる場合がある。
【0018】
その問題について、図21を例に挙げて説明する。
【0019】
2001はページベクタデータの一部分であり、実際にラスタライズされた場合のイメージを元にした模式図である。この例においては、線分のオブジェクトデータ2002を有している。オブジェクトデータ2002は、始点座標と終点座標とを直線で結ぶ命令が指定されたベクタデータ(図21では白線で模式的に示されている)と、そのベクタデータの線幅(白線と垂直な方向の線幅)とで構成される。このページベクタデータ2001をブロックベクタデータ2003とブロックベクタデータ2004に分割したとする。
【0020】
オブジェクトデータ2002は、オブジェクトデータ2005と2006に分割され、それぞれ、ブロックベクタデータ2003とブロックベクタデータ2004に保持される。ブロックベクタデータ2003とブロックベクタデータ2004はラスタライズを行う際に、それぞれに含まれるオブジェクトデータ2005,2006だけを用いて、独立にラスタライズが行われる。そのため、ラスタライズ後の結果、2007のように、ブロック間の境界において、画像の欠損が生じてしまうという問題点があった(第一の課題)。
【0021】
線オブジェクトの別の問題として、破線オブジェクトのように、オブジェクトの属性値として、破線の線分部と、各線分の空白部分を指定するような属性を持っている場合がある。破線オブジェクトを有するページベクタのブロックベクタへの分割では、図22に示すように、所望の出力結果2101に対して、2102のように破線の空白部分がずれてしまうといった問題を生じる場合があった(第二の課題)。
【0022】
また、従来例において、グラデーションパターンのように、除々に色値が変化するようなパターンを有したオブジェクトのページベクタから、ブロックベクタへの変換を施した場合を考える。
【0023】
通常、グラデーションの描画命令は、始点と終点の座標値、所定の色値の変化量で表される。ページベクタ内のグラデーションオブジェクトをブロックベクタに分割する際、色値の異なる細い線分を複数並べて、グラデーションを表現していた。
【0024】
この方法によれば、オブジェクトが分割された場合でも、ブロックベクタ単位でグラデーションパターンを表現することができる。しかし、ブロックベクタデータを再利用し、ページベクタに戻したり、ブロックベクタ単位で編集を行おうとした場合、グラデーションパターンが細分化されすぎていて、ページベクタに戻せなかったり、編集が行えないといった問題があった(第三の課題)。
【0025】
本発明は上記の課題を解決するためになされたものである。その目的は、ブロック単位でベクトル化したオブジェクトのベクトルデータを、ベクトル化前のラスタデータに忠実に再現可能なベクトル化を実現することができる画像処理装置及びその制御方法、プログラムを提供することにある。
【課題を解決するための手段】
【0026】
上記の目的を達成するための本発明による画像処理装置は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
前記入力手段で入力された画像データを、設定されたブロックサイズのブロック毎に分割する際に、前記画像データ中にその分割するブロックの複数ブロックに跨がるオブジェクトが存在する場合、前記オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する分割手段と、
前記分割手段によってブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、前記分割されたオブジェクトのオブジェクト情報を再設定する設定手段と、
前記設定手段で再設定されたオブジェクト情報を用いて、ブロック毎のブロックベクタ画像データを生成する生成手段と
を備える。
【0027】
また、好ましくは、前記設定手段は、前記分割手段によってブロック毎に分割されたオブジェクトのオブジェクト情報に含まれる座標情報に基づいて、前記分割されたオブジェクトの座標情報を再設定する。
【0028】
また、好ましくは、前記設定手段は、前記分割手段によってブロック毎に分割されたオブジェクトのオブジェクト情報に含まれる属性情報に基づいて、前記分割されたオブジェクトの属性情報を再設定する。
【0029】
また、好ましくは、前記オブジェクトのオブジェクト情報に基づいて、そのオブジェクトは1つのブロック内に描画可能であるが、前記オブジェクト情報に含まれる属性情報を適用した際、該オブジェクトを複数ブロックに跨って描画する必要がある場合、該オブジェクトを隣接ブロックにも描画するよう、各ブロック内のオブジェクトを再構成する再構成手段を更に備える。
【0030】
また、好ましくは、前記生成手段は、前記再構成手段で再構成されたオブジェクトが存在する場合には、そのオブジェクトが属するブロック毎に、ベクトル化処理を実行して、ブロックベクタ画像データを生成する。
【0031】
また、好ましくは、前記オブジェクト情報に含まれる属性情報は、線幅である。
【0032】
また、好ましくは、前記オブジェクト情報に含まれる属性情報は、オブジェクトの端点の補間方法である。
【0033】
また、好ましくは、前記設定手段は、更に、前記分割手段による分割後のオブジェクトの端点に対して、その分割によって生じた端点と、分割前のオブジェクトのオリジナルの端点と区別するためのフラグを、前記分割されたオブジェクトのオブジェクト情報として再設定する。
【0034】
また、好ましくは、前記生成手段で生成されたブロックベクタ画像データを記憶する記憶手段と、
前記記憶手段に記憶されたブロックベクタ画像データをラスタ画像データに展開する展開手段と
を更に備える。
【0035】
また、好ましくは、前記展開手段は、処理対象のブロックベクタ画像データに含まれるオブジェクトのオブジェクト情報に基づいて、前記オブジェクトをラスタ画像データに展開する。
【0036】
また、好ましくは、前記展開手段は、前記オブジェクト情報に含まれるフラグのフラグ値に基づいて、処理対象のオブジェクトの端点を描画するための端点処理を実行する。
【0037】
上記の目的を達成するための本発明による画像処理装置の制御方法は以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
画像データを入力する入力工程と、
前記入力工程で入力された画像データを、設定されたブロックサイズのブロック毎に分割する際に、前記画像データ中にその分割するブロックの複数ブロックに跨がるオブジェクトが存在する場合、前記オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する分割工程と、
前記分割工程によってブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、前記分割されたオブジェクトのオブジェクト情報を再設定する設定工程と、
前記設定工程で再設定されたオブジェクト情報を用いて、ブロック毎のブロックベクタ画像データを生成する生成工程と
を備える。
【0038】
上記の目的を達成するための本発明によるプログラムは以下の構成を備える。即ち、
入力された画像データに対する処理を実行する画像処理装置の制御をコンピュータに実行させるためのプログラムであって、
画像データを入力する入力工程と、
前記入力工程で入力された画像データを、設定されたブロックサイズのブロック毎に分割する際に、前記画像データ中にその分割するブロックの複数ブロックに跨がるオブジェクトが存在する場合、前記オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する分割工程と、
前記分割工程によってブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、前記分割されたオブジェクトのオブジェクト情報を再設定する設定工程と、
前記設定工程で再設定されたオブジェクト情報を用いて、ブロック毎のブロックベクタ画像データを生成する生成工程と
をコンピュータに実行させる。
【発明の効果】
【0039】
本発明によれば、ブロック単位でベクトル化したオブジェクトのベクトルデータを、ベクトル化前のラスタデータに忠実に再現可能なベクトル化を実現することができる画像処理装置及びその制御方法、プログラムを提供できる。
【発明を実施するための最良の形態】
【0040】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【0041】
[実施形態1]
[MFP装置概要]
図1は本発明の実施形態1の画像処理システムを構成するMFPのコントローラの詳細を示すブロック図である。
【0042】
MFP1000を制御するコントローラ1は、システムバスブリッジ(SBB)2により、CPU3、メモリコントローラ(MC)4、汎用バス6が接続されている。更に、SBB2には、タイル/ページベクタ変換部13、ラスタ/ベクタ変換部14、画像処理部15、画像データ展開部(RIP)18が接続されている。
【0043】
ここで、このRIP18は、タイルベクタデータを展開することが可能であり、内部には、複数の小画像データ展開部(μRIP)18a〜18dが構成されている。
【0044】
MC4には、システムメモリ(Memory)5が接続されており、画像データを一時記憶するための媒体として使われる。
【0045】
汎用バス6には、画像データを蓄積するためのHDD8を制御するハードディスクコントローラ(HDDCont)7及び操作部(例えば、LCD等から構成されるタッチパネル)10を制御する操作部コントローラ9が接続されている。更に、汎用バス6には、MFP1000が接続されているネットワーク12を介して、外部機器間との画像データの転送を行うインターフェースになるネットワークI/F11が接続されている。
【0046】
尚、操作部10では、実施形態1及び後述する各実施形態の各種処理の実行指示の入力や、処理結果等を表示するための操作画面が表示され、ユーザは、この操作画面を介して各種操作を実現することができる。
【0047】
ラスタ/タイルベクタ変換部14には、画像処理部15が接続されている。また、画像処理部15には、スキャナ16及びプリンタ17が接続されている。
【0048】
また、SBB2には、RIP18が接続されている。また、RIP18には、RIP18から出力されるデータを記憶するローカルメモリ(LocalMemory)19が接続されている。
【0049】
コントローラ1でハンドリングされる画像データは、外部機器との入出力はベクタ(PDL、PDF、SVG等)形式の画像データ(以下、ベクタデータとも言う)でインタフェースされる。また、スキャナ16やプリンタ17との入出力はラスタ形式の画像データ(以下、ラスタデータとも言う)でインターフェースされる。
【0050】
コントローラ1では、スキャンデータ(ラスタデータ)はラスタ/タイルベクタ変換部14でタイルベクタデータに変換される。また、このタイルベクタデータからRIP18の処理によって得られるタイルDLデータは、RIP18に接続されたローカルメモリ19に記憶される。
【0051】
従って、システムメモリ5上には、ページベクタデータとタイルベクタデータの2種類の画像のみが記憶される。つまり、画像サイズの大きいラスタデータ及びDLデータをシステムメモリ5に記憶する必要がなくなる。そのため、システムメモリ5上で確保しなければならない画像データ領域を削減することができる。
【0052】
また、RIP18から出力されるDLデータはタイル単位に分割された、タイルDLデータで記憶される。そのため、従来のページ単位のページDLデータに比べ、非常に少ないメモリ容量で記憶できる。従って、ローカルメモリ19はオンチップ上に実装することが可能になり、メモリレイテンシを小さくできる。その結果、タイルデータ展開速度を高速化することが可能となる。
【0053】
また、タイルベクタデータのみを画像データとして、HDD8上に記憶すれば良いので、HDD8へのアクセス速度のボトルネックが緩和され、データ処理の高速化が図れる。同時に、タイル単位で処理することにより、RIP18のコストダウンも可能となる。
【0054】
より高い処理能力が要求される場合は、RIP18内に備えるμRIP18a〜18dを並列に複数実装することで、処理能力を可変にすることができる。このようにすることで、コントローラ1の処理能力がシンプルに調整できることから、スケーラビリティの確保が容易なシステムを構築できる。
【0055】
尚、本発明では、ネットワークI/F11及びスキャナ16がコントローラ1内へ画像データを入力する画像入力部として機能する。また、ネットワークI/F11及びプリンタ17が画像データを出力する画像出力部として機能する。
【0056】
以下に、MFP1000が実現可能な各種処理のデータフローについて説明する。
【0057】
[コピー]
図2は本発明の実施形態1の画像処理システムでのコピー動作に係るデータフローを示す図である。
【0058】
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
【0059】
また、図2中に示す矢印は、各種データフローを示している。特に、実線矢印はラスタデータ(ラスタ画像データ)、破線矢印はタイルベクタデータ(タイルベクタ画像データ)、1点鎖線矢印はページベクタデータ(ページベクタ画像データ)のデータフローを示している。ページベクタデータ及びタイルベクタデータについては、後述のタイル/ページベクタ変換部13で詳細に説明する。
【0060】
(S21):操作部10より、ユーザがコピー開始を指示すると、スキャナ16は原稿画像の読取動作を開始する。スキャナ16より画像処理部15へ入力された画像(R、G、B画像)は画像処理部15のクロック同期に周波数変換された後、例えば、以下の処理が実行される。
【0061】
1)スキャナ16内のCCDセンサのラインピッチや色収差等のスキャナ特性の補正処理
2)色空間補正やシャープネス等の入力画像データの画質補正処理
3)入力画像データの枠消やブック枠消等の画像加工処理
(S22):画像処理部15による画像処理が終了し、画像処理部15から出力された画像データはラスタ/タイルベクタ変換部14に入力され、タイルベクタ変換処理が実行される。即ち、ラスタ/タイルベクタ変換部14は、画像データを所定の大きさのブロック(タイル)に分割する。そして、各ブロック内のラスタデータに対して、ベクトル化処理を実行して、ブロック(タイル)単位のベクタデータ(タイルベクタデータ(ブロックベクタデータ))を生成する。
【0062】
生成されたタイルベクタデータは、SBB2によりバスの調停を受け、システムメモリ5へのバス権を取得し、MC4を介して、システムメモリ5に記憶される。尚、SBB2経由でデータパスが接続される場合は、基本的にバスの調停を受け、バス権を取得する手続きを踏むが、以降のフロー説明では省略する。
【0063】
(S23):システムメモリ5に記憶されたタイルベクタデータは、HDDCont7とMC4を介して、SBB2経由でHDD8に記憶される。HDD8にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP1000内に保存画像データとして記憶したりすることができる。
【0064】
(S24):HDD8に記憶されたタイルベクタデータは、プリンタ17内のプリンタCPU(不図示)から送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出される。そして、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
【0065】
仮に、読み取ったタイルベクタデータをHDD8からダイレクトにプリンタ17へ出力する場合、HDD8のアクセススピードが律則したり、汎用バス6のバスの混雑度合によりプリンタ17に同期して出力することが保証できなくなる。そのため、プリンタ17に同期してデータ転送を行う前に、システムメモリ5にページベクタデータをスプールしておくことで、リアルタイムなスループットを保証する。
【0066】
(S25):システムメモリ5に記憶されたタイルベクタデータは、プリンタ17からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
【0067】
RIP18では、まず、タイルベクタデータを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を実行する。生成されたタイルDLデータはローカルメモリ19に一旦記憶される。
【0068】
RIP18はローカルメモリ19からタイルDLデータを読み出して、タイル単位のラスタデータ(タイルラスタデータ)へと展開し、出力する。
【0069】
実施形態1では、上述のように、RIP18内に4つの小画像データ展開部(μRIP)18a〜18dを備えている。コントローラ1は、μRIP18a〜μRIP18dを並列に動作させることにより、タイルベクタデータの展開を高速に行わせることができる。
【0070】
ここで、画像処理システムの全体パフォーマンスは、ベクタデータ展開時間が支配的であり、このμRIPの構成数を増やすことで、パフォーマンスアップが見込める。そのため、本発明のような構成を用いると、その構成数あるいは動作させる構成数を増減させることで、容易にスケーラブルなシステムを構築することが可能となる。
【0071】
(S26):RIP18によって生成されたタイルラスタデータは、画像処理部15に転送され、例えば、以下の処理が実行される。
【0072】
1)タイルラスタデータからページラスタデータへの変換処理
2)プリンタの特性に合わせた出力画像の色や濃度の補正処理
3)画像データを量子化して出力画像の階調変換を行う中間調処理
4)プリンタI/Fクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部15で、1)〜4)の画像処理が実行されて得られたラスタデータは、プリンタ17に転送され、記録媒体上に印刷され出力される。
【0073】
[プリント]
図3は本発明の実施形態1の画像処理システムでのプリント動作に係るデータフローを示す図である。
【0074】
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
【0075】
(S31):ネットワーク12に接続された外部機器より、汎用バス6に接続されたネットワークI/F11がページベクタデータを受信する。そして、SBB2の先に接続されたMC4を介してシステムメモリ5に転送する。
【0076】
(S32):システムメモリ5に記憶されたページベクタデータは、タイル/ページベクタ変換部13より読み出され、タイルベクタ変換処理が実行される。即ち、タイル/ページベクタ変換部13は、ページベクタデータ内に存在するオブジェクトを所定の大きさのブロック(タイル)内に収まるオブジェクトに分割する。そして、タイル単位のベクタデータ(タイルベクタデータ)を生成する。
【0077】
(S33):生成されたタイルベクタデータは、SBB2を介して再度システムメモリ5に記憶される。
【0078】
(S34):システムメモリ5に記憶されたタイルベクタデータは、HDDCont7とMC4を介して、SBB2経由でHDD8に記憶される。HDD8にタイルベクタデータを記憶することにより、複数部の原稿をコピーする時にソーティングをして、ページ順を変えて出力したり、MFP1000内に保存画像データとして記憶したりすることができる。
【0079】
(S35):HDD8に記憶されたタイルベクタデータは、プリンタ17内のCPU(不図示)から送られてくるプリンタレディのタイミングに合わせて、HDDCont7により読み出される。そして、SBB2、MC4を経由してシステムメモリ5に一時的に記憶される。
【0080】
読み取ったタイルベクタデータをHDD8からダイレクトにプリンタ17へ出力する場合、HDD8のアクセススピードが律則したり、汎用バス6のバスの混雑度合によりプリンタ17に同期して出力することが保証できなくなる。そのため、プリンタ17に同期してデータ転送を行う前に、システムメモリ5に1ページ分のベクタ画像データをスプールすることにより、リアルタイムなスループットを保証する。
【0081】
(S36):システムメモリ5に記憶されたタイルベクタデータは、プリンタ17からコントローラ1に送られる起動信号に従って、MC4によって読み出され、SBB2を介してRIP18に転送される。
【0082】
RIP18では、まず、タイルベクタデータを解析し、タイル単位の描画オブジェクト(タイルDLデータ)の生成(インタプリット)を実行する。生成されたタイルDLデータはローカルメモリ19に一旦記憶される。
【0083】
RIP18はローカルメモリ19からタイルDLデータを読み出して、タイル単位のラスタデータ(タイルラスタデータ)へと展開し、出力する。
【0084】
(S37):RIP18によって生成されたタイルラスタデータは、画像処理部15に転送され、例えば、以下の処理が実行される。
【0085】
1)タイルラスタデータからページラスタデータへの変換処理
2)プリンタの特性に合わせた出力画像の色や濃度の補正処理
3)画像データを量子化して出力画像の階調変換を実行する中間調処理
4)プリンタI/Fクロックに同期して画像を出力するための周波数変換処理
そして、画像処理部15で、1)〜4)の画像処理が実行されて得られたラスタデータは、プリンタ17に転送され、記録媒体上に印刷され出力される。
【0086】
[送信]
図4は本発明の実施形態1の画像処理システムでの送信動作に係るデータフローを示す図である。
【0087】
尚、このデータフローは、CPU3の制御の下、MFP1000を構成する各種構成要素を協調動作させることで実現される。
【0088】
また、画像データをHDD8に格納するまでのデータフローについては、ラスタデータの場合は[コピー]と、ネットワーク12上の外部機器からの入力されたページベクタデータの場合は[プリント]と同一であるので、その説明は割愛する。
【0089】
尚、画像データをHDD8に格納する処理は、ユーザからの格納指示によって実行されるようにしてもよいし、[コピー]や[プリント]の処理の際にHDD8に自動的に残しておくようにしてもよい。このようにして、HDD8に格納された画像データの中から、ユーザによって指定された画像データを送信するように指示された際に行われる送信処理について説明する。
【0090】
(S41):HDD8に記憶されたタイルベクタデータはSBB2を介して、汎用バス6に接続されたHDDCont7より読み出され、システムメモリ5に一時的に記憶される。
【0091】
(S42):システムメモリ5に記憶されたタイルベクタデータは、タイル/ページベクタ変換部13より読み出され、タイルベクタ変換処理を実行する。即ち、ブロック単位に分割されたオブジェクトを結合し、ページ全体でオブジェクトを記述したページベクタデータを生成する。つまり、1ページ分のタイルベクタデータを、ページ全体のベクタデータを示すページベクタデータを生成する。
【0092】
(S43):生成されたページベクタデータは、SBB2を介して再度システムメモリ5に記憶される。
【0093】
(S44):システムメモリ5中に記憶されたページベクタデータは、汎用バス6に接続されたネットワークI/F11から読み出され、ネットワーク12に接続された外部機器へと送信転送される。
【0094】
本発明のように、外部機器に送信する際に、タイルベクタデータをページベクタデータに戻して、そのデータを構成するオブジェクト数を減らすことで、送信データ量を削減することができる。また、PDFやSVG等の汎用フォーマットへ容易に変換することができる。
【0095】
尚、本発明では、スキャナ16から入力したラスタデータを、外部機器に送信することも可能である。この場合は、そのラスタデータをページベクタに変換してから、外部機器へ送信することが好ましい。
【0096】
[ラスタ/タイルベクタ変換部]
次に、ラスタ/タイルベクタ変換部14の処理の詳細について説明する。
【0097】
図5は本発明の実施形態1のラスタ/タイルベクタ変換部が実行する処理を示すフローチャートである。
【0098】
(ステップS51:ブロックセレクション(領域分割:BS)処理)
画像処理部15より入力されたラスタデータ(イメージデータ)を、文字あるいは線画を含む文字・線画領域と、ハーフトーンの写真領域、不定形の画像領域その他に分割する。さらに、文字・線画領域については、主に文字を含む文字領域と、主に表、図形等を含む線画領域とに分離し、線画領域は表領域と図形領域に分割する。
【0099】
尚、実施形態1では、処理対象中の画像の連結画素を検知し、その連結画素の外接矩形領域の形状・サイズ・画素密度等の特徴量を用いて、属性毎の領域に分離するものとするが、その他の領域分割手法を用いても構わない。
【0100】
文字領域については、文字段落ごとの纏まった塊をブロックとして矩形ブロック(文字領域矩形ブロック)にセグメント化する。線画領域では、表、図形等の個々のオブジェクト(表領域矩形ブロック、線画領域矩形ブロック)ごとに矩形ブロックにセグメント化する。
【0101】
ハーフトーンで表現される写真領域は、画像領域矩形ブロック、背景領域矩形ブロック等のオブジェクトごとに、矩形ブロックにセグメント化する。
【0102】
分離された各領域は、さらに所定の大きさの領域(タイル)単位に分割され、タイル単位で、次のベクトル化処理でベクトル化される。
【0103】
(ステップS52:ベクトル化処理)
ベクトル化処理により、各属性の領域のイメージデータをベクトルデータに変換する(ベクトル化する)。ベクトル化の方法は、例えば、以下、方法(a)〜(f)等が存在する。
【0104】
(a)属性領域が文字領域のとき、さらにOCRによる文字画像のコード変換を行ったり、あるいは文字のサイズ、スタイル、字体を認識し、原稿を走査して得られた文字に可視的に忠実なフォントデータに変換する。
【0105】
(b)属性領域が文字領域であり、かつOCRによる認識が不可能であったとき、文字の輪郭を追跡し、輪郭情報(アウトライン)を線分のつながりとして表現する形式に変換する。
【0106】
尚、実施形態1では、文字領域に対して、OCR結果に応じて、方法(a)と方法(b)とのいずれかを用いる例を示したが、これに限るものではなく、例えば、方法(a)は用いずに全ての文字領域に対して方法(b)だけを用いるようにしても構わない。
【0107】
(c)属性領域が図形領域のとき、図形オブジェクトの輪郭を追跡し、輪郭情報を線分のつながりとして表現する形式に変換する。
【0108】
(d)方法(b)及び(c)の線分形式のアウトライン情報をベジエ関数等でフィッティングして、関数情報に変換する。
【0109】
(e)方法(c)の図形オブジェクトの輪郭情報から、図形の形状を認識し、円、矩形、多角形、等の図形定義情報に変換する。
【0110】
(f)属性領域が図形領域であって、特定領域の表形式のオブジェクトの場合、罫線や枠線を認識し、所定のフォーマットの帳票フォーマット情報に変換する。
【0111】
(ステップS53:タイルベクタデータ生成処理)
ステップS52で、方法(a)〜(f)のフォーマットコード情報、図形情報、関数情報等のコマンド定義形式情報にベクトル変換されたデータに対し、コントローラ1内でページベクタデータかタイルベクタデータかを判別するベクタタイプを生成する。更には、当該タイルのページ内の座標位置等の座標情報を判別するためのヘッダ情報を付加した、タイルベクタデータを生成する。このようにして、タイル単位に各種情報が付加されたタイルベクタデータをSBB2へ出力する。
【0112】
(ステップS54:終了判定処理)
処理対象のラスタデータの有無を判定する。処理対象のラスタデータがある場合(ステップS54でNO)、ステップS51に戻る。一方、処理対象のラスタデータがない場合(ステップS54でYES)、処理を終了する。
【0113】
[タイル/ページベクタ変換部]
次に、タイル/ページベクタ変換部13の処理の詳細を説明するにあたり、処理対象となるドキュメントデータ(画像データ)について説明する。
【0114】
図6は本発明の実施形態1のネットワークから転送されてくるドキュメントデータの一例を示している。
【0115】
図6では、ドキュメントデータ801の短手方向を「X」方向、長手方向を「Y」方向とするデバイス座標系を定義する。ドキュメントデータ801としては、ページベクタデータ、タイルベクタデータ、あるいはラスタデータ表現を含むページベクタデータ(タイルベクタデータ)、あるいはラスタデータのいずれかで構成される可能性がある。
【0116】
ここで、ドキュメントデータ801が、ページベクタデータである場合、その内容を構成する記述例について、図7を用いて説明する。
【0117】
図7は本発明の実施形態1のページベクタデータの記述例を示す図である。
【0118】
図7において、901はドキュメントデータ全体の設定に関わるドキュメント設定命令部分、902は文字の描画命令部分、903は図形の描画命令部分を示している。
【0119】
各描画命令部分の詳細について説明する。
【0120】
ドキュメント設定命令部分901において、C1〜C5は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドC1〜C5は、ドキュメント1部について1ヶ所しか付いていない。
【0121】
これらドキュメントデータ全体に関係するコマンドには、例えば、キャラクタセットコマンド(フォント指定コマンド)がある。更には、スケーラブルフォントコマンド(スケーラブルフォントを使用するか否かを指定するコマンド)、ハードリセットコマンド(以前のプリンタ使用環境をリセットするコマンド)等がある。
【0122】
ここで、C1はドキュメント設定開始コマンドである。C2はドキュメントデータの出力用紙サイズを示すコマンドであり、この場合には、A4の設定になっている。C3はドキュメントデータの方向を示すコマンドである。ここでは、ポートレートとランドスケープがあるが、この場合にはポートレート(PORT)の設定になっている。
【0123】
C4はドキュメントデータのタイプを示すコマンドであり、ページベクタで構成されるドキュメントデータであるかタイルベクタで構成されるドキュメントデータであるかを示している。この場合には、ページ(PAGE)に設定されている。C5はドキュメント設定終了コマンドである。
【0124】
文字の描画命令部分902及び図形の描画命令部分903を構成するC6〜C22は、ドキュメントデータを出力するための各種コマンドである。
【0125】
C6はページの開始を示すコマンドである。C7は文字のフォントの種類を選択するためのコマンドであり、この場合には「1」という番号の付けられたフォントセットに設定されている。C8はフォントの大きさを設定するコマンドであり、この場合には「10ポイント」の大きさに設定されている。
【0126】
C9は文字の色を設定するコマンドであり、順にR(赤),G(緑),B(青)各色成分の輝度を示してある。この輝度は、例えば、0から255の256段階で量子化されているものとする。この場合は、{0,0,0}に設定されている。C10は文字を描画する開始位置の座標を示すコマンドである。座標位置(X,Y)は、ページの左上を原点に指定する。この場合は、ページの{10,5}の位置から文字の描画を開始するように設定されている。C11は実際に描画する文字列(XXXX・・・YY・・・)を示すコマンドである。
【0127】
C12は図形描画の際の面の塗りつぶしの色を示すコマンドである。色の指定は、文字の色と同様である。C13は図形描画の線の色を指定するコマンドである。C14は図形描画位置の座標を示すコマンドである。
【0128】
C15は円弧を描画する際の半径を指定するコマンドであり、この場合、「10」座標単位を示している。C16は閉円弧の描画をするコマンドである。コマンド内の2個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を0度として、この場合には0度から90度の円弧を描画することを示している。
【0129】
C17〜C21は、C12〜C16までのコマンドと同様に、図形描画の際の面、線の色の指定、位置の指定等のコマンドである。C22はページの終了を示すコマンドである。
【0130】
一方、ドキュメントデータ801がタイルベクタデータである場合について、図8を用いて説明する。
【0131】
図8は本発明の実施形態1のタイルベクタデータの例を示す図である。
【0132】
図8では、図6のドキュメントデータ801(ページベクタデータ)を、ブロック(タイル)単位で分割したタイルベクタデータ(ドキュメントデータ1001)の一例を示している。
【0133】
図8では、ドキュメントデータ1001の短手方向を「X」方向、長手方向を「Y」とするデバイス座標系を定義する。また、図中のX方向に配列された数列は、X方向のタイルID、Y方向に配列された数列は、Y方向のタイルIDを表す。A〜Dは、それぞれタイルID=(0,0)、(1,0)、(2、4)、(1,5)の位置にあるタイルデータを示している。
【0134】
ここで、このドキュメントデータ1001が、タイルベクタデータである場合、その内容を構成する記述例について、図9を用いて説明する。
【0135】
図9は本発明の実施形態1のタイルベクタデータの記述例を示す図である。
【0136】
図9において、1101はドキュメントデータ全体の設定に関わるドキュメント設定命令部分、1102は描画命令部分全体、1103〜1106はそれぞれタイルA,B,C,Dの描画命令部分を示している。1107、1108はそれぞれタイルDの文字の描画命令部分、図形の描画命令部分を示している。
【0137】
各描画命令の詳細について説明する。
【0138】
ドキュメント設定命令部分1101において、C1〜C5は、ドキュメント全体に関係するコマンドである。従って、これらのコマンドC1〜C5は、ドキュメント1部について1ケ所しか付いていない。
【0139】
これらドキュメントデータ全体に関係するコマンドには、例えば、キャラクタセットコマンド(フォント指定コマンド)がある。更には、スケーラブルフォントコマンド(スケーラブルフォントを使用するか否かを指定するコマンド)、ハードリセットコマンド(以前のプリンタ使用環境をリセットするコマンド)等がある。
【0140】
ここで、C1はドキュメント設定開始コマンドである。C2はドキュメントデータの出力用紙サイズを示すコマンドであり、この場合には、A4の設定になっている。C3はドキュメントデータの方向を示すコマンドである。ここでは、ポートレートとランドスケープがあるが、この場合にはポートレート(PORT)の設定になっている。
【0141】
C4はドキュメントデータのタイプを示すコマンドであり、ページベクタで構成されるドキュメントデータあるのかタイルベクタで構成されるドキュメントデータあるかを示している。この場合には、タイル(TILE)に設定されている。C5はドキュメント設定終了コマンドである。
【0142】
描画命令部分1102を構成するC6〜C500は、ドキュメントデータを出力するための各種コマンドである。
【0143】
C6はページの開始を示すコマンドである。C7は図8のタイルAの描画コマンドの開始を示すコマンドである。ここで、TileStart(0,0)中の2個のパラメータは、ドキュメントデータ内におけるタイルIDを示している。C8はタイルAの描画コマンドの終了を示すコマンドである。タイルAのように、そのタイル内にオブジェクトが何も存在しない場合は、タイルの開始と終了を示すコマンドだけが記述される。
【0144】
C9は図8のタイルBの描画コマンドの開始を示すコマンドである。C10は文字のフォントの種類を選択するためのコマンドであり、この場合には「1」という番号の付けられたフォントセットに設定されている。C11はフォントの大きさを設定するコマンドであり、この場合には「10ポイント」の大きさに設定されている。
【0145】
C12は文字の色を設定するコマンドであり、順にR(赤),G(緑),B(青)各色成分の輝度を示してある。この輝度は、例えば、0から255の256段階で量子化されているものとする。この場合は、{0,0,0}に設定されている。C13は文字を描画する開始位置の座標を示すコマンドである。座標位置(X,Y)は、タイルの左上を原点に指定する。この場合は、タイルの{0,5}の位置から文字の描画を開始するように設定されている。C14は実際に描画する文字列(XXXX)を示すコマンドである。C15はタイルBの描画コマンドの終了を示すコマンドである。
【0146】
C100は図8のタイルCの描画コマンドの開始を示すコマンドである。C101は図形描画の際の面の塗りつぶしの色を示すコマンドである。色の指定は、文字の色と同様である。C102は図形描画の線の色を指定するコマンドである。C103は図形を描画する位置の座標を示すコマンドである。
【0147】
C104は円弧を描画する際の半径を指定するコマンドであり、この場合、「10」座標単位を表している。C105は閉円弧の描画をするコマンドである。コマンド内の2個のパラメータは円弧を描画する際の描画開始角度と終了角度を示している。垂直情報を0度として、この場合には0度から90度の円弧を描画することを示している。C106はタイルCの描画コマンドの終了を示すコマンドである。
【0148】
C120は図8のタイルDの描画コマンドの開始を示すコマンドである。C121〜C130は、C9〜C15のコマンドと同様に文字の描画命令による文字のフォントの種類、色、大きさ等を指定するコマンド及びC100〜C106まてのコマンドと同様に図形の描画命令による図形の面、線の色、位置等を指定するコマンドである。C131はタイルDの描画コマンドの終了を示すコマンドである。
【0149】
C500はページの終了を示すコマンドである。
【0150】
次に、タイル/ページベクタ変換部13の処理の詳細について、図10を用いて説明する。
【0151】
図10は本発明の実施形態1のタイル/ページベクタ変換部が実行する処理を示すフローチャートである。
【0152】
尚、このタイル/ページベクタ変換部13では、ページベクタデータとタイルベクタデータ間での相互変換を行うことができる。あるいは、タイル/ページベクタ変換部13は、ページベクタデータからタイルベクタデータへ変換する変換部と、タイルベクタデータからページベクタデータへ変換する変換部で構成されていても良い。
【0153】
(ステップS601)
まず、システムメモリ5中に記憶されたドキュメントデータ(ベクタデータ)から、ヘッダ部分に相当するコマンド列を読み込み、処理対象となるドキュメントデータ全体に関するコマンド部分を解析する。具体的には、図7または図9のC1〜C5に相当する部分の内容を解析する。
【0154】
(ステップS602)
解析の結果に基づいて、ドキュメントデータのタイプが、ページベクタデータであるか否かを判定する。ページベクタデータである場合(ステップS602でYES)、ステップS603以降のステップに進み、ページベクタ→タイルベクタ変換を実行する。一方、ページベクタデータでない場合、つまり、タイルベクタデータである場合(ステップS602でNO)、ステップS610以降のステップに進み、タイルベクタ→ページベクタ変換を実行する。
【0155】
(ステップS603)
ページベクタデータから、オブジェクトを記述するコマンド列を読み込む。
【0156】
(ステップS604)
ステップS603で読み込んだコマンド列を解析し、記述されているオブジェクトの大きさが分割したいタイルサイズを超えているか否かを判定する。つまり、オブジェクトの更なる分割が必要であるか否かを判定する。
【0157】
オブジェクトの大きさが分割したいタイルサイズを超えていない場合(ステップS604でNO)、ステップS605をスキップして、ステップS606に進む。一方、オブジェクトの大きさが分割したいタイルサイズを超えている場合(ステップS604でYES)、ステップS605に進む。
【0158】
(ステップS605)
ここでは、入力されたオブジェクトの分割処理を実行する。
【0159】
例えば、図7のページベクタデータでは、文字の描画命令部分902で、「XXXX・・・YY・・・」を含む全ての文字列の描画命令を記述している。これに対して、図9のタイルベクタデータでは、例えば、タイルBに対する描画命令1104では、「XXXX」の文字列の描画命令しか記述されていない。
【0160】
従って、タイルベクタデータでは、文字列が複数のタイルに跨がる場合は、その文字列を途中(タイル境界)で分割し、分割された後続の文字列は別の文字列として、次のタイルに記述を行う。次のタイルに記述が収まらなかったら、同様にまたタイルに含まれる文字列を分割し、分割された全ての文字列がタイルサイズに収まるまで繰り返す。文字列をどこで切るかは、フォントの種類、サイズからタイル内に収まる文字数を算出し、その数だけの文字を抽出する。
【0161】
例えば、図7のページベクタデータの文字の描画命令部分902に対して、タイル内に収まる文字数は4つとして算出され、図7のコマンドC11の記述は、タイルBに対する描画命令を構成するコマンドC13の記述に変換される。
【0162】
また、図形の描画命令部分903では、コマンドC17〜C21で記述されている図形(図6の3/4円)は、図8のタイルベクタデータを構成するタイルの1つには収まらない。そのため、この図形は、タイルDを含む複数のタイルに分割される。図形の分割は、図形の描画位置や図形の形、大きさからタイルの境界領域と接する部分を算出し、その境界とタイル内に収まっている図形の部分領域で構成される閉領域を新たな図形として記述し直す。
【0163】
図7の図形の描画命令部分903で記述される図形(図6の3/4円)は、図9では、その左下の部分領域が、図形の描画命令部分1108のコマンドC126からC130のような1/4円の記述に変換される。また、残りの領域も、同様な形の1/4円の記述に変換される。円と同様にして、直線及び直線からなる多角形等が一つのタイルに収まらない場合にも、オブジェクト毎に複数のタイルに分割される。
【0164】
ここで、複数タイルに跨がるオブジェクトがタイル分割される場合のオブジェクト分割処理について、図11を用いて説明する。
【0165】
図11は本発明の実施形態1の直線オブジェクトの分割処理の例を示す模式図である。
【0166】
図11において、2201はページベクタデータの一部分であり、実際にラスタライズされた場合のイメージを元にした模式図である。この例においては、線分のオブジェクトデータ2202を有している。線分のオブジェクトデータ2202は、その制御点座標である端点E1を表す始点座標(x1,y1)と端点E2を表す終点座標(X1,Y1)を結ぶベクタデータで表され、線幅を有している。また、属性値として、線幅28ptを有している。ここで、これらの制御点座標及び属性値は、オブジェクトに関するオブジェクト情報として捉えることができる。
【0167】
このページベクタデータ2201をタイルベクタデータ2203とタイルベクタデータ2204に分割したとする。この場合、オブジェクトデータ2202はオブジェクト2205と2206に分割され、新たに端点e1、e2が生じる。この端点e1、e2は、線幅を考慮し、ラスタライズ後に欠損が生じないよう、各タイルの領域外の座標値を取るよう拡張され、座標の再設定が行われる。例えば、タイルの境界から垂直な方向に線幅分離れた位置に端点を再設定するようにしても良い。
【0168】
具体的には、オブジェクトデータ2205の座標情報は、始点(a1,b1)→(A1,B1)となる。また、オブジェクトデータ2206の座標情報は、始点(a2,b2)→(A2,B2)となる。
【0169】
こうして得られたオブジェクトデータ2205、2206はそれぞれ、タイルベクタデータ2203とタイルベクタデータ2204に保持される。タイルベクタデータ2203とタイルベクタデータ2204はラスタライズを行う際に、それぞれ、独立にラスタライズが行われる。その場合でも、端点e1、e2を再設定することによって、ラスタライズ後の結果2207は、図11のように画像の欠損を生じることなく、所望の結果を得ることが可能となる。
【0170】
尚、図11の例では、端点e1、e2の両方の座標情報を再設定する構成としているが、分割されるオブジェクトデータの種類や位置によっては、それらの少なくとも一方を再設定する構成もあり得ることは言うまでもない。
【0171】
(ステップS606)
入力されたオブジェクトのコマンドの記述に対し、タイルベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。ページベクタデータでは、ページの左上からの位置を記述していたのに対し、タイルベクタデータではタイルの左上からの位置に記述し直す。描画位置をタイル内の座標で記述することにより、座標計算に要するデータ長を削減することが可能になる。また、オブジェクトの種類(例えば、線分オブジェクト)によっては、ここで、属性値の変換(例えば、座標情報)も同時に行う。
【0172】
(ステップS607)
1つのオブジェクトに対するコマンドの記述変換が終了したら、ページ内の全てのオブジェクトのコマンドの記述変換が終了したか否かを判定する。終了していない場合(ステップS607でNO)、ステップS603に戻り、次のコマンドに対して、ステップS603〜ステップS607の処理を繰り返す。一方、終了した場合(ステップS607でYES)、ステップS608へ進む。
【0173】
(ステップS608)
全てのコマンドの記述変換が終了したら、図8のように分割されたタイルベクタデータ中の各タイルに対し、ページの左上から順にタイルベクタデータとしてシステムメモリ5への書出を実行する。タイルベクタデータとしては、ステップS605及びステップS606で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを追加するようなフォーマットで記述される。
【0174】
まず、ページの一番最初のコマンドの書出時点では、システムメモリ5内にオブジェクトがない状態のタイルベクタを生成しておく。オブジェクトがないタイルベクタとしては、例えば、図8のタイルAがある。このタイルAは、タイルの開始と終了を示すコマンドC7及びC8のみから構成される描画命令部分1103(図9)で記述される。
【0175】
次に、ステップS603〜ステップS607で処理されたコマンドが存在する座標のタイルに対し、オブジェクトの記述を追加する。例えば、図8のタイルBの場合は、コマンドC9〜C15から構成される描画命令部分1104(図9)で記述される。また、タイルDのように、同じタイルに複数のオブジェクトが存在する場合には、描画命令部分1106のように、文字の描画命令部分1107を構成するオブジェクト記述と、図形の描画命令部分1108を構成するオブジェクト記述を列記する。
【0176】
(ステップS609)
1つのオブジェクトのタイルベクタへの書出が終了すると、そのページのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合(ステップS609でNO)、ステップS603に戻る。一方、終了した場合(ステップS609でYES)、処理を終了する。
【0177】
一方、ステップS602で、ドキュメントデータのタイプが、タイルベクタデータである場合について説明する。
【0178】
(ステップS610)
タイルベクタデータから、オブジェクトを記述するコマンド列を読み込む。
【0179】
(ステップS611)
ステップS610で読み込んだコマンド列を解析し、記述されているオブジェクトがそれより以前に読み込まれたタイルと結合可能であるか否かを判定する。結合可能でない場合(ステップS611でNO)、ステップS612をスキップし、ステップS613に進む。一方、結合可能である場合(ステップS611でYES)、ステップS612に進む。
【0180】
尚、オブジェクトが結合可能であるか否かの判定は、読み込んだコマンドの座標位置や、図形の種別等を基に判定する。また、文字列の場合は、フォントサイズやフォントの種類を基に判定する。
【0181】
(ステップS612)
オブジェクトの結合処理を実行する。この処理は、基本的には、ステップS605の処理手順を逆にすることで実現する。
【0182】
(ステップS613)
入力されたオブジェクトのコマンドの記述に対し、ページベクタデータ内での描画位置へ変更するために、座標位置の変換を行う。タイルベクタデータでは、タイルの左上からの位置を記述していたのに対し、ページベクタデータでは、ページの左上からの位置に記述し直す。また、オブジェクトの種類によっては、ここで、属性値の変換も行われる。
【0183】
(ステップS614)
1つのオブジェクトに対するコマンドの記述変換が終了したら、タイル内の全てのオブジェクトのコマンドの記述変換が終了したか否かを判定する。終了していない場合(ステップS614でNO)、ステップS610に戻り、次のコマンドに対して、ステップS610〜ステップS613の処理を繰り返す。一方、終了した場合(ステップS614でYES)、ステップS615へ進む。
【0184】
(ステップS615)
全てのコマンドの記述変換が終了したら、ページベクタデータとしてシステムメモリ5への書出を実行する。ページベクタデータとしては、ステップS612及びステップS613で記述されたコマンドに対し、タイルの開始と終了を示すコマンドを削除したようなフォーマットで記述される。
【0185】
まず、ページ内の一番最初のタイルに記述されたコマンドの書出時点では、システムメモリ5内にオブジェクトがない状態のページベクタを生成しておく。これは、図7の記述を用いて説明すると、コマンドC1〜C6、コマンドC22だけで記述されるページベクタである。
【0186】
次に、ステップS610〜ステップS613で処理されたオブジェクトの記述を追加する。図7の記述の場合、文字の描画命令部分902を構成するコマンドC7〜C11がそれにあたる。この場合のオブジェクトは、文字列{XXXX・・・YY・・}を示しているが、これは、ステップS612で、図9の文字の描画命令部分1104や1107等で記述される各タイル中の文字列を順次結合したオブジェクトの記述である。
【0187】
(ステップS616)
1つコマンドのページベクタへの書出が終了すると、そのタイルのオブジェクトの記述が全て終了したか否かを判定する。終了していない場合(ステップS616でNO)、ステップS610に戻る。一方、終了した場合(ステップS616でYES)、ステップS617に進む。
【0188】
(ステップS617)
1つのタイルベクタデータの書出が終了すると、そのページのタイルベクタデータの記述に対する処理が全て終了したか否かを判定する。終了していない場合(ステップS617でNO)、ステップS610に戻る。一方、終了した場合(ステップS617でYES)、処理を終了する。
【0189】
[画像データ展開部(RIP)]
次に、コントローラ1中の画像データ展開部18の詳細について説明する。
【0190】
まず、コピーやプリント、送信等の画像データに対する処理を開始する前に、ローカルメモリ19の初期化と、作成するオブジェクトの解像度の設定を行っておく。実施形態1では、生成解像度は600dpiとし、ポイントサイズやmm等の単位系で指定された印刷コマンドは、この値を用いてドット数に変換されることになる。
【0191】
以下では、画像データ展開部18によって、タイルベクタデータ展開を実行する場合の処理について、図12を用いて説明する。
【0192】
図12は本発明の実施形態1の画像データ展開部が実行する処理を示すフローチャートである。
【0193】
(ステップS71)
システムメモリ5より、SBB2を経由して、RIP18に一定サイズ分入力されたタイルベクタデータは、ローカルメモリ19のタイルベクタ領域に一時的に格納する。
【0194】
(ステップS72)
タイルベクタデータをローカルメモリ19に格納したら、RIP18内のμRIP18a〜18dのいずれかが、タイルベクタデータを展開可能(処理可能)であるか否かを判定する。μRIP18a〜18dのいずれもタイルベクタデータの展開(処理)中である場合(ステップS72でNO)、それらのいずれかが展開可能になるまで待機する。
【0195】
(ステップS73)
μRIP18a〜18dのいずれかがタイルベクタデータを展開可能になれば、予め定められた文法に従って、ローカルメモリ19に格納されたタイルベクタデータのコマンド解析を実行する。
【0196】
(ステップS74)
コマンド解析結果に基づいて、コマンドが描画命令であるか排紙命令であるかを判定する。描画命令である場合(ステップS74でYES)、ステップS75に進む。一方、排紙命令である場合(ステップS74でNO)、ステップS76に進む。
【0197】
(ステップS75)
コマンドが描画命令である場合、描画オブジェクト(DLデータ)の生成を実行する。タイルベクタデータ内のコマンドが文字の描画命令である場合、そのコマンドで指定されるフォントの書体や、文字サイズ、文字コードを元にフォントオブジェクトを生成して、ローカルメモリ19のDLデータ領域に格納する。また、文字以外の描画命令、つまり、図形の描画命令である場合、そのコマンドで指定された図形(ラインや円、多角形等)の描画オブジェクトを生成し、ローカルメモリ19のDLデータ領域に格納する。
【0198】
また、コマンドが描画命令で指定されない印刷データである場合には、この印刷データに応じて印刷位置移動や印刷環境設定等の印刷制御処理を実行し、一単位分のコマンド解釈を終了する。
【0199】
これは、タイルベクタデータ内のコマンド全ての解釈が終了するまで、上記処理を繰り返す。
【0200】
(ステップS76)
コマンドが排紙命令である場合、μRIPは、ローカルメモリ19上のタイルラスタ領域に空き領域があるか否かを判定する。空き領域がない場合(ステップS76でNO)、他のμRIPの処理が終了して、タイルラスタ領域が解放されて、空き領域ができるまで待機する。一方、空き領域がある場合(ステップS76でYES)、ステップS77に進む。
【0201】
(ステップS77)
タイルラスタ領域に空き領域がある場合、ステップS75で生成された描画オブジェクトを読み出し、タイルラスタ領域に描画(ラスタライズ)する。この時、生成解像度が600dpiであれば、タイルラスタ領域には600dpiの画像としてラスタライズされる。そして、描画が終了したタイルラスタ画像は、SBB2を介して、画像処理部15に出力する。
【0202】
(ステップS78)
ステップS75またはステップS77で一つのタイルベクタデータに対する、コマンド解析または描画処理が終了したら、タイルベクタ領域に格納したタイルベクタデータのすべてに対して処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合(ステップS78でNO)、ステップS72に戻り、次のタイルベクタデータの処理を続ける。一方、未処理のタイルベクタデータがない場合(ステップS78でYES)、ステップS79に進む。
【0203】
(ステップS79)
1ページ分のタイルベクタデータに対し、全ての処理が終了したか否かを判定する。未処理のタイルベクタデータがある場合(ステップS79でNO)、ステップS71に戻り、システムメモリ5から、タイルベクタデータを読み出して、処理を続ける。一方、未処理のタイルベクタデータがない場合(ステップS79でYES)、処理を終了する。
【0204】
以上説明したように、実施形態1によれば、ページベクタデータをブロックタイルベクタデータに分割する場合に、分割されたブロックベクタデータのラスタライズ処理におけるオブジェクトの欠損なしに、オブジェクトの連続性を保ったまま、分割を行う。
【0205】
具体的には、分割対象のオブジェクトデータが線分オブジェクトデータである場合には、分割後の線分オブジェクトデータそれぞれについて、ブロックの領域内外に依存することなく、その線分オブジェクトデータを規定する端点(始点及び終点)を再設定する。
【0206】
これにより、ブロックに属する各線分オブジェクトデータのラスタライズ処理においては、分割時に発生し得るオブジェクトの欠損を生じることなく、分割前の線分オブジェクトを再現することができる。
【0207】
また、ページベクタデータをブロックベクタデータに分割する際、保持するベクタオブジェクトの形態を引き継いだ形で、ブロックベクタデータを生成することができるため、再度ページベクタデータに再構成しやすいという利点がある。
【0208】
[実施形態2]
実施形態2では、図10のステップS605のオブジェクト分割において、処理対象のオブジェクトが破線オブジェクトである場合について説明する。
【0209】
図13は本発明の実施形態2の破線オブジェクトの分割処理の例を示す模式図である。
【0210】
図13において、2301はページベクタデータの一部分であり、実際にラスタライズされた場合のイメージを元にした模式図である。この例においては、破線のオブジェクトデータ2302を有している。破線のオブジェクトデータ2302は、その制御点座標である始点座標(x1,y1)と終点座標(X1,Y1)を結ぶベクタデータで表される。また、属性値として、破線を形成するための情報、線分が始まる位置のオフセット情報、線分の長さ、間隔の長さ等の情報を有している。
【0211】
このページベクタデータ2301をタイルベクタデータ2303とタイルベクタデータ2304に分割したとする。この場合、オブジェクトデータ2302はオブジェクトデータ2305と2306に分割される。このとき、オブジェクトデータ2306は、破線における線分の開始点を所望の値とするために、属性値のひとつである、オフセット値の値を0から1に書き換える。こうして得られたオブジェクトデータ2305及び2306はそれぞれ、タイルベクタデータ2303とタイルベクタデータ2304に保持される。
【0212】
タイルベクタデータ2303とタイルベクタデータ2304はラスタライズを行う際に、それぞれ、独立にラスタライズが行われる。その場合でも、破線オブジェクトの属性値を再設定することによって、ラスタライズ後の結果2307は、図13のように画像の欠損を生じることなく、所望の結果を得ることが可能となる。
【0213】
以上説明したように、実施形態2によれば、実施形態1で説明した効果を、破線オブジェクトについても得ることができる。特に、破線オブジェクトの場合には、線分が始まる位置のオフセット情報を再設定する。これにより、ブロックに属する各破線オブジェクトデータのラスタライズ処理においては、分割時に発生し得るオブジェクトの欠損を生じることなく、分割前の破線オブジェクトを再現することができる。
【0214】
[実施形態3]
実施形態3では、図10のステップS605のオブジェクト分割において、処理対象のオブジェクトがグラデーションオブジェクトである場合について説明する。
【0215】
図14は本発明の実施形態3のグラフィックオブジェクトの分割処理の例を示す模式図である。
【0216】
図14において、2401はページベクタデータの一部分であり、実際にラスタライズされた場合のイメージを元にした模式図である。この例においては、グラデーションを付加したオブジェクトデータを有している。オブジェクトデータは始点座標と終点座標、属性情報として、色を表現するための色空間、始点色と終点色の情報を有しており、始点から終点まで、所定の色値の変化をこれらの情報によって表現する。
【0217】
ここで、このページベクタデータ2401は、始点色白(0xffffff)から、終点色赤(0xff7f7f)の色の変化を左下45度方向に変化させ、グラデーションを表現している。
【0218】
このページベクタデータ2401をタイルベクタデータ2402とタイルベクタデータ2403に分割したとする。この場合、グラデーションオブジェクトデータ2402は、その制御点座標である始点座標値をタイルの右上、終点座標値をタイルの左下に設定し、始点色を0xffffff、終点色を0xffa9a9と設定する。分割されたもう一方のグラデーションオブジェクトデータ2403は始点座標値をタイルの右上、終点座標値をタイルの左下に設定し、始点色を0xffd4d4、終点色を0xff7f7fと設定する。こうして得られたグラデーションオブジェクトデータ2402及び2403はそれぞれ、個別のタイルベクタデータとして保持される。
【0219】
これらのタイルベクタデータはラスタライズを行う際に、それぞれ、独立にラスタライズが行われる。ラスタライズ処理後の結果は、ひとつながりのグラデーションとして得られる。
【0220】
以上説明したように、実施形態3によれば、実施形態1で説明した効果を、グラデーションオブジェクトについても得ることができる。特に、グラデーションオブジェクトの場合には、グラデーションが始まる始点座標値及び終点座標値を再設定する。これにより、ブロックに属する各グラデーションオブジェクトデータのラスタライズ処理においては、分割時に発生し得るオブジェクトの欠損を生じることなく、分割前のグラデーションオブジェクトを再現することができる。
【0221】
[実施形態4]
線分オブジェクトの別の問題点について、図15を用いて説明する。
【0222】
1501はページベクタデータの一部分であり、実際にラスタライズされた場合のイメージを元にした模式図である。この例においては、線幅を持った線分のオブジェクトデータが5つ並んだデータを示している。ページベクタデータ1501をブロックベクタデータ1502、1503に分割する際、2つのブロックベクタデータ1502、1503の境界に隣接して、直線オブジェクト1506が存在している。
【0223】
この直線オブジェクト1506は、その始点、終点の座標位置は、ブロックベクタデータ1502の領域内に収まっているが、オブジェクトに線幅の属性データを適用した際に、オブジェクトの一部がブロックベクタデータの境界を超えてしまう例を示している。
【0224】
この場合、ブロックベクタデータ1503には、直線オブジェクトの線幅の情報が反映されない。そのため、ブロックベクタデータ1503とブロックベクタデータ1504が独立にラスタライズを行われたときに、結果として、1504に示すように、直線オブジェクトの線幅が一部欠落した状態となってしまう。
【0225】
そこで、このような場合のオブジェクト分割処理について、図16を用いて説明する。
【0226】
図16は本発明の実施形態4の直線オブジェクトの分割処理の例を示す模式図である。
【0227】
図16において、2101はページベクタデータの一部分であり、実際にラスタライズされた場合のイメージを元にした模式図である。この例においては、直線のオブジェクトが5つ並んだ場合を示している。直線オブジェクトは、その制御点座標である始点と終点の座標情報、あるいは、直線の属性を示す属性情報から構成される。
【0228】
例えば、この直線オブジェクトは、以下のような情報を保持している。
【0229】
座標情報 始点(x1,y1)→終点(X1,Y1)
パターン 実線
色 黒
線幅 28pt
ここで、直線オブジェクト2107に注目すると、この直線オブジェクト2107は、その始点、終点の座標値は、タイルベクタに分割される際、上側のタイルベクタの領域に収まっている。しかし、直線オブジェクトに線幅を適用した場合、ラスタライズ後のイメージとしては、下側のタイルベクタの領域にも描画が必要となる。このときの条件式としては、直線オブジェクトの場合、オブジェクトが持つ座標値に対して、x方向と、y方向に線幅の1/2の長さを正方向に加算、負の方向に減算した場合にタイルの領域内にその座標が入っているか否かを判定する。
【0230】
つまり、実施形態4では、ベクタデータが有するオブジェクトの属性情報を解析する。また、オブジェクトの座標情報より、分割されるブロックベクタの各々の境界との位置関係を計算する。次に、その解析結果と、計算した位置関係により、オブジェクトそのもののは1つのブロックベクタ内に描画可能であるが、当該オブジェクトの属性情報を適用した際、ブロックベクタの境界を跨ってオブジェクトを描画する必要があるか否かを判定する。そして、必要がある場合、オブジェクトを隣接したブロックベクタにも描画するよう、ブロックベクタ内のオブジェクトを再構成する。
【0231】
図16の場合、次のように処理する。ページベクタデータ2101を複数のタイルベクタデータ2102、2102に分割する際、当該線分オブジェクトは2108a、2108bのように、上側のタイルベクタ2102と下側のタイルベクタ2103に2重に保持されるようベクタデータを構成する。タイルベクタデータ2102と2103は、それぞれ、独立にラスタライズが行われる。そのときのラスタライズのイメージを示したのが、2104と2105である。2105には、線幅が適用された直線オブジェクトの一部が描画される。その結果、最終出力は、2106のようになり、図15のように画像の欠損を生じることなく、所望の結果を得られる。
【0232】
このように、属性値によって、オブジェクトが複数のタイルベクタに跨がる場合には、当該オブジェクトを2重に別々のタイルベクタデータに保持する。但し、跨がるタイルベクタデータが多くなればなるほど、同じオブジェクトを複数のタイルベクタで保持することになり、オーバーヘッドが生じる。
【0233】
そこで、このような場合、跨がるタイルベクタデータの数によって、オブジェクトを複数持つか、オブジェクト自体に属性情報を適用した上で、複数のアウトラインのベクタとして各タイルベクタに分割して保持するかを選択するようにすれば良い。
【0234】
この例においては、直線オブジェクトを例に挙げて説明しているが、曲線オブジェクトについても、同様の処理を行うことが可能である。その場合は、タイル分割する際に、オブジェクトを2重に保持する条件式をオブジェクトに応じて、変更するようにすれば良い。
【0235】
以上説明したように、実施形態4によれば、ページベクタデータをブロックタイルベクタデータに分割する場合に、分割されたブロックベクタデータのラスタライズ処理におけるオブジェクトの欠損なしに、オブジェクトの連続性を保ったまま、分割を行う。
【0236】
具体的には、属性値によって、オブジェクトが複数のタイルベクタに跨がる場合には、当該オブジェクトを2重に別々のタイルベクタデータに保持する。これにより、ブロックに属する各直線オブジェクトデータのラスタライズ処理においては、分割時に発生し得るオブジェクトの欠損を生じることなく、分割前の直線オブジェクトを再現することができる。
【0237】
[実施形態5]
別のオブジェクト分割処理について、図17を用いて説明する。
【0238】
図17は本発明の実施形態5のオブジェクト分割処理の例を示す模式図である。
【0239】
図17に示す例では、オブジェクトの座標データそのものは複数のタイルの境界を跨がないが、オブジェクトに属性値を適用した後に、タイルの境界を跨いでしまうような場合がある。このような場合における、オブジェクト分割処理について説明する。
【0240】
図17において、2201、2202はページベクタデータをタイルベクタデータに分割する際のタイル境界を示している。ここで、オブジェクトデータ2203は2つの直線が結合し、その結合部に補間処理を施したオブジェクトを示している。このオブジェクトは、その制御点座標である始点と終点の座標情報、あるいは、直線の属性を示す属性情報から構成される。
【0241】
例えば、このオブジェクトは、以下のような情報を保持している。
【0242】
座標情報 始点(x1,y1)→(x2,y2)→終点(X1,Y1)
パターン 実線
色 黒
線幅 28pt
補間方法 ラウンドジョイン
ここで、補間方法のラウンドジョインとは、直線の結合部を丸くなめらかに結合させるような補間方法である。この例において、オブジェクト2203はタイルベクタデータ2201内に全て収まっているため、タイルベクタデータ2202においては、オブジェクトは存在しない。
【0243】
同様のオブジェクトで、以下のような属性を持つオブジェクトの処理を説明する。
【0244】
座標情報 始点(x1,y1)→(x2,y2)→終点(X1,Y1)
パターン 実線
色 黒
線幅 28pt
補間方法 マイタージョイン
ここで、補間方法のマイタージョインとは、直線の結合部を尖った形に結合させるような補間方法である。この例において、オブジェクト2206はタイルベクタデータ2204のみならず、結合部の補間方法を適用した結果、隣接するタイルベクタデータ2205の領域内まで、そのオブジェクトの描画が必要となっている。このような場合に、タイルベクタデータ2205は、オブジェクト2206の情報を保持するよう構成される。タイルベクタデータ2204と2205がそれぞれ、独立にラスタライズが行われた場合でも、結合部の補間処理を含めて、所望の結果が得られる。
【0245】
以上説明したように、実施形態5によれば、オブジェクト分割処理時に、属性値として、ラスタライズ処理におけるデータ補間方法を設定する。これにより、オブジェクトの座標データそのものは複数のタイルの境界を跨がないが、オブジェクトに属性値を適用した後に、タイルの境界を跨いでしまうような場合でも、分割前の正常なオブジェクトを制限することができる。
【0246】
[実施形態6]
オリジナルのオブジェクトをブロック単位に分割し、それをブロック単位で、ビットマップ画像にラスタライズを行う場合、分割されたブロックがそれぞれ、独立にラスタライズされる場合、次のようなことが発生し得る。つまり、各ブロック内に、当該オブジェクトのオリジナルの端点とは別に、分割によって生じた端点が多く含まれる。そのため、当該オブジェクトをRIP113(図20)にてラスタライズ処理する際に、分割によって生じた端点にも、オリジナルの端点に対する端点処理と同様の端点処理を実行してしまう可能性がある。
【0247】
一般に、直線及び曲線オブジェクトのラスタライズ処理の内、この端点処理は比較的重く、処理時間が長い。従って、処理領域をページよりも小さいバンドやタイル等のブロック単位にすることで、分割によって生じた端点に対する無駄な端点処理が頻繁に発生してしまい、オブジェクトのラスタライズ処理に要する時間が長くなってしまう欠点がある。
【0248】
そこで、実施形態6では、この端点処理の負荷を軽減するためのオブジェクト分割処理の一例として、複数タイルに跨がる直線及び曲線オブジェクトがタイル分割される場合のオブジェクト分割処理について、図18及び図19を用いて説明する。
【0249】
図18は従来の直線及び曲線オブジェクトの分割処理の例を示す模式図である。図19は本発明の実施形態6の直線及び曲線オブジェクトの分割処理の例を示す模式図である。
【0250】
図18及び図19は、1つの直線オブジェクトがタイルT1、T2、T3という3つのタイルベクタデータに跨がっている場合のオブジェクト分割処理を示している。当該直線オブジェクトは、制御点座標として端点E1、E2という2つの端点の座標を持ち、属性情報として、少なくとも以下の項目を持つものとする。
【0251】
座標情報(アウトライン) 始点(x1,y1)→終点(X1,Y1)
パターン 実線
色 黒
線幅 42pt
端点 ラウンドキャップ
図18で示す従来例では、オブジェクト分割の前後において、制御点座標は、タイルベクタデータ毎の位置座標を基準とする新たな制御点座標に変換されるが、属性情報は、分割前のオブジェクトからそのまま引き継がれる。
【0252】
一方、図19で示す実施形態6の構成では、オブジェクト分割の前後において、制御点座標は、タイル毎の位置座標に変換される。但し、属性情報は、分割前のオブジェクトから引き継いだ上で、分割によって生じた端点に対して、分割前のオブジェクトがもともと持っていたオリジナルの端点と区別するための端点処理不要フラグを付与する。
【0253】
即ち、この構成によれば、各端点が有する端点処理不要フラグの値が「0」または「1」であるかを検出すれば、当該端点がオリジナルの端点E1、E2であるか、分割によって生じた端点e1、e2、e3、e4であるかを容易に区別することができる。
【0254】
ここで、端点処理不要フラグは、図12のステップS75(描画オブジェクト(DL)データの生成)において、端点を描画するための端点処理の実行の有無を示すことになる。特に、この端点処理は、「1」の場合は、処理対象の端点に対して端点処理を実行し、「0」の場合は、処理対象の端点に対して端点処理を実行しない。
【0255】
特に、実施形態6では、分割前のオブジェクトのオリジナルの端点については、端点処理不要フラグのフラグ値として「0」を設定し、分割によって生じた新たな端点については、端点処理不要フラグのフラグ値として「1」を設定する。また、端点処理不要フラグのフラグ値は、例えば、システムメモリ5に記憶される。
【0256】
端点処理不要フラグを付与した場合には、そのフラグ値に応じて、図12のステップS75の処理内容を制御する。
【0257】
具体的には、ステップS75において、処理対象のコマンドで指定された図形が直線または曲線である場合には、それに付与されている端点処理不要フラグのフラグ値が「0」であるか「1」であるかを検出する。
【0258】
フラグ値が「0」である場合、端点処理に関わる描画命令を従来通り実行して描画オブジェクトを生成する。一方、フラグ値が「1」である場合、端点処理に関わる描画命令をスキップして描画オブジェクトを生成する。図19の例では、オリジナルの端点E1、E2については、そのフラグ値が「0」であるので、従来通り描画し、分割によって生じた端点e1、e2、e3、e4については、そのフラグ値が「1」であるので、描画をスキップした描画オブジェクトを生成する。
【0259】
以上説明したように、実施形態6によれば、タイル分割された直線及び曲線オブジェクトを並列にラスタライズ処理する場合でも、タイル分割によって生じた端点に対する無駄な端点処理を省き、当該オブジェクトの描画処理時間を短縮することができる。
【0260】
[実施形態7]
実施形態1乃至6の構成は、その用途や目的に応じて、任意に組み合わせ、その組み合わせによって得られる実施形態を実現しても良いことは言うまでもない。
【0261】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【0262】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔から供給する。そして、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【0263】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0264】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【0265】
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスクがある。また、更に、記録媒体としては、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
【0266】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、その接続先のホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0267】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0268】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。また、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【0269】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【0270】
【図1】本発明の実施形態1の画像処理システムを構成するMFPのコントローラの詳細を示すブロック図である。
【図2】本発明の実施形態1の画像処理システムでのコピー動作に係るデータフローを示す図である。
【図3】本発明の実施形態1の画像処理システムでのプリント動作に係るデータフローを示す図である。
【図4】本発明の実施形態1の画像処理システムでの送信動作に係るデータフローを示す図である。
【図5】本発明の実施形態1のラスタ/タイルベクタ変換部が実行する処理を示すフローチャートである。
【図6】本発明の実施形態1のネットワークから転送されてくるドキュメントデータの一例を示している。
【図7】本発明の実施形態1のページベクタデータの記述例を示す図である。
【図8】本発明の実施形態1のタイルベクタデータの例を示す図である。
【図9】本発明の実施形態1のタイルベクタデータの記述例を示す図である。
【図10】本発明の実施形態1のタイル/ページベクタ変換部が実行する処理を示すフローチャートである。
【図11】本発明の実施形態1の直線オブジェクトの分割処理の例を示す模式図である。
【図12】本発明の実施形態1の画像データ展開部が実行する処理を示すフローチャートである。
【図13】本発明の実施形態2の破線オブジェクトの分割処理の例を示す模式図である。
【図14】本発明の実施形態3のグラフィックオブジェクトの分割処理の例を示す模式図である。
【図15】オブジェクト分割処理の問題点を説明するための図である。
【図16】本発明の実施形態4の直線オブジェクトの分割処理の例を示す模式図である。
【図17】本発明の実施形態5のオブジェクト分割処理の例を示す模式図である。
【図18】従来の直線及び曲線オブジェクトの分割処理の例を示す模式図である。
【図19】本発明の実施形態6の直線及び曲線オブジェクトの分割処理の例を示す模式図である。
【図20】従来の画像処理システムの構成を示す図である。
【図21】オブジェクト分割処理の問題点を説明するための図である。
【図22】オブジェクト分割処理の問題点を説明するための図である。
【符号の説明】
【0271】
1 コントローラ
2 システムバスブリッジ
3 CPU
4 メモリコントローラ
5 システムメモリ
6 汎用バス
7 ハードディスクコントローラ
8 ハードディスクドライブ
9 操作部コントローラ
10 操作部
11 ネットワークI/F
12 ネットワーク
13 タイル/ページベクタ変換部
14 ラスタ/タイルベクタ変換部
15 画像処理部
16 スキャナ
17 プリンタ
18 画像データ展開部
18a〜18d 小画像データ展開部
19 ローカルメモリ

【特許請求の範囲】
【請求項1】
入力された画像データに対する処理を実行する画像処理装置であって、
画像データを入力する入力手段と、
前記入力手段で入力された画像データを、設定されたブロックサイズのブロック毎に分割する際に、前記画像データ中にその分割するブロックの複数ブロックに跨がるオブジェクトが存在する場合、前記オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する分割手段と、
前記分割手段によってブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、前記分割されたオブジェクトのオブジェクト情報を再設定する設定手段と、
前記設定手段で再設定されたオブジェクト情報を用いて、ブロック毎のブロックベクタ画像データを生成する生成手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記設定手段は、前記分割手段によってブロック毎に分割されたオブジェクトのオブジェクト情報に含まれる座標情報に基づいて、前記分割されたオブジェクトの座標情報を再設定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記設定手段は、前記分割手段によってブロック毎に分割されたオブジェクトのオブジェクト情報に含まれる属性情報に基づいて、前記分割されたオブジェクトの属性情報を再設定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記オブジェクトのオブジェクト情報に基づいて、そのオブジェクトは1つのブロック内に描画可能であるが、前記オブジェクト情報に含まれる属性情報を適用した際、該オブジェクトを複数ブロックに跨って描画する必要がある場合、該オブジェクトを隣接ブロックにも描画するよう、各ブロック内のオブジェクトを再構成する再構成手段を更に備える
ことを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記生成手段は、前記再構成手段で再構成されたオブジェクトが存在する場合には、そのオブジェクトが属するブロック毎に、ベクトル化処理を実行して、ブロックベクタ画像データを生成する
ことを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記オブジェクト情報に含まれる属性情報は、線幅である
ことを特徴とする請求項1乃至5のいずれか1項に記載の画像処理装置。
【請求項7】
前記オブジェクト情報に含まれる属性情報は、オブジェクトの端点の補間方法である
ことを特徴とする請求項1乃至6のいずれか1項に記載の画像処理装置。
【請求項8】
前記設定手段は、更に、前記分割手段による分割後のオブジェクトの端点に対して、その分割によって生じた端点と、分割前のオブジェクトのオリジナルの端点と区別するためのフラグを、前記分割されたオブジェクトのオブジェクト情報として再設定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項9】
前記生成手段で生成されたブロックベクタ画像データを記憶する記憶手段と、
前記記憶手段に記憶されたブロックベクタ画像データをラスタ画像データに展開する展開手段と
を更に備えることを特徴とする請求項1乃至8のいずれか1項に記載の画像処理装置。
【請求項10】
前記展開手段は、処理対象のブロックベクタ画像データに含まれるオブジェクトのオブジェクト情報に基づいて、前記オブジェクトをラスタ画像データに展開する
ことを特徴とする請求項9に記載の画像処理装置。
【請求項11】
前記展開手段は、前記オブジェクト情報に含まれるフラグのフラグ値に基づいて、処理対象のオブジェクトの端点を描画するための端点処理を実行する
ことを特徴とする請求項10に記載の画像処理装置。
【請求項12】
入力された画像データに対する処理を実行する画像処理装置の制御方法であって、
画像データを入力する入力工程と、
前記入力工程で入力された画像データを、設定されたブロックサイズのブロック毎に分割する際に、前記画像データ中にその分割するブロックの複数ブロックに跨がるオブジェクトが存在する場合、前記オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する分割工程と、
前記分割工程によってブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、前記分割されたオブジェクトのオブジェクト情報を再設定する設定工程と、
前記設定工程で再設定されたオブジェクト情報を用いて、ブロック毎のブロックベクタ画像データを生成する生成工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項13】
入力された画像データに対する処理を実行する画像処理装置の制御をコンピュータに実行させるためのプログラムであって、
画像データを入力する入力工程と、
前記入力工程で入力された画像データを、設定されたブロックサイズのブロック毎に分割する際に、前記画像データ中にその分割するブロックの複数ブロックに跨がるオブジェクトが存在する場合、前記オブジェクトに関するオブジェクト情報に基づいて、該オブジェクトを分割する分割工程と、
前記分割工程によってブロック毎に分割されたオブジェクトに関するオブジェクト情報に基づいて、前記分割されたオブジェクトのオブジェクト情報を再設定する設定工程と、
前記設定工程で再設定されたオブジェクト情報を用いて、ブロック毎のブロックベクタ画像データを生成する生成工程と
をコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図14】
image rotate