JP5199727B2 - 画像処理方法及び画像処理装置とその制御方法 - Google Patents

画像処理方法及び画像処理装置とその制御方法 Download PDF

Info

Publication number
JP5199727B2
JP5199727B2 JP2008128794A JP2008128794A JP5199727B2 JP 5199727 B2 JP5199727 B2 JP 5199727B2 JP 2008128794 A JP2008128794 A JP 2008128794A JP 2008128794 A JP2008128794 A JP 2008128794A JP 5199727 B2 JP5199727 B2 JP 5199727B2
Authority
JP
Japan
Prior art keywords
rendering
resolution
edge
image
rip
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.)
Expired - Fee Related
Application number
JP2008128794A
Other languages
English (en)
Other versions
JP2009274366A (ja
Inventor
雅仁 山▲崎▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2008128794A priority Critical patent/JP5199727B2/ja
Priority to US12/437,230 priority patent/US8339664B2/en
Publication of JP2009274366A publication Critical patent/JP2009274366A/ja
Application granted granted Critical
Publication of JP5199727B2 publication Critical patent/JP5199727B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1849Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1852Generation of the printable image involving combining data of different types
    • G06K15/1853Combining raster data of different resolutions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1852Generation of the printable image involving combining data of different types
    • G06K15/1855Combining raster data and graphic primitives

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Record Information Processing For Printing (AREA)
  • Image Generation (AREA)

Description

本発明は画像処理方法及び画像処理装置とその制御方法に関する。特に、画像データを受信し印刷するための画像処理方法、及びその機能を有する画像処理装置とその制御方法に関するものである。
プリンタ技術が進歩するに従い、紙などの媒体に出力する解像度は高くなってきている。プリンタ解像度が上がることにより、線の滑らかさや擬似階調表現される色の階調性が向上するなどのメリットがある。しかし、デジタル画像を生成する処理(所謂、レンダリング処理)は、解像度があがるほど処理時間や必要メモリ量が増え、画質と処理コストとはトレードオフの関係にある。
従来、高解像度のレンダリング処理を高速に行う技術として、特許文献1および特許文献2で開示されている、オブジェクトの辺交差の効率的なソートを実現する技術がある。
また、ページ中の特定部分のみ高解像度でレンダリングすることによってレンダリング処理のコストを低下させる技術としては、特許文献3で開示されている技術がある。
さらに、一般的に知られる技術として、低解像度のレンダリング済み画像に対してピクセル補間やエッジ形状パターンマッチングの手法を適用して出力解像度を上げる、スムージング技術が広く用いられている。
特開2000―137825 特開2000―149035 特開平10−202960
しかしながら、特許文献1や特許文献2のような技術を用いても、高解像度のレンダリングでは処理時間や消費メモリ量が十分に小さく出来ない場合も多い。その場合は、画質に影響を与えない範囲で低解像度のレンダリングを部分的に用いることが有効であると考えられる。
処理コストを抑えつつ効果的に印刷画質を向上させる方法として、小さな文字や細い線だけに限定して高解像度のレンダリング処理を行うことが考えられる。しかし、スムージング技術では、数ポイント以下の小さな文字のプロポーション改善や、高解像度の1ドットラインの表現は不可能である。
一方、特許文献3の技術では、領域ごとに解像度を決定してしまうため、高解像度領域内では小さな文字や細い線以外の描画オブジェクトも高解像度でレンダリングされてしまう。そのため、隣接する低解像度領域との境目で、ドット幅が変化したり画像品位が変化することによる見た目の違和感が生じてしまう。
本発明は、上記問題点を解決するためになされ、レンダリング処理において、小さな文字や細線の描画のみを高解像度とし、その他の描画オブジェクトを低解像度でレンダリングすることにより、高画質化と処理コストの低減を両立させる。
すなわち、高解像度領域において、高解像度でレンダリングすることが効果的な特定の描画オブジェクトのみを高解像度レンダリング処理し、その他の描画オブジェクトは低解像度にあわせた品位でレンダリングする。これにより、レンダリング処理コストを抑えつつ違和感のない描画結果を得る。
上記課題を解決するために、本発明の文書画像処理装置は、以下の構成をとる。
1ページの描画データを複数の領域に分割した描画データの集まりとして扱う描画制御手段と、前記描画制御手段の指示に従って、分割された領域の描画データをレンダリングするレンダリング手段とを有し、前記描画制御手段は、分割された領域内の描画オブジェクトに対応づけてレンダリングの解像度を決定するための、描画オブジェクトの種類を表わす情報を保持し、前記描画オブジェクトの種類を表わす情報に基づいて、分割された領域単位で、レンダリングする解像度を第1の解像度または前記第1の解像度よりも低い第2の解像度に決定し、前記レンダリング手段は、前記第1の解像度でのレンダリングが決定された領域においてレンダリングを行う際に、前記第1の解像度でのレンダリングを決定する条件となった小文字オブジェクトと細線オブジェクトとを含む特定の種類の描画オブジェクトに対しては描画のエッジの位置を1画素単位で決定して前記特定の種類の描画オブジェクトをレンダリングし、前記特定の種類の描画オブジェクト以外の描画オブジェクトに対しては描画のエッジの位置を複数画素単位で決定して前記特定の種類の描画オブジェクト以外の描画オブジェクトをレンダリングする、ことを特徴とする。
本発明によれば、小さな文字や細線などの特定の描画オブジェクトのみを高解像度レンダリングし、それ以外の描画オブジェクトを低解像度でレンダリングする。これにより、特定の描画オブジェクトを含まない小領域は低解像度レンダリングとなり、省メモリと省演算コストでのレンダリングが可能になる。
すなわち、特定の描画オブジェクトを含む小領域では、高解像度レンダリングとなる。ただし、小領域内で高解像度品位でレンダリングされるのは特定の描画オブジェクトだけであり、それ以外の描画オブジェクトのレンダリング品位は、周囲の低解像度でレンダリングされた小領域と同等品位とすることが可能である。
以下、本発明を実施するための実施形態について、図面を参照して詳細に説明する。なお、以下の実施形態では、本発明を実現する画像処理装置としてデジタル複合機を例に説明するが、かかる装置に限定されない。本発明は全体の画像の描画を分割した小領域毎に行う技術に広く適用可能であり、例えば、画像の表示にも適用可能である。更に、ワープロ(ワードプロセッサ)系ソフトウェア、表計算系ソフトウェア、作図系ソフトウェア等にも幅広く応用可能である。これらも本発明に含まれる。
<本実施形態の画像処理装置であるデジタル複合機の構成例>
本実施形態のデジタル複合機の全体構成例を、図1を参照しながら説明する。
画像入力装置としても参照されるリーダ部200は、原稿画像を光学的に読み取って画像データに変換する。リーダ部200は、原稿を読取るための機能を持つスキャナユニット210と、原稿用紙を搬送するための機能を持つ原稿給紙ユニット250とで構成される。
画像出力装置としても参照されるプリンタ部300は、記録紙を搬送し、その上に画像データを可視画像として印字して装置外に排紙する。プリンタ部300は、複数種類の記録紙カセットを持つ給紙ユニット310と、画像データを記録紙に転写、定着させる機能を持つマーキングユニット320とを有する。また、印字された記録紙を機外へ出力する機能を持つ排紙ユニット330と、ステイプル処理やソート処理を行うフィニッシャ部340とを有する。
制御装置であるコントローラ部100は、リーダ部200及びプリンタ部300と電気的に接続され、さらに、ネットワーク(LAN)40を介して、ホストコンピュータ41,42やインターネット上の各種サーバと接続される。コントローラ部100は、リーダ部200を制御して原稿の画像データを読込み、プリンタ部300を制御して画像データを記録用紙に出力して、コピー機能を提供する。また、リーダ部200から読取った画像データをコードデータに変換し、ネットワーク400を介してホストコンピュータへ送信するスキャナ機能を提供する。また、ホストコンピュータからネットワーク400を介して受信したプリントジョブデータを画像データに変換し、プリンタ部300に出力するプリンタ機能を提供する。また、リーダ部200から読み取った画像データおよびホストコンピュータから受信したプリントジョブデータから変換した画像データを、コントローラ部内の二次記憶装置に保存するボックス機能を提供する。さらには、受信したプリントジョブデータに対するジョブ制御機能を提供する。
操作部150は、液晶タッチパネルで構成され、コントローラ部100に接続されて本デジタル複合機を操作するためのユーザI/Fを提供する。
<コントローラ部のハードウエア構成例>
図2は、本実施形態におけるデジタル複合機のコントローラ部100のハードウエア構成例を示すブロック図である。
図2において、コントローラ部100は、画像入力デバイスであるリーダ部(スキャナ)200や画像出力デバイスであるプリンタ部(プリンタエンジン)300と接続し、画像データの読み取りやプリント出力のための制御を行う。また、コントローラ部100は、LAN40と接続することで画像情報やデバイス情報をLAN40経由で入出力するための制御を行う。
CPU101は、デジタル複合機全体を制御するための中央処理装置であり、本実施形態のRIP111に対する描画制御を司っている。RAM102は、CPU101が動作するためのシステムワークメモリであり、入力された文書画像データを一時記憶するためのメモリでもある。さらに、ROM103はブートROMであり、システムのブートプログラムが格納されている。HDD104はハードディスクドライブであり、各種処理のためのシステムソフトウェアや、入力された画像データや中間コードなどを格納する。操作部I/F105は、画像データ等を表示可能な表示画面を有する操作部150に対するインタフェース部であり、操作部150に対して操作画面データを出力する。また、操作部インタフェース(I/F)105は、操作部150から操作者が入力した情報をCPU101に伝える役割をする。ネットワークインタフェース(I/F)107は、例えばLANカード等で実現され、LAN40に接続して外部装置との間で情報の入出力を行う。以上のユニットが、システムバス106上に配置されている。
イメージバスI/F109は、システムバス106と画像データを高速で転送する画像バス110とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。画像バス110上には、ラスタイメージプロセッサ(RIP)111、デバイスI/F112、スキャナ画像処理部113、プリンタ画像処理部114、画像編集用画像処理115が接続される。
ラスタイメージプロセッサ(RIP)111は、ページ記述言語(PDL)コードやディスプレイリスト(DL)をイメージに展開して描画データを生成する。デバイスI/F部112は、リーダ部200やプリンタ部300とコントローラ部100とを接続し、画像データの同期系/非同期系の変換を行う。また、スキャナ画像処理部113は、リーダ部200から入力した画像データに対して、補正、加工、編集等の各種処理を行う。プリンタ画像処理部114は、プリント出力する画像データに対して、プリンタ部300に応じた補正、解像度変換等の処理を行う。画像編集用画像処理115は、画像データの回転や画像データの圧縮伸長処理等の各種画像処理を行う。画像メモリ116は、RIP111により展開された画像データやリーダ部200から読込まれた画像データ、あるいは処理中の一次記憶として使用してもよい。
<コントローラ部のソフトウェアによる機能構成例>
図3は、デジタル複合機の動作を制御する図2の構成のコントローラ部100が、ソフトウェアにより実現する機能構成例を示すブロック図である。かかる各機能構成部は、図2のハードウエアを使用しながら、HDD104からRAM102にロードされたプログラムをCPU101が実行することにより、実現される。なお、データ描画部33については、図2のRIP111内のCPUによっても、その機能が実現される。
ネットワークインタフェイス(I/F)30は、図2のネットワークI/F107を含む外部との入出力のための機能構成部である。プロトコル制御部31は、ネットワークプロトコルを解析したり送信したりすることによって外部との通信を行う機能構成部である。
PDL解析部32は、文書画像データとして受信したPDLデータを解析し、より処理しやすい形式の中間コード(例えば、以下で説明するディスプレイリストなど)に変換する機能構成部である。PDL解析部32において生成された中間コードは、データ描画部35に渡されて処理される。なお、中間コードのディスプレイリストは、ホストコンピュータ401,402において生成され、ネットワークI/F30において受信される場合もある。
データ描画部33は、図2のRIP111を含み、上記中間コードのディスプレイリストを描画データであるビットマップデータに本実施形態では領域単位に展開する機能構成部であり、展開されたビットマップデータはページメモリ34に逐次描画されて行く。ページメモリ34は、データ描画部33が展開するビットマップデータを一次的に保持する揮発性のメモリである。
パネル入出力制御部35は、図2の操作部I/F105を含み操作部150からの入出力を制御する機能構成部である。中間データ記憶部36は、中間コードのディスプレイリストの一部もしくは全部を記憶する記憶部であり、ハードディスク等の二次記憶装置によって実現される。スキャン制御部37は、図2のスキャナ画像処理部113を含み、リーダ部200から入力した画像データに対して補正、加工、編集などの各種処理を行う。印刷制御部38は、図2のプリンタ画像処理部114を含みページメモリ34の内容をビデオ信号に変換処理し、プリンタ部300へ画像転送を行なう。プリンタ部300は、受け取ったビデオ信号を記録紙に永久可視画像形成するための印刷機構部である。
<本実施形態のディスプレイリストの構成例>
次に、図4から図7を参照して、コントローラ部100内でデータ描画の元として使用されるディスプレイリストの構成例を説明する。なお、かかるディスプレイリストは、PDL解析部32によって文書画像データとして受信したPDLデータを解析し、より処理しやすい形式に変換された中間コードである。本発明は、ディスプレイリスト以降の処理に特徴があり、PDL解析部32による変換については詳説しない。ここで、本実施形態におけるデータ描画部33(RIP111)によるページのレンダリング処理は、1ドットを単位とし左上を原点とした座標系が用いられる。
(ディスプレイリストの全体構成例)
図4は、本実施形態におけるディスプレイリストの全体のデータ構造の一例を示す図である。また、図5から図7は、図4のディスプレイリストの構成要素の詳細を示す図である。
ディスプレイリスト400には、1ページに相当する領域をレンダリングするために必要な情報が入っている。図4中の401〜409は、レンダリング処理の各段階の処理開始を指示するインストラクションである。個々のインストラクションは、必要に応じて付加情報とペアを成している。
インストラクション401は<SET_LEVELLIST>であり、付加情報としてレベルリストアドレス(LevelList Address)402とペアを成す。かかるインストラクション401は図7で後述のレベルリスト(LevelList)700の設定を指示する。すなわち、レベルリストアドレス402がRIP111内のメモリに記憶され、レベルリスト700の先頭アドレスとしてRIP111の処理において参照される。
インストラクション403は<SET_FILLTABLE>であり、付加情報としてフィルテーブルアドレス(FillTable Address)404とペアを成す。かかるインストラクション401は後述のフィルテーブル(FillTable)430の設定を指示する。すなわち、フィルテーブルアドレス404がRIP111内のメモリに記憶され、フィルテーブル430の先頭アドレスとしてRIP111の処理において参照される。
インストラクション405は<DECOMPRESS_IMAGE>であり、付加情報として圧縮イメージデータへのイメージアドレス(Image Address)406とペアを成す。かかるインストラクション405は、後述の圧縮イメージデータ(Compressed Image Data)410の展開を指示する。すなわち、イメージアドレス406にて参照される圧縮イメージデータ410を、イメージ展開バッファ(Decompression image buffer)420に展開する。ここで、圧縮イメージデータ410の圧縮形式には、JEPGやJBIGが用いられる。
インストラクション407は<RENDER_PACKET>であり、付加情報としてパケットDLアドレス(PacketDL Address)408とペアを成す。かかるインストラクション407は、展開された1ページのイメージを複数の矩形領域(小領域とも言う)に分割した、各矩形領域のレンダリングを指示する。すなわち、ディスプレイリスト400内から、パケットDLアドレス408にて参照される領域単位のパケットDL(PacketDL)500を取得する。また、パケットDLアドレス408はRIP111内のメモリに記憶され、パケットDL500の先頭アドレスとしてRIP111で参照される。かかる、<RENDER_PACKET>とパケットDL500は分割された矩形領域の数だけ準備される。
インストラクション409は<END_PAGE>であり、付加情報はない。
410は圧縮イメージデータであり、圧縮イメージデータのイメージアドレス406でメモリ中での位置が示される。420はイメージ展開バッファであり、圧縮イメージデータ410の展開先として使用される。
(パケットDLの構成例)
図5に、パケットDLアドレス408で参照されるパケットDL500の構成例を示す図である。
500は1ページ中の特定の矩形領域を描画するために必要なデータ構造であり、これをパケットDLと呼ぶ。パケットDLは、2種類のインストラクションを含むことが出来る。
インストラクション501は<SET_PACKET>であり、パケットDLを描画する際に必要な各種情報を付加情報として持つ。502,503は、矩形領域の左上座標値を示す。これをパケットDLの原点と呼ぶ。504,505は、矩形領域の高さと幅である。506〜510は、パケットDL内に含まれる各種エッジの数を示す。パケットDL内に含まれるエッジには、TEXT、Small_text、Graphics、thin_Line、Imageの5種類がある。後述の文章中で、それぞれエッジ判別子として、T,S,G,L,Iと略される場合もある。ここで、Tは文字オブジェクトのエッジ、Sは小文字オブジェクトのエッジ、Gはグラフィック・オブジェクトのエッジ、Lは細線オブジェクトのエッジ、Iはイメージオブジェクトのエッジである。
インストラクション511は<LOAD_EDGES>であり、エッジの描画を指示するものである。付加情報として、追加エッジ数512と、NextY座標513を持つ。さらに、付加情報として描画対象となるベクタエッジに関する3つの情報、ベクタセグメントアドレス514、エッジ判別子515、レベル番号516がセットとなり、ひとつのベクタエッジ描画に用いられる。
(ベクタセグメントの構成例)
図6は、ベクタセグメントアドレス514により参照されるベクタセグメント600の構成例を示す図である。
600は、描画するベクタエッジの座標情報を保持し、ベクタセグメントと呼ばれる。ベクタエッジは、複数の連続した線分の集合で表現されている。
601,602は、ベクタエッジの開始点を示す絶対座標値y0,x0である。603,604は、ここから始まる線分の終点を示す相対座標値Dy1,Dx1である。さらに、これに続く線分も相対座標値として表される。605,606のベクタエッジの最終線分を表す相対座標値Dyn,Dxnに続くのは、エッジ終点を示すNULL値607である。
(レベルリストの構成例)
図7は、レベル番号516により参照されるレベルリスト700の構成例を示す図である。
700は、レベルリストである。レベルとは、描画されるオブジェクトの重なりを示す概念であり、大きいレベル値をもつ描画オブジェクトは、小さなレベル値を持つ描画オブジェクトを覆い隠す。そのため、同一座標上に複数の描画オブジェクトが重なり合って存在する場合には、もっともレベル値の大きな描画オブジェクトのみがレンダリングされる。
701はレベル値を示す番号である。702はレベル値701に対応するFillが格納されているフィルアドレスを示す。Fillとは、画素の色値を決定するために必要な情報であり、FillTable430に収められている。
<本実施形態の描画手順の概念例>
(本実施形態の1ページの描画例)
図8は、パケットDLによるレンダリング処理の全体の動作を模式的に説明する概要図である。
図8において、上段に示すのは図4〜図7で前述したディスプレイリスト400である。ディスプレイリスト400は、前述のように、1ページを分割した矩形領域の数のパケットDL500を有している。本例では、1ページを主走査方向の3分割、副走査方向の3分割して、9個の矩形領域の場合が示されている。
図8の中段の図は、上記9個のパケットDL500によりそれぞれレンダリングした矩形領域ごとの結果が、ページスプールバッファ1301内に格納された状態を示している。各レンダリング結果の画像データには、矩形領域の座標値情報(矩形領域左上の始点座標と高さ及び幅)と解像度品位情報が付加される。本例では、以下で詳説されるが、SエッジもしくはLエッジがある場合の解像度品位は1200dpiもしくは600dpiであり、SエッジもしくはLエッジがない場合の解像度品位は600dpiと記録される。
図8の例では、"字"の文字が含まれる矩形領域の解像度品位は1200dpiもしくは600dpiであり、他の8個の矩形領域の解像度品位は600dpiである。
図8の下段の図は、中段のページスプールバッファ1301内に格納された矩形領域ごとの結果をページメモリ34に転送した、1ページのレンダリング結果である。その際、600dpi品位でレンダリングされた矩形領域は、ページメモリ上に拡大率2倍で画像展開される。1200もしくは600dpi品位でレンダリングされた矩形は、等倍で画像展開される。
(本実施形態の矩形領域内の1ラインの描画例)
図9及び図10は、本実施形態における矩形領域内の1スキャンラインのレンダリングを実行した場合の内部動作を模式的に説明する概要図である。
1100は、描画しようとする矩形領域に配置されるオブジェクトの関係を表している。描画オブジェクトの重なり順に下から、イメージオブジェクト1102、円形グラフィックスオブジェクト1103、三角形グラフィックスオブジェクト1104、文字オブジェクト1105が配置されている。この矩形領域内のひとつのスキャンライン1101に対するレンダリングを行うことを考える。
スキャンライン1101での各描画オブジェクトの重なり状態を示すのが、1110である。重なり順の上位に配置されるオブジェクトほどレベル値が大きい。
図4のディスプレイリスト400のパケットDL(PacketDL)500に基づいて、1本のスキャンライン1101上でのアクティブエッジリスト(ActiveEdge List)900(図15で後述)をメモリ上に作成する。かかる処理は、後述の図21で示す処理ルールにしたがって実現される。すなわち、まず、全てのベクタエッジ(VectorEdge:図5のエッジ識別子(T/S/G/L/I)515とレベル番号(Level)516で示される)をエントリする。そして、注目するキャンラインと交差するベクタエッジのみをアクティブエッジリスト900として残す。アクティブエッジリスト900内のアクティブエッジをスキャンラインとベクタエッジとの交点のX座標(整数:図9にはX1, X2,...で示す)に基づいてソートする。その結果が、図9の1120に相当する。図9で、x1, 2,...は実数の交点のx座標、(1)〜(4)はレベル番号(Level)を表わす。
次に、交点のX座標順に並べ替えられたアクティブエッジリスト900内のアクティブエッジをレベルソートして、スパンリスト(Span List)1000(図17で後述)をメモリ上に作成する。1130は、レベルソート中のメモリ上のレベルソートスタック(Level Sort Stack)800(図18で後述)の動作を示している。図21で後述する処理ルールにしたがって、レベルソートスタックは操作される。1130で、"push"はレベルソートスタック800への押し込み、"pop"はレベルソートスタック800からの引き上げ、"remove"は削除、"sort"はレベルの大きい順のソートを示す。
レベルソートの結果、生成されたスパンリスト1000を示すのが、図9の1140である。
次ぎに、図10を参照すると、上述の図22および図25にて示される処理ルールに従って、スパンリスト1140に基づいて図8のページスプールバッファ1301のひとつのスキャンライン分の画素1170への書込みが実施される。そして、ひとつのスキャンラインの全画素の色値と像域フラグが決定される。その際に使用されるレベルリスト700とフィルテーブル430の例が、それぞれ1150と1160である。
(本実施形態の矩形領域内での解像度制御例)
図11及び図12は、矩形領域の描画処理における、整数座標値への変換処理の概念を説明する図である。
図11は、後述の図19および図20の処理の流れの中で描画を行った結果、SエッジおよびLエッジに対して1画素単位で1200dpi品位を実現し、その他のエッジに対して複数画素単位で600dpi品位を実現する様子の概念を示す。
図12は、後述の図23および図24の処理の流れの中で描画を行った結果、SエッジもLエッジを含まないパケットDLの処理において、複数画素単位で600dpi品位を実現する様子の概念を示す。
(本実施形態の解像度制御の模式図)
図13及び図14は、本実施形態の解像度制御の模式図である。
図13では、1200dpi品位での描画を実現するためにすべての画素位置に対して処理を実施して高解像度を実現している。
一方、図14では、600dpi品位での描画のために、X座標およびY座標において偶数値をとる画素位置に対する処理のみを実施して、画素拡大処理を行い低解像度を実現している。
<本実施形態のコントローラ部の処理手順例>
以下に、上記本実施形態の描画を実現するコントローラ部100の処理手順例をフローチャートに従って詳細に説明する。なお、本実施形態の描画を実現する主要な機能構成部はRIP111を含むデータ描画部33である。
(RIPが使用するワークメモリのデータ構造例)
図15から図17は、RIP111が描画を実行する際に使用するワークメモリのデータ構造例である。かかるワークメモリはRIP111の内部にあっても、画像メモリ116を使用しても、あるいはRAM102を使用してもよい。
図15は、図4のディスプレイリスト400の1つのパケットDL500(図5参照)に基づいて生成される、1矩形領域内の注目するスキャンラインと交点を有するアクティブエッジリスト900を示す図である。
アクティブエッジリスト900には、注目するスキャンラインと交点を有するアクティブエッジが含まれる。各アクティブエッジは、ベクタエッジ(VectorEdge:図5のエッジ識別子(T/S/G/L/I)515とレベル番号(Level)516で示される)を参照するベクタエッジ(VectorEdge)アドレス901を有する。また、注目するスキャンラインと交点を実数で表わしたScanline交点x座標902と、Scanline交点x座標902の整数部分を表わす整数X座標903とを有する。
図16は、X座標でソートされたアクティブエッジリスト900を順に、レベルソートするために使用されるレベルソートスタック800の例を示す
レベルソートスタック800の各スタックには、レベル番号801と、エッジ判別子802と、"remove"されたことを示すremoveフラグ803とが記憶される。removeフラグ803のセットされたスタックは、前述の図9のレベルソートスタック1130において、網掛けで示されている。
図17は、図16のレベルソートスタック800を使用したレベルソートの結果の、最上位のスタックデータからなるスパンリスト1000を示す図である。
スパンリスト1000の各スパンは、スパン開始X座標値1001と、エッジ判別子1002と、レベル番号1003とからなる。図9及び図10のスパンリスト1140に相当する。
<本実施形態におけるパケットDLレンダリングの全体の処理手順例>
図18は、本実施形態におけるパケットDLレンダリングの処理の流れを示すフローチャートの一例である。なお、図18中の処理のうち、ステップS1405およびステップS1406は、それぞれRIP111内にて実行される処理である。RIP111は内部にプロセッサとメモリを有し、メモリに予め記録されたプログラムを実行するものである。本実施例ではステップS1405およびステップS1406の処理を行うプログラムが記録されている。また、前記図15から図17に示すデータを一次記憶するワークメモリをRIP111の内部に設けてもよい。
図18中のその他のステップは、コントローラ部100内のHDD104に格納されたデータ描画部33を実現するプログラムが、RAM102に読み込まれた後、CPU101にて実行される。かかる図18の実行による全体の処理例は、図8のパケットDLレンダリング処理の全体の動作の概要図に従って、既に概説した。
まず、ステップS1401において、CPU101は、ネットワークI/F30より受信したディスプレイリスト400の解釈を開始する。本実施形態の説明においては、ディスプレイリスト400はホストコンピュータ401上で生成されているものとする。
ステップS1402において、CPU101は、ディスプレイリスト400中のインストラクションごとに処理を切り替える(図18中の"Switch")。
<SET_LEVELLIST>401の場合、CPU101は、ステップS1408にて、ディスプレイリスト400中のレベルリストアドレス402をRIP111内のメモリに記憶させる。これはレベルリスト700の先頭アドレスとしてRIP111の処理内で参照される。
<SET_FILLTABLE>403の場合、CPU101は、ステップS1409にて、ディスプレイリスト400中のフィルテーブルアドレス404をRIP111内のメモリに記憶させる。これはフィルテーブル430の先頭アドレスとしてRIP111で参照される。
<DECOMPRESS_IMAGE>405の場合、CPU101は、ステップS1407にて、圧縮イメージデータのイメージアドレス406にて参照される圧縮イメージデータ410を、イメージ展開バッファ420に展開する。ここで、圧縮イメージデータ410の圧縮形式にはJEPGやJBEGが用いられる。
<RENDER_PACKET>407の場合、CPU101は、ステップS1403にてディスプレイリスト400内から、パケットDLアドレス408にて参照されるパケットDL500を取得する。また、パケットDLアドレス408はRIP111内のメモリに記憶され、パケットDL500の先頭アドレスとしてRIP111で参照される。さらに、パケットDL500中に含まれる各種エッジの数506〜510を調べ、SエッジもしくはLエッジの有無を確認する。
SエッジもしくはLエッジがある場合には、CPU101はRIP111に指示して、RIP111内の処理のうちステップS1405にて、SエッジとLエッジで表される描画オブジェクトが解像度1200dpiでレンダリングされる。その他のエッジで表される描画オブジェクトは、解像度600dpiに相当する品位でレンダリングされる。
SエッジでもLエッジでもない場合には、CPU101はRIP111に指示して、RIP111内の処理のうちステップS1406にて、すべての描画オブジェクトが解像度600dpiに相当する品位でレンダリングされる。
レンダリングされた1画素には、図10の1170で前述したように、r,g,bの各色値情報と像域フラグとが含まれる。
上記レンダリング結果は、図8のように、ページスプールバッファ1301内に、パケットDL500で定められた矩形領域ごとに格納され、矩形領域の座標値情報(始点座標と高さ及び幅で表わされる)と解像度品位情報が付加される。SエッジもしくはLエッジがある場合の解像度品位は1200dpiもしくは600dpiであり、SエッジでもLエッジでもない場合の解像度品位は600dpiと記録される。
<END_PAGE>409の場合、CPU101は、ディスプレイリスト400のレンダリング処理が終了することを検知し、ディスプレイリスト400の解釈処理を終了する。そして、ステップS1410にて、CPU101は、ページスプールバッファ1301内の画像をページメモリ34上に転送する。その際、図11〜図14で前述したように、600dpi品位でレンダリングされた矩形領域は、ページメモリ上に拡大率2倍で画像展開される。一方、1200もしくは600dpi品位でレンダリングされた矩形領域は、等倍で画像展開される。
<RIP111による解像度混在のレンダリングS1405の処理手順例>
図19は、図8のステップS1405におけるRIP111の解像度を混在させた描画の詳細処理の流れを示すフローチャートの一例である。かかる処理は、RIP111中のCPUによって実行される。
ステップS1501にて、RIP111は、パケットDL500中のパケット領域高さ504およびパケット領域幅505の情報から、必要とするページスプールバッファ1301(図8参照)のサイズを決定する。幅x高さx(色値bit深度+像域フラグbit数)で、ひとつの矩形領域の画像サイズが決まる。続いて、注目するスキャンラインのレンダリング処理を開始する(図9及び図10参照)。
まず、ステップS1502で、RIP111は、レンダリング処理対象となるスキャンラインのY座標を、パケットDL500の原点Y座標値502として設定する。
次に、ステップS1503にて、RIP111は、パケットDL500中のインストラクション<LOAD_EDGES>511を読み、インストラクションとセットで記録されている追加エッジ数512を変数Nに書き込む。また、NextY座標513を変数NextYに書き込む。続いて、ステップS1504にて、RIP111は、処理すべきエッジの情報を管理する領域である、アクティブエッジリスト900の領域を確保する(図15参照)。アクティブエッジリスト900は、スキャンラインのレンダリング中にベクタエッジを描画するために必要な情報を保持するデータ構造のリストであり、追加エッジの数Nに相当するメモリ領域がステップS1504にて追加される。さらに、追加したメモリ領域に対して、ベクタエッジアドレス901を書き込む。ベクタエッジアドレス901は、パケットDL中のベクタセグメントアドレス514、エッジ判別子515、レベル番号516のセットを参照するためのアドレスである(図5参照)。
この段階で、Y座標で特定されるスキャンラインと交差するベクタエッジの情報は、すべてアクティブエッジリスト900に格納されていることになる。
続いて、ステップS1505にて、RIP111は、注目するスキャンラインとベクタエッジとの論理的な交点x座標(実数値)902をすべて計算してアクティブエッジリスト900の各ベクタエッジアドレス901に対応して格納する。さらに、レンダリング結果として描画されるX座標値(整数値)903も計算して各ベクタエッジアドレス901に対応して格納される。交点座標算出の処理詳細については、図20を用いて後述する。
上記座標値算出処理の結果から、ステップS1506にて、RIP111は、スキャンラインと交差しないと判断されたベクタエッジに関する情報をアクティブエッジリスト900から削除する。さらに、RIP111は、ステップS1507にて、整数X座標値を用いて、アクティブエッジリスト900内のベクタエッジ情報のセットをX座標の昇順にソートする。
続いて、ステップS1508にて、RIP111は、スパンリスト1000の生成を行う(図9及び図10の1120〜1140参照)。スパンリスト1000内に複数のスパン情報が格納される。それぞれのスパン情報は、図17で前述したように、スパン始点X座標値1001、エッジ判別子1002、レベル番号1003の3つの情報から構成される。スパンリスト生成の処理詳細については、図21を用いて後述する。
続いて、ステップS1509にて、RIP111は、上記スパンリスト1000を用いてページスプールバッファ1301に対して、1スキャンラインの描画を実施する(図10の1140〜1170参照)。ステップS1509の処理詳細については、図22を用いて後述する。
ここまでで、パケットDLが定義する矩形領域内のひとつのスキャンラインに関する描画処理が完了している。RIP111は、ステップS1510で処理すべき注目のスキャンラインのY座標値をインクリメントし、さらに、ステップS1511にて変数NextYと比較する。スキャンラインY座標と変数NextYとが一致しない場合はステップS1505に戻り、RIP111は、次のスキャンラインの処理を続ける。
スキャンラインY座標と変数NextYとが一致した場合は、ステップS1503から始まる<LOAD_EDGES>インストラクションが終了したことを示す。ステップS1512にて、未処理の<LOAD_EDGES>インストラクションがあった場合、RIP111は、ステップS1503に戻って、新たなベクタエッジの追加処理を続ける。すべての<LOAD_EDGES>インストラクションの処理を終了すると、RIP111は、ステップS1405のパケットDLのレンダリング処理を終了して、処理をCPU101に戻す。
(スキャンラインとベクタエッジの交点算出S1505の手順例)
図20は、図19のステップS1505における、アクティブエッジリスト900のためのスキャンラインとベクタエッジの交点算出の詳細処理を説明するフローチャートである。
まず、ステップS1701で、RIP111は、アクティブエッジリスト900中の先頭に位置するエッジ情報のセットを読み込む。次に、RIP111は、ステップS1702にてベクタエッジアドレス901を読み込み、ステップS1703でそのベクタエッジアドレス901で参照されるベクタエッジ情報からエッジ判別子515を読み込む。
ステップS1704で、RIP111は、上記エッジ判別子がSエッジもしくはLエッジであるか否かを判断する。
SエッジもしくはLエッジである場合には、そのエッジは1200dpi品位でレンダリングするための処理を行う。RIP111は、ステップS1705にて、ベクタセグメントアドレス514にて参照されるベクタセグメントを読み込む。次に、RIP111は、ステップS1706にてベクタセグメントとスキャンラインY座標との交点x座標を求める。このとき、x座標の値は実数で算出し、アクティブエッジリスト900中のスキャンライン交点x座標値902を更新する。さらに、RIP111は、ステップS1707にて上記x座標値(実数)を整数に変換し、整数X座標903を更新する。整数への変換は、以下のように少数点以下を切り捨てることでおこなう。
X = floor(x)
SエッジでもLエッジでもない場合は、そのエッジは600dpi品位でレンダリングするための処理を行う。RIP111は、ステップS1708にて現在処理中のスキャンラインY座標値が偶数であるか奇数であるかを判断する。奇数だった場合、RIP111は、交点座標計算は実施せずステップS1712の処理に移る。偶数だった場合、RIP111は、ステップS1709にて、ベクタセグメントアドレス514にて参照されるベクタセグメントを読み込む。次に、RIP111は、ステップS1710にてベクタセグメントとスキャンラインY座標との交点x座標を求める。このとき、x座標の値は実数で算出し、アクティブエッジリスト900中のスキャンライン交点x座標値902を更新する。さらに、RIP111は、ステップS1711にて上記x座標値(実数)を整数に変換し、整数X座標903を更新する。整数への変換は、以下のようにより小さい偶数に丸めることで行う。
X = floor(x/2)×2
上記X座標値算出の後、RIP111は、ステップS1712にて、アクティブエッジリスト900中の次のエッジ情報のセットを読み込む。もし読み込んだ値がNULL値となっている場合は、RIP111は、ステップS1713にて次のエッジが存在しないと判断し、処理を終了してリターンする。次のエッジ情報が存在する場合は、RIP111は、ステップS1702の処理に戻る。
(スパンリスト生成S1508/S1608の手順例)
図21は、図19のステップS1508および後述の図23のステップS1608のアクティブエッジリスト900に基づくスパンリスト生成の詳細処理を説明するフローチャートである。なお、前述の図9の1120〜1140を参照されたい。
まず、RIP111は、ステップS1901で図15のアクティブエッジリスト900中の先頭に位置するエッジ情報のセットを読み込む。次に、RIP111は、ステップS1902にて、アクティブエッジリスト900からベクタエッジアドレス901と整数X座標903とを読み込む。ステップS1903で、RIP111は、スパンリスト1000に新規スパンためのエントリを追加し、スパン始点X座標値1001に対して、整数X座標値903を書き込む。ステップS1904ではベクタエッジアドレス901にて参照されるベクタエッジのエッジ判別子515とレベル番号516とを読み込む。
ステップS1905以降では、RIP111は、レベル情報を管理するワークメモリ領域に対する処理を行う。このワークメモリ領域を、レベルソートスタックと呼ぶ(図16及び、図9の1130参照)。レベルソートスタック800のひとつのエントリは、図16で前述したように、レベル番号801、エッジ判別子802、リムーブ(remove)フラグ803の3つの情報から構成される。
ステップS1905では、RIP111は、ステップS1904で読み込んだレベル番号と同一のレベル番号のエントリがレベルソートスタック800に存在するかを確認する。
同じレベル番号のエントリがない場合は、そのエッジは注目するスキャンライン中でのあるオブジェクトの左端位置であることを示す。RIP111は、ステップS1906にてレベルソートスタック800の新規エントリにレベル番号801とエッジ判別子802を書き込み、さらにリムーブフラグの値を0に初期化したうえで、レベルソートスタック800に"push"する。続いて、RIP111は、ステップS1907にて、レベルソートスタック800内をレベル番号の大きなエントリが上位に来るようにソート("sort")を行う。
ステップS1905の判断で同じレベル番号のエントリがある場合は、そのエッジは注目のスキャンライン中でのあるオブジェクトの右端位置であることを示す。RIP111は、ステップS1908にてレベルソートスタック800中の同一レベル番号のエントリに対して、リムーブフラグの値を1に変更する("remove")。
ステップS1909では、RIP111は、レベルソートスタック800の最上位のエントリのリムーブフラグの値を確認する。リムーブフラグの値が1の場合、RIP111は、ステップS1910にてレベルソートスタック800の最上位のエントリを"pop"し、ステップS1909に戻る。
リムーブフラグの値が0の場合、RIP111は、ステップS1911にてレベルソートスタック800の最上位エントリのレベル番号801とエッジ判別子802の値を、スパンリスト1000のエッジ判別子1002とレベル番号1003に書き込む。
RIP111は、ステップS1912にてアクティブエッジリスト900の次のエントリを読み込む。このエントリ内の情報がNULL値であった場合には、RIP111は、ステップS1913にてアクティブエッジリスト中の全エントリの処理が完了したと判断して、スパンリスト生成処理を終了してリターンする。NULL値以外の場合には、ステップS1902に戻り、次のエッジ処理を続ける。
(ページスプールバッファへの1ライン書込みS1509の手順例))
図22は、図19のステップS1509における、作成されたスパンリスト1000に基づくページスプールバッファ1301への1ライン書込みの詳細処理を説明するフローチャートである。
ステップS2001において、RIP111は、変数CurrentXの値を0に初期化する。ステップS2002で、RIP111は、スパンリスト1000の先頭エントリを読み込む。
ステップS2003にて、RIP111は、スパン始点X座標値1001を取得し、変数SpanLengthに対して、SpanLength=X−CurrentXの演算をおこない、SpanLengthを更新する。
ステップS2005にて、RIP111は、エッジ判別子1002がI(Image)であるか否かを確認する。Image以外である場合には、RIP111は、ステップS2006にてSpanLengthが0より大きな値であるかを確認する。
SpanLengthが1以上の場合はスパン中に描画すべき画素があることを示す。RIP111は、ステップS2007にてページスプールバッファ1301中の該当する座標の画素に対して、像域フラグをエッジ判別子1002の値で上書きする。さらに、RIP111は、ステップS2008にてレベル番号1003の値を用いてレベルリスト700内を検索する。RIP111は、ステップS2009で、レベル番号701が同一のフィルアドレス702で参照されるフィルテーブル430内のエントリから"r.g.b"の値を取得し、ページスプールバッファ1301中の画素の色値を上書きする。さらに、RIP111は、ステップS2010で右となりの画素の処理を行うため、SpanLength値をデクリメントする。
SpanLengthが0以下の場合は、スパン中のすべての画素の描画処理が完了したことを示し、RIP111は、ステップS2011にて変数CurrentXをスパン始点X座標値1001で上書きし、ステップS2020に移る。
ステップS2005の判断にて、エッジ判別子1002がImageだった場合は、RIP111は、ステップS2012にてSpanLengthが0より大きな値であるかを確認する。
SpanLengthが1以上の場合は、スパン中に描画すべき画素があることを示す。RIP111は、ステップS2013にてページスプールバッファ1301中の該当する座標の画素に対して、像域フラグをエッジ判別子1002の値で上書きする。さらに、RIP111は、ステップS2014にてレベル番号1003の値を用いてレベルリスト700内を検索する。RIP111は、ステップS2015でレベル番号701が同一のフィルアドレス702で参照されるフィルテーブル430内のエントリから、イメージ展開バッファ420のアドレスを取得する。ステップS2016で、RIP111は、現在のScanlineY座標値およびCurrentXの値をもちいて、イメージ展開バッファ420中の該当ソースイメージ画素を参照し、"r,g,b"の各値を取得する。次に、ステップS2017では、RIP111は、取得したr.g.b値とページスプールバッファ1301中の画素の色値を上書きする。さらに、RIP111は、ステップS2018で右となりの画素の処理を行うため、SpanLength値をデクリメントし、ステップS2019で変数CurrentXをインクリメントしたのち、ステップS2012に戻る。
ステップS2012で、SpanLengthが0以下の場合はスパン中のすべての画素の描画処理が完了したことを示し、RIP111は、ステップS2020の処理に移る。
ステップS2020で、RIP111は、スパンリスト1000の次のエントリを確認し、ステップS2021でエントリ内に有効な値がある場合には次のスパン描画が必要と判断し、ステップS2003に戻る。次のスパンがない場合、RIP111は、ステップS2022にて同一スキャンラインの残りの画素のr.g.b値を最大にして白埋めし、処理を終了してリターンする。
<RIP111による低解像度のレンダリングS1406の処理手順例>
図23は、図18のステップS1406におけるRIP111の解像度品位を低解像度のみにした描画の詳細処理の流れを示すフローチャートの一例である。
なお、図23の処理の図19との違いは、ステップS1605の交点算出処理、ステップS1609の1ライン描画処理、ステップS1610のY座標更新処理およびステップS1611のY座標比較処理である。これらの違いは、処理解像度品位の違いに起因している。
図19に示したステップS1405では、1200dpiもしくは600dpi品位での描画を実現するために、すべての画素位置に対して処理を実施している。これに対して、図23に示したステップS1406では、600dpi品位での描画のために、X座標およびY座標において偶数値をとる画素位置に対する処理のみを実施している点(X座標およびY座標に2を加算している点)がことなる。
すなわち、ステップS1610の処理では、スキャンラインY座標を2加算する。そして、ステップS1611の処理では、スキャンラインY座標値と変数NextYを比較する際に、Y座標値が変数NextYを越える場合があるので不等式を用いている。
また、ステップS1605の処理の詳細は図24にて後述し、ステップS1609の処理の詳細は図25にて後述するので、図23における他のステップの説明は重複を避けるために省略する。なお、ステップS1608のスパンリストの生成処理は、図21を参照して既に説明された。
(スキャンラインとベクタエッジの交点算出S1506の手順例)
図24は、図23のステップS1605での、解像度品位が低解像度のみの場合のスキャンラインとベクタエッジの交点算出の詳細処理を説明するフローチャートである。
図24の前述した図20との違いは、処理解像度品位の違いに起因している。図20では、1200dpiもしくは600dpi品位での描画を実現するために、SエッジおよびLエッジの処理の際に、すべての画素位置に対して処理を実施している。これに対して、図24では、600dpi品位での描画のために、X座標およびY座標において偶数値をとる画素位置に対する処理のみを実施している点がことなる。
すなわち、図24のステップS1801〜S1807は、図20のステップS1701−S1702,S1709−S1711,S1712−S1713の処理に相当する。従って、図24の各ステップの説明は、重複をさけるために省略する。
上記で説明した処理のうち、整数座標値への変換処理の概念を説明する図が、前述の図11および図12である。ここで再掲すると、図11は、図19および図20の処理の流れの中で、SエッジおよびLエッジに対して1画素単位で1200dpi品位を実現し、その他のエッジに対して複数画素単位で600dpi品位を実現する様子の概念を示す。一方、図12は、図23および図24の処理の流れの中で、SエッジもLエッジも含まないパケットDL処理において、複数画素単位で600dpi品位を実現する様子の概念を示している。
(ページスプールバッファへの1ライン書込みS1609の手順例))
図25は、図23のステップS1609での、解像度品位が低解像度のみの場合のページスプールバッファ1301への1ライン書込みの詳細処理を説明するフローチャートである。
図25の図22との違いは、ステップS2104およびステップS2119のみである。これらの違いは、処理解像度品位の違いに起因している。図22では、1200dpiもしくは600dpi品位での描画を実現するためにすべての画素位置に対して処理を実施している。これにに対して、図25では、600dpi品位での描画のために、X座標およびY座標において偶数値をとる画素位置に対する処理のみを実施している点(SpanLengthを半分にする点と、CurrentXに2加算する点)がことなる。
従って、重複をさけるために、他のステップの説明は省く。
なお、上記処理の相違点に基づく、図22のステップS2016および図25のステップS2116におけるImageの画素値取得処理について、その差異を模式的の示したのが、前述の図13および図14である。すなわち、図13では、1200dpi品位での描画を実現するためにすべての画素位置に対して1画素単位の処理を実施して高解像度を実現している。一方、図14では、600dpi品位での描画のために、X座標およびY座標において偶数値をとる画素位置に対する複数画素単位の処理のみを実施して、画素拡大処理をして低解像度を実現している。
<他の実施形態>
以上、実施形態のひとつについて詳述したが、本発明にかかる処理はRIPにより実行される構成に限定されず、他のプロセッサ、例えば図2のCPU101が実行しても構わない。更に、本実施形態では、本発明を画像処理装置としてデジタル複合機に適用した例に説明するが、かかる装置に限定されない。本発明は全体の画像の再現を分割した領域毎に行う技術に広く適用可能であり、例えば、画像の表示にも適用可能である。更に、ワープロ(ワードプロセッサ)系ソフトウェア、表計算系ソフトウェア、作図系ソフトウェア等にも幅広く応用可能である。これらも本発明に含まれる。
また、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。例えば、スキャナ、プリンタ、PC、複写機、複合機及びファクシミリ装置の如くである。
また、本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給することによっても達成される。そして、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行する。
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の1つである。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)などもある。
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネット/イントラネットのウェブサイトからダウンロードしてもよい。すなわち、該ウェブサイトから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよいのである。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるウェブサイトからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明の構成要件となる場合がある。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配付してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネット/イントラネットを介してウェブサイトから暗号化を解く鍵情報をダウンロードさせる。そして、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。
本実施形態におけるデジタル複合機を含むシステム構成の一例を示す図である。 本実施形態におけるデジタル複合機のコントロール部のハードウエア構成例を示すブロック図である。 本実施形態におけるコントロール部のソフトウェアにより実現される機能構成の一例を示すブロック図である。 本実施形態におけるディスプレイリストのデータ構成例を示す図である。 図4のディスプレイリスト中のパケットDLのデータ構成例を示す図である。 図4のディスプレイリスト中のベクタエッジセグメントのデータ構成例を示す図である。 図4のディスプレイリスト中のレベルリストのデータ構成例を示す図である。 本実施形態におけるパケットDLのレンダリング処理の全体の動作を模式的に説明する概要図である 本実施形態におけるスキャンラインのレンダリングを実行した場合の内部動作を模式的に説明する概要図である。 本実施形態におけるスキャンラインのレンダリングを実行した場合の内部動作を模式的に説明する概要図である。 高解像度と低解像度が混在した場合の描画処理の一部を模式的に示す図である。 低解像度のみの描画処理の一部を模式的に示す図である。 高解像度部分の描画処理の一部を模式的に示す図である。 低解像度部分の描画処理の一部を模式的に示す図である。 本実施形態におけるアクティブエッジリストのデータ構成例を示す図である。 本実施形態におけるレベルソートスタックのデータ構成例を示す図である。 本実施形態におけるスパンリストのエントリのデータ構成例を示す図である。 本実施形態におけるパケットDLのレンダリングの処理全体の流れの例を示すフローチャートである。 図18中のS1405の詳細処理の流れの例を示すフローチャートである。 図19中のS1505の詳細処理の流れの例を示すフローチャートである。 図19中のS1508および図23中のS1608の詳細処理の流れの例を示すフローチャートである。 図19中のS1509の詳細処理の流れの例を示すフローチャートである。 図18中のS1406の詳細処理の流れの例を示すフローチャートである。 図23中のS1605の詳細処理の流れの例を示すフローチャートである。 図23中のS1609の詳細処理の流れの例を示すフローチャートある。

