JP6598546B2 - 画像処理装置、画像処理方法及びプログラム - Google Patents

画像処理装置、画像処理方法及びプログラム Download PDF

Info

Publication number
JP6598546B2
JP6598546B2 JP2015142797A JP2015142797A JP6598546B2 JP 6598546 B2 JP6598546 B2 JP 6598546B2 JP 2015142797 A JP2015142797 A JP 2015142797A JP 2015142797 A JP2015142797 A JP 2015142797A JP 6598546 B2 JP6598546 B2 JP 6598546B2
Authority
JP
Japan
Prior art keywords
tile
width
axis direction
coordinate system
component
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
JP2015142797A
Other languages
English (en)
Other versions
JP2017027193A (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 JP2015142797A priority Critical patent/JP6598546B2/ja
Priority to US15/211,757 priority patent/US10540793B2/en
Publication of JP2017027193A publication Critical patent/JP2017027193A/ja
Application granted granted Critical
Publication of JP6598546B2 publication Critical patent/JP6598546B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Description

本発明は、画像処理装置、画像処理方法及びプログラムに関する。
従来、ラスタ画像のレンダリング技術の一つとして、描画対象に指定された一つ又は複数のオブジェクトを、タイル状に繰り返し描画してラスタ画像を生成するようなタイル描画技術が知られている。一例として、非特許文献1のOpenXPS(Open XML Paper Specification)では、描画対象のオブジェクトの属性として、タイル描画を指定可能となされている。また、特許文献1には、タイル描画対象に指定された一つ又は複数のオブジェクトのパスから、ラスタ画像の解像度にスケーリングした一つ又は複数のビットマップのタイル画像を生成して、そのタイル画像を並べる技術が開示されている。
特開2013−161509号公報
TC46: "Open XML Paper Specification", Standard ECMA−388, June 2009.
ところで、特許文献1の技術のようにラスタ化されたビットマップのタイル画像を並べるのではなく、タイル描画対象のオブジェクトのパスをタイル毎に配置し、それらタイル毎に配置されたオブジェクトのパスからラスタ画像を生成する方法も考えられる。この方法では、各オブジェクトから各タイルのエッジを生成し、それらタイル毎のエッジをずらしながら配置して、それら配置された各エッジの位置に、各エッジに各々対応したオブジェクトのパスに基づくタイルを描画する。しかしながら、この方法の場合、各タイルのエッジを配置する際に、それら各タイルのエッジの配置座標が、ラスタ画像の解像度における各ピクセル単位の座標幅より小さい幅で徐々にずれていくことがある。この場合、描画結果として得られる各タイル画像は、所々でタイルの大きさが僅かに異なった画像や、タイル間に僅かに隙間又は重なりが生じた画像になってしまう虞がある。このように所々でタイルの大きさが異なったりタイル間に隙間又は重なりが生じたりした描画結果の画像は、見た目に良好な画像とは言えない。
一方で、前述した特許文献1に記載の技術の場合は、ラスタ画像の解像度にスケーリングしたビットマップのタイル画像が配置されるため、上述したオブジェクトのパスを配置してラスタ画像を生成する方法のような問題は起き難い。しかしながら、特許文献1に記載の技術の場合は、ラスタ画像の解像度のデータ量が多いビットマップ画像を、レンダリング動作中に保持しておかなければならないため、ラスタ画像の描画の際に使用されるメモリ量が大きくなってしまう。
本発明は、このような問題点に鑑みてなされたものであり、ラスタ画像の描画の際に、データ量が多いビットマップ画像を保持する必要がなく、良好な描画結果の画像を生成可能とする画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
本発明の画像処理装置は、タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのタイル描画命令を取得する取得手段と、前記取得されたタイル描画命令に基づいて前記オブジェクトがタイル描画されることになった場合の、ラスタ画像の座標系における前記タイルのx軸方向とy軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断する判断手段と、前記タイルのx軸方向とy軸方向の幅が前記整数の幅にならない場合には、前記取得されたタイル描画命令を、前記ラスタ画像の座標系における前記タイルのx軸方向とy軸方向の幅を前記整数の幅にするタイル描画命令に変更する変更手段とを有することを特徴とする。
本発明によれば、ラスタ画像の描画の際に、データ量が多いビットマップ画像を保持する必要がなく、良好な描画結果の画像を生成することができる。
実施形態の画像処理装置の概略構成例を示す図である。 実施形態の画像処理装置のデータフローを示す図である。 変更前のタイル描画命令のパラメータの形式を示す図である。 変更前のタイル描画命令のパラメータの一具体例を示す図である。 変更前のタイル描画命令によるタイル描画の一例を示す図である。 タイル描画命令を変更する手順を示すフローチャートである。 タイルサイズの幅が整数の幅でない場合の変更のフローチャートである。 変更後のタイル描画命令のパラメータの形式を示す図である。 変更後のタイル描画命令のパラメータの一例を示す図である。 タイル座標変換行列のうちの一つを選択する際のフローチャートである。 変更後のタイル描画命令によるタイル描画の一例を示す図である。 90度回転を含むタイル描画命令のパラメータの形式を示す図である。 任意の回転を含むタイル描画命令のパラメータの形式を示す図である。
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
<第1の実施形態>
図1は、第1の実施形態における画像処理装置100の概略構成例を示す図である。また、図2は、画像処理装置100のデータフローを示す図である。
図1及び図2において、入力部101は、画像処理装置100に接続されている外部装置から入力データ200を受け取る。解釈部102は、入力部101で受け取った入力データ200を解釈して描画命令201を抽出する。本実施形態の場合、入力部101と解釈部102は、取得手段の一例であり、入力データ200から、タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのベクター形式のタイル描画命令を取得する。なお、本実施形態における入力データ200は、一例としてPDL(Page Description Language)で記述されているとする。この入力データ200の好適なフォーマットは例えばOpenXPSであり、描画命令201は該OpenXPSのオブジェクトである。
描画命令変更部103は、制御手段と変更手段の一例であり、解釈部102により抽出された描画命令201を、必要に応じて変更する。描画命令変更部103における描画命令変更処理の詳細については後述する。
なお、以下の説明では、解釈部102により入力データ200から抽出された描画命令201、つまり描画命令変更部103へ入力する描画命令を、特に「入力描画命令」と表記する。また、描画命令変更部103による描画命令変更処理が必要なく、解釈部102で入力データ200から抽出された描画命令が、描画命令変更部103で変更されずにそのまま出力される場合の描画命令についても同様に「入力描画命令」と表記する。一方、本実施形態では、解釈部102で入力データ200から抽出された描画命令が、描画命令変更部103で変更された後の描画命令を、特に「変更済み描画命令」と表記することとする。なお、入力描画命令と変更済み描画命令の参照番号については同じ番号を用いることとする。
ラスタ画像処理部104は、描画命令変更部103により変更された後の変更済み描画命令、又は、変更されなかった場合の入力描画命令を基に、ラスタ画像202を生成する。出力部105は、ラスタ画像処理部104により生成されたラスタ画像202に対して、ハーフトーン処理等の画像処理を施して出力データ203を形成し、出力する。
なお、第1の実施形態における画像処理装置100は、一例としてMFP(Multi Function Printer)であり、出力部105は、記録紙に印刷することで出力データ203の出力を行う。入力部101、解釈部102、描画命令変更部103、ラスタ画像処理部104、出力部105は、それらの機能に対応した各種プログラムをRAM(Random Access Memory)にロードして、CPUが実行することで実現される。また、ラスタ画像処理部104は、CPUではなく、ラスタ画像を生成するためのASIC(Application Specific Integrated Circuit)で実現されてもよい。また、画像処理装置100は、コンピュータにより実現されてもよい。また、画像処理装置100は、ディスプレイ等の表示装置にデータを出力してもよい。
ここで、本実施形態の画像処理装置100は、タイルを描画する際、タイル描画対象のオブジェクトのパスをタイル毎に配置して、それらタイル毎に配置されたオブジェクトのパスからラスタ画像を生成する手法を採用している。この手法では、前述したように、各オブジェクトから各タイルのエッジを生成し、それらタイル毎のエッジをずらしながら配置して、それら配置された各エッジの位置に、各エッジに各々対応したオブジェクトのパスに基づくタイルを描画する。ただし、本実施形態の画像処理装置100は、各エッジの配置座標と大きさが、ラスタ画像の座標系における整数となるように、入力描画命令201を変更可能となされている。具体的には、描画命令変更部103は、取得されたタイル描画命令に基づいてオブジェクトがタイル描画されることを想定した場合に、ラスタ画像の座標系におけるタイルのx軸方向とy軸方向の幅が整数の幅になるか否かを判断する。そして、タイルのx軸方向とy軸方向の幅が整数の幅にならない場合、描画命令変更部103は、タイル描画命令を、オブジェクトが描画される際にタイルのx軸方向とy軸方向の幅が整数の幅になるような描画命令に変更する。
図3は、解釈部102にて入力データ200から抽出された入力描画命令201に、タイル描画命令が含まれていた場合に、そのタイル描画命令のパラメータの形式の一例を示す図である。
この図3に示したタイル描画命令において、タイル原点300の「x」と「y」は、入力データ200の座標系(以下、入力座標系と表記する。)で表された、タイル描画の開始座標のx座標とy座標である。タイル範囲301の「width」と「height」は、入力座標系で表された、タイル描画が行われるx軸方向の座標幅(以下、横幅と表記する。)とy方向の座標幅(以下、縦幅と表記する。)である。そして、ラスタ画像202の座標系(デバイス座標系)におけるタイル原点300とタイル範囲301の座標は、入力データ200からラスタ画像202への座標変換により求められる。一例として、入力データ200の座標の単位が1/96インチであり、タイル描画の回転及び余白が無い600dpiのラスタ画像202を生成するような場合、入力データ200の座標は、600/96倍されることになる。なお、後述の図4、図5では、一例として入力データ200の座標の単位が1/96インチで、タイル描画の回転及び余白が無い192dpiのラスタ画像202を生成する場合、つまり入力データ200の座標を192/96倍=2倍にする例を挙げている。
図3のタイル座標変換行列302は、タイル描画対象に指定された一つ又は複数のオブジェクトを、入力座標系から、ラスタ画像202の座標系(以下、デバイス座標系と表記する。)へ変換する際に用いられる座標変換行列である。タイル座標変換行列302は、いわゆるアフィン変換行列であり、この行列のa成分はx方向の変倍率、d成分はy方向の変倍率を表している。また、図3のタイル座標変換行列302の例では、a成分とd成分を除く、他の成分は全て「0」となされている。すなわち、この図3に示したタイル描画命令は、タイル描画が回転と移動を含まない場合のタイル座標変換行列302を有する例となされている。
以下、タイル描画命令のパラメータの具体例を挙げ、ラスタ画像処理部104が、そのタイル描画命令に基づくレンダリングによりタイル描画を行う例を、図4と図5(A)、図5(B)を参照しながら説明する。図4は、入力描画命令201に含まれている、図3に示したタイル描画命令のパラメータの一具体例を示す図である。この図4の例の場合、タイル原点400の座標は(1,2)、タイル範囲は(6,3)、タイル座標変換行列402のa成分は1.5、d成分は1.5となされている。
図5(A)は、タイル描画対象に指定されたオブジェクトの一例を示している。図5(A)に例示したオブジェクトは、その形状が直角二等辺三角形となされている。また、図5(A)のオブジェクトにおいて、直角二等辺三角形の頂点を共有する二つの等辺は、それぞれ2ピクセル分の長さに指定され、一方の等辺が入力座標系のx軸方向に、他方の等辺が入力座標系のy軸方向に指定されているとする。そして、タイル描画は、直角二等辺三角形の頂点から開始されるとする。
図5(B)は、ラスタ画像処理部104が、図4のパラメータで図5(A)のオブジェクトをレンダリングした場合の描画結果の一例を示す図である。図5(B)中の格子は、ラスタ画像202における各ピクセルの境界を表し、図5(B)中のx軸方向の数字は図の左上を原点とするデバイス座標系におけるピクセル単位のx座標値を、y軸方向の数字はピクセル単位のy座標値を表している。また、図5(B)の例において、図中ドットパターンが描かれているピクセルは、オブジェクトのレンダリングにより描画されるタイルを構成しているピクセルであることを表している。なお、ラスタ画像202の各ピクセルが、タイルを構成するピクセルとなるか否かは、タイル描画対象のオブジェクトがラスタ画像202において各ピクセルの中心点に掛かっているか否かで判断するものとする。オブジェクトがラスタ画像202においてピクセルの中心点に掛かっている場合、そのピクセルはタイルを構成するピクセルとなされる。
また、図4及び図5(A)、図5(B)では、入力データ200の入力座標系からラスタ画像202のデバイス座標系への変換は、x方向とy方向ともに2倍に変倍される例を挙げている。例えば、入力データ200の座標の単位が1/96インチであり、タイル描画の回転及び余白が無い192dpiのラスタ画像202を生成する場合がこれに該当する。
前述した図5(A)のオブジェクトを、ラスタ画像処理部104が図5(B)のようにタイル描画する際のレンダリングの様子について以下、詳細に説明する。図4のタイル原点400は、前述したように入力座標系の座標(1,2)である。ここで、本実施形態では、入力座標系からデバイス座標系への座標変換がx,y方向ともに2倍に変倍されるため、タイル原点400の入力座標系の座標(1,2)は、デバイス座標系の座標(2,4)に変換される。つまり、図5(A)のオブジェクトがタイル描画される際のデバイス座標系における描画開始座標は、図5(B)に示すようにデバイス座標系の座標(2,4)となる。
一方、図4のタイル座標変換行列402の場合、前述したように、a成分が1.5、d成分が1.5であるため、x方向とy方向の変倍率は1.5倍である。また、図5(A)のオブジェクトは、前述したように、二つの等辺の長さがそれぞれ2ピクセルの直角二等辺三角形のオブジェクトであり、一方の等辺が入力座標系のx軸方向、他方の等辺がy軸方向に指定されている。このため、図5(A)に示した二等辺三角形のオブジェクトは、図4のタイル座標変換行列402により、図5(B)のデバイス座標系ではx軸方向とy軸方向の各等辺の長さがそれぞれ3ピクセルずつの二等辺三角形のタイルとして描画されることになる。例えば図5(B)のデバイス座標系の開始座標(2,4)から描画される一つ分のタイルのみを挙げて説明すると、デバイス座標系の座標(2,4)、(3,4)、(4,4)、(2,5)、(3,5)、(2,6)の6ピクセルで一つのタイルが描画される。なお、タイル描画対象に指定された図5(A)のオブジェクトが、図5(B)のようにタイル描画されるサイズを、以下の説明では、「タイルサイズ」と表記することとする。タイルサイズは、これら図4、図5(A)、図5(B)で説明したように、入力座標系におけるオブジェクトのサイズに、タイル座標変換行列402のa成分とd成分による変倍率を掛けた結果のサイズである。
そして、図4のタイル範囲401は、入力座標系では(6,3)として指定されており、これが2倍に変倍(つまり(12,6)に変換)される。このため、デバイス座標系では、図5(B)のように、開始座標(2,4)から、x軸方向(横方向)に12ピクセル分、y軸方向(縦方向)に6ピクセル分の範囲内で、タイル描画が繰り返されることになる。なお、図4、図5(A)、図5(B)の例では、一つのオブジェクトに対応したタイル描画を繰り返す例を挙げたが、複数のオブジェクトがタイル描画される場合も、それぞれのオブジェクトについて前述同様のタイル描画処理が行われる。
なお、前述した図4、図5(A)、図5(B)の例は、タイル描画命令に基づいてオブジェクトがタイル描画された際の、ラスタ画像のデバイス座標系におけるタイルのx軸方向とy軸方向の幅は、整数の幅になっている。このような場合には、描画命令変更部103において入力描画命令201を行う必要はないと考えられる。これに対し、タイルのx軸方向とy軸方向の幅が整数の幅にならない場合、描画命令変更部103は、入力描画命令201のタイル描画命令を、オブジェクトが描画される際にタイルのx軸方向とy軸方向の幅が整数の幅になる描画命令ヘ変更する。
図6は、描画命令変更部103が、タイルのx軸方向とy軸方向の幅が整数の幅になるか否かを判断し、その判断結果に応じて、描画命令を変更するか又は変更しない場合の手順を示すフローチャートである。
図6のフローチャートにおいて、描画命令変更部103は、先ず、ステップS600の処理として、入力描画命令201の中からタイル描画命令を一つ抽出する。ステップS600の後、描画命令変更部103は、処理をステップS601へ進める。
ステップS601では、描画命令変更部103は、タイルサイズのx軸方向の幅(以下、「タイルサイズの横幅」と表記する。)が、デバイス座標系における整数の幅になるか否かを判断する。つまり、描画命令変更部103は、入力描画命令201に基づいてラスタ画像処理部104で描画が行われたと想定した場合に、タイルサイズの横幅がデバイス座標系における整数の幅になるか否かを判断する。描画命令変更部103は、ステップS601において、タイルサイズの横幅が整数の幅になると判断した場合はステップS603へ処理を進め、一方、タイルサイズの横幅が整数の幅にならないと判断した場合にはステップS602へ処理を進める。ステップS602では、描画命令変更部103は、入力描画命令201に対してタイル描画命令を変更する処理を行う。なお、ステップS602におけるタイル描画命令の変更処理の詳細については後述する。ステップS602の後、描画命令変更部103は、処理をステップS603へ進める。
ステップS603では、描画命令変更部103は、タイルサイズのy軸方向の幅(以下、「タイルサイズの縦幅」と表記する。)が、デバイス座標系における整数の幅になるか否かを判断する。つまり、描画命令変更部103は、入力描画命令201に基づいてラスタ画像処理部104で描画が行われたと想定した場合に、タイルサイズの縦幅がデバイス座標系における整数の幅になるか否かを判断する。描画命令変更部103は、ステップS603において、タイルサイズの横幅が整数の幅になると判断した場合はステップS605へ処理を進め、一方、タイルサイズの横幅が整数の幅にならないと判断した場合にはステップS604へ処理を進める。ステップS604では、描画命令変更部103は、入力描画命令201に対してタイル描画命令を変更する処理を行う。なお、ステップS604におけるタイル描画命令の変更処理の詳細については後述する。ステップS604の後、描画命令変更部103は、処理をステップS605へ進める。
ステップS605では、描画命令変更部103は、入力描画命令201の中のタイル描画命令を全て抽出したか否かを判断する。描画命令変更部103は、ステップS605において、タイル描画命令を全て抽出していないと判断した場合には、処理をステップS600へ戻し、一方、全て抽出したと判断した場合は、図6の処理を終了する。
図7(A)は、タイルサイズの横幅が、デバイス座標系における整数の幅にならない場合に、図6のステップS602において描画命令変更部103が実行するタイル描画命令の変更手順を示すフローチャートである。また、図7(B)は、タイルサイズの縦幅が、デバイス座標系における整数の幅にならない場合に、図6のステップS604において描画命令変更部103が実行するタイル描画命令の変更手順を示すフローチャートである。
また、図8は、描画命令変更部103による変更処理後のタイル描画命令のパラメータ形式の一例を示す図である。図8のパラメータの場合、タイル座標変換行列802は、図3のタイル座標変換行列302と同様の2次元配列であるが、タイル座標変換行列[i,j]の「i」と「j」の取り得る値は「0」か「1」である。すなわち、タイル座標変換行列802は、タイル座標変換行列[0,0]、[0,1]、[1,0]、[1,1]の四つのタイル座標変換行列を有している。したがって、タイル座標変換行列[0,0]では、a[i,j]がa[0,0]でd[i,j]がd[0,0]となる。以下同様に、タイル座標変換行列[0,1]ではa[0,1]、d[0,1]となり、タイル座標変換行列[1,0]ではa[1,0]、d[1,0]となり、タイル座標変換行列[1,1]ではa[1,1]、d[1,1]となる。また、描画命令変更部103によるタイル描画命令の変更処理後の図8のパラメータには、後述する桁上がり間隔803が設定される。
図7(A)のタイル描画命令変更手順のフローチャートから説明する。図7(A)のフローチャートにおいて、描画命令変更部103は、先ずステップS700の処理として、図3に示したタイル描画命令のパラメータの形式を、図8に示すようなタイル描画命令のパラメータの形式に変更する。このとき、描画命令変更部103は、図8に示すタイル描画命令のパラメータの形式におけるタイル原点800の初期値として、図3に示した変更前の描画命令201のタイル原点300と同じ値を用いる。同様に、描画命令変更部103は、タイル範囲801の初期値として、図3のタイル範囲301と同じ値を用いる。また、描画命令変更部103は、タイル座標変換行列802の初期値として、前述した四つのタイル座標変換行列[0,0]〜[1,1]のa成分とb成分には図3のタイル座標変換行列302と同じ値を用いる。さらに、描画命令変更部103は、図8の桁上がり間隔803の(Iw,Ih)については(0,0)を初期値とする。なお、桁上がり間隔803の詳細については後述する。このステップS700の後、描画命令変更部103は、処理をステップS701へ進める。
ステップS701では、描画命令変更部103は、前述したように初期値が設定されている四つのタイル座標変換行列802についてa成分を変更する。具体的には、四つのタイル座標変換行列802のうち、「i」が「0」となっている、タイル座標変換行列[0,0]のa[0,0]とタイル座標変換行列[0,1]のa[0,1]については、式(1)の除算の演算により求められる値に変更する。また、四つのタイル座標変換行列802のうち「i」が「1」となっている、タイル座標変換行列[1,0]のa[1,0]とタイル座標変換行列[1,1]のa[1,1]については、式(2)の除算の演算により求められる値に変更する。
{floor(タイルサイズの横幅)÷入力座標系でのオブジェクトの横幅}
・・・式(1)
{ceil(タイルサイズの横幅)÷入力座標系でのオブジェクトの横幅}
・・・式(2)
なお、floor(n)は値nの小数切り捨てを表し、ceil(n)は値nの小数切り上げを表す。このステップS701の後、描画命令変更部103は、処理をステップS702へ進める。
ステップS702では、描画命令変更部103は、桁上がり間隔803の(Iw,Ih)のうち、Iwを式(3)により求められる値に変更する。
{ceil(1÷タイルサイズの横幅の小数部)} ・・・式(3)
ステップS701が終わると、描画命令変更部103は、図7(A)の処理を終了して、図6のステップS603へ処理を進める。
次に、図7(B)のタイル描画命令変更手順のフローチャートについて説明する。図7(B)のフローチャートにおいて、描画命令変更部103は、先ずステップS703の処理として、タイル描画命令のパラメータの形式を変更済みか否かを判断する。描画命令変更部103は、ステップS803において、タイル描画命令のパラメータの形式が変更済みであると判断した場合には、処理をステップS705へ進め、一方、変更済みでないと判断した場合には、処理をステップS704へ進める。
ステップS704では、描画命令変更部103は、図7(A)のステップS700と同じ手順で描画命令のパラメータの形式を変更する。このステップS704の後、描画命令変更部103は、処理をステップS705へ進める。
ステップS705では、描画命令変更部103は、前述のように初期値が設定されている四つのタイル座標変換行列802についてd成分を変更する。具体的には、四つのタイル座標変換行列802のうち「j」が「0」となっている、タイル座標変換行列[0,0]のd[0,0]とタイル座標変換行列[1,0]のd[1,0]については、式(4)の除算の演算により求められる値に変更する。また、四つのタイル座標変換行列802のうち「j」が「1」となっている、タイル座標変換行列[0,1]のd[0,1]とタイル座標変換行列[1,1]のd[1,1]については、式(5)の除算の演算により求められる値に変更する。
{floor(タイルサイズの縦幅)÷入力座標系でのオブジェクトの縦幅}
・・・式(4)
{ceil(タイルサイズの縦幅)÷入力座標系でのオブジェクトの縦幅}
・・・式(5)
なお、floor(n)とceil(n)は図7(A)で説明したのと同様である。このステップS705の後、描画命令変更部103は、処理をステップS706へ進める。
ステップS706では、描画命令変更部103は、桁上がり間隔803の(Iw,Ih)のうち、Ihを式(6)により求められる値に変更する。
{ceil(1÷タイルサイズの縦幅の小数部)} ・・・式(6)
ステップS706の処理が終わると、描画命令変更部103は、図7(B)の処理を終了して、図6のステップS605へ処理を進める。
図9(A)、図9(B)は、上述の図7(A)、図7(B)のフローチャートによりタイル描画命令のパラメータの形式が変更された場合の、変更前のタイル描画命令のパラメータ形式と、変更後のタイル描画命令のパラメータ形式の一例を示す図である。図9(A)は、図3の変更前のタイル描画命令のパラメータの形式の一具体例を示し、図9(B)は、図8の変更後のタイル描画命令のパラメータの形式の一具体例を示している。
ここで、図9(A)、図9(B)の例の場合、タイル描画対象に指定されているオブジェクトは、後述する図11(A)に例示するような、直角三角形のオブジェクトであるとする。具体的には、直角三角形の直角の頂点を含む一方の辺の長さが入力座標系でx軸方向に2ピクセル、他方の辺の長さがy軸方向に1ピクセルのオブジェクトであるとする。そして、タイル描画は、直角三角形の直角の頂点から開始されるとする。また、図9(A)の例の場合、タイル原点900の座標は(1,2)、タイル範囲901は(7,3.5)、タイル座標変換行列902のa成分は1.25、d成分は1.25であるとする。したがって、図9(A)の例の場合、タイルサイズの横幅は、オブジェクトの横幅の「2」に、タイル座標変換行列902のa成分の「1.25」を掛けた「2.5」ピクセル分となる。同様に、タイルサイズの縦幅は、オブジェクトの縦幅の「1」に、タイル座標変換行列902のd成分の「1.25」を掛けた「1.25」ピクセル分となる。
このように、図9(A)に例示したタイル描画命令の場合、タイルサイズのx軸方向とy軸方向のピクセル数は、それぞれ「2.5」ピクセル分と「1.25」ピクセル分である。したがって、図9(A)のタイル描画命令の場合、タイルサイズの横幅と縦幅は、デバイス座標系における整数の幅にならない。このため、描画命令変更部103は、タイル描画命令のパラメータの形式を、図9(B)に示すような形式に変更する。
以下、描画命令変更部103が、図9(A)のタイル描画命令のパラメータの形式を図9(B)のタイル描画命令のパラメータ形式へ変更する例について具体的に説明する。タイル描画命令のパラメータ形式を変更する場合、前述したように、変更後のタイル原点903とタイル範囲904の値は、変更前のタイル原点900とタイル範囲901の値がそのまま初期値として用いられる。したがって、図9(B)のタイル原点903の値は、図9(A)のタイル原点900の値である(1,2)となる。同様に、図9(B)のタイル範囲904の値は、図9(A)のタイル範囲901の値である(7,3.5)となる。
一方、図9(A)のタイル座標変換行列902は、前述の式(1)、式(2)、式(4)、式(5)を用いて、図9(B)に示す四つのタイル座標変換行列905〜908(タイル座標変換行列[0,0]〜[1,1])に変換されることになる。
具体的に説明すると、タイル座標変換行列[0,0]のa成分とタイル座標変換行列[0,1]のa成分については、式(1)により、floor(2.5)÷2=2÷2=1の値に変更される。以下同様に、
タイル座標変換行列[1,0]のa成分とタイル座標変換行列[1,1]のa成分については、式(2)により、ceil(2.5)÷2=3÷2=1.5の値に変更される。
タイル座標変換行列[0,0]のd成分とタイル座標変換行列[1,0]のd成分については、式(4)により、floor(1.25)÷1=1÷1=1の値に変更される。
タイル座標変換行列[1,0]のd成分とタイル座標変換行列[1,1]のd成分については、式(5)により、ceil(1.25)÷1=2÷1=2の値に変更される。
これにより、図9(B)のタイル座標変換行列905はa成分が「1」でd成分が「1」の行列となり、タイル座標変換行列906はa成分が「1」でd成分が「2」の行列となる。また、タイル座標変換行列907はa成分が「1.5」でd成分が「1」の行列となり、タイル座標変換行列908はa成分が「1.5」でd成分が「2」となった行列となる。なお、本実施形態において、図9(B)のタイル座標変換行列905は第1の行例の一例であり、タイル座標変換行列906は第2の行列の一例である。また、タイル座標変換行列907は第3の行列の一例であり、タイル座標変換行列908は第4の行列の一例である。
また、桁上がり間隔909は、前述の式(3)と式(6)の計算により求められる。より具体的に説明すると、
桁上がり間隔909のIwは、式(3)により、ceil(1÷0.5)=2の値となり、
桁上がり間隔909のIhは、式(6)により、ceil(1÷0.25)=4の値となる。したがって、図9(B)の桁上がり間隔909は(2,4)となる。
描画命令変更部103は、以上説明したようにして、図9(A)のタイル描画命令を図9(B)のタイル描画命令に変更する。
そして、本実施形態において、ラスタ画像処理部104は、描画命令変更部103によるタイル描画命令が変更されていない場合には、入力描画命令201の図3に示したタイル描画命令に基づいてタイル描画処理を行う。一方、描画命令変更部103によりタイル描画命令が変更されている場合、ラスタ画像処理部104は、変更済み描画命令201(図8のタイル描画命令)を選択する。さらに、ラスタ画像処理部104は、変更済みのタイル描画命令の四つのタイル座標変換行列802の中から、後述するように桁上がり間隔803に基づいて、タイル毎に何れか一つのタイル座標変換行列802を選択して、各タイルの描画処理を行う。
図10は、ラスタ画像処理部104が各タイルのレンダリングを行う際に、入力描画命令201又は変更済み描画命令201の選択と、変更済み描画命令201を選択した場合に更にタイル座標変換行列を選択する際の手順を示すフローチャートである。
図10に示すフローチャートにおいて、ラスタ画像処理部104は、先ずステップS1000の処理として、入力描画命令201のタイル描画命令が描画命令変更部103により変更されたか否かを判断する。ラスタ画像処理部104は、ステップS1000において、入力描画命令201のタイル描画命令が変更されていると判断した場合には処理をステップS1001へ進め、一方、変更されていないと判断した場合には処理をステップS1008へ進める。ステップS1008では、ラスタ画像処理部104は、入力描画命令201のタイル描画命令のタイル座標変換行列(図3のタイル座標変換行列302)を選択して、この図10のフローチャートの選択処理を終了する。
ステップS1001では、ラスタ画像処理部104は、x軸方向(横方向)のタイル位置が桁上がり間隔803のIwの倍数であるか否かを判断する。ここで、タイル位置とは、デバイス座標系のx軸方向(横方向)とy軸方向(縦方向)のそれぞれにおいて、描画される各タイルが配置される位置を順番に示した番号である。タイル位置は、x軸方向ではタイル範囲801内の左端のタイルが1番となり、右方向へ昇順の連番が付与され、y軸方向ではタイル範囲801の上端のタイルが1番となり、下方向へ昇順の連番が付与される。ラスタ画像処理部104は、ステップS1001において、x軸方向のタイル位置の番号が桁上がり間隔803のIwの倍数であると判断した場合には処理をステップS1002へ進め、一方、倍数でないと判断した場合には処理をステップS1003へ進める。
ステップS1002では、ラスタ画像処理部104は、「i」に「1」を代入した後、処理をステップS1004へ進める。一方、ステップS1003では、ラスタ画像処理部104は、「i」に「0」を代入した後、処理をステップS1004へ進める。
ステップS1004では、ラスタ画像処理部104は、y軸方向のタイル位置の番号が桁上がり間隔803のIhの倍数であるか否かを判断する。ラスタ画像処理部104は、ステップS1004において、y軸方向のタイル位置の番号が桁上がり間隔803のIhの倍数であると判断した場合には処理をステップS1005へ進め、一方、倍数でないと判断した場合には処理をステップS1006へ進める。
ステップS1005では、ラスタ画像処理部104は、「j」に「1」を代入した後、処理をステップS1007へ進める。一方、ステップS1006では、ラスタ画像処理部104は、「j」に「0」を代入した後、処理をステップS1007へ進める。
ステップS1007では、ラスタ画像処理部104は、前述の四つのタイル座標変換行列802の中から、ステップS1002又はS1003、ステップS1005又はS1006で決まった[i,j]に応じたタイル座標変換行列802を選択する。このように、これらステップS1002又はS1003、ステップS1005又はS1006による[i,j]は、タイル位置と桁上がり間隔803に基づいて決められる。そして、タイル位置と桁上がり間隔803にて決められた[i,j]により、四つのタイル座標変換行列802の中から一つのタイル座標変換行列802が選択される。
以下、図9(B)のタイル描画命令のパラメータを例に挙げ、そのタイル描画命令によりタイル描画がなされる具体例を、図11(A)と図11(B)を参照しながら説明する。図11(A)は、タイル描画対象に指定されたオブジェクトの一例であり、図9(A)、図9(B)の説明で用いた直角三角形のオブジェクトである。また、図11(B)は、ラスタ画像処理部104が、前述の図9(B)の桁上がり間隔909に基づいて図10によりタイル位置毎に選択したタイル座標変換行列を用いて、図9(A)のオブジェクトのタイルをレンダリングした描画結果の一例を示す図である。
図11(B)中の格子は、図5(B)と同様に、ラスタ画像202における各ピクセルの境界を表し、図11(B)中のx軸方向とy軸方向の数字は図の左上を原点とするデバイス座標系のx座標値とy座標値を表している。また、この図11(B)の例においても前述の図4と図5(B)の例と同様に、入力データ200からラスタ画像202への座標変換は、x方向とy方向ともに2倍に変倍されるものとする。また、図11(B)において、図中ドットパターンが描かれているピクセルは、図5(B)と同様に、タイルを構成しているピクセルを表している。また、各ピクセルがタイルを構成するピクセルとなるか否かは、オブジェクトがデバイス座標系において各ピクセルの中心点に掛かるか否かで判断される。図11(B)の場合、例えば(x,y)座標が(3,4)や(6,4)、(5,8)、(6,7)等のピクセルでは、オブジェクトが各ピクセルの中心点に掛かっていないため、ドットパターンは描かれていない。一方、例えば(x,y)座標が(2,4)や(4,4)、(5,4)、(4,8)、(5,7)等のピクセルでは、オブジェクトが各ピクセルの中心点に掛かっているため、ドットパターンが描かれている。
前述の図11(A)のオブジェクトを、図9(B)のタイル描画命令に基づいて図11(B)のようにタイル描画する際のレンダリングの様子について以下、詳細に説明する。図9(B)のタイル原点903は、前述したように入力座標系の座標(1,2)であり、入力座標系からデバイス座標系への座標変換はx,y方向ともに2倍に変倍される。このため、タイル原点903の入力座標系の座標(1,2)は、デバイス座標系の座標(2,4)に変換される。つまり、図11(A)のオブジェクトがタイル描画される際のデバイス座標系における描画開始座標は、図11(B)に示すようにデバイス座標系の座標(2,4)となる。
また、図9(B)のタイル範囲904は、入力座標系では(7,3.5)であり、これが2倍に変倍(つまり(14,7)に変換)される。このため、デバイス座標系では、図11(B)のように、開始座標(2,4)からx軸方向(横方向)に14ピクセル分で、y軸方向(縦方向)に7ピクセル分の範囲内で、タイル描画が繰り返されることになる。
そして、前述した図10のように、桁上がり間隔909に基づいて、それぞれのタイル位置で、図9(B)のタイル座標変換行列905〜908の中から何れか一つが選択されて、各タイルのレンダリングがなされることになる。
一例として、図11(B)において、(x,y)座標が例えば(9,4)のピクセルに対応したタイル位置の場合、x軸方向では4番目のタイルである。このx軸方向におけるタイル位置の「4」は、図9(B)の桁上がり間隔909のIwである「2」の倍数であるため、「i」に「1」が代入される。また、(x,y)座標が(9,4)のピクセルに対応したタイル位置の場合、y軸方向では1番目のタイルとなる。このタイル位置の「1」は、図9(B)の桁上がり間隔909のIhである「4」の倍数ではないため、「j」に「0」が代入される。これにより、図9(B)ではi=1,j=0のタイル座標変換行列[1,0](タイル座標変換行列907)が選択されることになる。このタイル座標変換行列[1,0]は、図9(B)に示したようにa成分が「1.5」でd成分が「1」であるため、図9(A)のオブジェクトは、タイルサイズの横幅が3ピクセルで縦幅が1ピクセルのタイルとして描画されることになる。
また、図11(B)において、(x,y)座標が例えば(2,4)のピクセルに対応したタイル位置の場合、x軸方向では1番目のタイルである。このx軸方向におけるタイル位置の「1」は、桁上がり間隔909のIwである「2」の倍数ではないため、「i」に「0」が代入される。また、(x,y)座標が(2,4)のピクセルに対応したタイル位置の場合、y軸方向では1番目のタイルとなる。このy軸方向におけるタイル位置の「1」は、桁上がり間隔909のIhである「4」の倍数ではないため、「j」に「0」が代入される。これにより、図9(B)ではi=0,j=0のタイル座標変換行列[0,0](タイル座標変換行列905)が選択されることになる。このタイル座標変換行列[0,0]は、図9(B)に示したようにa成分が「1」でd成分が「1」であるため、図9(A)のオブジェクトは、タイルサイズの横幅が2ピクセルで縦幅が1ピクセルのタイルとして描画されることになる。
この図9(B)と図11(B)のように、四つのタイル座標変換行列802を生成し、桁上がり間隔909に基づいてタイル位置毎に一つのタイル座標変換行列を選択すると、デバイス座標系における各タイルのタイルサイズの横幅と縦幅は整数の幅になる。これにより、各タイルにおける各々の描画開始座標は、ピクセル単位の座標に対して小数部分が無く、デバイス座標系において整数の座標となる。したがって、図9(B)と図11(B)の例の場合、ラスタ画像の解像度にスケーリングしたビットマップのタイル画像をタイル状に並べたタイル描画の場合と略々同じラスタ画像202が生成されることになる。
また、本実施形態の場合、描画命令201を変更することにより追加されるデータは、タイル座標変換行列802の三つのアフィン変換行列と桁上がり間隔803のみであるため、レンダリング中の動作メモリの増加を抑えられる。
以上説明したように本実施形態においては、タイル座標変換行列をタイルの位置によって選択可能(切り替え可能)にしている。これにより、本実施形態によれば、タイル描画において、レンダリングに使用されるメモリ量の増加を抑えつつ、各タイルサイズがデバイス座標系における整数サイズとなり、また、タイル間に隙間や重なり等が生じない良好な描画結果の画像の生成が可能となる。
<第2の実施形態>
前述した第1の実施形態では、回転及び移動を行わないタイル座標変換行列を例に挙げたが、タイル座標変換行列は例えば回転を行う座標変換行列であってもよい。図12(A)、図12(B)は、第2の実施形態の一例として、90度の回転を含むタイル座標変換行列を用いる場合のタイル描画命令のパラメータの形式を示す図である。なお、図12(A)は変更前のタイル描画命令のパラメータ形式の一例を示し、図12(B)は変更後のタイル描画命令のパラメータ形式の一例を示している。90度の回転を含むタイル座標変換行列の場合は、アフィン変換行列のb成分とc成分により90度の回転角度が指定される。
以下、図12(A)のタイル座標変換行列1202から、図12(B)のタイル座標変換行列1205を算出する例について説明する。なお、図12(B)のタイル原点1203とタイル範囲1204は、前述の図3と図8で説明したのと同様に、図12(A)のタイル原点1200とタイル範囲1201から求められる。また、図12(B)の桁上がり間隔1206についても前述の図8で説明したようにして求められる。
図12(A)のタイル座標変換行列1202からは、図12(B)のタイル座標変換行列1205の[i,j]の「i」と「j」がそれぞれ「0」又は「1」となる四つのタイル座標変換行列[0,0]、[0,1]、[1,0]、[1,1]が生成される。図12(B)のタイル座標変換行列1205の場合、タイル座標変換行列[0,0]はb[0,0]、c[0,0]となる。以下同様に、タイル座標変換行列[0,1]ではb[0,1]、c[0,1]になり、タイル座標変換行列[1,0]ではb[1,0]、c[1,0]、タイル座標変換行列[1,1]ではb[1,1]、c[1,1]になる。また、それら四つのタイル座標変換行列[0,0]〜[1,1]のb成分とc成分の初期値は、図12(A)のタイル座標変換行列1202のb成分とc成分と同じ値が用いられる。
そして、第2の実施形態の場合、描画命令変更部103は、初期値を設定した四つのタイル座標変換行列1205について、b成分を変更する。具体的には、「i」が「0」のタイル座標変換行列[0,0]と[0,1]のb成分については、式(7)の除算の演算により求められる値に変更する。また、「i」が「1」のタイル座標変換行列[1,0]と[1,1]のb成分については、式(8)の除算の演算により求められる値に変更する。
{floor(タイルサイズの縦幅)÷入力座標系でのオブジェクトの横幅}
・・・式(7)
{ceil(タイルサイズの縦幅)÷入力座標系でのオブジェクトの横}
・・・式(8)
floor(n)とceil(n)は前述同様のものである。
同様に、描画命令変更部103は、初期値を設定した四つのタイル座標変換行列1205について、c成分を変更する。具体的には、「j」が「0」のタイル座標変換行列[0,0]と[1,0]のc成分については、式(9)の除算の演算により求められる値に変更する。また、「j」が「1」のタイル座標変換行列[0,1]と[1,1]のc成分については、式(10)の除算の演算により求められる値に変更する。
{floor(タイルサイズの横幅)÷入力座標系でのオブジェクトの縦幅}
・・・式(9)
{ceil(タイルサイズの横幅)÷入力座標系でのオブジェクトの縦幅}
・・・式(10)
floor(n)とceil(n)は前述同様のものである。
これら式(7)〜式(10)を用いることで、描画命令変更部103は、図12(A)のタイル座標変換行列1202から、図12(B)のタイル座標変換行列1205を生成する。この図12(B)のタイル座標変換行列1205における四つのタイル座標変換行列[0,0]〜[1,1]は、第5の行列〜第8の行列の一例である。
この第2の実施形態によれば、90度の回転を含むタイル座標変換行列をタイルの位置によって選択可能(切り替え可能)にしているため、タイル描画において、レンダリングに使用されるメモリ量の増加を抑えつつ、良好な描画結果の画像を生成可能である。また、第2の実施形態の場合、描画命令201を変更することにより追加されるデータは、タイル座標変換行列1205の三つのアフィン変換行列と桁上がり間隔1206のみであるため、レンダリング中の動作メモリの増加を抑えられる。
<第3の実施形態>
第2の実施形態では90度の回転を行う場合のタイル描画命令の例を挙げたが、第3の実施形態では、任意の回転を伴うタイル描画命令について説明する。図13(A)と図13(B)は、任意の回転を伴うタイル描画命令のパラメータ形式の一例を示す図である。なお、図13(A)は任意の回転を伴うタイル描画命令のパラメータ形式の一例を示し、図13(B)は変更後のタイル描画命令のパラメータ形式の一例を示している。また、第3の実施形態において、図13(B)のタイル原点1303とタイル範囲1304は、前述同様に、図13(A)のタイル原点1300とタイル範囲1301から求められる。また、図13(B)の桁上がり間隔1306についても前述の図8で説明したようにして求められる。
ここで、図13(B)のタイル座標変換行列1305の場合、図13(A)のタイル座標変換行列1302に加えて、タイル座標変換行列1307が生成される。このタイル座標変換行列1307は、タイル座標変換行列1302により任意の回転が行われた場合のタイルサイズの横幅と縦幅が、デバイス座標系における整数の幅になるようにスケーリングするための座標変換行列である。なお、第3の実施形態において、任意の回転を伴う場合のタイルサイズとは、デバイス座標系において回転した後のタイルを囲う矩形領域のサイズを指す。この図13(B)のタイル座標変換行列1307は、アフィン変換行列であり、この行列のu成分は矩形領域に対するx方向の変倍率、v成分は矩形領域に対するy方向の変倍率を表している。
以下、図13(B)のタイル座標変換行列1307を算出する例について説明する。図13(B)のタイル座標変換行列1307は、前述同様に[i,j]の「i」と「j」がそれぞれ「0」又は「1」となる四つのタイル座標変換行列[0,0]、[0,1]、[1,0]、[1,1]として生成される。図13(B)のタイル座標変換行列1307の場合、タイル座標変換行列[0,0]ではu成分がu[0,0]でv成分がv[0,0]になる。以下同様に、タイル座標変換行列[0,1]ではu[0,1]とv[0,1]になり、タイル座標変換行列[1,0]ではu[1,0]とv[1,0]、タイル座標変換行列[1,1]ではu[1,1]とv[1,1]になる。
そして、第3の実施形態の場合、描画命令変更部103は、それら四つのタイル座標変換行列1307において、「i」が「0」のタイル座標変換行列[0,0]と[0,1]のu成分については、式(11)の除算の演算により求められる値を用いる。また、「i」が「1」のタイル座標変換行列[1,0]と[1,1]のu成分については、式(12)の除算の演算により求められる値を用いる。
{floor(タイルサイズの横幅)÷タイルサイズの横幅} ・・・式(11)
{ceil(タイルサイズの横幅)÷タイルサイズの横幅} ・・・式(12)
floor(n)とceil(n)は前述同様のものである。
また、描画命令変更部103は、「j」が「0」のタイル座標変換行列[0,0]と[1,0]のv成分については、式(13)の除算の演算により求められる値を用いる。また、「j」が「1」のタイル座標変換行列[0,1]と[1,1]のv成分については、式(14)の除算の演算により求められる値を用いる。
{floor(タイルサイズの縦幅)÷タイルサイズの縦幅} ・・・式(13)
{ceil(タイルサイズの縦幅)÷タイルサイズの縦幅} ・・・式(14)
floor(n)とceil(n)は前述同様のものである。
これら式(11)〜式(14)を用いることで、描画命令変更部103は、図13(B)のタイル座標変換行列1307を生成する。この図13(B)のタイル座標変換行列1307における四つのタイル座標変換行列[0,0]〜[1,1]は、第9の行列〜第12の行列の一例である。そして、描画命令変更部103において図13(B)のようにタイル描画命令が変更された場合、ラスタ画像処理部104は、この図13(B)のタイル描画命令に基づいてレンダリングを行う。
この第3の実施形態によれば、任意の回転を含むタイル座標変換行列をタイルの位置によって選択可能(切り替え可能)にしているため、タイル描画において、レンダリングに使用されるメモリ量の増加を抑えつつ、良好な描画結果の画像を生成可能である。また、第3の実施形態の場合、描画命令201を変更することにより追加されるデータは、タイル座標変換行列1307の四つのアフィン変換行列と桁上がり間隔1306のみであるため、レンダリング中の動作メモリの増加を抑えられる。
なお、前述した第1〜第3の実施形態では、タイル位置によってタイル描画命令のうちのタイル座標変換行列のみを切り替えていたが、各タイルに対してタイル描画命令自体を切り替えるようにしてもよい。このとき、タイル描画命令は、第1〜第3の実施形態で説明したのと同様のタイル位置によって異なるタイル座標変換行列を持つものとなる。
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明の好ましい実施形態について詳述したが、本実施形態は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
100 画像処理装置、101 入力部、102 解釈部、103 描画命令変更部、104 ラスタ画像処理部、105 出力部、201 描画命令、202 ラスタ画像

Claims (9)

  1. タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのタイル描画命令を取得する取得手段と、
    前記取得されたタイル描画命令に基づいて前記オブジェクトがタイル描画されることになる場合の、ラスタ画像の座標系における前記タイルのx軸方向とy軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断する判断手段と、
    前記タイルのx軸方向とy軸方向の幅が前記整数の幅にならない場合には、前記取得されたタイル描画命令を、前記ラスタ画像の座標系における前記タイルのx軸方向とy軸方向の幅を前記整数の幅にするタイル描画命令に変更する変更手段と
    を有することを特徴とする画像処理装置。
  2. 前記変更されたタイル描画命令に基づいて、前記オブジェクトを前記ラスタ画像の座標系にタイル状に繰り返し配置させて、前記配置された各オブジェクトからタイルを描画する描画手段を有することを特徴とする請求項1に記載の画像処理装置。
  3. 前記変更手段は、
    前記取得されたタイル描画命令に含まれる複数のパラメータのうち、前記オブジェクトの入力座標系をラスタ画像の座標系へ変換するためのパラメータである座標変換行列から、前記オブジェクトの入力座標系を前記ラスタ画像の座標系へ変換する際に前記ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分を切り上げ又は切り捨てるための複数の座標変換行列を生成し、
    前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番に対応させて、前記オブジェクトの入力座標系が前記ラスタ画像の座標系へ変換される際の前記ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分の切り上げ又は切り捨てが行われる桁上がり間隔を設定して、
    前記複数の座標変換行列と前記桁上がり間隔をパラメータとして含むタイル描画命令を、前記変更されたタイル描画命令とし、
    前記描画手段は、
    前記変更されたタイル描画命令に基づいて前記オブジェクトを前記ラスタ画像の座標系にタイル状に繰り返し配置させる際に、前記桁上がり間隔と、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番とに基づき、前記各タイルの位置に対して前記複数の座標変換行列の中から一つの座標変換行列を選択することを特徴とする請求項2に記載の画像処理装置。
  4. 前記変更手段は、
    前記座標変換行列としてアフィン変換行列を用い、
    前記アフィン変換行列の変倍率を指定する第1の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の変倍率を指定する第2の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第1の行列と、
    前記アフィン変換行列の前記第1の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第2の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第2の行列と、
    前記アフィン変換行列の前記第1の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第2の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第3の行列と、
    前記アフィン変換行列の前記第1の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第2の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第4の行列とを生成し、
    1を前記タイルのx軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるx軸方向の順番に対して設定される桁上がり間隔とし、
    1を前記タイルのy軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるy軸方向の順番に対して設定される桁上がり間隔として設定することを特徴とする請求項3に記載の画像処理装置。
  5. 前記変更手段は、
    前記座標変換行列としてアフィン変換行列を用い、
    前記アフィン変換行列の回転角度を指定する第3の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の回転角度を指定する第4の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第5の行列と、
    前記アフィン変換行列の前記第3の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第4の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第6の行列と、
    前記アフィン変換行列の前記第3の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第4の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り捨てた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第7の行列と、
    前記アフィン変換行列の前記第3の成分が、前記タイルのy軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのx軸方向の幅で除算した成分となり、前記アフィン変換行列の第4の成分が、前記タイルのx軸方向の幅に含まれる小数部分を切り上げた幅を前記入力座標系の前記オブジェクトのy軸方向の幅で除算した成分となされた第8の行列とを生成することを特徴とする請求項3又は4に記載の画像処理装置。
  6. 前記判断手段は、
    前記取得されたタイル描画命令に含まれる複数のパラメータの中に、前記オブジェクトの入力座標系をラスタ画像の座標系へ変換する際に回転を伴う座標変換を行う座標変換行列がパラメータとして含まれており、前記回転を伴う座標変換を行う座標変換行列により前記オブジェクトの入力座標系を前記ラスタ画像の座標系へ変換して前記オブジェクトがタイル描画されることになる場合には、前記ラスタ画像の座標系における前記タイルを囲む矩形領域のx軸方向とy軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断し、
    前記変更手段は、
    前記タイルを囲む矩形領域のx軸方向とy軸方向の幅が前記整数の幅にならない場合には、前記タイルを囲む矩形領域に対して、ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分を切り上げ又は切り捨てるための複数の座標変換行列を生成し、
    前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番に対応させて、前記オブジェクトの入力座標系が前記ラスタ画像の座標系へ変換される際の前記ラスタ画像の座標系におけるピクセル単位の幅に対する小数部分の切り上げ又は切り捨てが行われる桁上がり間隔を設定し、
    前記複数の座標変換行列と前記桁上がり間隔をパラメータとして更に含むタイル描画命令を、前記変更されたタイル描画命令とし、
    前記描画手段は、
    前記変更されたタイル描画命令に基づいて前記オブジェクトを前記ラスタ画像の座標系にタイル状に繰り返し配置させる際に、前記桁上がり間隔と、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置の順番とに基づき、前記各タイルの位置に対して前記複数の座標変換行列の中から一つの座標変換行列を選択することを特徴とする請求項2に記載の画像処理装置。
  7. 前記変更手段は、
    前記座標変換行列としてアフィン変換行列を用い、
    前記アフィン変換行列の変倍率を指定する第1の成分が、前記タイルを囲む矩形領域のx軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のx軸方向の幅で除算した成分となり、前記アフィン変換行列の変倍率を指定する第2の成分が、前記矩形領域のy軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のy軸方向の幅で除算した成分となされた第9の行列と、
    前記アフィン変換行列の前記第1の成分が、前記矩形領域のx軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第2の成分が、前記矩形領域のy軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のy軸方向の幅で除算した成分となされた第10の行列と、
    前記アフィン変換行列の前記第1の成分が、前記矩形領域のx軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第2の成分が、前記矩形領域のy軸方向の幅に含まれる小数部分を切り捨てた幅を前記矩形領域のy軸方向の幅で除算した成分となされた第11の行列と、
    前記アフィン変換行列の前記第1の成分が、前記矩形領域のx軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のx軸方向の幅で除算した成分となり、前記アフィン変換行列の前記第2の成分が、前記矩形領域のy軸方向の幅に含まれる小数部分を切り上げた幅を前記矩形領域のy軸方向の幅で除算した成分となされた第12の行列とを生成し、
    1を前記タイルのx軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるx軸方向の順番に対して設定される桁上がり間隔とし、
    1を前記タイルのy軸方向の幅に含まれる小数部分で除算した値から更に小数部分を切り上げた値を、前記オブジェクトが前記ラスタ画像の座標系にタイル状に繰り返し配置される際の各タイルの配置におけるy軸方向の順番に対して設定される桁上がり間隔として設定することを特徴とする請求項6に記載の画像処理装置。
  8. 取得手段が、タイル描画対象に指定された一つ又は複数のオブジェクトをタイル状に繰り返し描画してラスタ画像を生成するためのタイル描画命令を取得するステップと、
    判断手段が、前記取得されたタイル描画命令に基づいて前記オブジェクトがタイル描画されることになった場合の、ラスタ画像の座標系における前記タイルのx軸方向とy軸方向の幅が、前記ラスタ画像の座標系における整数の幅になるか否かを判断するステップと、
    変更手段が、前記タイルのx軸方向とy軸方向の幅が前記整数の幅にならない場合には、前記取得されたタイル描画命令を、前記ラスタ画像の座標系における前記タイルのx軸方向とy軸方向の幅を前記整数の幅にするタイル描画命令に変更するステップと
    を含むことを特徴とする画像処理方法。
  9. コンピュータを、請求項1乃至7の何れか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
JP2015142797A 2015-07-17 2015-07-17 画像処理装置、画像処理方法及びプログラム Active JP6598546B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015142797A JP6598546B2 (ja) 2015-07-17 2015-07-17 画像処理装置、画像処理方法及びプログラム
US15/211,757 US10540793B2 (en) 2015-07-17 2016-07-15 Image processing apparatus, image processing method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015142797A JP6598546B2 (ja) 2015-07-17 2015-07-17 画像処理装置、画像処理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2017027193A JP2017027193A (ja) 2017-02-02
JP6598546B2 true JP6598546B2 (ja) 2019-10-30

Family

ID=57776191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015142797A Active JP6598546B2 (ja) 2015-07-17 2015-07-17 画像処理装置、画像処理方法及びプログラム

Country Status (2)

Country Link
US (1) US10540793B2 (ja)
JP (1) JP6598546B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7133094B2 (ja) * 2019-07-11 2022-09-07 株式会社ソニー・インタラクティブエンタテインメント 画像処理装置、画像処理方法、及びプログラム
CN112100539A (zh) * 2020-08-13 2020-12-18 福建天泉教育科技有限公司 基于canvas的图片平铺方法、存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8659620B2 (en) * 2009-04-13 2014-02-25 Accusoft Corporation Methods and apparatus for rendering images
AU2009202377A1 (en) * 2009-06-15 2011-01-06 Canon Kabushiki Kaisha Combining overlapping objects
US8803898B2 (en) * 2009-12-17 2014-08-12 Arm Limited Forming a windowing display in a frame buffer
US8988441B2 (en) * 2011-02-10 2015-03-24 Edward A. Hutchins Reconfigurable 3D graphics processor
JP2013161509A (ja) 2012-02-08 2013-08-19 Elpida Memory Inc 半導体装置の冗長救済方法
US9350798B2 (en) * 2013-12-10 2016-05-24 Oracle International Corporation Methods and systems for transitioning between arbitrary shapes
US9626733B2 (en) * 2014-11-24 2017-04-18 Industrial Technology Research Institute Data-processing apparatus and operation method thereof

Also Published As

Publication number Publication date
JP2017027193A (ja) 2017-02-02
US10540793B2 (en) 2020-01-21
US20170018057A1 (en) 2017-01-19

Similar Documents

Publication Publication Date Title
JP6029344B2 (ja) 画像処理装置、画像処理方法、プログラム
US9542127B2 (en) Image processing method and image processing apparatus
GB2578947A (en) Unified digital content selection system for vector and raster graphics
JP6598546B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP6202908B2 (ja) 画像処理装置、画像処理方法及びプログラム
US9924051B2 (en) Image forming apparatus, method for controlling image forming apparatus, and storage medium for performing printing based on collection settings
JP2005018399A (ja) ページ処理装置およびページ処理方法
KR101945581B1 (ko) 화상 처리 장치, 화상 처리 방법, 및 저장 매체
JP6575216B2 (ja) 画像処理装置、画像形成装置、及び画像処理プログラム
US9210291B2 (en) Image processing apparatus capable of synthesizing form image with aggregate image, method of controlling the same, and storage medium
CN107020845B (zh) 估算打印处理所需的时间的图像处理装置及图像处理方法
JP2013026865A (ja) 画像処理装置及び画像処理方法
JP6330790B2 (ja) 印刷制御システム、印刷制御装置およびプログラム
JP7118822B2 (ja) 情報処理装置及びその制御方法、並びにプログラム
JP4710508B2 (ja) 画像処理プログラム、画像処理装置
US10636120B2 (en) Image scaling with quality control
JP6323209B2 (ja) 画像処理装置及びプログラム
US8391647B1 (en) Pixel replacement
JP6238589B2 (ja) 画像形成装置、画像処理方法、およびプログラム
JP2016066222A (ja) 画像処理装置、画像処理方法、コンピュータプログラム
CN111047666B (zh) 用于矢量图形和栅格图形的统一数字内容选择系统
JP2019103007A (ja) プログラム、情報処理装置、および情報処理方法
JP2016210077A (ja) 情報処理装置、描画処理方法、及びプログラム
JP6372365B2 (ja) 印刷指示装置、印刷システムおよびプログラム
JP5477915B2 (ja) 印刷データ生成装置、印刷データ生成方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180713

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190819

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191001

R151 Written notification of patent or utility model registration

Ref document number: 6598546

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151