画像形成装置
【課題】 タイルサイズが小数値であっても、ずれの少ないタイリングパタンを描画できる画像形成装置を提供する。
【解決手段】 入力されたタイルパラメータに基づき入力イメージをスケーリングしてタイルイメージを作成するスケーリング部461と、作成されたタイルイメージを格納するイメージ保持部464と、イメージ保持部のタイルイメージを出力イメージの指定位置に貼り付けて、タイリングパタンを描画する描画部460とを備える。イメージ保持部には、サイズの異なる複数のタイルイメージが格納されており、描画部は、描画に使用するタイルイメージをタイルイメージの貼り付けの度に選択する。
【解決手段】 入力されたタイルパラメータに基づき入力イメージをスケーリングしてタイルイメージを作成するスケーリング部461と、作成されたタイルイメージを格納するイメージ保持部464と、イメージ保持部のタイルイメージを出力イメージの指定位置に貼り付けて、タイリングパタンを描画する描画部460とを備える。イメージ保持部には、サイズの異なる複数のタイルイメージが格納されており、描画部は、描画に使用するタイルイメージをタイルイメージの貼り付けの度に選択する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、タイリングパタン機能を有する画像形成装置に関するものである。
【背景技術】
【0002】
従来、三角形や円のように「内部」を有する面図形の描画については、図形の内部をタイルと呼ばれるパタンを繰り返し描画して塗りつぶすようにした、所謂、タイリングパタン機能を備える画像処理装置が知られている(特許文献1)。
【0003】
このタイリングパタンの描画とは、図14に示すように、入力されたイメージをタイリングパラメータ(入力イメージ、タイルサイズ:例えば、6×6(ピクセル)、タイリング枚数:例えば、10×10(枚)、パタンサイズ:例えば、60×60(ピクセル))に基づいて繰り返し規則的に敷き詰めていく手法である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平5−205070号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、上記した従来の描画手法では、入力されるタイルのサイズは全て整数値であると想定して、敷き詰めていた。
このため、例えば、Microsoft社のページ記述言語であるXPS(XML Paper Specification)等をラスタライズした結果、タイルのサイズが小数値になったとしても、タイルサイズに最も近い整数値のタイルを作成して敷き詰めることが行われていた。
【0006】
その理由は、ラスタライズされたイメージの最小単位はピクセルであって、小数値となるタイルサイズは実現不可であるからである。その結果、作成されたタイリングパタンの描画は、実値サイズによるタイリングパタンに対してずれが生じており、期待する描画結果を得ることができなかった。
【0007】
本発明は、上記問題に鑑みなされたもので、タイルサイズが小数値であっても、ずれの量が抑制されたタイリングパタンの描画が行える画像形成装置を提供することを目的としている。
【課題を解決するための手段】
【0008】
すなわち、本発明は、同じパタンを繰り返し描画するタイリングパタン機能を有する画像形成装置であって、入力されたタイリングパラメータに基づき、入力イメージをスケーリングしてタイルイメージを作成するスケーリング部と、作成されたタイルイメージを格納するイメージ保持部と、上記イメージ保持部のタイルイメージを出力イメージの指定位置に貼り付けて、タイリングパタンを描画する描画部とを備え、上記イメージ保持部には、サイズの異なる複数のタイルイメージが格納されており、上記描画部は、描画に使用する上記タイルイメージを該タイルイメージの貼り付けの度に選択することを特徴としている。
【発明の効果】
【0009】
本発明によれば、タイルサイズが小数値の場合には、サイズの異なる複数のタイルイメージを作成し、これらより、期待する描画結果が得られるサイズのタイルイメージを選択して使用するように構成したので、ずれの量を極力抑制したタイリングパタンを描画することができる。
【図面の簡単な説明】
【0010】
【図1】実施例1による画像形成装置の構成を示すブロック図である。
【図2】使用するタイルの選択手順を示す図で、(a)はタイリングパタン、(b)はイメージ参照リスト、(c)はイメージ参照テーブル、(d)イメージ保持リストある。
【図3】実施例1によるタイルパタン作成処理を示すフローチャートである。
【図4】実施例1によるタイルサイズ算出処理を示すフローチャートである。
【図5】実施例1によるタイル作成処理を示すフローチャートである。
【図6】実施例1によるイメージ参照テーブル作成処理を示すフローチャートである。
【図7】パタン参照テーブルとイメージ保持リストの組合せを示す図で、(a)はX、Y方向ともに小数値の場合、(b)はX方向のみ小数値の場合、(c)はY方向のみ小数値の場合、(d)はX、Y方向ともに整数値の場合を示す。
【図8】実施例1によるイメージ参照リスト作成処理を示すフローチャートである。
【図9】イメージ参照リスト作成処理の説明図である。
【図10】実施例1によるタイル貼り付け処理を示すフローチャートである。
【図11】実施例2による画像形成装置の構成を示すブロック図である。
【図12】実施例2によるタイルパラメータ判定処理を示すフローチャートである。
【図13】実施例2によるタイルサイズ算出処理を示すフローチャートである。
【図14】タイリングパタンの描画手順を示す図である。
【図15】解像度変換によるパタンサイズの変化を示す図である。
【図16】タイルサイズの違いによるタイリングパタンの描画結果を示す図で、(a)は期待する描画結果を示し、(b)はタイルサイズの小数部を切り捨てた場合の描画結果を示し、(c)タイルサイズの小数部を切り上げた場合の描画結果を示す。
【発明を実施するための形態】
【0011】
以下、図1〜図16に基づいて本発明に係る画像形成装置の実施の形態を説明する。
【実施例1】
【0012】
先ず、図1、図2を用いて、実施例1による画像形成装置の構成を説明する。図1は、実施例1による画像形成装置の構成を示すブロック図、図2は、使用するタイルの選択手順を示す図である。
図1に示すように、本実施例の画像形成装置は、ホストPC100およびプリンタ500により構成されている。
【0013】
ホストPC100は、アプリケーション200、OS(Operating System)300、プリンタドライバ400を備える。
本構成の画像形成装置では、アプリケーション200より文書データの印刷が指示されると、OS300のスプールファイル生成部310にてスプールファイルが作成される。該スプールファイルは、プリンタドライバ400にてプリンタで印字可能なラスタライズデータに変換された後、プリンタ500に送信される。
【0014】
上記スプールファイルは、描画する図形の形状と、該図形の塗りつぶし手法を定義するための図形データを所定のページ記述言語にて記述したファイルである。
本実施例の塗りつぶし手法では、タイルと呼ばれる縦横数ピクセルで構成される微細なパタンを出力イメージ上に繰り返し敷き詰めることによりタイリングパタンを作成する。
【0015】
尚、上記タイリングパタンは、OS300から入力される入力イメージ、タイルサイズ、タイリング枚数、パタンサイズの4つのパラメータ(タイリングパラメータ)によって定義されている。
すなわち、図14に示すように、入力イメージをタイルサイズに応じてスケーリングすることでタイルを生成し、該タイルをパタンサイズに基づいて指定された領域内にタイリング枚数分繰り返し描画することで、上記タイリングパタンを作成する。
【0016】
プリンタドライバ400は、スプールファイル受信部410、構文解析部420、編集部430、ラスタライズ部440、ラスタライズデータ送信部450、タイリングパタン作成部460、スケーリング部461で構成される。更に、データ構造として、イメージ保持リスト464、イメージ参照テーブル463、イメージ参照リスト462等のデータ保持手段を備える。
【0017】
スプールファイル受信部410は、スプールファイル生成部310が生成したスプールファイルを受信する部分である。
【0018】
構文解析部420は、スプールファイルに記述された図形データを解析する部分である。
【0019】
編集部430は、所定形式の言語にて記述された図形データを、ラスタライズ部440で処理可能な形式に変換し、登録しておく部分である。また、編集部430は、後述するタイリングパタン生成部460にて作成されたタイリングパタン(イメージデータ)を登録されている図形データとともにラスタライズ部440に送出する部分である。
【0020】
ラスタライズ部440は、編集部430より取得した図形データに基づいて、プリンタで印刷可能なラスタ形式のデータ(ラスタライズデータ)を作成する部分である。
【0021】
ラスタライズデータ送信部450は、ラスタライズ部440で作成されたラスタライズデータをプリンタに送信する部分である。
【0022】
タイリングパタン作成部(描画部)460は、編集部430から送られるタイリングパタンの描画指示により、タイリングパタンを作成する部分である。
【0023】
スケーリング部461は、入力イメージをタイルサイズに応じてスケーリングして、タイルのイメージデータ(タイルイメージ)を作成する部分である。
【0024】
イメージ保持リスト(イメージ保持部)464は、タイリングパタン生成部460にて作成されたタイルイメージを格納する部分である。該イメージ保持リスト464では、タイルイメージとそのIDを一次元配列で格納するようになっており、最大4種類のイメージを保持可能である(図2(d)参照)。
【0025】
イメージ参照テーブル463は、タイリングパタンの描画時に参照するタイルを決定するために使用する。該イメージ参照テーブル463は、イメージ保持リスト464を参照するためのIDを2x2の2次元配列で格納するようになっている(図2(c)参照)。
【0026】
イメージ参照リスト462は、タイリングパタン中の各行、各列でタイルとして使用するイメージを参照するために、イメージ参照テーブル463のどの要素を参照するかを決定するために使用する。イメージ参照リスト462は、可変長の1次元配列を有し、X(行)方向、Y(列)方向のそれぞれについて用意されている。
イメージ参照リスト462に格納される値は、タイリングパタンの各行および各列に割り当てられたタイル番号と、それらに対応するイメージ参照テーブル463のインデックスである(図2(b)参照)。
【0027】
ここで、図2を用い、上記したイメージ保持リスト464、イメージ参照テーブル463、イメージ参照リスト462の各データ構造を用いて、使用するタイルイメージの選択手順を説明する。ここでは、例えば、図2(a)に示すタイリングパタンの内の、3行2列目のタイルにつき、タイルイメージを選択する場合を説明する。
【0028】
先ず、X方向のイメージ参照リストからインデックス1を取得し、Y方向のイメージ参照リストからインデックス2を取得する(図2(b))。
【0029】
次ぎに、取得したインデックス1、インデックス2を使用し、イメージ参照テーブル463の1行2列目に格納されているID3を取得する(図2(c))。
【0030】
次いで、取得したID3を使用し、イメージ保持リスト464のID3に対応するイメ−ジ3を選択すべきタイルイメージとする(図2(d))。
【0031】
次に、図3を用い、図2を参照して上記構成の画像形成装置によるタイリングパタンの作成について概略を説明する。図3は、タイルパタン作成処理を示すフローチャートである。尚、以下の処理は、タイリングパタン作成部460とスケーリング部461の制御により実行されるものである。
【0032】
先ず、OS300のスプールファイル生成部310より入力された図形データのタイリングパラメータに基づいて、タイルサイズを算出する(S101)。
次に、S101で算出したタイルサイズに基づいて、タイルを作成する(S102)。
次に、S102で作成したタイルへの参照を行うためのイメージ参照テーブル463を作成する(S103)。
次に、S103で作成したイメージ参照テーブル463への参照を行うためのイメージ参照リスト462を作成する(S104)。
次に、先の処理で作成したイメージ参照テーブル463とイメージ参照リスト462に基づいてタイルの貼り付けを行い、タイリングパタンを作成する(S105)。
【0033】
次に、上記したS101〜S104の各処理(図3)につき、詳細を説明する。
【0034】
図4は、タイルサイズ算出処理(S101の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460(図1)の制御により実行される。
【0035】
先ず、X方向(タイルの幅方向)におけるタイルサイズの算出を行う。
図4において、OS300より入力されたタイリングパラメータのタイル幅の値が整数値であるか否かを判定し(S201)、整数値の場合は、作成するタイル幅として入力されたタイル幅を採用し、該幅入力値をタイル幅1とする(S202)。また、タイル幅2は使用しないため、0としておく(S203)。
【0036】
一方、先のS201の判定で、入力されたタイル幅の値が小数値の場合は、作成するタイル幅の値として計算値を採用し、入力されたタイル幅の小数部を切り捨てた値をタイル幅1とする(S204)。また、該タイル幅の小数部を切り上げた値をタイル幅2とする(S205)。
すなわち、本実施例では、入力されたタイル幅の値が小数値の場合は、小数部を切り捨てた値(floor(タイル幅))と、切り上げた値(ceil(タイル幅))の2種類のタイル幅を使用するようにしている。
【0037】
ここで、S204のfloor(・)は、引数以下の最大の整数を計算する関数(床関数)であり、S205のceil(・)は、引数以上の最小の整数を計算する関数(天井関数)である。引数とは、上記床関数や天井関数を利用して計算する際に、これらの関数に受け渡す値のことであり、ここでは、タイルサイズが渡される。各関数は、受け渡されたタイルサイズの値を元に切り捨て値や切り上げ値の計算を行う。
【0038】
続いて、Y方向(タイルの高さ方向)におけるタイルサイズの算出を行う。算出手順は、X方向の場合と同様である。
先ず、入力されたタイル高の値が整数値であるか否かを判定し(S206)、整数値の場合は、作成するタイル高として入力されたタイル高を採用し、該高さ入力値をタイル高1とする(S207)。また、タイル幅2は使用しないため、0としておく(S208)。
【0039】
一方、先のS206の判定で、入力されたタイル高の値が小数値の場合は、作成するタイル高の値として計算値を採用し、入力されたタイル高の小数部を切り捨てた値をタイル高1とし(S209)、該タイル高の小数部を切り上げた値をタイル高2とする(S210)。
すなわち、本実施例では、入力されたタイル高の値が小数値の場合は、小数部を切り捨てた値(floor(タイル高))と、切り上げた値(ceil(タイル高))の2種類のタイル高を使用するようにしている。
尚、タイル高の算出の際は、上記幅の算出処理と同様に、floor(・)、ceil(・)の各関数が利用される。
【0040】
図5は、タイル作成処理(S102の詳細処理)を示すフローチャートである。係る処理は、スケーリング部461(図1)の制御により実行される。
先ず、イメージ保持リスト464(図1)にタイルイメージを格納しておく際のインデックス(index)と、X方向のループカウンタiと、Y方向のループカウンタjを初期化する(S301〜S303)。
【0041】
次に、タイル幅iとタイル高jを判定し(S304)、タイル幅i、タイル高jの少なくとも何れか一方が0の場合は、処理をS309に移行する。尚、タイル幅iは、図4のタイルサイズ算出処理で作成されたタイル幅1、タイル幅2に対応し、タイル高jは、同じくタイル高1、タイル幅2に対応している。
【0042】
一方、先のS304の判定で、タイル幅iとタイル高jが0でない場合は、次のスケーリング処理(S306)のスケーリングサイズを指定するためのスケーリング幅にタイル幅iを、スケーリング高にタイル高jを設定する(S305)。
【0043】
S306では、先のS305で設定されたスケーリングサイズに基づいてイメージのスケーリング処理を行う。尚、本実施例では、スケーリング処理として、最近傍法やバイリニアフィルタリング法等、公知のアルゴリズムを使用する。
【0044】
次に、スケーリング処理されたイメージを、イメージ参照リスト462の現在のインデックスが指定している箇所に格納し(S307)、インデックスを更新する(S308)。
【0045】
以上の記処理(S304〜S308)を、小数部の切り捨てと切り上げで2回ずつ、それぞれX方向とY方向について繰り返し実行する(S309〜S312)。
【0046】
図6は、イメージ参照テーブル作成処理(S103の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460の制御により実行される。以下、図7を参照して詳細を説明する。図7は、イメージ参照テーブルとイメージ保持リストの組合せを示す図である。
【0047】
図6において、先ず、タイル幅2とタイル高2について判定を行う(S401〜S403)。
【0048】
タイル幅2とタイル高2の値が何れも0の場合、タイル幅とタイル高は整数値で、作成されるタイルも1種類であるから、イメージ保持リスト464に格納されるタイルイメージは1種類(イメージ1のみ)となる。よって、イメージ参照テーブル463には、図7(d)に示すように、全て同じタイルイメージを参照するようにID1が設定される(S404〜S407)。
【0049】
また、タイル幅2が0でタイル高2が0でない場合、タイル幅は整数値で、タイル高は小数値であり、それぞれ幅が同じで高さが異なる2種類のタイルが作成されることになる。
この場合は、図7(c)で示すように、イメージ保持リスト464には、2種類のタイルイメージ(イメージ1、イメージ2)が格納される。イメージ参照テーブル463には、X方向(Xインデックス1、2)について、同じタイルイメージが参照されるように、それぞれID1とID2がそれぞれ設定される(S408〜S411)。
【0050】
また、タイル幅2が0でなく、タイル高2が0の場合は、入力されたタイル高は整数値、タイル幅は小数値であり、高さが同じで幅の異なる2種類のタイルが作成されることになる。
この場合は、図7(b)に示すように、イメージ保持リスト464には、2種類のタイルイメージ(イメージ1、イメージ2)が格納される。イメージ参照テーブル463には、Y方向(Yインデックス1、2)について、同じタイルイメージが参照されるように、それぞれID1とID2が設定される(S412〜S415)。
【0051】
また、タイル幅2とタイル高2が何れも0でない場合は、入力されたタイル幅とタイル高は小数値であり、それぞれ高さと幅が異なる4種類のタイルが作成されることになる。
この場合は、図7(a)で示すように、イメージ保持リスト464に格納されるタイルイメージは4種類となる。イメージ参照テーブル463には、全て異なるタイルイメージが参照されるように、ID1〜ID4が設定される(S416〜S419)。
【0052】
図8は、イメージ参照リスト作成処理(S104の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460の制御により実行される。以下、図9を参照して詳細を説明する。図9は、イメージ参照リスト作成処理の説明図である。
【0053】
先ず、X方向について、イメージ参照リストの作成を行う。
図8において、先ず、作成したイメージ参照リスト462につき、追加されたタイル幅の合計を記録するための一次変数sumを初期化し(S501)、次いで、ループ用のカウンタiを初期化する(S502)。
【0054】
次に、タイルサイズ算出処理(図3のS101)で算出したタイル幅2の値が0であるか否かを判定する(S503)。タイル幅2の値が0の場合は、作成されるタイルの幅は全て等しく、X方向に敷き詰めるタイルは全て同一幅のタイルとなるため、イメージ参照リスト462には、常に1(リストX[i]=1)を設定する(S504)。
【0055】
一方、先のS503の判定で、タイル幅2の値が0でない場合は、幅の異なる複数のタイルが作成されているため、複数のタイルの内、どのタイルを参照するかを決定する。
【0056】
この場合、先ず、下式(1)により、これまでに作成されたイメージ参照リスト462に新たにタイル幅1(小数部の切り捨てにて算出)のタイルを追加した場合の幅の合計値(sum+タイル幅1)と、小数部を有する本来のタイル幅の合計値(i×タイル幅)の差Aを求める(S505)。
[式1]
A=i×タイル幅−(sum+タイル幅1)
【0057】
続いて、下式(2)により、これまでに作成されたイメージ参照リスト462に新たにタイル幅2(小数部の切り上げにて算出)のタイルを追加した場合のタイル幅の合計値(sum+タイル幅2)と、小数部を有する本来のタイル幅の合計値(i×タイル幅)の差Bを求める(S506)。
[式2]
B=i×タイル幅−(sum+タイル幅2)
【0058】
次に、Aの絶対値「abs(A)」とBの絶対値「abs(B)」を比較する(S507)。尚、比較の結果、絶対値が小さい値を持つ方のタイル幅が本来のタイリングパタンに近い結果を得られる採用すべきタイルの幅となる(図9参照)。
【0059】
先のS507の判定で、abs(A)<abs(B)の場合は、タイル幅1のタイルを採用することとし、イメージ参照リスト462にタイル幅1のタイルを参照することを意味する1(リストX[i]=1)を設定する(S508)。また、タイル幅の合計値(sum)に採用するタイル幅1を加える(S509)。
【0060】
一方、先のS507の判定で、abs(A)≧abs(B)の場合(もしくは、abs(A)<abs(B)でない場合)は、タイル幅2のタイルを採用することとし、イメージ参照リスト462にタイル幅2のタイルを参照することを意味する2(リストX[i]=2)を設定する(S510)。また、タイル幅の合計値(sum)に採用するタイル幅2を加える(S511)。
【0061】
以上の処理(S503〜S511)を、X方向のタイル枚数分繰り返し実行する(S512〜S513)。
【0062】
次に、Y方向についてイメージ参照リストの作成を行う。作成手順は、X方向の場合と同様である。
先ず、作成したイメージ参照リスト462につき、追加されたタイル高の合計を記録するための一次変数sumを初期化し(S514)、次いで、ループ用のカウンタiを初期化する(S515)。
【0063】
次に、先のタイルサイズ算出処理(図3のS101)で算出したタイル高2の値が0であるか否かを判定する(S516)。タイル高2の値が0の場合は、作成されるタイルの高さは全て等しく、Y方向に敷き詰めるタイルは全て同一高さのタイルとなるため、イメージ参照リスト462には、常1(リストY[i]=1)を設定する(S517)。
【0064】
一方、先のS516の判定で、タイル高2の値が0でない場合、高さの異なる複数のタイルが作成されることになるため、複数のタイルの内、どのタイルを参照するかを決定する。
【0065】
この場合、先ず、下式(3)により、これまでに作成されたイメージ参照リスト462に新たにタイル高1(小数部の切り捨てにて算出)のタイルを追加した場合のタイル高の合計値(sum+タイル高1)と、小数部を有する本来のタイル高の合計値(i×タイル高)の差を求める(S518)。
[式3]
A’=i×タイル高−(sum+タイル高1)
【0066】
続いて、下式(4)により、これまでに作成されたイメージ参照リスト462に新たにタイル高2(小数部の切り上げにて算出)のタイルを追加した場合のタイル高の合計値(sum+タイル高2)と、小数部を有する本来のタイル高の合計値(i×タイル高)の差B’を求める(S519)。
[式4]
B’=i×タイル高−(sum+タイル高2)
【0067】
次に、A’の絶対値「abs(A’)」とB’の絶対値「abs(B’)」を比較する(S520)。比較の結果、絶対値が小さい値を持つ方のタイル高が本来のタイリングパタンに近い結果を得られる採用すべきタイルの高さとなる。尚、図9では、Y方向(タイル高)のA’、B’について省略している。
【0068】
先のS520の判定で、abs(A’)<abs(B’)の場合は、タイル高1のタイルを採用することとし、イメージ参照リスト462にタイル高1のタイルを参照することを意味する1(リストY[i]=1)を設定する(S521)。また、タイルの高さ合計値(sum)に採用するタイル高1を加える(S522)。
【0069】
一方、先のS520の判定で、abs(A’)≧abs(B’)の場合(もしくは、abs(A’)<abs(B’)でない場合)は、タイル高2のタイルを採用することとし、イメージ参照リスト462にタイル高2のタイルを参照することを意味する2(リストY[i]=2)を設定する(S523)。また、タイルの高さ合計値(sum)に採用するタイル高2を加える(S524)。
【0070】
以上の処理(S516〜S524)を、Y方向のタイル枚数分繰り返し実行する(S525〜S526)。
【0071】
図10は、タイル貼り付け処理(105の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460の制御により実行される。以下、図2を参照して詳細を説明する。
先ず、作業用の変数であるY方向のタイル番号用カウンタj、タイルのY方向の貼り付け位置Y、X方向のタイル番号用カウンタi、タイルのX方向の貼り付け位置Xをそれぞれ初期化する(S601〜S604)。
【0072】
次に、タイル番号に基づき、使用するイメージの選択を行う。
【0073】
先ず、X方向のタイル番号用カウンタiを使用して、Y方向のイメージ参照リスト462からイメージ参照テーブル463のY方向のインデックスY(貼り付け位置Y)を取得する(S605)。
【0074】
次に、Y方向のタイル番号用カウンタjを使用して、X方向のイメージ参照リスト462からイメージ参照テーブル463のX方向のインデックスX(貼り付け位置X)を取得する(S606)。
【0075】
先のS605、S606で取得したインデックスX、インデックスYを使用して、イメージ参照テーブル463からタイルとして使用するイメージのIDを取得する(S607)。また、取得したIDを使用して、イメージ保持リスト464から使用するタイルイメージを取得する(S608)。
【0076】
次に、取得したタイルを貼り付け位置(位置X、位置Y)に貼り付け(S609)、現在の貼り付け位置Xに現在のタイルの幅を加えて次のタイルの貼り付け開始位置を設定し(S610)、X方向のタイル番号用カウンタiを更新する(S611)。
【0077】
以上の処理(S606〜S610)をX方向のタイリング処理が終了する(i>X方向のタイル枚数)まで繰り返し実行する(S611〜S612)。
【0078】
X方向1行分のタイリング処理を終了すると、次の行のタイリング処理を行うために、位置Yに現在のタイル高Yを加え(S613)、Y方向のタイル番号用カウンタjを更新する(S614)。
以上の処理(S603〜S613)を、Y方向のタイリング処理が終了する(j>Y方向のタイル枚数)まで繰り返し実行し、タイリング処理(タイルの貼り付け)が完了する(S614〜S615)。
【0079】
ところで、例えば、Microsoft社のXPSでは、座標系の単位として1/96インチが使用されている。
このため、例えば、6×6単位のパタンを縦横に10枚づつ敷き詰めた60×60単位のタイルをプリンタで印刷解像度600dpi(1単位が1/600インチ)でラスタライズする場合は、タイルサイズとパタンサイズに6.25(=600/96)を乗じて解像度を変換し(スケーリング)、37.5×37.5単位(ピクセル)のタイルを敷き詰めて、375×375単位のパタンを作成する必要がある(図15参照)。
【0080】
ところが、既述したように、ラスタライズされたイメージの最小単位はピクセルであって、小数値となるタイルサイズは実現不可であるから、従来は、小数値の切り捨てにより、最も近い整数値である37ピクセルのタイルを作成して敷き詰める(図16(b)参照)か、若しくは、小数値の切り上げにより、最も近い整数値である38ピクセルのタイルを作成して敷き詰める(図16(c)参照)かの何れかが行われていた。
このため、何れの場合においても描画したタイリングパタンにずれが生じ、期待する描画結果(図16(a)参照)が得られないという問題があった。
【0081】
そこで、実施例1では、タイルサイズが小数値となる場合は、サイズの異なる複数のタイルを作成し、タイルの貼り付けの都度、これら複数のタイルより期待する描画結果が得られるサイズのタイルを選択して使用するようにした。これにより、ずれの量を極力抑制したタイリングパタンを描画することができる。
【実施例2】
【0082】
次に、図11を用いて、実施例2による画像形成装置の構成を説明する。図11は、実施例2による画像形成装置の構成を示すブロック図である。
図11に示すように、実施例2による画像形成装置は、実施例1(図1)の構成に加え、タイルパラメータ判定部465を備える点が実施例1と相異している。また、タイルパラメータ判定部465の追加により、タイリングパタン作成部460によるタイルサイズ算出処理が一部変更されている。実施例1と同様の部分については説明を省略する。
【0083】
上記タイルパラメータ判定部465は、編集部430から入力されタイリングパラメータに基づいて、複数のタイル(タイルサイズの小数部を切り捨てしたサイズのタイルと、小数部を切り上げしたサイズのタイル)を作成するか否かを判定する部分である。
【0084】
次に、図13を用い、本実施例によるタイルサイズの算出処理を説明する。図13は、実施例2によるタイルサイズ算出処理を示すフローチャートである。係る処理は、タイリングパタン作成部460(図11)の制御により実行される。
【0085】
先ず、X方向におけるタイルサイズの算出を行う。
図13において、入力されたタイル幅の値が整数値であるか否かを判定し(S801)、整数値の場合は、作成するタイル幅として入力されたタイル幅を採用し、該幅入力値をタイル幅1とする(S802)。また、タイル幅2は使用しないめ、0としておく(S803)。
【0086】
一方、先のS801の判定で、入力されたタイル幅の値が小数値の場合は、タイル幅の小数部を切り上げた値を使用したときのタイリングパタンのずれ量が許容範囲内であるか否かを判定する(S804)。この判定処理の詳細は後述する。
【0087】
S805で、判定結果がNGであれば、作成するタイル幅の値として計算値を採用し、入力されたタイル幅の小数部を切り捨てた値をタイル幅1とする(S806)。また、該タイル幅の小数部を切り上げた値をタイル幅2とする(S807)。
すなわち、入力されたタイル幅の値が小数値となる場合は、小数部を切り捨てた値(floor(タイル幅))と、小数部を切り上げた値(ceil(タイル幅))の2種類のタイル幅を使用する。
尚、floor(・)は、引数以下の最大の整数を計算する関数であり、ceil(・)は、引数以上の最小の整数をそれぞれ計算する関数である。
【0088】
また、先のS805の判定結果がOKであれば、作成するタイル幅の値として計算値を採用し、入力されたタイル幅の少数値を切り上げた値をタイル幅1とする(S808)。また、タイル幅2は使用しないため、0としておく(S809)。
すなわち、入力されたタイル幅の値が小数値であっても、使用するタイル幅は1種類となる。
【0089】
続いて、上記同様の手順にて、Y方向におけるタイルサイズの算出を行う。
先ず、入力されたタイル高の値が整数値であるか否かを判定し(S810)、整数値の場合は、作成するタイル高として入力されたタイル高を採用し、該高さ入力値をタイル高1とする(S811)。また、タイル高2は使用しないめ、0としておく(S812)。
【0090】
一方、先のS810の判定で、入力されたタイル高の値が小数値の場合は、タイル高の小数部を切り上げた値を使用したときのタイリングパタンのずれ量が許容範囲内であるか否かを判定する(S813)。係る判定処理の詳細は後述する。
【0091】
S814で、判定結果がNGであれば、作成するタイル高の値として、入力されたタイル高の小数部を切り捨てた値をタイル高1とし(S815)、該タイル高の小数部を切り上げた値をタイル高2とする(S816)。
すなわち、入力されたタイル高の値が小数値である場合は、小数部を切り捨てた値(floor(タイル高))と、小数部を切り上げた値(ceil(タイル高))の2種類のタイル高を使用するようにしている。
【0092】
また、先のS814の判定結果がOKであれば、入力されたタイル高の少数値を切り上げた値をタイル高1とし(S817)、タイル高2は使用しないように、0としておく(S818)。
すなわち、入力されたタイル高の値が小数値であっても、使用するタイル高は1種類となる。
【0093】
以上のように、本実施例のタイルサイズ算出処理では、実施例1(図4)と相異し、入力されたタイルサイズが小数値であっても、タイルサイズの小数部を切り上げた値を使用したときのタイリングパタンのずれが許容範囲内であれば、1種類のタイルにてタイリングが行われる。
【0094】
次に、図12を用いて、先のS804、S813(図13)の判定処理につき、その詳細を説明する。図12は、タイルパラメータ判定処理を示すフローチャートである。係る処理は、タイルパラメータ判定部465(図11)の制御により実行される。
【0095】
図12において、先ず、入力されたタイリングパラメータのタイルサイズから小数部を切り上げた値、「タイルサイズA」を計算する(S701)。
【0096】
次に、タイリングパラメータのタイル枚数より、S701で算出した「タイルサイズA」の値のタイルを用いてタイリングした場合のパタンサイズ「sumB=タイル枚数×タイルサイズA」を計算する(S702)。
【0097】
次に、S702で算出したパタンサイズsumBと小数値をそのまま使用した本来のパタンサイズとの差、すなわち、描画パタンのずれ量「diff=sumB−パタンサイズ」を計算する(S703)。次いで、該描画パタンのずれ量「diff」と「タイルサイズ」の比を計算し、その比の値が所定の許容範囲内であるか否かを判定する(S704)。
【0098】
本実施例では、目視でずれの目立たないずれの量、すなわち、タイルサイズAの1%未満を許容範囲とし(S705)、1%以上であれば判定結果をNGとしている(S706)。
【0099】
尚、このずれの許容範囲は、1%未満に限るものではなく、適宜変更可能である。
また、タイルサイズAの算出に小数部の切り上げ値を用いることで、タイルの欠けを生じさせなくできる。
【0100】
以上、実施例2によれば、タイルサイズが小数値であっても、タイリングの結果、描画パタンのずれが許容範囲内であれば、小数部を切り上げた1種類のタイルサイズにてタイルパタンの作成を行うので、実施例1に比べ、作成及び保持するタイルの数(すなわち、イメージデータ量)を少なくでき、処理速度の向上とメモリ消費量の低減を図ることができる。特に、描画パタンのずれの判定に、小数部を切り上げたタイルサイズを使用することで、描画したときのタイルの欠けを防止できる。
【産業上の利用可能性】
【0101】
本実施形態では、図形データの出力機器としてプリンタを例示したが、これに限定されるものではなく、その他、FAX、MPF(Multi Function Peripheral)等にも適用可能である。
また、処理対象としてスプールファイルを説明したが、その他、Postscript、PCL、XPS等のページ記述言語にも適用可能である。
【符号の説明】
【0102】
460 タイリングパタン作成部(描画部)
461 スケーリング部
464 イメージ保持リスト(イメージ保持部)
465 タイルパラメータ判定部(判定部)
【技術分野】
【0001】
本発明は、タイリングパタン機能を有する画像形成装置に関するものである。
【背景技術】
【0002】
従来、三角形や円のように「内部」を有する面図形の描画については、図形の内部をタイルと呼ばれるパタンを繰り返し描画して塗りつぶすようにした、所謂、タイリングパタン機能を備える画像処理装置が知られている(特許文献1)。
【0003】
このタイリングパタンの描画とは、図14に示すように、入力されたイメージをタイリングパラメータ(入力イメージ、タイルサイズ:例えば、6×6(ピクセル)、タイリング枚数:例えば、10×10(枚)、パタンサイズ:例えば、60×60(ピクセル))に基づいて繰り返し規則的に敷き詰めていく手法である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平5−205070号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、上記した従来の描画手法では、入力されるタイルのサイズは全て整数値であると想定して、敷き詰めていた。
このため、例えば、Microsoft社のページ記述言語であるXPS(XML Paper Specification)等をラスタライズした結果、タイルのサイズが小数値になったとしても、タイルサイズに最も近い整数値のタイルを作成して敷き詰めることが行われていた。
【0006】
その理由は、ラスタライズされたイメージの最小単位はピクセルであって、小数値となるタイルサイズは実現不可であるからである。その結果、作成されたタイリングパタンの描画は、実値サイズによるタイリングパタンに対してずれが生じており、期待する描画結果を得ることができなかった。
【0007】
本発明は、上記問題に鑑みなされたもので、タイルサイズが小数値であっても、ずれの量が抑制されたタイリングパタンの描画が行える画像形成装置を提供することを目的としている。
【課題を解決するための手段】
【0008】
すなわち、本発明は、同じパタンを繰り返し描画するタイリングパタン機能を有する画像形成装置であって、入力されたタイリングパラメータに基づき、入力イメージをスケーリングしてタイルイメージを作成するスケーリング部と、作成されたタイルイメージを格納するイメージ保持部と、上記イメージ保持部のタイルイメージを出力イメージの指定位置に貼り付けて、タイリングパタンを描画する描画部とを備え、上記イメージ保持部には、サイズの異なる複数のタイルイメージが格納されており、上記描画部は、描画に使用する上記タイルイメージを該タイルイメージの貼り付けの度に選択することを特徴としている。
【発明の効果】
【0009】
本発明によれば、タイルサイズが小数値の場合には、サイズの異なる複数のタイルイメージを作成し、これらより、期待する描画結果が得られるサイズのタイルイメージを選択して使用するように構成したので、ずれの量を極力抑制したタイリングパタンを描画することができる。
【図面の簡単な説明】
【0010】
【図1】実施例1による画像形成装置の構成を示すブロック図である。
【図2】使用するタイルの選択手順を示す図で、(a)はタイリングパタン、(b)はイメージ参照リスト、(c)はイメージ参照テーブル、(d)イメージ保持リストある。
【図3】実施例1によるタイルパタン作成処理を示すフローチャートである。
【図4】実施例1によるタイルサイズ算出処理を示すフローチャートである。
【図5】実施例1によるタイル作成処理を示すフローチャートである。
【図6】実施例1によるイメージ参照テーブル作成処理を示すフローチャートである。
【図7】パタン参照テーブルとイメージ保持リストの組合せを示す図で、(a)はX、Y方向ともに小数値の場合、(b)はX方向のみ小数値の場合、(c)はY方向のみ小数値の場合、(d)はX、Y方向ともに整数値の場合を示す。
【図8】実施例1によるイメージ参照リスト作成処理を示すフローチャートである。
【図9】イメージ参照リスト作成処理の説明図である。
【図10】実施例1によるタイル貼り付け処理を示すフローチャートである。
【図11】実施例2による画像形成装置の構成を示すブロック図である。
【図12】実施例2によるタイルパラメータ判定処理を示すフローチャートである。
【図13】実施例2によるタイルサイズ算出処理を示すフローチャートである。
【図14】タイリングパタンの描画手順を示す図である。
【図15】解像度変換によるパタンサイズの変化を示す図である。
【図16】タイルサイズの違いによるタイリングパタンの描画結果を示す図で、(a)は期待する描画結果を示し、(b)はタイルサイズの小数部を切り捨てた場合の描画結果を示し、(c)タイルサイズの小数部を切り上げた場合の描画結果を示す。
【発明を実施するための形態】
【0011】
以下、図1〜図16に基づいて本発明に係る画像形成装置の実施の形態を説明する。
【実施例1】
【0012】
先ず、図1、図2を用いて、実施例1による画像形成装置の構成を説明する。図1は、実施例1による画像形成装置の構成を示すブロック図、図2は、使用するタイルの選択手順を示す図である。
図1に示すように、本実施例の画像形成装置は、ホストPC100およびプリンタ500により構成されている。
【0013】
ホストPC100は、アプリケーション200、OS(Operating System)300、プリンタドライバ400を備える。
本構成の画像形成装置では、アプリケーション200より文書データの印刷が指示されると、OS300のスプールファイル生成部310にてスプールファイルが作成される。該スプールファイルは、プリンタドライバ400にてプリンタで印字可能なラスタライズデータに変換された後、プリンタ500に送信される。
【0014】
上記スプールファイルは、描画する図形の形状と、該図形の塗りつぶし手法を定義するための図形データを所定のページ記述言語にて記述したファイルである。
本実施例の塗りつぶし手法では、タイルと呼ばれる縦横数ピクセルで構成される微細なパタンを出力イメージ上に繰り返し敷き詰めることによりタイリングパタンを作成する。
【0015】
尚、上記タイリングパタンは、OS300から入力される入力イメージ、タイルサイズ、タイリング枚数、パタンサイズの4つのパラメータ(タイリングパラメータ)によって定義されている。
すなわち、図14に示すように、入力イメージをタイルサイズに応じてスケーリングすることでタイルを生成し、該タイルをパタンサイズに基づいて指定された領域内にタイリング枚数分繰り返し描画することで、上記タイリングパタンを作成する。
【0016】
プリンタドライバ400は、スプールファイル受信部410、構文解析部420、編集部430、ラスタライズ部440、ラスタライズデータ送信部450、タイリングパタン作成部460、スケーリング部461で構成される。更に、データ構造として、イメージ保持リスト464、イメージ参照テーブル463、イメージ参照リスト462等のデータ保持手段を備える。
【0017】
スプールファイル受信部410は、スプールファイル生成部310が生成したスプールファイルを受信する部分である。
【0018】
構文解析部420は、スプールファイルに記述された図形データを解析する部分である。
【0019】
編集部430は、所定形式の言語にて記述された図形データを、ラスタライズ部440で処理可能な形式に変換し、登録しておく部分である。また、編集部430は、後述するタイリングパタン生成部460にて作成されたタイリングパタン(イメージデータ)を登録されている図形データとともにラスタライズ部440に送出する部分である。
【0020】
ラスタライズ部440は、編集部430より取得した図形データに基づいて、プリンタで印刷可能なラスタ形式のデータ(ラスタライズデータ)を作成する部分である。
【0021】
ラスタライズデータ送信部450は、ラスタライズ部440で作成されたラスタライズデータをプリンタに送信する部分である。
【0022】
タイリングパタン作成部(描画部)460は、編集部430から送られるタイリングパタンの描画指示により、タイリングパタンを作成する部分である。
【0023】
スケーリング部461は、入力イメージをタイルサイズに応じてスケーリングして、タイルのイメージデータ(タイルイメージ)を作成する部分である。
【0024】
イメージ保持リスト(イメージ保持部)464は、タイリングパタン生成部460にて作成されたタイルイメージを格納する部分である。該イメージ保持リスト464では、タイルイメージとそのIDを一次元配列で格納するようになっており、最大4種類のイメージを保持可能である(図2(d)参照)。
【0025】
イメージ参照テーブル463は、タイリングパタンの描画時に参照するタイルを決定するために使用する。該イメージ参照テーブル463は、イメージ保持リスト464を参照するためのIDを2x2の2次元配列で格納するようになっている(図2(c)参照)。
【0026】
イメージ参照リスト462は、タイリングパタン中の各行、各列でタイルとして使用するイメージを参照するために、イメージ参照テーブル463のどの要素を参照するかを決定するために使用する。イメージ参照リスト462は、可変長の1次元配列を有し、X(行)方向、Y(列)方向のそれぞれについて用意されている。
イメージ参照リスト462に格納される値は、タイリングパタンの各行および各列に割り当てられたタイル番号と、それらに対応するイメージ参照テーブル463のインデックスである(図2(b)参照)。
【0027】
ここで、図2を用い、上記したイメージ保持リスト464、イメージ参照テーブル463、イメージ参照リスト462の各データ構造を用いて、使用するタイルイメージの選択手順を説明する。ここでは、例えば、図2(a)に示すタイリングパタンの内の、3行2列目のタイルにつき、タイルイメージを選択する場合を説明する。
【0028】
先ず、X方向のイメージ参照リストからインデックス1を取得し、Y方向のイメージ参照リストからインデックス2を取得する(図2(b))。
【0029】
次ぎに、取得したインデックス1、インデックス2を使用し、イメージ参照テーブル463の1行2列目に格納されているID3を取得する(図2(c))。
【0030】
次いで、取得したID3を使用し、イメージ保持リスト464のID3に対応するイメ−ジ3を選択すべきタイルイメージとする(図2(d))。
【0031】
次に、図3を用い、図2を参照して上記構成の画像形成装置によるタイリングパタンの作成について概略を説明する。図3は、タイルパタン作成処理を示すフローチャートである。尚、以下の処理は、タイリングパタン作成部460とスケーリング部461の制御により実行されるものである。
【0032】
先ず、OS300のスプールファイル生成部310より入力された図形データのタイリングパラメータに基づいて、タイルサイズを算出する(S101)。
次に、S101で算出したタイルサイズに基づいて、タイルを作成する(S102)。
次に、S102で作成したタイルへの参照を行うためのイメージ参照テーブル463を作成する(S103)。
次に、S103で作成したイメージ参照テーブル463への参照を行うためのイメージ参照リスト462を作成する(S104)。
次に、先の処理で作成したイメージ参照テーブル463とイメージ参照リスト462に基づいてタイルの貼り付けを行い、タイリングパタンを作成する(S105)。
【0033】
次に、上記したS101〜S104の各処理(図3)につき、詳細を説明する。
【0034】
図4は、タイルサイズ算出処理(S101の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460(図1)の制御により実行される。
【0035】
先ず、X方向(タイルの幅方向)におけるタイルサイズの算出を行う。
図4において、OS300より入力されたタイリングパラメータのタイル幅の値が整数値であるか否かを判定し(S201)、整数値の場合は、作成するタイル幅として入力されたタイル幅を採用し、該幅入力値をタイル幅1とする(S202)。また、タイル幅2は使用しないため、0としておく(S203)。
【0036】
一方、先のS201の判定で、入力されたタイル幅の値が小数値の場合は、作成するタイル幅の値として計算値を採用し、入力されたタイル幅の小数部を切り捨てた値をタイル幅1とする(S204)。また、該タイル幅の小数部を切り上げた値をタイル幅2とする(S205)。
すなわち、本実施例では、入力されたタイル幅の値が小数値の場合は、小数部を切り捨てた値(floor(タイル幅))と、切り上げた値(ceil(タイル幅))の2種類のタイル幅を使用するようにしている。
【0037】
ここで、S204のfloor(・)は、引数以下の最大の整数を計算する関数(床関数)であり、S205のceil(・)は、引数以上の最小の整数を計算する関数(天井関数)である。引数とは、上記床関数や天井関数を利用して計算する際に、これらの関数に受け渡す値のことであり、ここでは、タイルサイズが渡される。各関数は、受け渡されたタイルサイズの値を元に切り捨て値や切り上げ値の計算を行う。
【0038】
続いて、Y方向(タイルの高さ方向)におけるタイルサイズの算出を行う。算出手順は、X方向の場合と同様である。
先ず、入力されたタイル高の値が整数値であるか否かを判定し(S206)、整数値の場合は、作成するタイル高として入力されたタイル高を採用し、該高さ入力値をタイル高1とする(S207)。また、タイル幅2は使用しないため、0としておく(S208)。
【0039】
一方、先のS206の判定で、入力されたタイル高の値が小数値の場合は、作成するタイル高の値として計算値を採用し、入力されたタイル高の小数部を切り捨てた値をタイル高1とし(S209)、該タイル高の小数部を切り上げた値をタイル高2とする(S210)。
すなわち、本実施例では、入力されたタイル高の値が小数値の場合は、小数部を切り捨てた値(floor(タイル高))と、切り上げた値(ceil(タイル高))の2種類のタイル高を使用するようにしている。
尚、タイル高の算出の際は、上記幅の算出処理と同様に、floor(・)、ceil(・)の各関数が利用される。
【0040】
図5は、タイル作成処理(S102の詳細処理)を示すフローチャートである。係る処理は、スケーリング部461(図1)の制御により実行される。
先ず、イメージ保持リスト464(図1)にタイルイメージを格納しておく際のインデックス(index)と、X方向のループカウンタiと、Y方向のループカウンタjを初期化する(S301〜S303)。
【0041】
次に、タイル幅iとタイル高jを判定し(S304)、タイル幅i、タイル高jの少なくとも何れか一方が0の場合は、処理をS309に移行する。尚、タイル幅iは、図4のタイルサイズ算出処理で作成されたタイル幅1、タイル幅2に対応し、タイル高jは、同じくタイル高1、タイル幅2に対応している。
【0042】
一方、先のS304の判定で、タイル幅iとタイル高jが0でない場合は、次のスケーリング処理(S306)のスケーリングサイズを指定するためのスケーリング幅にタイル幅iを、スケーリング高にタイル高jを設定する(S305)。
【0043】
S306では、先のS305で設定されたスケーリングサイズに基づいてイメージのスケーリング処理を行う。尚、本実施例では、スケーリング処理として、最近傍法やバイリニアフィルタリング法等、公知のアルゴリズムを使用する。
【0044】
次に、スケーリング処理されたイメージを、イメージ参照リスト462の現在のインデックスが指定している箇所に格納し(S307)、インデックスを更新する(S308)。
【0045】
以上の記処理(S304〜S308)を、小数部の切り捨てと切り上げで2回ずつ、それぞれX方向とY方向について繰り返し実行する(S309〜S312)。
【0046】
図6は、イメージ参照テーブル作成処理(S103の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460の制御により実行される。以下、図7を参照して詳細を説明する。図7は、イメージ参照テーブルとイメージ保持リストの組合せを示す図である。
【0047】
図6において、先ず、タイル幅2とタイル高2について判定を行う(S401〜S403)。
【0048】
タイル幅2とタイル高2の値が何れも0の場合、タイル幅とタイル高は整数値で、作成されるタイルも1種類であるから、イメージ保持リスト464に格納されるタイルイメージは1種類(イメージ1のみ)となる。よって、イメージ参照テーブル463には、図7(d)に示すように、全て同じタイルイメージを参照するようにID1が設定される(S404〜S407)。
【0049】
また、タイル幅2が0でタイル高2が0でない場合、タイル幅は整数値で、タイル高は小数値であり、それぞれ幅が同じで高さが異なる2種類のタイルが作成されることになる。
この場合は、図7(c)で示すように、イメージ保持リスト464には、2種類のタイルイメージ(イメージ1、イメージ2)が格納される。イメージ参照テーブル463には、X方向(Xインデックス1、2)について、同じタイルイメージが参照されるように、それぞれID1とID2がそれぞれ設定される(S408〜S411)。
【0050】
また、タイル幅2が0でなく、タイル高2が0の場合は、入力されたタイル高は整数値、タイル幅は小数値であり、高さが同じで幅の異なる2種類のタイルが作成されることになる。
この場合は、図7(b)に示すように、イメージ保持リスト464には、2種類のタイルイメージ(イメージ1、イメージ2)が格納される。イメージ参照テーブル463には、Y方向(Yインデックス1、2)について、同じタイルイメージが参照されるように、それぞれID1とID2が設定される(S412〜S415)。
【0051】
また、タイル幅2とタイル高2が何れも0でない場合は、入力されたタイル幅とタイル高は小数値であり、それぞれ高さと幅が異なる4種類のタイルが作成されることになる。
この場合は、図7(a)で示すように、イメージ保持リスト464に格納されるタイルイメージは4種類となる。イメージ参照テーブル463には、全て異なるタイルイメージが参照されるように、ID1〜ID4が設定される(S416〜S419)。
【0052】
図8は、イメージ参照リスト作成処理(S104の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460の制御により実行される。以下、図9を参照して詳細を説明する。図9は、イメージ参照リスト作成処理の説明図である。
【0053】
先ず、X方向について、イメージ参照リストの作成を行う。
図8において、先ず、作成したイメージ参照リスト462につき、追加されたタイル幅の合計を記録するための一次変数sumを初期化し(S501)、次いで、ループ用のカウンタiを初期化する(S502)。
【0054】
次に、タイルサイズ算出処理(図3のS101)で算出したタイル幅2の値が0であるか否かを判定する(S503)。タイル幅2の値が0の場合は、作成されるタイルの幅は全て等しく、X方向に敷き詰めるタイルは全て同一幅のタイルとなるため、イメージ参照リスト462には、常に1(リストX[i]=1)を設定する(S504)。
【0055】
一方、先のS503の判定で、タイル幅2の値が0でない場合は、幅の異なる複数のタイルが作成されているため、複数のタイルの内、どのタイルを参照するかを決定する。
【0056】
この場合、先ず、下式(1)により、これまでに作成されたイメージ参照リスト462に新たにタイル幅1(小数部の切り捨てにて算出)のタイルを追加した場合の幅の合計値(sum+タイル幅1)と、小数部を有する本来のタイル幅の合計値(i×タイル幅)の差Aを求める(S505)。
[式1]
A=i×タイル幅−(sum+タイル幅1)
【0057】
続いて、下式(2)により、これまでに作成されたイメージ参照リスト462に新たにタイル幅2(小数部の切り上げにて算出)のタイルを追加した場合のタイル幅の合計値(sum+タイル幅2)と、小数部を有する本来のタイル幅の合計値(i×タイル幅)の差Bを求める(S506)。
[式2]
B=i×タイル幅−(sum+タイル幅2)
【0058】
次に、Aの絶対値「abs(A)」とBの絶対値「abs(B)」を比較する(S507)。尚、比較の結果、絶対値が小さい値を持つ方のタイル幅が本来のタイリングパタンに近い結果を得られる採用すべきタイルの幅となる(図9参照)。
【0059】
先のS507の判定で、abs(A)<abs(B)の場合は、タイル幅1のタイルを採用することとし、イメージ参照リスト462にタイル幅1のタイルを参照することを意味する1(リストX[i]=1)を設定する(S508)。また、タイル幅の合計値(sum)に採用するタイル幅1を加える(S509)。
【0060】
一方、先のS507の判定で、abs(A)≧abs(B)の場合(もしくは、abs(A)<abs(B)でない場合)は、タイル幅2のタイルを採用することとし、イメージ参照リスト462にタイル幅2のタイルを参照することを意味する2(リストX[i]=2)を設定する(S510)。また、タイル幅の合計値(sum)に採用するタイル幅2を加える(S511)。
【0061】
以上の処理(S503〜S511)を、X方向のタイル枚数分繰り返し実行する(S512〜S513)。
【0062】
次に、Y方向についてイメージ参照リストの作成を行う。作成手順は、X方向の場合と同様である。
先ず、作成したイメージ参照リスト462につき、追加されたタイル高の合計を記録するための一次変数sumを初期化し(S514)、次いで、ループ用のカウンタiを初期化する(S515)。
【0063】
次に、先のタイルサイズ算出処理(図3のS101)で算出したタイル高2の値が0であるか否かを判定する(S516)。タイル高2の値が0の場合は、作成されるタイルの高さは全て等しく、Y方向に敷き詰めるタイルは全て同一高さのタイルとなるため、イメージ参照リスト462には、常1(リストY[i]=1)を設定する(S517)。
【0064】
一方、先のS516の判定で、タイル高2の値が0でない場合、高さの異なる複数のタイルが作成されることになるため、複数のタイルの内、どのタイルを参照するかを決定する。
【0065】
この場合、先ず、下式(3)により、これまでに作成されたイメージ参照リスト462に新たにタイル高1(小数部の切り捨てにて算出)のタイルを追加した場合のタイル高の合計値(sum+タイル高1)と、小数部を有する本来のタイル高の合計値(i×タイル高)の差を求める(S518)。
[式3]
A’=i×タイル高−(sum+タイル高1)
【0066】
続いて、下式(4)により、これまでに作成されたイメージ参照リスト462に新たにタイル高2(小数部の切り上げにて算出)のタイルを追加した場合のタイル高の合計値(sum+タイル高2)と、小数部を有する本来のタイル高の合計値(i×タイル高)の差B’を求める(S519)。
[式4]
B’=i×タイル高−(sum+タイル高2)
【0067】
次に、A’の絶対値「abs(A’)」とB’の絶対値「abs(B’)」を比較する(S520)。比較の結果、絶対値が小さい値を持つ方のタイル高が本来のタイリングパタンに近い結果を得られる採用すべきタイルの高さとなる。尚、図9では、Y方向(タイル高)のA’、B’について省略している。
【0068】
先のS520の判定で、abs(A’)<abs(B’)の場合は、タイル高1のタイルを採用することとし、イメージ参照リスト462にタイル高1のタイルを参照することを意味する1(リストY[i]=1)を設定する(S521)。また、タイルの高さ合計値(sum)に採用するタイル高1を加える(S522)。
【0069】
一方、先のS520の判定で、abs(A’)≧abs(B’)の場合(もしくは、abs(A’)<abs(B’)でない場合)は、タイル高2のタイルを採用することとし、イメージ参照リスト462にタイル高2のタイルを参照することを意味する2(リストY[i]=2)を設定する(S523)。また、タイルの高さ合計値(sum)に採用するタイル高2を加える(S524)。
【0070】
以上の処理(S516〜S524)を、Y方向のタイル枚数分繰り返し実行する(S525〜S526)。
【0071】
図10は、タイル貼り付け処理(105の詳細処理)を示すフローチャートである。係る処理は、タイリングパタン作成部460の制御により実行される。以下、図2を参照して詳細を説明する。
先ず、作業用の変数であるY方向のタイル番号用カウンタj、タイルのY方向の貼り付け位置Y、X方向のタイル番号用カウンタi、タイルのX方向の貼り付け位置Xをそれぞれ初期化する(S601〜S604)。
【0072】
次に、タイル番号に基づき、使用するイメージの選択を行う。
【0073】
先ず、X方向のタイル番号用カウンタiを使用して、Y方向のイメージ参照リスト462からイメージ参照テーブル463のY方向のインデックスY(貼り付け位置Y)を取得する(S605)。
【0074】
次に、Y方向のタイル番号用カウンタjを使用して、X方向のイメージ参照リスト462からイメージ参照テーブル463のX方向のインデックスX(貼り付け位置X)を取得する(S606)。
【0075】
先のS605、S606で取得したインデックスX、インデックスYを使用して、イメージ参照テーブル463からタイルとして使用するイメージのIDを取得する(S607)。また、取得したIDを使用して、イメージ保持リスト464から使用するタイルイメージを取得する(S608)。
【0076】
次に、取得したタイルを貼り付け位置(位置X、位置Y)に貼り付け(S609)、現在の貼り付け位置Xに現在のタイルの幅を加えて次のタイルの貼り付け開始位置を設定し(S610)、X方向のタイル番号用カウンタiを更新する(S611)。
【0077】
以上の処理(S606〜S610)をX方向のタイリング処理が終了する(i>X方向のタイル枚数)まで繰り返し実行する(S611〜S612)。
【0078】
X方向1行分のタイリング処理を終了すると、次の行のタイリング処理を行うために、位置Yに現在のタイル高Yを加え(S613)、Y方向のタイル番号用カウンタjを更新する(S614)。
以上の処理(S603〜S613)を、Y方向のタイリング処理が終了する(j>Y方向のタイル枚数)まで繰り返し実行し、タイリング処理(タイルの貼り付け)が完了する(S614〜S615)。
【0079】
ところで、例えば、Microsoft社のXPSでは、座標系の単位として1/96インチが使用されている。
このため、例えば、6×6単位のパタンを縦横に10枚づつ敷き詰めた60×60単位のタイルをプリンタで印刷解像度600dpi(1単位が1/600インチ)でラスタライズする場合は、タイルサイズとパタンサイズに6.25(=600/96)を乗じて解像度を変換し(スケーリング)、37.5×37.5単位(ピクセル)のタイルを敷き詰めて、375×375単位のパタンを作成する必要がある(図15参照)。
【0080】
ところが、既述したように、ラスタライズされたイメージの最小単位はピクセルであって、小数値となるタイルサイズは実現不可であるから、従来は、小数値の切り捨てにより、最も近い整数値である37ピクセルのタイルを作成して敷き詰める(図16(b)参照)か、若しくは、小数値の切り上げにより、最も近い整数値である38ピクセルのタイルを作成して敷き詰める(図16(c)参照)かの何れかが行われていた。
このため、何れの場合においても描画したタイリングパタンにずれが生じ、期待する描画結果(図16(a)参照)が得られないという問題があった。
【0081】
そこで、実施例1では、タイルサイズが小数値となる場合は、サイズの異なる複数のタイルを作成し、タイルの貼り付けの都度、これら複数のタイルより期待する描画結果が得られるサイズのタイルを選択して使用するようにした。これにより、ずれの量を極力抑制したタイリングパタンを描画することができる。
【実施例2】
【0082】
次に、図11を用いて、実施例2による画像形成装置の構成を説明する。図11は、実施例2による画像形成装置の構成を示すブロック図である。
図11に示すように、実施例2による画像形成装置は、実施例1(図1)の構成に加え、タイルパラメータ判定部465を備える点が実施例1と相異している。また、タイルパラメータ判定部465の追加により、タイリングパタン作成部460によるタイルサイズ算出処理が一部変更されている。実施例1と同様の部分については説明を省略する。
【0083】
上記タイルパラメータ判定部465は、編集部430から入力されタイリングパラメータに基づいて、複数のタイル(タイルサイズの小数部を切り捨てしたサイズのタイルと、小数部を切り上げしたサイズのタイル)を作成するか否かを判定する部分である。
【0084】
次に、図13を用い、本実施例によるタイルサイズの算出処理を説明する。図13は、実施例2によるタイルサイズ算出処理を示すフローチャートである。係る処理は、タイリングパタン作成部460(図11)の制御により実行される。
【0085】
先ず、X方向におけるタイルサイズの算出を行う。
図13において、入力されたタイル幅の値が整数値であるか否かを判定し(S801)、整数値の場合は、作成するタイル幅として入力されたタイル幅を採用し、該幅入力値をタイル幅1とする(S802)。また、タイル幅2は使用しないめ、0としておく(S803)。
【0086】
一方、先のS801の判定で、入力されたタイル幅の値が小数値の場合は、タイル幅の小数部を切り上げた値を使用したときのタイリングパタンのずれ量が許容範囲内であるか否かを判定する(S804)。この判定処理の詳細は後述する。
【0087】
S805で、判定結果がNGであれば、作成するタイル幅の値として計算値を採用し、入力されたタイル幅の小数部を切り捨てた値をタイル幅1とする(S806)。また、該タイル幅の小数部を切り上げた値をタイル幅2とする(S807)。
すなわち、入力されたタイル幅の値が小数値となる場合は、小数部を切り捨てた値(floor(タイル幅))と、小数部を切り上げた値(ceil(タイル幅))の2種類のタイル幅を使用する。
尚、floor(・)は、引数以下の最大の整数を計算する関数であり、ceil(・)は、引数以上の最小の整数をそれぞれ計算する関数である。
【0088】
また、先のS805の判定結果がOKであれば、作成するタイル幅の値として計算値を採用し、入力されたタイル幅の少数値を切り上げた値をタイル幅1とする(S808)。また、タイル幅2は使用しないため、0としておく(S809)。
すなわち、入力されたタイル幅の値が小数値であっても、使用するタイル幅は1種類となる。
【0089】
続いて、上記同様の手順にて、Y方向におけるタイルサイズの算出を行う。
先ず、入力されたタイル高の値が整数値であるか否かを判定し(S810)、整数値の場合は、作成するタイル高として入力されたタイル高を採用し、該高さ入力値をタイル高1とする(S811)。また、タイル高2は使用しないめ、0としておく(S812)。
【0090】
一方、先のS810の判定で、入力されたタイル高の値が小数値の場合は、タイル高の小数部を切り上げた値を使用したときのタイリングパタンのずれ量が許容範囲内であるか否かを判定する(S813)。係る判定処理の詳細は後述する。
【0091】
S814で、判定結果がNGであれば、作成するタイル高の値として、入力されたタイル高の小数部を切り捨てた値をタイル高1とし(S815)、該タイル高の小数部を切り上げた値をタイル高2とする(S816)。
すなわち、入力されたタイル高の値が小数値である場合は、小数部を切り捨てた値(floor(タイル高))と、小数部を切り上げた値(ceil(タイル高))の2種類のタイル高を使用するようにしている。
【0092】
また、先のS814の判定結果がOKであれば、入力されたタイル高の少数値を切り上げた値をタイル高1とし(S817)、タイル高2は使用しないように、0としておく(S818)。
すなわち、入力されたタイル高の値が小数値であっても、使用するタイル高は1種類となる。
【0093】
以上のように、本実施例のタイルサイズ算出処理では、実施例1(図4)と相異し、入力されたタイルサイズが小数値であっても、タイルサイズの小数部を切り上げた値を使用したときのタイリングパタンのずれが許容範囲内であれば、1種類のタイルにてタイリングが行われる。
【0094】
次に、図12を用いて、先のS804、S813(図13)の判定処理につき、その詳細を説明する。図12は、タイルパラメータ判定処理を示すフローチャートである。係る処理は、タイルパラメータ判定部465(図11)の制御により実行される。
【0095】
図12において、先ず、入力されたタイリングパラメータのタイルサイズから小数部を切り上げた値、「タイルサイズA」を計算する(S701)。
【0096】
次に、タイリングパラメータのタイル枚数より、S701で算出した「タイルサイズA」の値のタイルを用いてタイリングした場合のパタンサイズ「sumB=タイル枚数×タイルサイズA」を計算する(S702)。
【0097】
次に、S702で算出したパタンサイズsumBと小数値をそのまま使用した本来のパタンサイズとの差、すなわち、描画パタンのずれ量「diff=sumB−パタンサイズ」を計算する(S703)。次いで、該描画パタンのずれ量「diff」と「タイルサイズ」の比を計算し、その比の値が所定の許容範囲内であるか否かを判定する(S704)。
【0098】
本実施例では、目視でずれの目立たないずれの量、すなわち、タイルサイズAの1%未満を許容範囲とし(S705)、1%以上であれば判定結果をNGとしている(S706)。
【0099】
尚、このずれの許容範囲は、1%未満に限るものではなく、適宜変更可能である。
また、タイルサイズAの算出に小数部の切り上げ値を用いることで、タイルの欠けを生じさせなくできる。
【0100】
以上、実施例2によれば、タイルサイズが小数値であっても、タイリングの結果、描画パタンのずれが許容範囲内であれば、小数部を切り上げた1種類のタイルサイズにてタイルパタンの作成を行うので、実施例1に比べ、作成及び保持するタイルの数(すなわち、イメージデータ量)を少なくでき、処理速度の向上とメモリ消費量の低減を図ることができる。特に、描画パタンのずれの判定に、小数部を切り上げたタイルサイズを使用することで、描画したときのタイルの欠けを防止できる。
【産業上の利用可能性】
【0101】
本実施形態では、図形データの出力機器としてプリンタを例示したが、これに限定されるものではなく、その他、FAX、MPF(Multi Function Peripheral)等にも適用可能である。
また、処理対象としてスプールファイルを説明したが、その他、Postscript、PCL、XPS等のページ記述言語にも適用可能である。
【符号の説明】
【0102】
460 タイリングパタン作成部(描画部)
461 スケーリング部
464 イメージ保持リスト(イメージ保持部)
465 タイルパラメータ判定部(判定部)
【特許請求の範囲】
【請求項1】
同じパタンを繰り返し描画するタイリングパタン機能を有する画像形成装置であって、
入力されたタイリングパラメータに基づき、入力イメージをスケーリングしてタイルイメージを作成するスケーリング部と、
作成されたタイルイメージを格納するイメージ保持部と、
前記イメージ保持部のタイルイメージを出力イメージの指定位置に貼り付けて、タイリングパタンを描画する描画部とを備え、
前記イメージ保持部には、サイズの異なる複数のタイルイメージが格納されており、
前記描画部は、描画に使用する前記タイルイメージを、該タイルイメージの貼り付けの度に複数のタイルイメージから選択することを特徴とする画像形成装置。
【請求項2】
前記複数のタイルイメージは、前記タイリングパラメータのタイルサイズにつき、小数部を切り捨てた値のタイルイメージと小数部を切り上げた値のタイルイメージであることを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記タイリングパラメータに基づき算出したタイリングパタンのずれ量より、前記サイズの異なる複数のタイルイメージを作成するか否かを判定する判定部を備え、
前記判定部の判定結果に基づいて作成するタイルイメージの数を決定することを特徴とする請求項1または2に記載の画像形成装置。
【請求項4】
前記タイリングパタンのずれ量は、入力された前記タイルサイズを使用したときのタイリングパタンサイズと該タイルサイズの小数部を切り上げた値を使用したときのタイリングパタンサイズとの差分であることを特徴とする請求項3に記載の画像形成装置。
【請求項1】
同じパタンを繰り返し描画するタイリングパタン機能を有する画像形成装置であって、
入力されたタイリングパラメータに基づき、入力イメージをスケーリングしてタイルイメージを作成するスケーリング部と、
作成されたタイルイメージを格納するイメージ保持部と、
前記イメージ保持部のタイルイメージを出力イメージの指定位置に貼り付けて、タイリングパタンを描画する描画部とを備え、
前記イメージ保持部には、サイズの異なる複数のタイルイメージが格納されており、
前記描画部は、描画に使用する前記タイルイメージを、該タイルイメージの貼り付けの度に複数のタイルイメージから選択することを特徴とする画像形成装置。
【請求項2】
前記複数のタイルイメージは、前記タイリングパラメータのタイルサイズにつき、小数部を切り捨てた値のタイルイメージと小数部を切り上げた値のタイルイメージであることを特徴とする請求項1に記載の画像形成装置。
【請求項3】
前記タイリングパラメータに基づき算出したタイリングパタンのずれ量より、前記サイズの異なる複数のタイルイメージを作成するか否かを判定する判定部を備え、
前記判定部の判定結果に基づいて作成するタイルイメージの数を決定することを特徴とする請求項1または2に記載の画像形成装置。
【請求項4】
前記タイリングパタンのずれ量は、入力された前記タイルサイズを使用したときのタイリングパタンサイズと該タイルサイズの小数部を切り上げた値を使用したときのタイリングパタンサイズとの差分であることを特徴とする請求項3に記載の画像形成装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2011−243114(P2011−243114A)
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願番号】特願2010−116553(P2010−116553)
【出願日】平成22年5月20日(2010.5.20)
【出願人】(591044164)株式会社沖データ (2,444)
【Fターム(参考)】
【公開日】平成23年12月1日(2011.12.1)
【国際特許分類】
【出願日】平成22年5月20日(2010.5.20)
【出願人】(591044164)株式会社沖データ (2,444)
【Fターム(参考)】
[ Back to top ]