Claims (9)

  1. 1ページの描画データを複数の領域に分割した描画データの集まりとして扱う描画制御手段と、
    前記描画制御手段の指示に従って、分割された領域の描画データをレンダリングするレンダリング手段とを有し、
    前記描画制御手段は、分割された領域内の描画オブジェクトに対応づけてレンダリングの解像度を決定するための、描画オブジェクトの種類を表わす情報を保持し、前記描画オブジェクトの種類を表わす情報に基づいて、分割された領域単位で、レンダリングする解像度を第1の解像度または前記第1の解像度よりも低い第2の解像度に決定し、
    前記レンダリング手段は、前記第1の解像度でのレンダリングが決定された領域においてレンダリングを行う際に、前記第1の解像度でのレンダリングを決定する条件となった小文字オブジェクトと細線オブジェクトとを含む特定の種類の描画オブジェクトに対しては描画のエッジの位置を1画素単位で決定して前記特定の種類の描画オブジェクトをレンダリングし、前記特定の種類の描画オブジェクト以外の描画オブジェクトに対しては描画のエッジの位置を複数画素単位で決定して前記特定の種類の描画オブジェクト以外の描画オブジェクトをレンダリングする、ことを特徴とする画像処理装置。
  2. 前記レンダリング手段は、前記第2の解像度でのレンダリングが決定された領域において描画オブジェクトの種類がイメージオブジェクトである描画オブジェクトをレンダリングする際に、前記イメージオブジェクトである描画オブジェクトに対応する画像データから複数画素ごとに画素値を取得することによりレンダリングを行うことを特徴とする請求項に記載の画像処理装置。
  3. 前記レンダリング手段は、前記分割された領域ごとにレンダリング結果と前記レンダリングを行う解像度に関する情報を保持し、
    前記描画制御手段は、保持された前記レンダリング結果をページメモリに展開する際に、前記第1の解像度に関する情報が保持された領域はそのままの解像度で前記ページメモリに転送し、前記第2の解像度に関する情報が保持された領域は画素拡大処理をしながら前記ページメモリに転送を行うことを特徴とする請求項1又は2に記載の画像処理装置。
  4. 前記レンダリング手段は、前記分割された領域のスキャンラインごとにレンダリングを行うことを特徴とする請求項1乃至のいずれか1項に記載の画像処理装置。
  5. 1ページの描画データを複数の領域に分割した描画データの集まりとして扱う描画制御工程と、
    前記描画制御工程での指示に従って、分割された領域の描画データをレンダリングするレンダリング工程とを有し、
    前記描画制御工程では、分割された領域内の描画オブジェクトに対応づけてレンダリングの解像度を決定するための、描画オブジェクトの種類を表わす情報を保持し、前記描画オブジェクトの種類を表わす情報に基づいて、分割された領域単位で、レンダリングする解像度を第1の解像度または前記第1の解像度よりも低い第2の解像度に決定し、
    前記レンダリング工程では、前記第1の解像度でのレンダリングが決定された領域においてレンダリングを行う際に、前記第1の解像度でのレンダリングを決定する条件となった小文字オブジェクトと細線オブジェクトとを含む特定の種類の描画オブジェクトに対しては描画のエッジの位置を1画素単位で決定して前記特定の種類の描画オブジェクトをレンダリングし、前記特定の種類の描画オブジェクト以外の描画オブジェクトに対しては描画のエッジの位置を複数画素単位で決定して前記特定の種類の描画オブジェクト以外の描画オブジェクトをレンダリングする、ことを特徴とする画像処理装置の制御方法。
  6. 前記レンダリング工程では、前記第2の解像度でのレンダリングが決定された領域において描画オブジェクトの種類がイメージオブジェクトである描画オブジェクトをレンダリングする際に、前記イメージオブジェクトである描画オブジェクトに対応する画像データから複数画素ごとに画素値を取得することによりレンダリングを行うことを特徴とする請求項に記載の画像処理装置の制御方法。
  7. 前記レンダリング工程では、前記分割された領域ごとにレンダリング結果と前記レンダリングを行う解像度に関する情報を保持し、
    前記描画制御工程では、保持された前記レンダリング結果をページメモリに展開する際に、前記第1の解像度に関する情報が保持された領域はそのままの解像度で前記ページメモリに転送し、前記第2の解像度に関する情報が保持された領域は画素拡大処理をしながら前記ページメモリに転送を行うことを特徴とする請求項5又は6に記載の画像処理装置の制御方法。
  8. 前記レンダリング工程は、前記分割された領域のスキャンラインごとにレンダリングを行うことを特徴とする請求項5乃至7のいずれか1項に記載の画像処理装置の制御方法。
  9. 請求項5乃至8のいずれか1項に記載の画像処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
