JP6643056B2 - 画像処理装置、画像処理方法、データ生成方法及びプログラム - Google Patents

画像処理装置、画像処理方法、データ生成方法及びプログラム Download PDF

Info

Publication number
JP6643056B2
JP6643056B2 JP2015226939A JP2015226939A JP6643056B2 JP 6643056 B2 JP6643056 B2 JP 6643056B2 JP 2015226939 A JP2015226939 A JP 2015226939A JP 2015226939 A JP2015226939 A JP 2015226939A JP 6643056 B2 JP6643056 B2 JP 6643056B2
Authority
JP
Japan
Prior art keywords
data
block
band
processing
image
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.)
Active
Application number
JP2015226939A
Other languages
English (en)
Other versions
JP2017094543A5 (ja
JP2017094543A (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 JP2015226939A priority Critical patent/JP6643056B2/ja
Priority to US15/354,648 priority patent/US10185902B2/en
Publication of JP2017094543A publication Critical patent/JP2017094543A/ja
Priority to US16/216,524 priority patent/US10832104B2/en
Publication of JP2017094543A5 publication Critical patent/JP2017094543A5/ja
Application granted granted Critical
Publication of JP6643056B2 publication Critical patent/JP6643056B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1822Analysing the received data before processing
    • G06K15/1823Analysing the received data before processing for evaluating the resources needed, e.g. rasterizing time, ink, paper stock
    • 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/1801Input data handling means
    • G06K15/181Receiving print data characterized by its formatting, e.g. particular page description languages
    • G06K15/1811Receiving print data characterized by its formatting, e.g. particular page description languages including high level document description only
    • G06K15/1813Page description language recognition
    • 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/1801Input data handling means
    • G06K15/1817Buffers
    • 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/1856Generation of the printable image characterized by its workflow
    • G06K15/1861Generation of the printable image characterized by its workflow taking account of a limited available memory space or rasterization time
    • G06K15/1863Generation of the printable image characterized by its workflow taking account of a limited available memory space or rasterization time by rasterizing in sub-page segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00204Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00281Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a telecommunication apparatus, e.g. a switched network of teleprinters for the distribution of text-based information, a selective call terminal
    • H04N1/00307Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a telecommunication apparatus, e.g. a switched network of teleprinters for the distribution of text-based information, a selective call terminal with a mobile telephone apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00344Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a management, maintenance, service or repair apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Record Information Processing For Printing (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Generation (AREA)

Description

本発明は、画像処理装置、画像処理方法及びプログラムに関する。特に、ページ画像データを、ライン順からブロック順に変換する技術に関する。
画像形成処理時、画像データをブロックごとの画像データに変換し、以降の画像処理をブロック単位で並列に行うことで、高速に印刷を行う技術がある。画像データをブロックごとの画像データに変換する処理をブロック順変換処理と呼ぶ。ブロック順変換処理は、ページライン順にワークバッファに入力され、所定のブロック高さ分バッファされた画像データを、複数のブロックごとの画像データに分割して、ブロック順に出力する処理である。このようにブロック順変換処理では、画像データをワークバッファに一時的にバッファする必要があり、所定のバッファサイズが必要となる。
特許文献1には、画像データをレンダリング後のラスタ形式ではなく、レンダリング前のベクタ形式で、ワークバッファに格納する技術が開示されている。
特開2009−269355号公報
しかし、特許文献1に記載されたベクタ形式のブロック順変換処理を、大量の描画オブジェクトが存在するページ画像データに対して適用した場合、必要とするワークバッファのメモリサイズが飛躍的に増大してしまうことがある。
従って、本発明は、ページ画像データの内容に依存せずに、より小さいバッファメモリサイズでブロック順変換処理を実現する画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
本発明による画像処理装置は、入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置であって、画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出手段と、導出結果に基づいて、変換処理の実行のタイミングを決定する決定手段と、決定手段で決定されたタイミングで変換処理を実行する変換手段とを備え、前記導出手段は、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出することを特徴とする。
本発明によれば、ブロック順変換処理において、ページ画像データの内容に依存せずに、より小さいバッファメモリサイズでブロック順変換処理を実現することができる。
本発明の第1の実施例における、システム及び画像処理装置の構成の一例を示すブロック図である。 本発明の第1の実施例における画像処理装置のソフトウェア構成の一例を示すブロック図である。 本発明の第1の実施例における画像処理装置の処理を示すフローチャートである。 本発明の第1の実施例における中間データ生成処理を示すフローチャートである。 本発明の第1の実施例におけるレンダリング処理を示すフローチャートである。 本発明の第1の実施例におけるレンダリング処理で生成される閉領域データを説明するための説明図である。 本発明の第1の実施例におけるブロック順変換方法テーブルの一例を示す説明図である。 ページデータをライン順からブロック順に変換する様子を示す説明図である。 本発明の第1の実施例における、ライン順のベクタデータを説明するための説明図である。 本発明の第1の実施例における、ブロック順のベクタデータを説明するための説明図である。 本発明の第1の実施例における、ライン順のベクタデータを説明するための説明図である。 本発明の第1の実施例における、ブロック順のベクタデータを説明するための説明図である。 本発明の第1の実施例における、ライン順およびブロック順のラスタデータを説明するための説明図である。 本発明の第1の実施例におけるエッジ情報解析処理を示すフローチャートである。 本発明の第1の実施例におけるエッジ情報解析テーブルを示す説明図である。 本発明の第1の実施例における、閉領域数及び閉領域内のオブジェクト数を算出する処理を説明するための説明図である。 本発明の第1の実施例における、ブロック順変換方法選択処理を示すフローチャートである。 本発明の第1の実施例における、ベクタ方式のブロック順変換処理におけるメモリサイズ算出処理を示すフローチャートである。 本発明の第2の実施例における、画像処理装置の画像形成処理を示すフローチャートである。 本発明の第2の実施例における、レンダリング処理を示すフローチャートである。 本発明の第2の実施例における、エッジ情報解析処理を示すフローチャートである。 本発明の第2の実施例における、ブロック順変換方法選択処理を示すフローチャートである。
以下、本発明を実施するための形態について図面を用いて説明する。
[実施例1]
図1は、本実施例における、システム及び画像処理装置の構成の一例を示すブロック図である。図1(A)に示すシステムは、ホストコンピュータ101と、モバイル端末102と、プリンタサーバ103と、画像処理装置110とを備える。ホストコンピュータ101、モバイル端末102、プリンタサーバ103及び画像処理装置110は、LAN105を介して接続される。
ホストコンピュータ101、モバイル端末102及びプリンタサーバ103は、ユーザ操作に基づいて、印刷するページ情報を示すページ画像データである、PDL(Page Description Language)データを生成し、画像処理装置110に送信する。画像処理装置110は、受信したPDLデータに基づき、印刷処理を行う。画像処理装置110は、MFP(Multi Function Printer)、SFP(Single Function Printer)のうち、いずれのプリンタであってもよい。また、画像処理装置110は、MFP、SFP以外のプリンタであってもよい。
図1(B)を用いて、本実施形態の画像処理装置110のハードウェア構成を説明する。図1(B)に示すように、画像処理装置110は、プリンタ部111と、操作部113と、CPU220と、ROM221と、RAM222と、記憶装置223と、操作部I/F225と、ネットワークI/F226と、イメージバスI/F228と、RIP(ラスタイメージプロセッサ)231と、デバイスI/F232とを含む。
CPU220、ROM221、RAM222、記憶装置223、操作部I/F225、ネットワークI/F226及びイメージバスI/F228は、システムバス227を介して接続される。また、イメージバスI/F228、RIP231及びデバイスI/F232は、画像バス230を介して接続される。また、システムバス227と画像バス230とは、イメージバスI/F228を介して接続される。
プリンタ部111は、画像出力デバイスである。また、画像処理装置110は、LAN105と接続することで、PDLデータやデバイス情報をLAN105経由で入出力するための制御を行う。プリンタ部111は、画像処理装置110で生成された画像データをデバイスI/F232を介して入力し、入力した画像データを紙などの記録媒体に出力する。
CPU220は、画像処理装置110全体を制御するための中央処理部である。
ROM221は、ブートROMであり、システムのブートプログラムが格納されている。
RAM222は、CPU220が動作するためのシステムワークメモリである。また、RAM222は、外部装置から送信されたPDLデータや、印刷処理時に画像処理装置110内で生成される中間データや、入力した画像データを一時記憶する。また、RAM222は、レンダリング処理を行う際の作業領域であるワーク領域として機能する。
記憶装置223は、例えばハードディスクドライブである。記憶装置223は、各種処理のためのシステムソフトウェア、及び外部装置から送信されるPDLデータを格納する。
操作部I/F225は、各種メニューや印刷データ情報等を表示可能な表示画面を有する操作部113とシステムバス227とを接続するためのインタフェースである。操作部I/F225は、操作部113に対して操作画面データを出力する。また、操作部I/F225は、操作者が操作部113に対して入力した情報をCPU220に転送する。
ネットワークI/F226は、図1に示すLAN105と接続される。ネットワークI/F226は、LAN105を介して外部装置との間で情報の入出力を行う。
イメージバスI/F228は、システムバス227と、画像データを高速で転送する画像バス230とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。
RIP231は、PDLデータや中間データ(ディスプレイリスト)を解析しイメージに展開する。
デバイスI/F232は、プリンタ部111と画像バス230とを接続するためのインタフェースである。デバイスI/F232は、画像データの同期系/非同期系の変換を行う。
<画像処理装置のソフトウェア構成>
図2は、本実施例における画像処理装置110のソフトウェア構成を示すブロック図である。図2に示すように、画像処理装置110は、PDLデータ処理部201と、中間データ生成部202と、画像形成処理部203と、ブロック順変換方法選択部204と、ベクタ方式ブロック順変換部205と、ラスタ方式ブロック順変換部206と、ブロック順変換メモリ210とを含む。
PDLデータ処理部201は、ホストコンピュータ101等の外部装置から受信したPDLデータから、ページ情報及びページ情報に含まれるオブジェクト情報を取得する。PDLデータ処理部201は、取得した情報を、中間データ生成部202に渡す。
中間データ生成部202は、PDLデータ処理部201から受け取ったページ情報及びオブジェクト情報に基づき、中間データを生成する。
ブロック順変換方法選択部204は、データのブロック順変換処理を、ベクタ方式で行うかラスタ方式で行うかを選択する。ブロック順変換方法選択部204は、中間データ生成部202が生成する中間データに基づいて、ベクタ方式またはラスタ方式のどちらのブロック順変換方法が、少ないメモリでブロック順変換を行えるかを判断する。すなわち、ブロック順変換方法選択部204は、レンダリングの前と後のいずれのタイミングでブロック順変換を行った方が、当該変換に要するメモリサイズが小さくなるかを判断する。
ブロック順変換方法選択部204は、判断結果に基づき、ブロック順変換方法を選択する。ブロック順変換方法選択部204は、選択したブロック順変換方法を画像形成処理部203に通知する。ブロック順変換方法の選択処理の詳細については、後述する。
画像形成処理部203は、中間データ生成部202から受け取った中間データをから、ビットマップ画像データ(ラスタデータ)の生成処理(以降、画像形成処理と呼ぶ)を行う。また、画像形成処理部203は、ブロック順のラスタデータを生成するため、ブロック順変換方法選択部204が選択したブロック順変換方法に基づき、データをブロック順のデータに変換する。画像形成処理部203は、データのブロック順変換処理を行う際、ベクタ方式ブロック順変換部205、またはラスタ方式ブロック順変換部206に、データをブロック順のデータに変換させる処理を実行させる。
ブロック順変換方法としてベクタ方式が選択された場合は、画像形成処理部203は、ブロック順変換メモリ210に、画像形成処理部203が内部で利用するベクタデータを格納する。ベクタ方式ブロック順変換部205は、ブロック順変換メモリ210に格納されたベクタデータを、ブロック順のベクタデータに変換し、ブロック順に変換したベクタデータを画像形成処理部203に渡す。画像形成処理部203は、受け取ったブロック順のベクタデータをレンダリングして、ラスタデータを生成する。これにより、ブロック順のラスタデータが生成される。画像形成処理部203は、生成したブロック順のラスタデータに対して画像処理(回転処理等)を施して、最終的なビットマップ画像データを生成し出力する。ベクタ方式ブロック順変換部205における処理の詳細については、後述する。
また、ブロック順変換方法としてラスタ方式が選択された場合は、画像形成処理部203は、中間データをレンダリングして得られたラスタデータを、ブロック順変換メモリ210に格納する。ラスタ方式ブロック順変換部206は、ブロック順変換メモリ210に格納されたラスタデータを、ブロック順のラスタデータに変換し、画像形成処理部203に渡す。画像形成処理部203は、受け取ったブロック順のラスタデータに対して画像処理(回転処理等)を施して、最終的なビットマップ画像データを生成し出力する。ラスタ方式ブロック順変換部206における処理の詳細については、後述する。
<画像処理装置におけるPDLの印刷処理>
図3は、本実施例における画像処理装置110の画像形成処理を示すフローチャートである。図3には、画像処理装置110における、PDLデータに対する印刷処理の一連の流れが示されている。図3に示す処理は、CPU220によって実行される。具体的には、CPU220が、図3に示す処理を実行するためのプログラムをROM221からRAM222へロードし、実行することにより、図3に示す処理が実行される。なお、画像処理装置110のCPU220、ROM221及びRAM222ではなく、外部装置(例えばプリンタサーバ103)のCPU、ROM及びRAMが、図3に示す処理を実行する構成であっても構わない。
まず、ホストコンピュータ101、モバイル端末102またはプリンタサーバ103から画像処理装置110にPDLデータが送信される。すると、画像処理装置110のCPU220は、受信したPDLデータを、記憶装置223に格納する。
次に、CPU220は、記憶装置223に格納されたPDLデータを取得し、取得したPDLデータの解析処理を行う(ステップS301)。
次に、CPU220は、解析したPDLデータの情報に基づいて、ビットマップ画像データを生成するために必要な中間データの生成処理を行う(ステップS302)。ステップS302の処理では、公知の技術による中間データ生成処理に加えて、本発明の特徴である、エッジ情報解析処理及びブロック順変換方法選択処理の二つの処理が行われる。
次に、CPU220は、生成した中間データと、ブロック順変換方法選択処理による選択結果とに基づいて、ブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像データを生成する(ステップS303)。なお、生成されたビットマップ画像データは、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データには、ブロック単位で後段の画像処理が施される。
<中間データ生成処理の詳細>
図4は、本実施例における、中間データ生成処理を示すフローチャートである。本実施例における中間データ生成処理には、上述のとおり、本発明の特徴であるエッジ情報解析処理及びブロック順変換方法選択処理が含まれる。
まず、CPU220は、ステップS301のPDL解析処理で抽出した、PDLデータに含まれる描画オブジェクトを取得する(ステップS401)。
次に、CPU220は、ステップS401で取得した描画オブジェクトを、所定の中間データフォーマットに変換する(ステップS402)。
次に、CPU220は、取得した描画オブジェクトの輪郭(エッジ)を示す情報であるエッジ情報の解析処理を行う(ステップS403)。このとき、CPU220は、ステップS303のレンダリング処理でブロック順変換方法を選択する際に必要となる情報を、描画オブジェクトのエッジ情報から抽出する。ステップS403の処理の詳細については、後述する。
次に、CPU220は、PDLデータに含まれる描画オブジェクト、すなわちページ内の全ての描画オブジェクトに対する処理が終了したか否かを判断する(ステップS404)。終了していなかった場合は、CPU220は、ステップS401の処理に戻り、終了していた場合は、ステップS405の処理に進む。
次に、CPU220は、ステップS403でエッジ情報から抽出した情報に基づいて、ブロック順変換方法を選択する(ステップS405)。ステップS405の処理において、CPU220は、ベクタ方式及びラスタ方式のどちらの方式でブロック順変換を行った方が、メモリの消費量が少ないかを判断し、ブロック順変換方法をいずれかの方式に決定する。そして、CPU220は、後述するブロック順変換方法テーブルに、決定したブロック順変換方法を示す情報を格納する。ブロック順変換方法選択処理の詳細については、後述する。
<レンダリング処理の詳細>
図5は、本実施例におけるレンダリング処理(ステップS303の処理)を示すフローチャートである。本実施例におけるレンダリング処理には、本発明の特徴であるブロック順変換処理が含まれる。図6は、本実施例におけるレンダリング処理で生成される、閉領域データを説明するための説明図である。
まず、CPU220は、ステップS302で生成した中間データに基づいて、レンダリング処理で扱うベクタデータである閉領域データの生成処理を行う(ステップS501)。
図6を用いて、ベクタデータである閉領域データを説明する。ここでは、重なり合う3つの描画オブジェクト(図6(A)に示すオブジェクト601〜603)を含むページ(図6(B),(C)に示すページ610,611)を例に説明する。
図6(B)には、透過指定がされていないオブジェクト601〜603を含むページ610と、ページ610内のライン612と、ライン612のベクタデータとが模式的に示されている。図6(C)には、透過指定がされたオブジェクト601〜603を含むページ611と、ページ611内のライン613と、ライン613のベクタデータとが模式的に示されている。
ラインのベクタデータは、ラインの開始を示す情報(以下、ライン開始データという)と、閉領域と呼ばれるオブジェクトの輪郭で区切られた領域を示す情報(以下、閉領域データという)とを含む。図6(B)に示すように、ライン612は、輪郭で区切られた7つの領域(閉領域621〜627)から構成される。従って、ライン612のベクタデータは、閉領域621〜627に対応する7つの閉領域データを含む。同様に、図6(C)に示すように、ライン613は、輪郭で区切られた7つの領域(閉領域631〜637)から構成される。従って、ライン613のベクタデータは、閉領域631〜637に対応する7つの閉領域データを含む。
以下、オブジェクト601〜603をオブジェクト#1〜#3と記す場合がある。また、ライン612,613をライン#1,#2と記す場合がある。また、閉領域621〜627を、閉領域#1〜#7と記す場合がある。また、閉領域631〜637を、閉領域#11〜#17と記す場合がある。
図6(D)には、ベクタデータに含まれる閉領域データの構成の一例が示されている。図6(D)に示す閉領域データは、閉領域622,633(閉領域#2,#13)に対応する閉領域データの一例である。図6(D)に示すように、閉領域データは、閉領域の幅(長さ)を示す長さ情報と、閉領域内に含まれるオブジェクトの数を示すオブジェクト個数情報(以下、単にオブジェクト個数という)とを含む。閉領域データには、閉領域内に含まれる各オブジェクトの情報(オブジェクトデータ)が付随する。オブジェクトデータは、オブジェクトの属性や色などを示す情報である。
CPU220は、ステップS501では、所定の高さのバンド、すなわち所定数のラインを含むバンドについて、閉領域データの生成処理を行う。
次に、CPU220は、ステップS405の処理において生成されるブロック順変換方法テーブルに従って、処理中のバンド(以下、処理バンドという)に対応するブロック順変換方法がベクタ方式であるか否かを、判断する(ステップS502)。図7は、本実施例におけるブロック順変換方法テーブルの一例を示す説明図である。ブロック順変換方法テーブルは、ページ内の各バンドに対応する、ブロック順変換方法を示すテーブルである。図7に示すYは、副走査方向における、ページ先頭からのピクセル数を示す。例えば、バンド領域#2は、副走査方向における、ページ先頭からのピクセル数が、32〜63の位置にある領域(バンド)である。
ブロック順変換方法がベクタ方式でなかった場合は(ステップS502のNO)、CPU220は、ステップS504の処理に移行する。
ブロック順変換方法がベクタ方式であった場合は(ステップS502のYES)、CPU220は、ステップS501の処理で生成した、処理バンドに対応するベクタデータを、一旦ブロック順変換メモリ210に格納する。そして、CPU220は、ブロック順変換メモリ210に格納されたベクタデータをブロック順に変換する(ステップS503)。図8は、ベクタデータをライン順からブロック順に変換する様子を示す説明図である。図8の左図には、ライン順のベクタデータが示されている。図8の右図には、ブロック順のベクタデータが示されている。CPU220は、中間データからベクタデータを生成するとき、処理バンド800に対して、ライン単位で左(図8における左)から右(図8における右)に順番に、閉領域データを生成する。これにより、ライン順のベクタデータが生成される。ステップS503の処理では、CPU220は、ライン順のベクタデータをブロック単位に分割することで、ベクタデータをライン順からブロック順に変換する。本実施例では、処理バンド800を、ブロック806及びブロック807の2つのブロックに分割する。
ここで、図9及び図10を用いて、図6(B)に示すページ610のベクタデータをライン順からブロック順に変換する処理を説明する。図9は、本実施例におけるライン順のベクタデータを説明するための説明図である。図10は、本実施例におけるブロック順のベクタデータを説明するための説明図である。図9及び図10には、ページ610の処理バンド801に対応するベクタデータが、2つのブロック(ブロック808及びブロック809)に分割される様子が示されている。
ステップS503の処理において、まず、CPU220は、処理バンド801に対してライン順に閉領域データを生成する。それにより、図9(B)に示すようなライン順のベクタデータが生成される。CPU220は、生成したベクタデータをブロック順変換メモリ210に格納する。次いで、CPU220は、ブロック順変換メモリ210に格納された、処理バンド801に対応する、ライン順のベクタデータを読み出す。その際、CPU220は、ライン順のベクタデータを、ブロック順に読み出す。それにより、図10(B)に示すように、閉領域データの並びがブロック順に変換される。
またここで、図11及び図12を用いて、図6(C)に示すページ611のベクタデータをライン順からブロック順に変換する処理を説明する。図11は、本実施例におけるライン順のベクタデータを説明するための説明図である。図12は、本実施例におけるブロック順のベクタデータを説明するための説明図である。図11および図12には、ページ611の処理バンド802におけるベクタデータが、2つのブロック(ブロック816及びブロック817)に分割される様子が示されている。
まず、CPU220は、処理バンド802に対してライン順に閉領域データを生成する。それにより、図12(B)に示すようなライン順のベクタデータが生成される。CPU220は、生成したベクタデータをブロック順変換メモリ210に格納する。次いで、CPU220は、ブロック順変換メモリ210に格納された、処理バンド802に対応する、ライン順のベクタデータを読み出す。その際、CPU220は、ライン順のベクタデータを、ブロック順に読み出す。これにより、図12(B)に示すように、閉領域データの並びがブロック順に変換される。
次に、CPU220は、ベクタデータを元に、レンダリングを実行し、ラスタデータを生成する(ステップS504)。ラスタデータは、ページ内の各ピクセルのCMYKデータ(以下、単にCMYKともいう)を含む情報である。なお、ブロック順変換方法がベクタ方式である場合には、ステップS503の処理においてベクタデータがブロック順に変換されるので、ステップS504の処理で生成されるラスタデータもブロック順に生成される。また、ブロック順変換方法がラスタ方式である場合には、ステップS503の処理は実行されないので、ステップS504の処理で生成されるラスタデータは、ライン順に生成される。また、ラスタデータは、CMYK以外のピクセルデータを含んでいてもよい。
次に、CPU220は、ブロック順変換方法テーブルを参照して、処理バンドに対応するブロック順変換方法がラスタ方式であるか否かを、判断する処理を行う(ステップS505)。
ブロック順変換方法がラスタ方式でなかった場合は(ステップS505のNO)、CPU220は、ステップS507の処理に移行する。
ブロック順変換方法がラスタ方式であった場合は(ステップS505のYES)、CPU220は、ステップS504の処理でライン順に生成されたラスタデータを、ブロック順に変換する(ステップS506)。このとき、まず、CPU220は、ステップS504の処理で生成した、処理バンドに対応するラスタデータを、一旦ブロック順変換メモリ210に格納する。そして、CPU220は、図8に示されるベクタデータのブロック順変換と同様に、ブロック順変換メモリ210に格納されたラスタデータをライン順からブロック順に変換する。
ここで、図13を用いて、図6(B)に示すページ610のラスタデータをライン順からブロック順に変換する処理を説明する。図13は、本実施例における、ライン順およびブロック順のラスタデータを説明するための説明図である。図13には、ページ610の処理バンド801に対応するラスタデータが、2つのブロック(ブロック808及びブロック809)に分割される様子が示されている。
上述したように、ブロック順変換方法がラスタ方式である場合には、ステップS504の処理において、ラスタデータがライン順に生成される。図13(A)の右図には、ライン順に生成された、処理バンド801に対応するラスタデータが示されている。ステップS506の処理において、まず、CPU220は、ステップS504の処理で生成したラスタデータをブロック順変換メモリ210に格納する。次いで、CPU220は、ブロック順変換メモリ210に格納された、処理バンド801に対応する、ライン順のラスタデータを読み出す。その際、CPU220は、ライン順のラスタデータを、ブロック順に読み出す。それにより、図13(B)の右図に示すように、CMYKの並びがブロック順に変換される。また、ここでは透過指定がされていないオブジェクトを含むページ610を例にして説明したが、ステップS506の処理では、既にピクセル生成処理(ステップS504の処理)が実行されているので、透過指定の有無にかかわらず、ラスタデータのサイズは同じである。したがって、透過指定がされている場合についての説明を省略する。
次に、CPU220は、ページ画像データ内に含まれる全てのバンドについて、処理が終了したか否かを判断する(ステップS507)。CPU220は、終了していないと判断した場合には(ステップS507のNO)、ステップS501の処理に戻り、終了したと判断した場合には(ステップS507のYES)、処理を終了する。
<エッジ情報解析処理の詳細>
図14は、本実施例におけるエッジ情報解析処理(ステップS403の処理)を示すフローチャートである。エッジ情報解析処理では、CPU220は、レンダリング処理(ステップS303の処理)において、ブロック順変換方法を選択する際に必要となる情報を、描画オブジェクトのエッジ情報から抽出する。CPU220は、抽出した情報をエッジ情報解析テーブルに格納する。図15は、本実施例におけるエッジ情報解析テーブルを示す説明図である。エッジ情報解析テーブルは、図15に示すように、バンド領域ごとに、バンド領域に存在する描画オブジェクトのエッジの高さの累計と、当該バンド領域において透過指定がされた領域の面積(以下、透過指定面積という)の累計と、および、当該バンド領域に存在する描画オブジェクトのエッジを識別するための情報(以下、関連エッジIDという)とが格納されたテーブルである。エッジ情報解析テーブルは、例えばRAM222に格納される。
図16(A)〜(C)には、それぞれ、ページの一部(複数のラインを含む領域)を示す例が示されている。なお、図16において、各ライン(ライン#1〜#5)の高さ(図16における上下方向の幅)は1ピクセルである。図16(A)に示す領域では、透過指定がされていない、高さ3ピクセルのオブジェクト601〜603が重なり合っている。図16(A)に示す領域における、閉領域の数(以下、閉領域数ともいう)は、図16(A)の中央図に示すように、23個となる。一方、オブジェクト601〜603の高さは3ピクセルで、オブジェクトの輪郭を示すエッジの高さもそれぞれ3ピクセルである。したがって、エッジの高さの累計は、図16(A)の右図に示すように、23ピクセルとなる。このように、閉領域の数(23個)は、エッジの高さの累計(23ピクセル)と一致する特性がある。したがって、エッジの高さの累計を求めることで、閉領域の数を推測することができる。なお、ページ左端のエッジは閉領域を生み出すエッジであるので、本実施例では、エッジの累計にページ左端のエッジの高さも加算する。一方、ページ右端のエッジはページ範囲内の閉領域を生み出さないので、エッジの高さの累計には含めない。図16(A)の右図では、ページ左端のエッジおよびオブジェクトの開始を示すエッジに下向き矢印が付されている。また、オブジェクトの終了を示すエッジに上向き矢印が付されている。処理バンドに対応するベクタデータのサイズを見積もる際に、当該ベクタデータ内の閉領域の数が必要となる。そのため、本実施例では、エッジの高さを累積して、閉領域の数を算出する。
ここで、図14に示すエッジ情報解析処理の詳細を説明する。
まず、CPU220は、ステップS402の処理で生成した中間データから、描画オブジェクトのエッジの高さを算出する(ステップS1401)。そして、CPU220は、算出した値でエッジ情報解析テーブルを更新する。具体的には、CPU220は、算出した値を、当該描画オブジェクトが存在するバンド領域の、エッジの高さの累計に加算する。
次に、CPU220は、ステップS402で生成した中間データが、ビットマップ文字であるか否かを判断する(ステップS1402)。ビットマップ文字でなかった場合(ステップS1402のNO)、CPU220は、ステップS1404の処理に移行する。
ビットマップ文字であった場合(ステップS1402のYES)、CPU220は、ビットマップ文字の輪郭のエッジの高さを算出し、描画オブジェクトのエッジの高さの累計に加算する(ステップS1403)。描画オブジェクトがビットマップ文字である場合、ステップS402の処理では、ビットマップエッジの両端の輪郭(図16(B)の左図の中抜き矢印が付された部分)のみが中間データとして生成される。しかし、レンダリング処理では、文字の輪郭も抽出され、図16(B)の中央図に示すような、25個の閉領域に対してレンダリング処理が行われる。このように、描画オブジェクトがビットマップ文字である場合には、エッジの高さの累計(15ピクセル)に対して、閉領域の数が25個となり、閉領域の数が、エッジの高さの累計と一致しなくなる。つまり、描画オブジェクトがビットマップ文字である場合には、エッジの高さの単純な累計だけでは、閉領域の数を正確に求めることができない。そこで、本実施例では、描画オブジェクトがビットマップ文字である場合は、CPU220は、ビットマップ文字を解析することで、文字のエッジを抽出し、正確な閉領域の数を算出する。具体的には、CPU220は、各ラインにおける、ビットマップ文字と、他の描画オブジェクトまたは背景との境界を、当該ビットマップ文字のエッジであると判断し抽出する。図16(B)に示す例では、CPU220は、主走査方向において白と黒とが反転する領域(図16(B)の右図に示す中抜き矢印が付された部分)をエッジとして抽出する。CPU220は、抽出されたビットマップ文字のエッジの高さの累計(10ピクセル)を、描画オブジェクトのエッジの高さの累計に加算する。すると、閉領域の数(25個)とエッジの高さの合計値(15ピクセル+10ピクセル)とが等しくなり、正確な閉領域の数が算出される。なお、エッジの抽出処理には公知の技術を利用しても構わない。
次に、CPU220は、ステップS402の処理で生成した中間データに対応する描画オブジェクトに透過指定があるか否かを判断する(ステップS1404)。CPU220は、描画オブジェクトに透過指定がない場合(ステップS1404のNO)、ステップS1406の処理に移行する。
描画オブジェクトに透過指定がある場合(ステップS1404のYES)、CPU220は、ステップS402の処理で生成した、中間データのバウンディングボックスの面積を算出し、算出した値でエッジ情報解析テーブルを更新する。具体的には、CPU220は、描画オブジェクトが存在するバンド領域の、透過指定面積の累計に、算出した値を加算する(ステップS1405)。透過指定面積の累計については、後述する、ベクタ方式のブロック順変換処理におけるメモリサイズの算出処理に用いられる。そのため、本実施例では、このように透過指定面積の累計を算出する。
最後に、CPU220は、描画オブジェクトのエッジが跨るバンドと、当該エッジのIDとを対応付けて、エッジ情報解析テーブルに登録する(ステップS1406)。具体的には、CPU220は、当該エッジのIDを、当該エッジが跨るバンドの関連エッジIDにリンクリストとして登録する。関連エッジIDは、後述する、オブジェクト数の算出処理(ステップS1803の処理)で用いられる。
<ブロック順変換方法の選択処理の詳細>
図17は、本実施例におけるブロック順変換方法選択処理(ステップS405の処理)を示すフローチャートである。
まず、CPU220は、ブロック順変換方法としてラスタ方式を選択した際に必要となる、バンドメモリ(バンド1つ分のラスタデータのメモリサイズ)を算出する(ステップS1701)。ラスタデータは以下の式により一律に求められるため、ページの先頭でのみ処理を行う。
ラスタ方式のブロック順変換処理で必要なバンドメモリ=ページ幅×バンドの高さ(ブロックの高さ)×1チャンネル辺りの階調×1ピクセル辺りのチャンネル数…(式1)
次に、CPU220は、ブロック順変換方法としてベクタ方式を選択した際に必要となる、バンドメモリ(処理バンドのベクタデータのメモリサイズ)を、以下の式から算出する(ステップS1702)。
ベクタ方式のブロック順変換処理で必要なバンドメモリ
=バンドに含まれる閉領域データのサイズ合計
+バンドに含まれる閉領域内のオブジェクトデータのサイズ合計 …(式2)
式2における、バンドに含まれる閉領域データのサイズ合計、およびバンドに含まれる閉領域内のオブジェクトデータのサイズ合計は、後述する式3および式4から算出される。
次に、CPU220は、ステップS1701及びステップS1702の処理で導出したメモリサイズの大小関係を比較し、ラスタ方式とベクタ方式のどちらがブロック順変換時のメモリ消費量が少ないかを判断する(ステップS1703)。
ベクタ方式であった場合(ステップS1703のYES)、CPU220は、処理バンドのブロック順変換方法にベクタ方式を選択する(ステップS1704)。具体的には、CPU220は、レンダリング処理(ステップS303の処理)で利用するブロック順変換方法テーブルの該当バンドのブロック順変換方法にベクタ方式を指定する。
ラスタ方式でなかった場合は(ステップS1703のNO)、CPU220は、処理バンドのブロック順変換方法にラスタ方式を選択する(ステップS1705)。具体的には、CPU220は、レンダリング処理(ステップS303の処理)で利用するブロック順変換方法テーブルの該当バンドのブロック順変換方法にラスタ方式を指定する。
次に、CPU220は、ページ内の全バンドに対する処理が終了したか否かを判断する(ステップS1706)。終了していない場合には(ステップS1706のNO)、CPU220は、ステップS1702の処理に戻る。終了している場合には(ステップS1706のYES)、CPU220は、処理を終了する。
<ベクタ方式によるブロック順変換処理時のメモリサイズ算出処理の詳細>
図18は、本実施例における、ベクタ方式のブロック順変換処理におけるメモリサイズ算出処理(ステップS1702の処理)を示すフローチャートである。
まず、CPU220は、処理バンドに含まれる閉領域データのサイズ合計を算出する(ステップS1801)。処理バンドに含まれる閉領域データのサイズ合計は、以下の式から算出される。
バンドに含まれる閉領域データのサイズ合計=バンドに含まれる閉領域の数×閉領域データの1データ辺りのサイズ …(式3)
上述したように、閉領域の数とエッジの高さの累計とは一致するため、式3において、バンドに含まれる閉領域の数として、エッジの高さの累計を用いる。このとき、CPU220は、エッジ情報解析テーブルから、処理バンドに対応するエッジの高さの累計を取得する。
閉領域データの1データ辺りのサイズは、一意に決まる値である。例えば、当該サイズが8バイトであって、処理バンドが図15に示すエッジ情報解析テーブルにおけるバンド領域#1に対応する場合、当該処理バンドにおける閉領域データの1データ辺りのサイズは、32×8=256バイトと算出される。
次に、CPU220は、処理バンド内に透過指定がされた描画オブジェクトが存在するか否かを判断する(ステップS1802)。ここでは、CPU220は、エッジ情報解析テーブルから、該当バンドの透過指定面積の累計を取得し、取得した値があらかじめ定める所定の閾値(例えばTh0==0)以下であるか否かを判断する。
透過指定面積の累計が閾値より大きい場合(ステップS1802のYES)、CPU220は、処理バンド内に透過指定がされた描画オブジェクトがあると判断する。そして、CPU220は、後述するステップS1803の処理に移行する。
透過指定面積の累計が閾値以下であった場合(ステップS1802のNO)、CPU220は、透過指定された描画オブジェクトがなく、処理バンド内のすべての閉領域において、重なる描画オブジェクトの数が2未満であると判断する。すなわち、CPU220は、処理バンド内の描画オブジェクトが重なり合わないと判断する。そして、CPU220は、処理バンドに対して、ステップS302の処理で生成した中間データを元に、実際の閉領域データの生成処理を行う(ステップS1804)。このとき、CPU220は、中間データから、処理バンドに含まれる描画オブジェクトの、輪郭を示すエッジ情報を抽出する。そして、CPU220は、エッジ情報に含まれるエッジの位置情報と、輪郭の詳細情報と、さらに輪郭に関連付けられたオブジェクト情報とオブジェクトの重なり方を示す情報とをもとに、処理バンド内の閉領域データの生成処理を行う。ただし、ステップS1804の処理は透過指定された描画オブジェクトがない場合にのみ実行されるので、ステップS1804の処理では、透過指定を考慮した重なりに関する処理は行われないものとする。このように、ステップS1804の処理では、上述したステップS501の処理に比べ、簡易な閉領域データの生成処理が行われる。これにより、実際に生成した各閉領域データのオブジェクト個数を足し合わせることで、描画オブジェクトの数を求めることができる。なお、閉領域データの生成処理に関しては、公知の技術を利用する。
ここで、ステップS1803の処理を説明する。処理バンド内に透過指定がされた描画オブジェクトが存在する場合には、描画オブジェクトの重なりを考慮する必要がある。そのため、ステップS1804の処理と同じように実際に閉領域データを生成しようとすると、処理負担を増大させる可能性がある。そこで、ステップS1803の処理では、CPU220は、次のように、処理バンド内の描画オブジェクトの数を算出する。まず、CPU220は、図16(C)の中央図に示すように、処理バンド内の各エッジが描画オブジェクトの開始または終了を示すエッジであるか否かを示す情報を、テーブルとして保持する。図16(C)の中央図には、同左図に示すエッジ1651〜1657が描画オブジェクトの開始または終了を示すエッジであるか否かが示されている。なお、エッジ1651〜1657には、それぞれ、0〜6のエッジIDが割り当てられている。CPU220は、図16(C)の中央図に示すテーブルから、処理バンドの関連エッジIDに対応づけて格納されている情報を取得する。そして、CPU220は、取得した情報から、処理バンド内の各エッジが、描画オブジェクトの開始を示すエッジであるか、描画オブジェクトの終了を示すエッジであるかを判定する。次いで、CPU220は、図16(C)の右図に示すように、処理バンドにおいてラインを走査し、描画オブジェクトの個数を算出する。具体的には、CPU220は、描画オブジェクトの開始を示すエッジを検出すると、描画オブジェクトの個数に1加算する。また、CPU220は、描画オブジェクトの終了を示すエッジを検出すると、描画オブジェクトの個数を1減算する。CPU220は、この処理をバンドの高さ分、繰り返すことにより、処理バンドにおける描画オブジェクトの数を算出する。なお、透過指定がされた描画オブジェクトが存在するか否かを判断する際の閾値(上記Th0)は、ユーザが任意に指定しても構わない。
CPU220は、ステップS1803またはS1804の処理で求めた、処理バンドに含まれる閉領域内のオブジェクト数の合計に基づいて、以下の式を利用して、処理バンドに含まれる閉領域内のオブジェクトデータのサイズ合計を算出する。
バンドに含まれる閉領域内のオブジェクトデータのサイズ合計=バンドに含まれる閉領域内のオブジェクト数の合計×閉領域に含まれるオブジェクトデータの1データ辺りのサイズ …(式4)
最後に、CPU220は、式3及び式4で算出した値を式2に代入して、ベクタ方式のメモリサイズを算出する(ステップS1805)。
以上に説明したように、第1の実施例では、ベクタ方式のブロック順変換処理時に必要なメモリサイズと、ラスタ方式のブロック順変換処理時に必要なメモリサイズとを比較して、メモリ消費量がより少ないブロック順変換方法を選択する。それにより、レンダリング処理の対象となるページ画像データの内容に関わらず、最適なバッファメモリサイズでブロック順変換処理を行うことが可能となる。例えば、ページ画像データが大量の描画オブジェクトを含んでいて、ベクタデータのサイズが増大する可能性がある場合には、ラスタ方式のブロック順変換方法が選択されるので、ブロック変換処理時のメモリ消費量を抑えることができる。このように、本実施例によれば、ブロック順変換処理において、最適なブロック順変換方法を選択することができ、より小さいバッファメモリサイズでブロック順変換処理を行うことができる。
また、本実施例では、処理バンドにおける描画オブジェクトの数を算出する際に、処理バンド内に透過指定がされた描画オブジェクトがある場合(ステップS1802でYESと判定された場合)には、描画オブジェクトの開始および終了を示すエッジの検出結果にもとづいてオブジェクト数を算出するようにしている。したがって、ベクタ方式のブロック順変換処理時に必要なメモリサイズの、導出にかかる処理負荷をより小さくすることができる。なお、透過指定がされた描画オブジェクトが処理バンド内に存在しない場合(ステップS1802でNOと判定された場合)に、ステップS1804の処理に移行せずに、閉領域データの生成を行わないステップS1803の処理に移行するようにしてもよい。そのような形態によれば、ベクタ方式のブロック順変換処理時に必要なメモリサイズの、導出にかかる処理負荷をさらに小さくすることができる。
[実施例2]
第1の実施例では、中間データ生成処理(ステップS302の処理)において、本発明の特徴であるエッジ情報解析処理及びブロック順変換方法選択処理を行う画像処理装置を例にした。本実施例では、レンダリング処理(ステップS303の処理)において、本発明の特徴であるエッジ情報解析処理及びブロック順変換方法選択処理を行う画像処理装置を例にする。なお、本実施例の画像処理装置のハードウェア構成およびソフトウェア構成は、第1の実施例の画像処理装置110と同様であるため、説明を省略する。
<画像処理装置における転送されたPDLの印刷処理>
図19は、本実施例における画像処理装置の画像形成処理を示すフローチャートである。図19には、本実施例における画像処理装置110の、PDLデータに対する印刷処理の一連の流れが示さている。図19に示す処理は、CPU220によって実行される。具体的には、CPU220が、図19に示す処理を実行するためのプログラムをROM221からRAM222へロードし、実行することにより、図19に示す処理が実行される。なお、画像処理装置110のCPU220、ROM221及びRAM222ではなく、外部装置(例えばプリンタサーバ103)のCPU、ROM及びRAMが、図19に示す処理を実行する構成であっても構わない。
まず、ホストコンピュータ101、モバイル端末102またはプリンタサーバ103から画像処理装置110にPDLデータが送信される。すると、画像処理装置110のCPU220は、受信したPDLデータを、記憶装置223に格納する。
次に、CPU220は、記憶装置223に格納されたPDLデータを取得し、取得したPDLデータの解析処理を行う(ステップS1901)。
次に、CPU220は、解析したPDLデータの情報を元に、ビットマップ画像データを生成するために必要な中間データの生成処理を行う(ステップS1902)。ステップS1902の処理では、公知の技術による中間データ生成処理が行われる。
次に、CPU220は、本発明の特徴である、エッジ情報解析処理及びブロック順変換方法選択処理を行う。さらに、CPU220は、生成した中間データ及び選択したブロック順変換方法選択処理に従い、ブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像データを生成する(ステップS1903)。なお、生成されたビットマップ画像データは、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データは、ブロック単位で後段の画像処理が施される。
<レンダリング処理の詳細>
図20は、本実施例における、レンダリング処理(ステップS1903の処理)を示すフローチャートである。図21は、本発明の第2の実施例における、エッジ情報解析処理を示すフローチャートである。本実施例におけるレンダリング処理には、本発明の特徴であるエッジ情報解析処理、ブロック順変換方法選択処理及びブロック順変換処理が含まれる。
まず、CPU220は、ステップS1902で生成した中間データに含まれるエッジ情報から、ベクタデータを元にブロック順変換処理を行うか、ラスタデータを元にブロック順変換処理を行うかを選択する際に必要となる情報を抽出する(ステップS2001)。ここで、ステップS2001の処理の詳細を説明する。図21は、本発明の第2の実施例における、エッジ情報解析処理(ステップS2001の処理)を示すフローチャートである。図21に示すように、CPU220は、あらかじめ定めた所定数のラインについて、閉領域データを生成する(ステップS2101)。なお、ここでいう所定数とは、バンドの全ライン数以下の値である。すなわち、所定数のラインとは、処理バンドの全部または一部のラインである。この時、CPU220は、中間データから、処理バンド内の所定数のラインに含まれる描画オブジェクトの、輪郭を示すエッジ情報を抽出する。そして、CPU220は、エッジ情報に含まれるエッジの位置情報と輪郭の詳細情報に基づいて、処理バンド内の所定数のラインについて、閉領域データの生成処理を行う。なお、ステップS2101の閉領域データの生成処理では、エッジ情報に含まれるエッジの位置情報と輪郭の詳細情報の他に、さらに輪郭に関連付けられたオブジェクト情報とオブジェクトの重なり方を示す情報を用いる。したがって、ステップS2101の閉領域データの生成処理では、上述したステップS501の処理と同様に、オブジェクトの重なりを考慮した閉領域データの生成処理が行われる。これにより、実際に生成した各閉領域データのオブジェクト数を足し合わせることで、透過指定の有無にかかわらず、描画オブジェクトの個数を求めることができる。なお、閉領域データの生成処理に関しては、公知の技術を利用する。これにより、上記処理で算出した、所定数のラインの閉領域データのサイズを利用し、以降のブロック順変換方法選択処理(ステップS2002の処理)で利用する構成をとる。
次にCPU220は、ステップS2001で取得したブロック順変換方法の選択処理に必要な情報を元に、レンダリング処理(ステップS1903の処理)で行うブロック順変換方法の選択処理を行う(ステップS2002)。具体的には、CPU220は、ベクタ方式またはラスタ方式のどちらが少ないメモリでブロック順変換を行えるかを判断する。CPU220は、判断結果に基づき、ブロック順変換方法として、ベクタ方式またはラスタ方式のいずれかの方式を選択する。ブロック順変換方法の選択処理の詳細については後述する。
次に、CPU220は、レンダリング処理で扱うベクタデータである閉領域データの生成処理を行う(ステップS2003)。生成される閉領域データは、図9〜図12に示す内容と同等であるため説明を省略する。
次に、CPU220は、ブロック順変換テーブルを参照して、処理バンドに対応するブロック順変換方法がベクタ方式であるか否かを、判断する(ステップS2004)。
ブロック順変換方法がベクタ方式でなかった場合は(ステップS2004のNO)、CPU220は、ステップS2006の処理に移行する。
ブロック順変換方法がベクタ方式であった場合は(ステップS2004のYES)、CPU220は、ステップS2003の処理で生成した、処理バンドに対応するベクタデータを、一旦ブロック順変換メモリ210に格納する。そして、CPU220は、ブロック順変換メモリ210に格納されたベクタデータをブロック順に変換する(ステップS2005)。ステップS2005の処理は、前述したステップS503の処理と同等であるため、説明を省略する。
次に、CPU220は、ベクタデータを元に、ラスタデータの生成処理を行う(ステップS2006)。なお、ブロック順変換方法がベクタ方式である場合には、ステップS2005の処理においてベクタデータがブロック順に変換されるので、ステップS2006の処理で生成されるラスタデータもブロック順に生成される。また、ブロック順変換方法がラスタ方式である場合には、ステップS2005の処理は実行されないので、ステップS2006の処理で生成されるラスタデータは、ライン順に生成される。
次に、CPU220は、ブロック順変換方法テーブルを参照して、処理バンドに対応する、ブロック順変換方法がラスタ方式であるか否かを、判断する処理を行う(ステップS2007)。
ブロック順変換方法がラスタ方式でなかった場合には(ステップS2007のNO)、CPU220は、ステップS20007の処理に移行する。
ブロック順変換方法がラスタ方式であった場合には(ステップS2007のYES)、CPU220は、ステップS2006でライン順に生成されたラスタデータを、ブロック順に生成する(ステップS20008)。ことのき、まず、CPU220は、ステップ2006の処理で生成した、処理バンドに対応するピクセルデータを、一旦ブロック順変換メモリ210に格納する。そして、CPU220は、ブロック順変換メモリ210に格納されたラスタデータをライン順からブロック順に変換する。ステップS2008の処理は、前述したステップS506の処理と同等であるため、説明を省略する。
次に、CPU220は、ページ画像データ内に含まれる全てのバンドについて、処理が終了したか否かを判断する(ステップS2009)。CPU220は、終了していないと判断した場合には(ステップS2009のNO)、ステップS2001の処理に戻り、終了したと判断した場合には(ステップS2009のYES)、処理を終了する。
<ブロック順変換方法の選択処理の詳細>
図22は、本発明の第2の実施例における、ブロック順変換方法選択処理(ステップS2002の処理)を示すフローチャートである。
まず、CPU220は、ブロック順変換方法としてラスタ方式を選択した際の所定数のライン分のラスタデータのメモリサイズを算出する(ステップS2201)。ラスタデータは以下の式により一律に求められるため、ページの先頭でのみ処理を行う。
ラスタ方式のブロック順変換処理で必要な所定ライン分のメモリ=ページ幅×所定数のラインの高さ×1チャンネル辺りの階調×1ピクセル辺りのチャンネル数 …(式5)
次に、CPU220は、ブロック順変換方法としてベクタ方式を選択した際に必要となる、所定数のライン分のベクタデータのメモリサイズを算出する(ステップS2202)。実際には、CPU220は、ステップS2101の処理で生成した所定バンドの閉領域データのデータサイズを取得する。
次に、CPU220は、ステップS2201及びステップS2202の処理で導出したメモリサイズの大小関係を比較し、ラスタ方式とベクタ方式のどちらがブロック順変換時のメモリ消費量が少ないかを判断する(ステップS2203)。
ベクタ方式であった場合(ステップS2203のYES)、ステップS2204に進み、ラスタ方式であった場合は、S2205に進む。
ベクタ方式であった場合(ステップS2203のYES)、CPU220は、処理バンドのブロック順変換方法にベクタ方式を選択する(ステップS2204)。
ベクタ方式でなかった場合(ステップS2203のNO)、CPU220は、処理バンドのブロック順変換方法にラスタ方式を選択する(ステップS2205)。
次に、CPU220は、ページ内の全バンドに対する処理が終了したか否かを判断する処理を行う(ステップS2206)。終了していない場合には(ステップS2206のNO)、CPU220は、ステップS2202の処理に戻る。終了している場合には(ステップS2206のYES)、CPU220は、処理を終了する。
以上に説明したように、本実施例の画像処理装置は、所定数のライン分の閉領域データを生成することで、バンド単位に最適なブロック順変換処理の方式を決定する。具体的には、処理バンド内の所定数のライン分の、ベクタデータのメモリサイズとベクタデータのメモリサイズとを比較して、当該処理バンドのブロック順変換方法を選択している。そのような形態によれば、ステップS2101の処理において、処理バンド内の全ライン分ではなく一部のラインについて閉領域データを生成すればよいので、さらに処理負荷を低減することができる。なお、第1の実施例においても、処理バンド内の所定数のライン分の、ベクタデータのメモリサイズとベクタデータのメモリサイズとを比較して、当該処理バンドのブロック順変換方法を選択するようにしてもよい。そのような形態を実現するには、例えば、ステップS1701,S1702,S1804の処理おける処理対象を、バンドにおける全ライン分ではなく一部のラインとするようにすればよい。
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
110 画像処理装置
204 ブロック順変換方法選択部
205 ベクタ方式ブロック順変換部
206 ラスタ方式ブロック順変換部
220 CPU

Claims (18)

  1. 入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置であって、
    前記画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、前記画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出手段と、
    前記導出結果に基づいて、前記変換処理の実行のタイミングを決定する決定手段と、
    前記決定手段で決定されたタイミングで前記変換処理を実行する変換手段と
    を備え
    前記導出手段は、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出する
    ことを特徴とする画像処理装置。
  2. 前記決定手段は、
    前記導出結果に基づいて、前記変換処理に要するメモリサイズが小さくなるように、前記変換処理をレンダリングの前に実行するか、または、レンダリングの後に実行するかを決定する
    請求項1に記載の画像処理装置。
  3. 前記入力された画像データはPDLデータであって、当該PDLデータを解析して得られた中間データに基づいて、ベクタデータを生成する生成手段を備え、
    前記導出手段は、
    前記ベクタデータのサイズを、レンダリングの前に実行する前記変換処理に要するメモリサイズとして導出する
    請求項1または請求項2に記載の画像処理装置。
  4. 前記生成手段は、
    前記中間データに基づいて、ラインごとに描画オブジェクトのエッジで区切られた閉領域を抽出し、
    抽出した各閉領域について、閉領域の内容を示す閉領域データを生成するとともに、当該閉領域内の各描画オブジェクトについて、描画オブジェクトの内容を示すオブジェクト情報を生成し、生成した前記閉領域データと前記オブジェクト情報とを格納したベクタデータを生成し、
    前記導出手段は、
    前記ベクタデータのサイズを、前記閉領域の数と、各閉領域内の描画オブジェクトの数の累計とから導出する
    請求項3に記載の画像処理装置。
  5. 前記導出手段は、前記ベクタデータに含まれる描画オブジェクトのエッジの高さの累計から、当該ベクタデータに含まれる前記閉領域の数を推測する
    請求項4に記載の画像処理装置。
  6. 前記導出手段は、前記描画オブジェクトがビットマップ文字である場合には、当該ビットマップ文字と他の描画オブジェクトまたは背景との境界を、当該描画オブジェクトのエッジであると判断する
    請求項5に記載の画像処理装置。
  7. 前記導出手段は、前記ベクタデータ内の各ラインを走査して、描画オブジェクトのエッジを検出し、検出された前記エッジの数から、当該ベクタデータに含まれる各閉領域内の描画オブジェクトの数の累計を推測する
    請求項4から請求項6のうちのいずれか1項に記載の画像処理装置。
  8. 前記導出手段は、
    前記画像データの所定数のラインに対する前記変換処理に要するメモリサイズを、レンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出し、
    前記決定手段は、
    前記導出結果に基づいて、前記画像データに対する前記変換処理の実行のタイミングを決定し、
    前記変換手段は、
    前記決定手段で決定されたタイミングで、前記画像データに対して前記変換処理を実行する
    請求項1に記載の画像処理装置。
  9. 前記生成手段は、画像データを複数のラインで分割したバンド領域ごとに、前記ベクタデータを生成する
    請求項3から請求項のうちのいずれか1項に記載の画像処理装置。
  10. オブジェクトの重なり方を示す前記情報とは、オブジェクトの透過情報を含むことを特徴とする請求項1に記載の画像処理装置。
  11. 入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置における画像処理方法であって、
    前記画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、前記画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出ステップと、
    前記導出結果に基づいて、前記変換処理の実行のタイミングを決定する決定ステップと、
    前記決定ステップで決定されたタイミングで前記変換処理を実行する変換ステップと
    を含み、
    前記導出ステップにて、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出する
    ことを特徴とする画像処理方法。
  12. 入力された画像データに対する画像処理をブロック単位で並列に行う画像処理装置に含まれるコンピュータに、
    前記画像データにおけるデータの並び順をライン順からブロック順へと変換する変換処理に要するメモリサイズを、前記画像データに対するレンダリングの前に実行する場合及びレンダリングの後に実行する場合について各々導出する導出手順と、
    前記導出結果に基づいて、前記変換処理の実行のタイミングを決定する決定手順と、
    前記決定手順において決定されたタイミングで前記変換処理を実行する変換手順と
    を実行させ
    前記導出手順にて、前記画像データに対するレンダリングの前に前記変換処理を実行する場合のメモリサイズを、前記画像データにおけるオブジェクトの重なり方を示す情報を利用して導出させるためのプログラム。
  13. 像処理装置であって、
    ラスタデータ形式と異なる所定のデータ形式の入力画像データのバンドデータに基づいて、前記所定のデータ形式のブロックデータを生成する第1の生成手段と、
    前記所定のデータ形式のバンドデータのラスタライズ、及び、前記所定のデータ形式のブロックデータラスタライズを行うラスタライズ手段と、
    前記ラスタライズ手段によってラスタライズされた前記ラスタデータ形式のバンドデータに基づいて前記ラスタデータ形式のブロックデータを生成する第2の生成手段と、
    前記第1の生成手段により前記所定のデータ形式のブロックデータを生成して、生成された当該ブロックデータに基づいて前記ラスタライズ手段により前記ラスタデータ形式のブロックデータを生成するか、前記所定のデータ形式の前記バンドデータに基づいて前記ラスタライズ手段により前記ラスタデータ形式のバンドデータを生成して、生成された当該バンドデータに基づいて前記第2の生成手段により前記ラスタデータ形式のブロックデータを生成するかの制御を行う制御手段と
    を有し、
    前記制御手段は、前記入力画像データのバンドデータにおけるオブジェクトの重なり方を示す情報を利用して前記制御を行う
    ことを特徴とする画像処理装置。
  14. 前記制御手段は、前記所定のデータ形式のバンドデータに含まれる1又は複数のラインデータが所定の閾値よりも大きい場合に、前記第2の生成手段によりブロックデータを生成する制御を行うことを特徴とする請求項13に記載の画像処理装置。
  15. バンドデータの高さと、該バンドデータを分割したブロックデータの高さは等しく、バンドデータの幅と、該バンドデータを分割したブロックデータの幅は異なることを特徴とする請求項13に記載の画像処理装置。
  16. オブジェクトの重なり方を示す前記情報とは、オブジェクトの透過情報を含むことを特徴とする請求項13に記載の画像処理装置。
  17. ータ生成方法であって、
    ラスタデータ形式と異なる所定のデータ形式の入力画像データのバンドデータ基づいて、前記所定のデータ形式のブロックデータを生成する第1の生成ステップと、
    前記所定のデータ形式のバンドデータのラスタライズ、及び、前記所定のデータ形式のブロックデータラスタライズを行うラスタライズステップと、
    前記ラスタライズステップにてラスタライズされた前記ラスタデータ形式のバンドデータに基づいて前記ラスタデータ形式のブロックデータを生成する第2の生成ステップと
    前記第1の生成ステップにて前記所定のデータ形式のブロックデータを生成して、生成された当該ブロックデータに基づいて前記ラスタライズステップにて前記ラスタデータ形式のブロックデータを生成するか、前記所定のデータ形式の前記バンドデータに基づいて前記ラスタライズステップにて前記ラスタデータ形式のバンドデータを生成して、生成された当該バンドデータに基づいて前記第2の生成ステップにて前記ラスタデータ形式のブロックデータを生成するかの制御を行う制御ステップと
    を有し、
    前記制御ステップでは、前記入力画像データのバンドデータにおけるオブジェクトの重なり方を示す情報を利用して前記制御を行う
    ことを特徴とするデータ生成方法。
  18. 像処理装置に含まれるコンピュータに、
    ラスタデータ形式と異なる所定のデータ形式の入力画像データのバンドデータ基づいて、前記所定のデータ形式のブロックデータを生成する第1の生成手順と、
    前記所定のデータ形式のバンドデータのラスタライズ、及び、前記所定のデータ形式のブロックデータラスタライズを行うラスタライズ手順と、
    前記ラスタライズ手順にてラスタライズされた前記ラスタデータ形式のバンドデータに基づいて前記ラスタデータ形式のブロックデータを生成する第2の生成手順と
    前記第1の生成手順にて前記所定のデータ形式のブロックデータを生成して、生成された当該ブロックデータに基づいて前記ラスタライズ手順にて前記ラスタデータ形式のブロックデータを生成するか、前記所定のデータ形式の前記バンドデータに基づいて前記ラスタライズ手順にて前記ラスタデータ形式のバンドデータを生成して、生成された当該バンドデータに基づいて前記第2の生成手順にて前記ラスタデータ形式のブロックデータを生成するかの制御を行う制御手順と
    を実行させ
    前記制御手順では、前記入力画像データのバンドデータにおけるオブジェクトの重なり方を示す情報を利用して前記制御を行わせるためのプログラム。
JP2015226939A 2015-11-19 2015-11-19 画像処理装置、画像処理方法、データ生成方法及びプログラム Active JP6643056B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015226939A JP6643056B2 (ja) 2015-11-19 2015-11-19 画像処理装置、画像処理方法、データ生成方法及びプログラム
US15/354,648 US10185902B2 (en) 2015-11-19 2016-11-17 Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium
US16/216,524 US10832104B2 (en) 2015-11-19 2018-12-11 Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015226939A JP6643056B2 (ja) 2015-11-19 2015-11-19 画像処理装置、画像処理方法、データ生成方法及びプログラム

Publications (3)

Publication Number Publication Date
JP2017094543A JP2017094543A (ja) 2017-06-01
JP2017094543A5 JP2017094543A5 (ja) 2019-01-10
JP6643056B2 true JP6643056B2 (ja) 2020-02-12

Family

ID=58721689

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015226939A Active JP6643056B2 (ja) 2015-11-19 2015-11-19 画像処理装置、画像処理方法、データ生成方法及びプログラム

Country Status (2)

Country Link
US (2) US10185902B2 (ja)
JP (1) JP6643056B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6789716B2 (ja) * 2016-08-05 2020-11-25 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、及びプログラム
JP7000039B2 (ja) * 2017-05-25 2022-01-19 東芝テック株式会社 情報処理装置及びそのプログラム
CN110730212A (zh) * 2019-09-20 2020-01-24 中国联合网络通信集团有限公司 一种数据处理方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4408836B2 (ja) * 2005-05-30 2010-02-03 キヤノン株式会社 画像処理装置及びその制御方法、プログラム
JP5300317B2 (ja) 2008-05-09 2013-09-25 キヤノン株式会社 画像処理装置及びその制御方法
JP5538792B2 (ja) * 2009-09-24 2014-07-02 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
JP2012081626A (ja) * 2010-10-08 2012-04-26 Ricoh Co Ltd 画像形成装置、画像処理方法、プログラム
JP6029344B2 (ja) 2012-06-20 2016-11-24 キヤノン株式会社 画像処理装置、画像処理方法、プログラム
JP6128782B2 (ja) * 2012-09-07 2017-05-17 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、プログラム、及び記憶媒体

Also Published As

Publication number Publication date
US20170147913A1 (en) 2017-05-25
US20190108426A1 (en) 2019-04-11
US10185902B2 (en) 2019-01-22
US10832104B2 (en) 2020-11-10
JP2017094543A (ja) 2017-06-01

Similar Documents

Publication Publication Date Title
JP6029344B2 (ja) 画像処理装置、画像処理方法、プログラム
EP2306301A2 (en) Image processing system, image processing method and image processing program
US10929727B2 (en) Image processing apparatus with color replacement with achromatic colors, and image processing method and storage medium thereof
JP6643056B2 (ja) 画像処理装置、画像処理方法、データ生成方法及びプログラム
JP2024102221A (ja) 画像処理装置、画像処理方法ならびにプログラム
JP2017024321A (ja) 画像処理装置、画像形成装置及び画像処理時間予測方法及びプログラム
JP5842590B2 (ja) 画像処理装置、及び画像処理装置の制御プログラム
KR101945581B1 (ko) 화상 처리 장치, 화상 처리 방법, 및 저장 매체
US8566703B2 (en) Page description data processing apparatus, page description data processing method, and recording medium
JP6904717B2 (ja) 画像処理装置、その制御方法、およびプログラム
US9710736B2 (en) Rendering apparatus and rendering method
JP6323209B2 (ja) 画像処理装置及びプログラム
JP2019195117A (ja) 情報処理装置、情報処理方法、及びプログラム
US8743418B2 (en) Method for removing character-object overlap to increase render processing speed for an image
JP2009101519A (ja) 画像形成装置及び画像形成システム
JP2009075805A (ja) 画像形成装置
JP2018063557A (ja) 画像形成装置、方法、プログラム
JP2013033390A (ja) 情報処理システム、描画処理方法及びプログラム
JP2023033977A (ja) 画像形成装置、画像形成装置の制御方法、およびプログラム
JP2014197349A (ja) 画像処理装置、情報処理方法及びプログラム
US20150147001A1 (en) Image editing apparatus, image editing method, and non-transitory storage medium
JP2014035672A (ja) 画像処理装置及び画像処理方法
JP2016143315A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP2017024190A (ja) 画像処理装置、画像処理装置の画像処理方法、及びプログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190820

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191021

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: 20191203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200106

R151 Written notification of patent or utility model registration

Ref document number: 6643056

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151