(57)【特許請求の範囲】
【請求項１】
コンピュータを、
複数の描画対象領域に分割して印刷処理を行うプリンタが認識できる印刷データを生成する印刷データ生成手段、
前記印刷データに含まれる描画コマンドのうち、前記描画対象領域を跨る描画コマンドを前記描画対象領域に従って分解する描画コマンド分解手段、
前記描画対象領域に従って分解された描画コマンドを含む前記印刷データを前記プリンタに転送する印刷データ転送手段
として機能させ、
前記描画コマンド分解手段は、前記描画対象領域を跨るベクター描画要素のそれぞれについて、全ての制御点が前記描画対象領域に含まれない前記ベクター描画要素を、前記描画対象領域に対応する描画コマンドから除外する
ことを特徴とする印刷データ生成プログラム。
【請求項２】
前記描画コマンド分解手段は、前記描画対象領域を跨るイメージを前記描画対象領域に従って分割し、分割したイメージそれぞれに対応する描画コマンドに、前記描画対象領域を跨る描画コマンドを分解する
ことを特徴とする請求項１記載の印刷データ生成プログラム。
【請求項３】
前記描画コマンド分解手段は、前記描画対象領域を跨るイメージを前記描画対象領域の境界を越えて一部が重なるように分割し、分割したイメージそれぞれに対応する描画コマンドに、前記描画対象領域を跨る描画コマンドを分解する
ことを特徴とする請求項１記載の印刷データ生成プログラム。
【請求項４】
前記描画コマンド分解手段は、前記分割したイメージそれぞれに画像圧縮を施す
ことを特徴とする請求項２又は３記載の印刷データ生成プログラム。
【請求項５】
前記ベクター描画要素は、ベジエ曲線又はスプライン曲線である
ことを特徴とする請求項１乃至３何れか一項記載の印刷データ生成プログラム。
【請求項６】
コンピュータにより実行可能な印刷データ生成プログラムと、複数の描画対象領域に分割して印刷処理を行うプリンタとを有する印刷システムであって、
前記コンピュータを、
前記プリンタが認識できる印刷データを生成する印刷データ生成手段、
前記印刷データに含まれる描画コマンドのうち、前記描画対象領域を跨る描画コマンドを前記描画対象領域に従って分解する描画コマンド分解手段、
前記描画対象領域に従って分解された描画コマンドを含む前記印刷データを前記プリンタに転送する印刷データ転送手段
として機能させるための印刷データ生成プログラムと、
前記転送された印刷データを前記描画対象領域に対応させて描画処理を並列に行うプリンタと
を有し、
前記描画コマンド分解手段は、前記描画対象領域を跨るイメージを前記描画対象領域の境界を越えて一部が重なるように分割し、分割したイメージそれぞれに対応する描画コマンドに、前記描画対象領域を跨る描画コマンドを分解して、分解したイメージそれぞれに独立に非可逆な画像圧縮を施し、
前記プリンタは、前記非可逆な画像圧縮を施された前記分解したイメージを解凍し、前記描画対象領域の境界の近傍画素として、前記解凍したイメージの重なった画素の平均値を用いることを特徴とする印刷システム。
【請求項７】
コンピュータにより実行可能な印刷データ生成プログラムと、複数の描画対象領域に分割して印刷処理を行うプリンタと、を有する印刷システムによって実行される印刷方法であって、
前記印刷データ生成プログラムが前記コンピュータに、
前記プリンタが認識できる印刷データを生成する印刷データ生成ステップ、
前記印刷データに含まれる描画コマンドのうち、前記描画対象領域を跨る描画コマンドを前記描画対象領域に従って分解する描画コマンド分解ステップ、
前記描画対象領域に従って分解された描画コマンドを含む前記印刷データを前記プリンタに転送する印刷データ転送ステップ
を実行させ、
前記プリンタが、
前記転送された印刷データを前記描画対象領域に対応させて描画処理を並列に行う
ことを特徴とし、
前記描画コマンド分解ステップは、前記描画対象領域を跨るイメージを前記描画対象領域の境界を越えて一部が重なるように分割し、分割したイメージそれぞれに対応する描画コマンドに、前記描画対象領域を跨る描画コマンドを分解して、分解したイメージそれぞれに独立に非可逆な画像圧縮を施し、
前記プリンタは、前記非可逆な画像圧縮を施された前記分解したイメージを解凍し、前記描画対象領域の境界の近傍画素として、前記解凍したイメージの重なった画素の平均値を用いる印刷方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷データ生成プログラム、印刷システム及び印刷方法に関する。
【背景技術】
【０００２】
複数の演算手段を有する画像形成装置において、画像形成出力を実行するための画像処理を並列化し、処理効率を向上することは従来から行われている。このような画像形成装置の一例としては、画像形成出力を実行するための画像処理を複数の演算手段によって実行可能な画像形成装置であって、ページ記述言語によって構成されたページ情報を取得するページ情報取得部と、前記取得されたページ情報を解析して前記画像形成出力を実行するための描画命令を出力するページ情報解析部と、前記描画命令に基づいて前記画像形成出力を実行するための描画情報を生成する描画情報生成部と、前記描画情報を生成する処理を前記複数の演算手段のいずれかが制御するように分散する分散処理を実行する処理分散部とを含み、前記処理分散部は、前記出力された描画命令に基づいて前記描画情報を生成する際の処理量を判断し、前記描画情報を生成する際の処理量が多いと判断された場合に、前記描画情報の生成処理を前記複数の演算手段のいずれかが制御するように分散することを特徴とする画像形成装置が知られている（例えば特許文献１参照）。
【０００３】
また、マルチコア環境を利用してプリンタのスループットを最適化するシステム及び方法も従来から知られている（例えば特許文献２参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
印刷に関わるプロセッサの処理は大きく分けて、ＰＣ側のプリンタドライバによる印刷データ生成処理と、プリンタ側の印刷データ解析処理及び描画処理である。通常、これらの処理はＰＣ又はプリンタのＣＰＵによる演算処理が主である。したがって、ＣＰＵの演算処理時間を減らすことで印刷のスループットは向上する。
【０００５】
なお、近年の情報処理機器の発展により、複数の演算手段が含まれるマルチコアの演算機器（ＣＰＵ）が普及するようになった。マルチコアでは複数のコアが夫々独立して動作するため、処理を並列化することにより処理時間を短縮できる。
【０００６】
したがって、印刷に関わるプロセッサの処理は、マルチコア環境を効率的に利用することで処理時間を短縮できる。ただし、マルチコア環境における性能を効率的に発揮させるためには、印刷に関わる処理を夫々のコアに適切に配分することにより、あるコアの動作中に、他のコアに待機が発生しないようにする必要がある。
【０００７】
また、プリンタ側の処理は上記したように、大きく分けて、前段であるＰＣから送信されたＰＤＬ（Page Description Language）の印刷データ解析処理と、その解析に基づいた後段の描画処理とである。後段の描画処理は、バンドやブロックといった図１に示すような分割描画領域ごとに行うことで、消費メモリの削減や並列処理が可能となる。
【０００８】
図１は分割描画領域の一例のイメージ図である。図１は分割描画領域の一例としてバンドの例を示している。図１のバンド０〜バンド３は、それぞれ分割描画領域を示す。描画処理を分割描画領域ごとに行う場合は、レンダリング（描画）処理に必要なコマンドをためる「ディスプレイリスト」を使い、レンダリングコマンドを分割描画領域に紐付けることで分割描画領域ごとのレンダリングを容易にする。
【０００９】
しかし、レンダリングコマンドによっては、複数のバンドやブロックに跨るものが存在する。例えば図１では曲線１０やイメージ１１が複数のバンドに跨っている。このような場合は、従来、跨っているバンドそれぞれに対して、重複してレンダリング処理を行っていたため、処理に時間が掛かるという問題があった。
【００１０】
例えばＢスプライン曲線やベジエ曲線などはベクター画像と呼ばれる。Ｂスプライン曲線やベジエ曲線などのベクター画像のレンダリング処理では、制御点から得られる演算結果に従って、画素の集合へと変換を行う。この処理をバンド０〜バンド３のそれぞれに対応して行うため、ベクター画像のレンダリング処理では同じ処理を４回重複して行うことになり、処理に時間が掛かるという問題があった。
【００１１】
本発明は上記の点に鑑みなされたもので、複数の描画対象領域に分割して印刷処理を行うプリンタにおける印刷のスループットを向上できる印刷データ生成プログラム、印刷システム及び印刷方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記した課題を解決するために、請求項１に記載の印刷データ生成プログラムは、コンピュータを、複数の描画対象領域に分割して印刷処理を行うプリンタが認識できる印刷データを生成する印刷データ生成手段、前記印刷データに含まれる描画コマンドのうち、前記描画対象領域を跨る描画コマンドを前記描画対象領域に従って分解する描画コマンド分解手段、前記描画対象領域に従って分解された描画コマンドを含む前記印刷データを前記プリンタに転送する印刷データ転送手段として機能させ、前記描画コマンド分解手段は、前記描画対象領域を跨るベクター描画要素のそれぞれについて、全ての制御点が前記描画対象領域に含まれない前記ベクター描画要素を、前記描画対象領域に対応する描画コマンドから除外することを特徴とする。
【００１３】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１４】
本発明によれば、複数の描画対象領域に分割して印刷処理を行うプリンタにおける印刷のスループットを向上できる印刷データ生成プログラム、印刷システム及び印刷方法を提供可能である。
【図面の簡単な説明】
【００１５】
【図１】分割描画領域の一例としてバンドの例を示している。
【図２】印刷システムの一例の構成図である。
【図３】ＰＣの一例のハードウェア構成図である。
【図４】ユーザが印刷のアクションを起こしてから印刷データがプリンタに送信されるまでの処理手順を表した一例の模式図である。
【図５】プリンタドライバの処理手順を表した一例のブロック図である。
【図６】イメージを分割する処理の一例のイメージ図である。
【図７】描画処理部の一例のブロック図である。
【図８】イメージを分割する処理の他の例のイメージ図である。
【図９】４つの制御点に基づいて定義されるベジエ曲線の一例のイメージ図である。
【図１０】ベジエ曲線を分割する処理の一例のイメージ図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、詳細に説明する。
【実施例１】
【００１７】
図２は印刷システムの一例の構成図である。図２の印刷システム２０はＰＣ２１とプリンタ２２とがネットワーク２３を介して接続されている。ＰＣ２１はコンピュータの一例である。プリンタ２２は印刷処理を行う装置、機器などの一例である。ネットワーク２３はＬＡＮ（Local Area Network）やインターネット等である。
【００１８】
ＰＣ２１はプリンタドライバ３１をプログラムとして保有する。プリンタドライバ３１は印刷データ生成プログラムの一例である。プリンタ２２は描画処理部３２を機能として保有する。ＰＣ２１上のプリンタドライバ３１によって生成されたプリンタ記述言語であるＰＤＬのデータ（印刷データ）はプリンタ２２に送信される。ネットワーク２３を介して印刷データを受信したプリンタ２２は描画処理部３２で印刷処理を開始する。
【００１９】
図３はＰＣの一例のハードウェア構成図である。ＰＣ２１はバス４８で相互に接続されている入力装置４１、出力装置４２、記録媒体読取装置４３、補助記憶装置４４、主記憶装置４５、演算処理装置４６及びインタフェース装置４７を有する構成である。
【００２０】
入力装置４１はキーボードやマウス等である。入力装置４１は各種信号を入力するために用いられる。出力装置４２はディスプレイ装置等である。出力装置４２は各種ウインドウやデータ等を表示するために用いられる。インタフェース装置４７は、モデム、ＬＡＮカード等である。インタフェース装置４７はＬＡＮやインターネット等のネットワーク２３に接続するために用いられる。
【００２１】
プリンタドライバ３１は、例えば記録媒体４９の配布やネットワーク２３等からのダウンロードなどによって提供される。なお、プリンタドライバ３１はＰＣ２１で実行されるプログラムの少なくとも一部である。
【００２２】
記録媒体４９はＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００２３】
プリンタドライバ３１を記録した記録媒体４９が記録媒体読取装置４３にセットされると、プリンタドライバ３１は記録媒体４９から記録媒体読取装置４３を介して補助記憶装置４４にインストールされる。ネットワーク２３からダウンロードされたプリンタドライバ３１はインタフェース装置４７を介して補助記憶装置４４にインストールされる。
【００２４】
補助記憶装置４４はプリンタドライバ３１、必要なファイル、データ等を格納する。主記憶装置４５はプリンタドライバ３１の起動時に補助記憶装置４４からプリンタドライバ３１を読み出して格納する。演算処理装置４６は主記憶装置４５に格納されたプリンタドライバ３１に従って各種機能を実現する。
【００２５】
図４はユーザが印刷のアクションを起こしてから印刷データがプリンタに送信されるまでの処理手順を表した一例の模式図である。ユーザがＰＣ２１を操作して印刷機能を実行すると、ＰＣ２１のアプリケーション３３はＰＣ２１のＯＳ３４に印刷指示を行う。例えば代表的なＯＳ３４であるＷｉｎｄｏｗｓ（登録商標）はアプリケーション３３によって印刷指示されたオブジェクトを印刷するために、プリンタドライバ３１へ描画命令を出力する。
【００２６】
例えばＯＳ３４はデバイス非依存のＧＤＩ(Graphics Device Interface)を介し、次にＤＤＩ(Device Driver Interface)を介してプリンタドライバ３１へ描画命令を出力する。プリンタドライバ３１は、プリンタ２２によって異なっており、ＯＳ３４から出力されたＤＤＩコマンドを、送信先のプリンタ２２が認識できるコマンドに変換する。
【００２７】
図５はプリンタドライバの処理手順を表した一例のブロック図である。ＰＣ２１はプリンタドライバ３１を実行することにより、プリンタ情報取得部５１、ＵＩによる印刷設定部５２、印刷データ生成部５３、描画コマンド分解部５４、印刷データ転送部５５を実現する。
【００２８】
プリンタドライバ３１のプリンタ情報取得部５１は、まず、印刷データを送信する先のプリンタ２２と双方向通信を行い、プリンタ情報を取得する。プリンタ情報とは、ユーザが印刷条件を設定するために使用する。プリンタ情報は給紙可能な紙サイズ、両面印刷の可否等である。ＵＩによる印刷設定部５２はプリンタ情報取得部５１からプリンタ情報を取得する。ＵＩによる印刷設定部５２はプリンタ情報を利用してＵＩの生成を行う。ＵＩによる印刷設定部５２はＵＩを例えば出力装置４２に表示し、ユーザに印刷条件を設定させる。
【００２９】
印刷データ生成部５３はユーザにより設定された印刷条件をＵＩによる印刷設定部５２から取得する。印刷データ生成部５３はＯＳ３４から出力された描画命令からプリンタ２２の認識できる印刷データを生成する。プリンタ２２の認識できる印刷データは例えばＰＤＬのデータである。印刷データは、例えば印刷制御コマンドと描画コマンドとを有している。
【００３０】
本実施の形態のプリンタドライバ３１では印刷データ生成の段階で、本実施の形態の特徴である描画コマンドの分解を行う。描画コマンド分解部５４は例えば以下のように描画コマンドの分解を行う。
【００３１】
印刷データの描画コマンドは大きく分けて、テキストの描画コマンドと、ベクターグラフィックスの描画コマンドと、イメージの描画コマンドとに分けられる。イメージの描画はラスターグラフィックスと呼ばれる。イメージの描画コマンドは、指定した矩形描画位置へ直接描画する画素値が表現されている描画コマンドである。つまり、イメージの描画コマンドは描画位置とラスターデータとを有する。
【００３２】
なお、イメージ（ラスターデータ）は、送信する印刷データの容量を削減することによりデータ転送量を削減し、印刷処理に掛かる時間を低減する目的で圧縮される。イメージの圧縮には、可逆圧縮と非可逆圧縮とが存在する。ここでは、可逆圧縮を想定する。主な可逆圧縮の手法は、ランレングス圧縮と、行列による変換処理を伴うものとがある。
【００３３】
ランレングス圧縮の基本概念は、同一の画素値が連続する箇所を、画素値と連続数とで表現する方法である。行列による変換処理を伴うものとは、アダマール変換やＤＣＴ変換などを用いて画像の局所性（近傍に似た画素値をとる）を利用してデータを圧縮する方法である。何れにせよ、可逆圧縮を利用するということは、イメージを任意に分割して圧縮を施しても、プリンタ２２側で解凍した後に連結すれば元のイメージを復元できる。
【００３４】
そこで、描画コマンド分割部５４は図６に示すように、バンド０とバンド１との境界及びバンド１とバンド２との境界に沿ってイメージ１２を分割イメージ１２Ａ、１２Ｂ及び１２Ｃに分割する。図６はイメージを分割する処理の一例のイメージ図である。
【００３５】
印刷データ生成部５３は分割した分割イメージ１２Ａ、１２Ｂ及び１２Ｃ、それぞれに対して圧縮を施して描画コマンドの一要素とする。つまり、イメージ１２の描画コマンドは分割イメージ１２Ａ、１２Ｂ及び１２Ｃの三つの描画コマンドに分解される。
【００３６】
また、印刷データ生成部５３は分解された描画コマンドを描画コマンド分解部５４から取得する。印刷データ生成部５３は分解された描画コマンドを含む印刷データを生成して印刷データ転送部５５に送信する。そして、印刷データ転送部５５はネットワーク２３を介してプリンタ２２に印刷データを転送する。なお、ネットワーク２３を通じて送信する都合上、印刷データは分割されてネットワーク転送されることもあるが、詳細についての説明を省略する。
【００３７】
上記はＰＣ２１上でのプリンタドライバ３１の動作について説明している。以下ではバンドに分割して描画処理を行うプリンタ２２の動作について説明する。プリンタ２２の画像処理部３２は例えば図７に示すように構成される。
【００３８】
図７は描画処理部の一例のブロック図である。図７に示す描画処理部３２はＰＤＬ解析部６１、バンド０への描画部６２−０、バンド１への描画部６２−１、…、印刷処理出力部６３を有する。バンド０への描画部６２−０は描画部７１−０、ディスプレイリスト７２−０及び画像バッファ７３−０を有する。また、バンド１への描画部６２−１は描画部７１−１、ディスプレイリスト７２−１及び画像バッファ７３−１を有する。
【００３９】
例えば図７のバンド０への描画部６２−０は、描画部７１−０が画像バッファ７３−０に対してディスプレイリスト７２−０に含まれる描画コマンドに従って描画を行うことによりバンド０の画像を生成する。ここで画像バッファ７３−０は、バンド０の画像を生成するためのデータを蓄えるメモリであり、一時的なものであっても恒久的なものでも構わない。なお、画像バッファ７３−０と画像バッファ７３−１とは同じメモリを時間的にずらして利用しても構わない。しかし、処理速度向上のために、それぞれの画像バッファ７３−０と画像バッファ７３−１とは同時に独立して確保されることが好ましい。
【００４０】
描画部７１−０及び描画部７１−１は例えばプリンタ２２のＣＰＵ（図示せず）により実現される。なお、以下では描画部７１−０及び描画部７１−１を単に描画部７１と総称する。ディスプレイリスト７２−０及びディスプレイリスト７２−１は単にディスプレイリスト７２と総称する。また、画像バッファ７３−０及び画像バッファ７３−１は単に画像バッファ７３と総称する。さらに、バンド０への描画部６２−０及びバンド１への描画部６２−１は単にバンドへの描画部６２と総称する。
【００４１】
描画部７１は例えばバンドの数だけ存在する。ＣＰＵが描画部７１と同数存在する場合には、それぞれの描画部７１を各ＣＰＵが専任で実行する。ＣＰＵが描画部７１の数より少ない場合には、それぞれの描画部７１の処理がタスクとなって、空いているＣＰＵに順次割り当てられる。それぞれのタスクは並列に実行される。
【００４２】
描画処理部３２は例えば以下に示す手順で処理を行う。初めに描画処理部３２はＰＣ２１上のプリンタドライバ３１で生成された印刷データを受信する。受信した印刷データはＰＤＬ解析部６１へ送られる。ＰＤＬ解析部６１は、部数、給紙トレイ、ステープルといった文書全体にかかわる印刷条件や、カラー、用紙サイズ、両面といったページにかかわる印刷条件を判断する処理を行う。
【００４３】
次に、ＰＤＬ解析部６１は印刷データとして指定された描画コマンドから、ディスプレイリスト７２と呼ばれる描画コマンド群を作成する。例えばディスプレイリスト７２−０の生成はバンド０に関わる描画コマンドを集め、画像の重ね合わせなどによって印刷に現れない描画を制御するなどし、描画部７２−０に対応させることを行う。その結果、描画部７１−０はディスプレイリスト７２−０に格納された描画コマンドを実行すれば良いことになる。
【００４４】
本実施の形態では、複数のバンドに跨るイメージが既に分割イメージに分割されて圧縮画像となっているため、描画コマンドに関して、分割イメージが含まれるバンドに紐付けられているディスプレイリスト７２に格納すれば良い。
【００４５】
描画部７１は、ディスプレイリスト７２に格納された描画コマンドから画素データを生成する描画処理を行う。テキストの描画コマンドの場合、描画部７１は文字コードに対応したテキストグラフィック（ビットマップの場合もあればベクター文字の場合もある）を指定された位置に描画する。ベクターグラフィックスの描画コマンドの場合、描画部７１は指定された描画方法（直線・矩形・円・ベジエ曲線など）に従って演算を行い、算出された位置へ画素をプロットする。イメージの描画コマンドの場合、描画部７１は圧縮画像を解凍し、解凍したビットマップを指定された位置に指定された大きさで貼り付ける。描画部７１は指定された大きさによって、拡大・縮小の処理を行う。
【００４６】
プリンタ２２はバンドへの描画部６２の処理を、バンドごとに複数のＣＰＵで分担して行う。つまり、上記したように、プリンタ２２は各描画部７１に画像バッファ７３を割り当て、タスクを空いているＣＰＵに割り当てる。ここで言うタスクは、対応したディスプレイリスト７２に格納されている描画コマンドを実行するタスクである。画像バッファ７３には画像が一時的に書き込まれる。
【００４７】
タスクが実行された結果、画像バッファ７３にはバンドの画像が生成される。印刷処理出力部６３は各バンドの画像を合成することで、ページ全体の画像を生成する。印刷処理出力部６３は、この後、生成されたページ全体の画像（ビットマップ）に対して、ＲＧＢからＣＭＹＫに変換する色処理や、中間調処理と呼ばれる処理を行い、印刷を制御するためのデータを生成する。そして、印刷処理出力部６３は生成された印刷を制御するためのデータでエンジン制御を行い、印刷する。
【実施例２】
【００４８】
実施例１では図６に示すように、描画コマンド分割部５４による描画コマンドを分割する処理において、複数のバンドに跨るイメージをバンドの境界に沿って分割する。実施例２では図８に示すように、描画コマンド分割部５４による描画コマンドを分割する処理において、複数のバンドに跨るイメージ１２を、バンドの境界を含むようにオーバーラップさせて分割イメージ１２Ａ〜１２Ｃを生成する。図８はイメージを分割する処理の他の例のイメージ図である。その後、印刷データ生成部５３は分割イメージ１２Ａ、１２Ｂ及び１２Ｃ、それぞれに対して非可逆圧縮を施す。
【００４９】
通常、自然画像などはＪＰＥＧやＪＰＥＧ２０００などに代表される非可逆圧縮を施すことによって、わずかに画質を劣化させる。しかし、非可逆圧縮は可逆圧縮よりも大幅にデータの容量を圧縮することができる。特に、ＪＰＥＧやＪＰＥＧ２０００はブロックやタイルといった画像圧縮時に参照する単位がある。しかし、ブロックやタイルといった画像圧縮時に参照する単位の境界では、顕著に不連続に見える劣化（ＪＰＥＧのブロックノイズ、ＪＰＥＧ２０００のタイル境界歪み）が存在する。
【００５０】
しかし、実施例２では複数のバンドに跨るイメージ１２を、バンドの境界を含むようにオーバーラップさせて分割イメージ１２Ａ〜１２Ｃを生成するオーバーラップ処理によりバンドの境界の外の画素も参照した上で圧縮するため、解凍した後の画像の不連続性が低減される。
【００５１】
実施例２では、プリンタ２２側の処理として、圧縮画像を解凍した後に、バンド境界の近傍画素として復元された二つの画像の画素値の平均値を使うことで、さらに境界の不連続性を低減することもできる。
【００５２】
その他の処理については実施例１と同様であるため、説明を省略する。
【実施例３】
【００５３】
実施例１では、描画コマンド分割部５４による描画コマンドを分割する処理において複数のバンドに跨るイメージをバンドの境界に沿って分割する。実施例３では描画コマンド分割部５４による描画コマンドを分割する処理において複数のバンドに跨るベクターグラフィックスをバンドの境界に沿って分割する。
【００５４】
ここではベクターグラフィックス（ベクター画像）の一例としてのベジエ曲線を分割する処理について説明する。代表的なベクター画像であるベジエ曲線は、制御点をＢ０、Ｂ１、…、Ｂ（Ｎ−１）として以下の式（１）と表現される点の集合である。
【００５５】
【数１】
0005879912.tif 000002
ただし、
【００５６】
【数２】
0005879912.tif 000003
なお、通常最も多く使われる３次ベジエ曲線は、上式（１）及び（２）におけるＮ＝４のケースである。３次ベジエ曲線は、一つの曲線要素が４つの制御点に基づいて図９に示すように定義される。図９は、４つの制御点に基づいて定義されるベジエ曲線の一例のイメージ図である。
【００５７】
また、上式（１）及び（２）を使う以外にも、３次ベジエ曲線は制御点同士の内分点を求め、さらに、求まった点の内分点で曲線上の点の座標を求める方法もある。なお、実際のベジエ曲線は図９に示すような曲線の一要素で定義されることは少なく、いくつかの曲線を連結したものとして定義されることや、曲線で囲まれた領域の塗りつぶしで定義されることが多い。また、実際の描画コマンドには、線の色や線の種類などが追加されて定義される。ベジエ曲線をプロットする描画処理は、一般的に演算量が多く、複数のバンドに跨ったベジエ曲線を伴う描画処理を重複して行うことは好ましくない。よって、描画コマンド分割部５４はベジエ曲線を伴う描画コマンドの重複を最小限にして分割することで処理時間を短縮できる。
【００５８】
３次ベジエ曲線の一要素は、４つの制御点からプロット位置が決定される。プロット位置は全て、制御点を元に内分点を求める処理で得られる。したがって、プロットされる点は４つの制御点を結んだ四角形の外に出ることが無い。このため、４つの制御点の全ての座標が、描画しようとするバンドの外にある曲線は、そのバンドを描画する際に除外してよいことになる。
【００５９】
図１０はベジエ曲線を分割する処理の一例のイメージ図である。図１０のベジエ曲線は曲線Ａ〜曲線Ｄからなる閉曲線が上下二つのバンドに跨っている。上のバンドに対応するディスプレイリストには、曲線Ａ及び曲線Ｂの描画コマンドを含めればよい。下のバンドに対応するディスプレイリストには、曲線Ｂ〜曲線Ｄの描画コマンドを含めればよい。図１０の例では、曲線Ｂの描画を重複して行うことになるが、曲線Ａ〜曲線Ｄまでの曲線全てを重複して描画するより処理時間が短縮される。
【００６０】
なお、曲線Ａ〜曲線Ｄで囲まれる領域を塗りつぶすコマンドを分割する場合には、曲線Ａ〜曲線Ｄと、バンド境界とによって囲まれる領域を塗りつぶす２つのコマンドに分割すればよい。つまり、上のバンドに対応するディスプレイリストには、曲線Ａ〜曲線Ｂ及びバンド境界で囲まれる領域を塗りつぶすコマンドを含めればよい。下のバンドに対応するディスプレイリストには、曲線Ｂ〜曲線Ｄ及びバンド境界で囲まれる領域を塗りつぶすコマンドを含めればよい。
【００６１】
（まとめ）
本実施の形態によれば、マルチコアを備えたプリンタ２２による印刷のスループットおよび印刷単位あたりの処理速度を向上できる。また、本実施の形態によれば、プリンタ２２における描画処理において、バンドやブロックなどの描画対象領域に分割した単位で描画する際に、重複して行っていたベクター曲線の描画処理やイメージの描画処理が適切に分割された結果、描画処理を行うＣＰＵの処理負荷が低減するため、印刷のスループットおよび印刷単位あたりの処理速度を向上できる。
【００６２】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【００６３】
１０    曲線
１１、１２    イメージ
１２Ａ〜１２Ｃ    分割イメージ
２０    印刷システム
２１    ＰＣ
２２    プリンタ
２３    ネットワーク
３１    プリンタドライバ
３２    描画処理部
３３    アプリケーション
３４    ＯＳ
４１    入力装置
４２    出力装置
４３    記録媒体読取装置
４４    補助記憶装置
４５    主記憶装置
４６    演算処理装置
４７    インタフェース装置
４８    バス
４９    記録媒体
５１    プリンタ情報取得部
５２    ＵＩによる印刷設定部
５３    印刷データ生成部
５４    描画コマンド分解部
５５    印刷データ転送部
６１    ＰＤＬ解析部
６２−０    バンド０への描画部
６２−１    バンド１への描画部
６３    印刷処理出力部
７１−０、７１−１    描画部
７２−０、７２−１    ディスプレイリスト
７３−０、７３−１    画像バッファ
【先行技術文献】
【特許文献】
【００６４】
【特許文献１】特開２０１０−２８２４８９号公報
【特許文献２】特開２０１０−９２４７２号公報
【図１】
0005879912.tif 000004
【図２】
0005879912.tif 000005
【図３】
0005879912.tif 000006
【図４】
0005879912.tif 000007
【図５】
0005879912.tif 000008
【図６】
0005879912.tif 000009
【図７】
0005879912.tif 000010
【図８】
0005879912.tif 000011
【図９】
0005879912.tif 000012
【図１０】
0005879912.tif 000013