JP2008128794A 2008-05-15 2008-05-15 画像処理方法及び画像処理装置とその制御方法 Expired - Fee Related JP5199727B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008128794A JP5199727B2 (ja) 2008-05-15 2008-05-15 画像処理方法及び画像処理装置とその制御方法
US12/437,230 US8339664B2 (en) 2008-05-15 2009-05-07 Image processing method, image processing apparatus, and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008128794A JP5199727B2 (ja) 2008-05-15 2008-05-15 画像処理方法及び画像処理装置とその制御方法

Publications (2)

Publication Number Publication Date
JP2009274366A JP2009274366A (ja) 2009-11-26
JP5199727B2 true JP5199727B2 (ja) 2013-05-15

Family

ID=41315863

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008128794A Expired - Fee Related JP5199727B2 (ja) 2008-05-15 2008-05-15 画像処理方法及び画像処理装置とその制御方法

Country Status (2)

Country Link
US (1) US8339664B2 (ja)
JP (1) JP5199727B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5299253B2 (ja) * 2009-12-10 2013-09-25 コニカミノルタ株式会社 画像処理装置および画像処理方法
JP5482238B2 (ja) * 2010-01-29 2014-05-07 コニカミノルタ株式会社 画像処理装置、画像形成装置、画像処理方法、画像形成方法及びプログラム
JP5571977B2 (ja) * 2010-03-01 2014-08-13 キヤノン株式会社 画像処理装置
JP2011244031A (ja) * 2010-05-14 2011-12-01 Fujifilm Corp 画像データ伸張装置および画像データ圧縮装置,ならびにそれらの動作制御方法
JP5629506B2 (ja) * 2010-06-28 2014-11-19 キヤノン株式会社 印刷装置における版ずれ補正方法及び装置
BR112013031472B1 (pt) 2011-06-08 2021-05-18 Hewlett-Packard Development Company, L.P. método de gerenciamento de fluxo de dados para um dispositivo de impressão e sistema para aumentar o fluxo de dados para um dispositivo de impressão
JP2014002591A (ja) * 2012-06-19 2014-01-09 Canon Inc 画像処理装置、画像処理方法、コンピュータプログラム
JP6029344B2 (ja) * 2012-06-20 2016-11-24 キヤノン株式会社 画像処理装置、画像処理方法、プログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3015133B2 (ja) * 1991-04-23 2000-03-06 キヤノン株式会社 印刷制御装置及び方法
JPH1044526A (ja) * 1996-07-31 1998-02-17 Canon Inc プリンタドライバおよびプリンタドライバの描画処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JPH10105348A (ja) * 1996-09-26 1998-04-24 Canon Inc プリンタ制御装置およびプリンタ制御方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JPH10202960A (ja) 1997-01-27 1998-08-04 Canon Inc 印刷装置
JPH10264454A (ja) * 1997-03-24 1998-10-06 Canon Inc 出力装置及び方法
JPH1166327A (ja) 1997-06-12 1999-03-09 Canon Inc 画像処理方法および画像処理装置および記録媒体
US6040917A (en) * 1997-10-27 2000-03-21 Hewlett-Packard Company Memory partitioning for multi-resolution pauseless page printing
JPH11191055A (ja) * 1997-12-26 1999-07-13 Canon Inc 印刷システムおよび印刷システムのデータ処理方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体
JP4365950B2 (ja) 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US6828985B1 (en) 1998-09-11 2004-12-07 Canon Kabushiki Kaisha Fast rendering techniques for rasterised graphic object based images
US6738517B2 (en) * 2000-12-19 2004-05-18 Xerox Corporation Document image segmentation using loose gray scale template matching
US8045215B2 (en) * 2002-10-18 2011-10-25 Hewlett-Packard Development Company, L.P. Printer object list resolutions
US7236268B2 (en) * 2003-07-30 2007-06-26 Texas Instruments Incorporated Adaptive screening in raster image processing of complex pages
JP2005305873A (ja) * 2004-04-22 2005-11-04 Ricoh Co Ltd 画像処理装置および画像処理方法、並びに画像処理方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2006103045A (ja) * 2004-10-01 2006-04-20 Seiko Epson Corp 画像形成装置
JP2006159436A (ja) * 2004-12-02 2006-06-22 Canon Inc 画像形成装置および画像形成方法
US7817307B2 (en) * 2005-01-06 2010-10-19 Zenographics, Inc. Digital image processing without rasterization
US7880750B2 (en) * 2005-01-06 2011-02-01 Zenographics, Inc. Digital image processing with inherent compression
JP2006341386A (ja) * 2005-06-07 2006-12-21 Ricoh Co Ltd 画像処理装置、画像処理方法、その方法をコンピュータに実行させるプログラム、およびそのプログラムを格納する記録媒体
JP4155322B2 (ja) * 2006-09-25 2008-09-24 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置、画像処理方法、および画像処理プログラム
JP5482238B2 (ja) * 2010-01-29 2014-05-07 コニカミノルタ株式会社 画像処理装置、画像形成装置、画像処理方法、画像形成方法及びプログラム

Also Published As

Publication number Publication date
US8339664B2 (en) 2012-12-25
JP2009274366A (ja) 2009-11-26
US20090284771A1 (en) 2009-11-19

Similar Documents

Publication Publication Date Title
JP5199727B2 (ja) 画像処理方法及び画像処理装置とその制御方法
JP4995057B2 (ja) 描画装置、印刷装置、描画方法、及びプログラム
JP4408836B2 (ja) 画像処理装置及びその制御方法、プログラム
US7864199B2 (en) Image processing apparatus and control method thereof
US7680358B2 (en) Image processing apparatus and control method thereof, and program
US20070086050A1 (en) Information processing apparatus, image processing method, and machine-readable medium
JP2010040048A (ja) ドキュメントを選択的に編集するシステムおよび方法
US6985249B2 (en) Variable data printing with optimized cache
JP2009118340A (ja) 画像処理装置、画像処理方法、プログラム、および記憶媒体
JP2007226465A (ja) 画像出力システム、及び、画像出力方法
JP5732935B2 (ja) 情報処理装置と印刷制御プログラムとコンピュータ読み取り可能な記録媒体
JP2008269325A (ja) 印刷装置及び印刷システム
US20050057766A1 (en) Method and apparatus for viewing on a client data representing a document to be printed
JP2006155308A (ja) 画像形成装置
JP2006263969A (ja) 画像処理装置及び印刷ジョブ生成装置ならびに画像処理システム
JP5038272B2 (ja) 画像処理装置、画像処理方法およびプログラム
JP4475680B2 (ja) 画像処理装置及びその制御方法、プログラム
JP2008148263A (ja) 画像形成装置及びその制御方法
JP2007073005A (ja) ページ記述言語データ解釈装置
JP3133848B2 (ja) 画像処理装置及び画像処理システム
JP2006331308A (ja) 画像処理装置及びその制御方法、プログラム
JP2011083914A (ja) 画像形成装置、その制御方法及び制御プログラム
JP2007142986A (ja) 画像処理装置及び画像処理方法
JP3236053B2 (ja) 画像処理システム及び画像処理方法
JP2006155307A (ja) 負荷分散処理を行う画像処理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110511

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130208

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5199727

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees