JP6472171B2 - 画像処理装置およびその方法 - Google Patents

画像処理装置およびその方法 Download PDF

Info

Publication number
JP6472171B2
JP6472171B2 JP2014096225A JP2014096225A JP6472171B2 JP 6472171 B2 JP6472171 B2 JP 6472171B2 JP 2014096225 A JP2014096225 A JP 2014096225A JP 2014096225 A JP2014096225 A JP 2014096225A JP 6472171 B2 JP6472171 B2 JP 6472171B2
Authority
JP
Japan
Prior art keywords
connection point
stencil data
information
image processing
processing apparatus
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
JP2014096225A
Other languages
English (en)
Other versions
JP2015064858A (ja
JP2015064858A5 (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 JP2014096225A priority Critical patent/JP6472171B2/ja
Priority to US14/340,866 priority patent/US9202148B2/en
Publication of JP2015064858A publication Critical patent/JP2015064858A/ja
Priority to MYPI2016704041A priority patent/MY190129A/en
Publication of JP2015064858A5 publication Critical patent/JP2015064858A5/ja
Application granted granted Critical
Publication of JP6472171B2 publication Critical patent/JP6472171B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/027Test patterns and calibration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves

Landscapes

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

Description

本発明は、複数の連続したパスから構成されるストロークを描画する画像処理に関する。
一般に、線幅をもつストロークを描画する際、接続点の隙間を埋める修飾方法としてラウンド型(丸型)、ベベル(bevel)型、マイタ(miter)型(尖型)が用いられる。また、ストロークの端点である開始点、終了点の修飾方法としてラウンド型、スクエア型(正方形型)、バット(butt)型(端型)が用いられる。
特許文献1は、接続点における隙間を埋めるために、隙間の図形を生成し、塗り潰し処理を行う方法を記載する。また、特許文献2は、接続点を共有する二本のストロークと、接続点の隙間を埋める図形の間に計算誤差による隙間が発生しないように、それらを僅かに重畳して描画する方法を開示する。
しかし、接続点によって隙間の形状が異なるため、上記の方法によれば、接続点ごとに隙間を埋める図形の生成が必要になり、接続点が多いパスを描画する場合、計算コストが増大する。また、小さい隙間の図形を多数生成して保持すれば、メモリ使用量が増大する。
特開平06-168339号公報 特開平11-015985号公報
本発明は、複数の連続したパスから構成されるストロークを描画する際に、接続点、端点を修飾したストロークを高速に描画することを目的とする。
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
複数の連続したパスから構成されるストロークを描画する画像処理装置は、
パスの形状を示す形状情報を取得する第一の取得手段と、
ストロークの端点の修飾方法を示す端点情報を取得する第二の取得手段と、
ストロークの接続点の修飾方法を示す接続点情報を取得する第三の取得手段と、
ストロークの線幅を示す線幅情報を取得する第四の取得手段と、
前記形状情報、前記接続点情報、前記端点情報および前記線幅情報に基づきストロークのステンシルデータを生成する生成手段と、
を有し、
前記生成手段は、前記線幅情報に基づき前記形状情報が示すパスを太らせることで生成した基本ステンシルデータに、前記接続点情報に基づいて生成した接続点ステンシルデータ、及び、前記端点情報に基づいて生成した端点ステンシルデータをマージすることによって、前記ステンシルデータを生成する。
本発明によれば、複数の連続したパスから構成されるストロークを描画する際に、接続点、端点を修飾したストロークを高速に描画することができる。
実施例のベクトル図形の描画処理を実行するコンピュータ装置の構成例を説明するブロック図。 ベクトル図形の描画処理における画像処理装置の処理構成例を示すブロック図。 ベクトル図形の描画処理を説明するフローチャート。 パスコマンドと処理内容の一例を示す図。 修飾方法の種類を説明する図。 ステンシルデータの作成処理を説明するフローチャート。 ステンシルデータの生成を説明する図。 ステンシルデータの別の生成方法を説明するフローチャート。 ステンシルデータの生成を説明する図。 ステンシルバッファとカラーバッファの関係を模式的に示す図。 パスコマンド例とストロークの関係を説明する図。 接続点ステンシル生成部の処理の詳細を説明するフローチャート。 二次元アフィン変換を伴うストロークのステンシルデータを生成する処理を説明する図。
以下、本発明にかかる実施例の画像処理であるベクトル図形の描画を図面を参照して詳細に説明する。なお、実施例は特許請求の範囲にかかる本発明を限定するものではなく、また、実施例に説明する構成の組み合わせのすべてが本発明の解決手段に必須とは限らない。
[装置の構成]
図1のブロック図により実施例のベクトル図形の描画処理を実行する画像処理装置を実現するコンピュータ装置101の構成例を説明する。
図1において、CPU102は、RAM103をワークメモリとして、ROM104や記憶部105に格納されたオペレーティングシステム(OS)や各種プログラムを実行し、システムバス112を介して後述する構成を制御する。
グラフィクスアクセラレータ108は、例えばHDMI(登録商標)やDisplayPort(商標)などのビデオインタフェイスを備え、接続されたモニタ109にグラフィクスやユーザインタフェイス(UI)を表示する。汎用I/F106は、例えばUSBインタフェイスであり、キーボードやマウスなどの入力デバイス107が接続される。ネットワークI/F110は、有線または無線ネットワーク111に接続する。
記憶部105は、例えばハードディスクドライブ(HDD)やソリッドステートドライブ(SSD)であり、実施例のベクトル図形の描画処理用のプログラムを含む各種プログラムや各種パラメータを格納する。また、記憶部105は、汎用I/F106に接続可能なUSBメモリや、汎用I/F106に接続されるカードリーダを介して読み書き可能なメモリカードのような記録媒体でもよい。また、記憶部105は、ネットワークI/F110とネットワーク111を介して接続されるネットワークデバイスでもよい。
また、コンピュータ装置101が例えばタブレットデバイスの場合、入力デバイス107に相当するタッチパネルを有するモニタ109がコンピュータ装置101に一体化される。
CPU102は、UIと入力デバイス107によってベクトル図形の描画が指示されると、ベクトル図形の描画処理用のプログラムを起動し、複数の連続したパスから構成され、所定の線幅を有するストロークを描画するベクトル図形の描画処理を実行する。
[ベクトル図形の描画処理]
図2のブロック図によりベクトル図形の描画処理における画像処理装置の処理構成例を示す。また、図3のフローチャートによりベクトル図形の描画処理を説明する。なお、図3は一つのパス分の処理を示す。
パス形状取得部201は、パスの形状を示す情報(以下、形状情報)をRAM103から取得する(S301)。パスの形状情報は、パスコマンドと座標値の対が指定順に複数に並んだ情報を含む。
図4によりパスコマンドと処理内容の一例を示す。図4に示すように、パスコマンドによって必要な座標値の数が異なる。一般的なパスコマンドには、図4に示すコマンドのほかに円弧、水平線、垂直線などの描画コマンドが含まれるが、それらの説明は省略する。
図11によりパス形状取得部201が取得するパスの形状情報に含まれるパスコマンド例とストロークの関係を説明する。例えば、図11(a)に示すパスコマンドを、線幅>0としてXY直交座標系に描画すると図11(b)に示すストロークが得られる。
次に、線幅情報取得部202は、パスに対応するストロークの線幅を示す情報(以下、線幅情報)をRAM103から取得し(S302)、線幅が0か否かを判定する(S303)。線幅が0の場合はストロークの描画は不要であり、一つのパス分の処理が終了する。なお、RAM103に線幅情報が格納されていない場合、線幅情報取得部202は、記憶部105などから初期値の線幅情報を取得する。
線幅>0の場合、色情報取得部205は、パスに対応するストロークの色を示す情報(以下、色情報)をRAM103から取得し(S304)、色情報に含まれる透明度が透明を示すか否かを判定する(S305)。透明度が透明を示す場合はストロークの描画は不要であり、一つのパス分の処理が終了する。なお、RAM103に色情報が格納されていない場合、色情報取得部205は、記憶部105などから初期値の色情報を取得する。
透明度が非透明を示す場合、端点情報取得部203は、パスの開始点と終了点におけるストロークの修飾方法を示す情報(以下、端点情報)をRAM103から取得する(S306)。なお、RAM103に端点情報が格納されていない場合、端点情報取得部203は、記憶部105などから初期値の端点情報を取得する。
図5により修飾方法の種類を説明する。図5(a)は端点の修飾方法を示す。端点をストロークの方向と直交する方向に平らに修飾する処理が「バット」である。線幅を直径とし、ストロークの端点を中心とする半円弧によって端点を修飾する処理が「ラウンド」である。線幅の半分の長さ分、ストロークの方向に端点を伸ばす処理が「スクエア」である。
端点の修飾方法は、パスの開始点と終了点に異なる修飾方法を指定可能な場合もあれば、開始点と終了点に同じ修飾方法を指定する必要がある場合もある。
次に、接続点情報取得部204は、ストロークの接続点における修飾方法を示す情報(以下、接続点情報)を取得する(S307)。
図5(b)はストロークの接続点の修飾方法を示し、図5(c)は接続点近傍の拡大図である。図5(c)に示すように、二本のストロークの中心線は点Pにおいて接続する。ストロークの中心線を当該中心線に直交する両方向に線幅の半分、移動すると、線分AB、A'B'、DC、D'C'が得られる。点Pに対してストロークの輪郭の外側の点、つまり点Bと点Cの間の接続方法が修飾方法によって異なる。
図5(b)に示す「ベベル」は点Bと点Cを線分で接続する修飾方法である。「ラウンド」は点Pを中心、点Bを開始点、点Cを終了点とする円弧のうち、弧が短い円弧で点Bと点Cを接続する修飾方法である。「マイタ」は線分ABを点B方向に延長した延長線と、線分DCを点C方向に延長した延長線の間の交点Qを計算し、線分BQと線分QCを接続する修飾方法である。
接続点の修飾方法は、接続点ごとに指定可能な場合もあれば、一つのパスに対して一つの修飾方法を指定する必要がある場合もある。また、マイタが指定され、かつ、接続点におけるストローク同士がなす角が小さい場合、ストロークの先端が非常に長くなる。このようなストロークの先端における延長を防ぐため、ストローク同士がなす角が小さい場合は修飾方法をベベルに変更する処理を行う場合がある。
次に、ストロークステンシル生成部206は、詳細は後述するが、形状情報、線幅情報、端点情報、接続点情報に基づき、ストロークのステンシルデータをステンシルバッファ上に生成する(S308)。なお、ステンシルバッファはRAM103の所定領域に割り当てられる。
次に、カラーバッファ変更部207は、詳細は後述するが、生成されたステンシルデータと、色情報取得部205が取得した色情報に基づき、カラーバッファを変更し(S309)、一つのパス分の処理が終了する。なお、カラーバッファはRAM103の所定領域に割り当てられる。
なお、上記では、例えば記憶部105に格納されたデータファイルがRAM103にロードされ、RAM103から各種情報が取得される例を説明したが、UIと入力デバイス107を介して各種情報が取得されてもよい。
[ステンシル作成処理]
図6のフローチャートによりステンシルデータの作成処理(S308)を説明する。また、図7によりステンシルデータの生成を説明する。
基本ストロークステンシル生成部2061は、各ストロークを、ストロークの中心線に直交する方向(以下、直交方向)に太らせた結果を基本ステンシルデータ(図7(a))とする(S601-S603)。つまり、各ストロークにおいて、当該ストロークの中心線上に中点が存在し、直交方向に延伸する、線幅分の線分の軌跡を求める。図11(a)に示すパスコマンドは二本の線分で構成され、基本ステンシルデータはそれら線分を中心とする線幅の太さをもつ長方形内部の和集合になる。
次に、接続点ステンシル生成部2063は、全接続点について、接続点においてストロークがなす角が180度か否かを判定する。そして、180度以外の場合は接続点ステンシルデータを生成し、基本ステンシルデータにマージする(S604-S607)。接続点を共有するストロークの一方あるいは両方が曲線コマンドの場合、角度の算出には曲線コマンドの端点における接線を用いる。図11(c)に示すパスコマンドの例では、接続点(50, 100)において線分と三次ベジェ曲線が接続するが、線分と三次ベジェ曲線の接線がなす角は180度と判定される。180度と判定された接続点におけるストロークは連続するので、接続点ステンシルデータの生成処理は行われない。
次に、端点ステンシル生成部2062は、パスが開図形か閉図形かを判定する(S608)。例えば図4(e)に示すパスコマンドは、CLOSE()コマンドによってパスの開始点と終了点が接続されるため端点が存在しない閉図形である。端点が存在しない閉図形の場合、端点ステンシル生成部2062は、端点ステンシルデータを生成せずにステンシルデータ生成処理を終了する。
パスが開図形であると判定した場合、端点ステンシル生成部2062は、端点の修飾方法がバットか否かを判定する(S609)。端点の修飾方法としてバットが指定されている場合、端点ステンシルデータの生成は不要であり、端点ステンシル生成部2062は、ステンシルデータ生成処理を終了する。また、端点の修飾方法としてバット以外が指定されている場合、端点ステンシル生成部2062は、パスの開始点、終了点について端点ステンシルデータを生成し、端点ステンシルデータを基本ステンシルデータにマージする(S610-S612)。
●接続点ステンシル生成部
図12のフローチャートにより接続点ステンシル生成部2063の処理の詳細を説明する。なお、図12は接続点ごとの処理を示している。
接続点ステンシル生成部2063は、注目接続点の修飾方法を判定する(S901)。修飾方法がラウンドの場合、既に、ラウンドの接続点ステンシル形状が生成され、RAM103に保存されているか否かを判定する(S902)。当該接続点ステンシル形状が生成済みの場合、接続点ステンシル生成部2063は、RAM103から接続点ステンシル形状を取得し(S903)、処理をステップS911に進める。
また、当該接続点ステンシル形状が未生成の場合、接続点ステンシル生成部2063は、ラウンドの接続点ステンシル形状を生成し(S904)、生成したステンシル形状をRAM103の所定領域に保存し(S905)、処理をステップS911に進める。保存の際、当該接続点ステンシル形状の生成パラメータとして、修飾方法およびストロークの線幅が当該接続点ステンシル形状に関連付けられる。つまり、ステップS902において、修飾方法およびストロークの線幅に基づき所望の接続点ステンシル形状が保存されているか否かが判定される。
図11(a)に示すパスコマンドにおいて、接続点の座標は(100, 200)の一点である。接続点の修飾方法がラウンドの場合、接続点を中心として、線幅の半分の長さを半径とする円を生成し、円の内部を接続点ステンシル形状(図7(b))とする。なお、図7(b)において、斜線部が基本ステンシルデータ、黒く塗り潰した部分が接続点ステンシル形状である。
接続点の修飾方法にラウンドが指定されている場合、一つのパスの全接続点において同じ大きさの円内が接続点ステンシル形状になる。つまり、一度、接続点ステンシル形状として円を生成すれば、当該円を他の接続点に複写すればよい。
他方、修飾方法がマイタの場合も同様に、接続点ステンシル生成部2063は、既に、マイタの接続点ステンシル形状が生成され、RAM103に保存されているか否かを判定する(S906)。当該接続点ステンシル形状が生成済みの場合、接続点ステンシル生成部2063は、RAM103から接続点ステンシル形状を取得する(S906)。また、当該接続点ステンシル形状が未生成の場合、接続点ステンシル生成部2063は、マイタの接続点ステンシル形状を生成し(S907)、生成したステンシル形状を生成パラメータに関連付けてRAM103の所定領域に保存する(S908)。
接続点ステンシル生成部2063は、マイタの接続点ステンシル形状として、一辺の長さが線幅の正方形を生成する。正方形の辺はXY軸に平行、正方形の中心はXY軸の原点とする(図7(c))。なお、この正方形は全接続点において使用可能である。
次に、接続点ステンシル生成部2063は、接続点に合わせて接続点ステンシル形状(正方形)を変形する(S909)。接続点においてストロークがなす角をφとすると、正方形をX軸方向に(1/sinφ)倍に拡大し、水平方向に角度φのシアー処理を行う(図7(c)の菱形)。さらに、線分AB(図5(c)参照)がX軸となす角度θを求め、菱形を角度θ回転する。このようにして得た菱形の中心を接続点に合わせ、菱形内部を接続点ステンシル形状とする(図7(d))。
接続点ステンシル形状の取得または生成(および変形)が終了した後、接続点ステンシル生成部2063は、接続点ステンシル形状のデータと基本ステンシルデータとの和集合をステンシルデータとしてステンシルバッファに格納する(S910)。言い替えれば、接続点ステンシルデータを基本ステンシルデータにマージしたステンシルデータを生成する。
●端点ステンシル生成部
図11(a)に示すパスコマンドにおいて、パスの開始点の座標は(50, 50)、パスの終了点の座標は(150, 50)である。端点の修飾方法がラウンドの場合、接続点における修飾処理とほぼ同様である。端点ステンシル生成部2062は、開始点を中心として、線幅の半分の長さを半径とする円を生成し、円の内部を端点ステンシルデータとする。同様に、終了点を中心として、線幅の半分の長さを半径とする円を生成し、円の内部を端点ステンシルデータとする。勿論、接続点の修飾にラウンドが含まれていた場合、ステップS904で生成され、ステップS905でRAM103に保存された接続点ステンシル形状を取得して、端点ステンシルデータとして使用しても構わない。
図7(e)は端点をラウンドで修飾した場合の端点ステンシルデータを表す。生成した端点ステンシルデータを基本ステンシルデータにマージすると、図7(f)に示すステンシルデータが得られる。
また、パスが複数のサブパスから構成される複合パスの場合は、各サブパスの開始点と終了点において同様の処理を行う。
端点の修飾方法にスクエアが指定されている場合も同様に処理が可能である。端点ステンシル生成部2062は、一辺の長さが線幅の正方形を生成する。正方形の辺はXY軸に平行、正方形の中心がXY軸の原点とする。次に、正方形を、端点におけるストロークの傾きに合わせて回転し、さらに正方形の中心が端点に一致するように、正方形を平行移動する。図7(g)は端点をスクエアで修飾した場合の端点ステンシルデータを表す。
●別のステンシル作成処理
上記では、基本ステンシルデータの生成に、各ストロークを太らせた長方形を計算する方法を用いる例を説明したが、描画命令を処理するハードウェアによっては別の方法を用いる方が高速な場合がある。当該ハードウェアとして、グラフィクス処理ユニット(GPU)を備えるグラフィクスアクセラレータ108が利用可能である。
図8のフローチャートによりOpenGL(登録商標)ハードウェアを使用する場合のステンシルデータの生成方法を説明する。また、図9によりステンシルデータの生成を説明する。なお、一つのパスに対して接続点の修飾として一方法および端点の修飾として一方法が指定可能であるとする。
まず、ストロークごとにストロークを太らせた場合の長方形の四頂点を求め、それら頂点A'、A"、B'、B"、C'、C"、D'、D"を順に並べた頂点リストを作成する(図9(a)参照)(S701)。
次に、描画モードとしてGL_TRIANGLE_STRIPを指定する(S702)。この描画モードは、頂点V0、V1、V2、V3、V4、…、Vnが与えられた場合、三角形V0V1V2、V1V2V3、V2V3V4、…、Vn-2Vn-1Vnの内部を塗り潰すモードである。これにより、接続点の修飾処理がベベル、端点の修飾処理がバットの基本ステンシルデータが作成される(図9(b)参照)。なお、ハードウェアのアクセラレーション効果により、高速な描画処理が可能である。
次に、接続点の修飾方法にベベルか指定されているか否かを判定する(S703)。ベベルが指定されている場合、既に基本ステンシルデータにおいて接続点の修飾データが生成されているので、接続点の修飾処理をスキップして、処理はステップS704に進む。一方、接続点の修飾方法にベベル以外が指定されている場合、詳細説明は省略するが、図6と同様の接続点の修飾処理(S604-S607)が行われる。
次に、図6の処理と同様に、パスが開図形か閉図形かが判定され(S608)、端点の修飾方法にバットが指定されているか否かが判定される(S609)。パスが端点が存在しない閉図形の場合、端点の修飾処理がスキップされてステンシル生成処理が終了する。また、パスが開図形でありバットが指定されている場合、既に基本ステンシルデータにおいて端点の修飾データが生成されているので、端点の修飾処理がスキップされてステンシル生成処理が終了する。一方、端点の修飾方法にバット以外が指定されている場合、詳細説明は省略するが、図6と同様の端点の修飾処理(S610-S612)が行われる。
OpenGL(商標登録)ハードウェアを用いる場合、GPUのビデオRAM(VRAM)に頂点情報を格納して、頂点バッファオブジェクト(vertex buffer object)機能が利用可能である。この機能を端点および接続点へのステンシル形状の配置に利用すると、CPUからGPUへの頂点座標の送信を防いで、より高速の処理が期待される。
[ステンシルバッファとカラーバッファ]
図10によりステンシルバッファとカラーバッファの関係を模式的に示す。ステンシルバッファ801とカラーバッファ802は画素ごとに一対一の対応関係を有する。
図10(a)に示すように、ステンシルバッファ801にはステンシル領域803が設定されているとする。図形804を生成して描画すると、図形804の形状がステンシル領域803によって切り抜かれ、カラーバッファ802の、切り抜き形状に対応する画素の色が変更される。なお、カラーバッファ802の色の変更アルゴリズムは、その時点で指定されているブレンドモードに従う。ステンシル領域803を包含する図形804を生成すると、カラーバッファ802に反映されるステンシル適用後図形805の形状はステンシル領域803の形状に一致する。
図10(b)に示すように、ストロークステンシル領域806が設定された場合、ストロークステンシル領域806を包含する包含図形807を算出して描画することで、端点、接続点の修飾を行った線幅を有するストロークを取得することができる。取得された色情報が単一色を示す場合、包含図形807を当該色で描画すれば当該色を有するストロークをカラーバッファ802に描画することができる。
また、取得された色情報がグラデーションを示す場合は、グラデーションを有する包含図形807を算出し描画すればグラデーションを有するストロークをカラーバッファ802に描画することができる。さらに、包含図形807の領域内に一つの画像を描画するか、複数の画像を並べて描画すれば、色情報が示すパターンやテクスチャを有するストロークをカラーバッファ802に描画することができる。なお、包含図形807の領域の全部または一部が、色情報が示す透明度を有しても構わない。
●アフィン変換
また、二次元アフィン変換を伴うストロークの描画においても同様の処理が可能である。二次元アフィン変換でシアー(剪断)処理などが適用されると、太らせたストロークの形状は長方形ではなく平行四辺形になり、太さも一様ではなくなる場合がある。接続点や端点での修飾処理において接続点ステンシルデータや端点ステンシルデータを生成する際に使用する図形である接続点ステンシル形状や端点ステンシル形状に同じ二次元アフィン変換を適用すれば、上記と同様の処理が可能になる。
この場合、図2に示す変換情報取得部208は、二次元アフィン変換を示す情報(以下、変換情報)をRAM103から取得する。基本ストロークステンシル生成部2061は、変換情報に基づく二次元アフィン変換を基本ステンシルデータに適用する。接続点ステンシル生成部2063は、当該二次元アフィン変換を接続点ステンシル形状に適用する。端点ステンシル生成部2062は、当該二次元アフィン変換を端点ステンシル形状に適用する。これにより、上記の説明と同様に二次元アフィン変換を伴うストロークのステンシルデータを作成することができる。
とくに、接続点や端点の修飾方法にラウンドが指定されている場合、線幅の半分の長さを半径とする円を二次元アフィン変換して楕円を生成し、当該楕円を端点や接続点に配置することで接続点や端点のステンシルデータを生成することができる。
図13により二次元アフィン変換を伴うストロークのステンシルデータを生成する処理を説明する。
図13(a)は線分と三次ベジェ曲線から構成されるパス1001を示し、図13(b)はパス1001に対応するパスコマンドを示す。このパスコマンドにより図13(c)に示す基本ステンシルデータ1002が生成される。基本ステンシルデータ1002において、接続点の修飾方法はベベル、端点の修飾方法はバットである。
図13(c)に示す基本ステンシルデータ1002に、X軸方向-20度のシアー変形を適用すると、基本ステンシルデータ1002から図10(d)に示す変形ステンシルデータ1003が生成される。変形ステンシルデータ1003においては、シアー変形の結果、線幅が不均一になる。
接続点の修飾方法および端点の修飾方法がラウンドの場合、線幅の半分の長さを半径とする円を生成し、円の内部をステンシル形状としてRAM103に保存する。そして、図13(e)に示すように、当該ステンシル形状を接続点と端点に配置し、ステンシル形状と変形ステンシルデータ1003の和集合を計算することで、アフィン変形を伴う場合も最終的なステンシルデータを生成することができる。なお、図13(e)において、黒く塗り潰した部分がステンシル形状である。
[変形例]
上記では、パスコマンドとして線分のコマンドについて説明したが、曲線コマンドを含んだパスについても上記処理を適用可能である。
図11(c)に示すパスコマンドには、図11(d)に示すように線分のコマンドと曲線のコマンドが混在する。曲線の場合、図6のステップS602において、曲線の接線に垂直な方向に、線幅の太さになるように曲線を太らせることで、基本ステンシルデータを生成することが可能である。あるいは、曲線を太らせた場合の四頂点を有する図形を作成することで、基本ステンシルデータを生成することが可能である。なお、当該図形において、パスを挟む二頂点の間は辺(線分)であり、パスに沿う方向の二頂点の間は辺、弧、二次以上の曲線になる。
また、図3のステップS302、S303において線幅を取得し線幅が零か否かを判定する処理はなくても構わない。線幅が零であれば、ステップS308で生成されるストロークのステンシルデータは空になり、その結果、当該ストロークは描画されない。
また、図3のステップS305において色が透明か否かを判定する処理もなくても構わない。カラーバッファを変更(S309)する際、透明であれば、合成前のカラーバッファが変更されることなく、処理が終了する。
このように、接続点、端点を修飾したストロークを高速に描画することができる。
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記録媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
201 … パス形状取得部、203 … 端点情報取得部、204 … 接続点情報取得部、206 … ストロークステンシル生成部

Claims (19)

  1. 複数の連続したパスから構成されるストロークを描画する画像処理装置であって、
    パスの形状を示す形状情報を取得する第一の取得手段と、
    ストロークの端点の修飾方法を示す端点情報を取得する第二の取得手段と、
    ストロークの接続点の修飾方法を示す接続点情報を取得する第三の取得手段と、
    ストロークの線幅を示す線幅情報を取得する第四の取得手段と、
    前記形状情報、前記接続点情報前記端点情報および前記線幅情報に基づきストロークのステンシルデータを生成する生成手段と
    を有し、
    前記生成手段は、前記線幅情報に基づき前記形状情報が示すパスを太らせることで生成した基本ステンシルデータに、前記接続点情報に基づいて生成した接続点ステンシルデータ、及び、前記端点情報に基づいて生成した端点ステンシルデータをマージすることによって、前記ステンシルデータを生成する
    ことを特徴とする画像処理装置。
  2. 前記線幅情報が零を示す場合、前記生成手段は、前記ステンシルデータを生成しない
    ことを特徴とする請求項に記載画像処理装置。
  3. 記生成手段は、接続点を共有する二つのストロークがなす角度が180度の場合、当該接続点の接続点ステンシルデータを生成しない
    ことを特徴とする請求項1または2に記載画像処理装置。
  4. 記生成手段は、ストロークの開始点と終了点が一致する閉図形の場合、前記開始点と前記終了点を接続点として前記接続点ステンシルデータを生成する
    ことを特徴とする請求項1乃至3の何れか一項に記載画像処理装置。
  5. 前記接続点情報は、前記接続点の修飾方法としてベベル、マイタ、ラウンドの何れかを示す
    ことを特徴とする請求項1乃至4の何れか一項に記載画像処理装置。
  6. 前記端点情報は、前記端点の修飾方法としてバット、スクエア、ラウンドの何れかを示す
    ことを特徴とする請求項に記載画像処理装置。
  7. 前記生成手段は、
    前記線幅情報に基づき前記形状情報が示すパスを太らせた基本ステンシルデータを生成する第一の生成手段と、
    前記接続点情報に基づき接続点ステンシルデータを生成する第二の生成手段と、
    前記端点情報に基づき端点ステンシルデータを生成する第三の生成手段と、
    を有し、
    前記第一の生成手段は、前記形状情報と前記線幅情報に基づき四頂点を有する図形を作成し、前記図形の内部を塗り潰して接続点の修飾方法が前記ベベル、端点の修飾方法が前記バットの基本ステンシルデータを生成し、
    前記接続点情報が前記ベベル以外の修飾方法を示す場合、前記第二の生成手段は、前記接続点情報に基づき接続点ステンシルデータを生成して、前記接続点ステンシルデータを前記基本ステンシルデータのうち前記接続点に対応するすべての位置にマージし、
    前記端点情報が前記バット以外の修飾方法を示す場合、前記第三の生成手段は、前記端点情報に基づき端点ステンシルデータを生成して、前記端点ステンシルデータを前記基本ステンシルデータのうち前記端点に対応するすべての位置にマージする
    ことを特徴とする請求項に記載画像処理装置。
  8. 前記生成手段は、
    前記線幅情報に基づき前記形状情報が示すパスを太らせた基本ステンシルデータを生成する第一の生成手段と、
    前記接続点情報に基づき接続点ステンシルデータを生成する第二の生成手段と、
    を有し、
    前記第一の生成手段は、前記形状情報と前記線幅情報に基づき四頂点を有する図形を作成し、前記図形の内部を塗り潰して接続点の修飾方法が前記ベベルの基本ステンシルデータを生成し、
    前記接続点情報が前記ベベル以外の修飾方法を示す場合、前記第二の生成手段は、前記接続点情報に基づき接続点ステンシルデータを生成して、前記接続点ステンシルデータを前記基本ステンシルデータのうち前記接続点に対応するすべての位置にマージする
    ことを特徴とする請求項6に記載の画像処理装置。
  9. 前記生成手段は、
    前記線幅情報に基づき前記形状情報が示すパスを太らせた基本ステンシルデータを生成する第一の生成手段と、
    前記端点情報に基づき端点ステンシルデータを生成する第三の生成手段と、
    を有し、
    前記第一の生成手段は、前記形状情報と前記線幅情報に基づき四頂点を有する図形を作成し、前記図形の内部を塗り潰して端点の修飾方法が前記バットの基本ステンシルデータを生成し、
    前記端点情報が前記バット以外の修飾方法を示す場合、前記第三の生成手段は、前記端点情報に基づき端点ステンシルデータを生成して、前記端点ステンシルデータを前記基本ステンシルデータのうち前記端点に対応するすべての位置にマージする
    ことを特徴とする請求項6に記載の画像処理装置。
  10. 前記接続点情報が前記ラウンドの修飾方法を示す場合、前記接続点ステンシルデータの形状は、前記線幅情報が示す線幅の半分の長さを半径とする円であり、
    前記接続点情報が前記マイタの修飾方法を示す場合、前記接続点ステンシルデータの形状は、一辺の長さが前記線幅情報に示される線幅の正方形である
    ことを特徴とする請求項7乃至9の何れか一項に記載の画像処理装置。
  11. 前記端点情報が前記ラウンドの修飾方法を示す場合、前記端点ステンシルデータの形状は、前記線幅情報が示す線幅の半分の長さを半径とする円であり、
    前記端点情報が前記スクエアの修飾方法を示す場合、前記端点ステンシルデータの形状は、一辺の長さが前記線幅情報に示される線幅の正方形である
    ことを特徴とする請求項7乃至10の何れか一項に記載の画像処理装置。
  12. 前記端点情報が前記ラウンドの修飾方法を示す場合、前記円である端点ステンシルデータは、前記ストロークの端点を中心とするように、前記基本ステンシルデータにマージされ、
    前記端点情報が前記スクエアの修飾方法を示す場合、前記正方形である前記端点ステンシルデータは、前記端点におけるストロークの傾きに合わせて回転され、かつ、前記正方形の中心が前記ストロークの端点を中心となるように、前記基本ステンシルデータにマージされる
    ことを特徴とする請求項10又は11に記載の画像処理装置。
  13. 前記接続点情報が前記ラウンドの修飾方法を示し、前記端点情報が前記ラウンドの修飾方法を示す場合、
    前記第三の生成手段は、前記第二の生成手段によって生成された前記線幅情報が示す線幅の半分の長さを半径とする円である前記接続点ステンシルデータを取得して、前記端点ステンシルデータとして使用する
    ことを特徴とする請求項7に従属する場合の請求項10乃至12の何れか一項に記載の画像処理装置。
  14. トロークに施す二次元アフィン変換の変換情報を取得する第五の取得手段を更に有し、
    前記生成手段は、前記変換情報に基づき、前記基本ステンシルデータに前記二次元アフィン変換を施し、前記接続点ステンシルデータに前記二次元アフィン変換を施し、前記端点ステンシルデータに前記二次元アフィン変換を施した上で、前記基本ステンシルデータに、前記接続点ステンシルデータ、及び、前記端点ステンシルデータをマージすることによって、前記ステンシルデータを生成する
    ことを特徴とする請求項1乃至13の何れか一項に記載画像処理装置。
  15. トロークの色を示す色情報を取得する第六の取得手段と、
    前記ステンシルデータと前記色情報に基づきカラーバッファの画素の色を変更する変更手段と
    更に有する
    ことを特徴とする請求項1乃至14の何れか一項に記載画像処理装置。
  16. 前記色情報は、単一色、グラデーション、パターンおよびテクスチャの何れかを示し、並びに、透明度を示す
    ことを特徴とする請求項15に記載画像処理装置。
  17. 複数の連続したパスから構成されるストロークを描画する画像処理方法であって、
    パスの形状を示す形状情報を取得し、
    ストロークの端点の修飾方法を示す端点情報を取得し、
    ストロークの接続点の修飾方法を示す接続点情報を取得し、
    ストロークの線幅を示す線幅情報を取得し、
    前記線幅情報に基づき前記形状情報が示すパスを太らせることで生成した基本ステンシルデータに、前記接続点情報に基づいて生成した接続点ステンシルデータ、及び、前記端点情報に基づいて生成した端点ステンシルデータをマージすることによって、ストロークのステンシルデータを生成する
    ことを特徴とする画像処理方法。
  18. コンピュータを請求項1乃至16の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
  19. 請求項18に記載されたプログラムが記録されたコンピュータが読み取り可能な記録媒体。
JP2014096225A 2013-08-27 2014-05-07 画像処理装置およびその方法 Active JP6472171B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014096225A JP6472171B2 (ja) 2013-08-27 2014-05-07 画像処理装置およびその方法
US14/340,866 US9202148B2 (en) 2013-08-27 2014-07-25 Image processing apparatus and method for generating stencil data of a stroke based on shape information, connection-point information, and end-point information
MYPI2016704041A MY190129A (en) 2014-05-07 2015-05-07 Curable polysilsesquioxane compound, production method thereof, curable composition, cured product and use method of curable composition, etc.

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013176076 2013-08-27
JP2013176076 2013-08-27
JP2014096225A JP6472171B2 (ja) 2013-08-27 2014-05-07 画像処理装置およびその方法

Publications (3)

Publication Number Publication Date
JP2015064858A JP2015064858A (ja) 2015-04-09
JP2015064858A5 JP2015064858A5 (ja) 2017-06-15
JP6472171B2 true JP6472171B2 (ja) 2019-02-20

Family

ID=52582817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014096225A Active JP6472171B2 (ja) 2013-08-27 2014-05-07 画像処理装置およびその方法

Country Status (2)

Country Link
US (1) US9202148B2 (ja)
JP (1) JP6472171B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10254939B2 (en) * 2015-06-07 2019-04-09 Apple Inc. Device, method, and graphical user interface for providing and interacting with a virtual drawing aid
CN107977147B (zh) * 2017-12-19 2021-07-23 北京小米移动软件有限公司 滑动轨迹显示方法及装置
DE102020130293A1 (de) 2019-12-10 2021-06-10 Nvidia Corporation Polar stroking für vektorgrafiken
US11164372B2 (en) * 2019-12-10 2021-11-02 Nvidia Corporation Polar stroking for vector graphics
US11257253B2 (en) * 2019-12-10 2022-02-22 Nvidia Corporation Method and system for unified encoding of path segments, caps, and joins for path stroking

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2235856B (en) * 1989-09-01 1993-11-17 Quantel Ltd Improvements in or relating to electronic graphic systems
US5692117A (en) * 1990-11-30 1997-11-25 Cambridge Animation Systems Limited Method and apparatus for producing animated drawings and in-between drawings
JP3060761B2 (ja) 1992-11-30 2000-07-10 富士ゼロックス株式会社 描画装置
JPH1115985A (ja) 1997-06-20 1999-01-22 Fuji Xerox Co Ltd 描画装置
EP0952554A3 (en) * 1998-02-26 2003-01-08 Canon Kabushiki Kaisha Information processing apparatus and information processing method
US6208355B1 (en) * 1998-04-07 2001-03-27 Adobe Systems Incorporated Sketch-based editing of curves
JP2000099750A (ja) * 1998-09-25 2000-04-07 Fuji Xerox Co Ltd 画像処理装置及び画像処理方法
KR100324879B1 (ko) * 1999-02-01 2002-02-28 마찌다 가쯔히꼬 문자 표시 장치, 문자 표시 방법 및 기록 매체
JP4458640B2 (ja) * 2000-08-10 2010-04-28 キヤノン株式会社 描画指示装置及びその描画指示方法、並びにコンピュータ読み取り可能な記憶媒体
JP5127775B2 (ja) * 2009-05-15 2013-01-23 株式会社リコー 情報処理装置、レーザ照射装置、制御システム、描画情報記憶装置
JP5558995B2 (ja) * 2010-09-30 2014-07-23 富士フイルム株式会社 色値取得方法、画像処理方法、色値取得装置、画像処理装置及びプログラム
JP5653277B2 (ja) * 2011-03-31 2015-01-14 株式会社東芝 描画装置、描画方法、及び描画プログラム

Also Published As

Publication number Publication date
JP2015064858A (ja) 2015-04-09
US9202148B2 (en) 2015-12-01
US20150062600A1 (en) 2015-03-05

Similar Documents

Publication Publication Date Title
US8773439B2 (en) Approximation of stroked higher-order curved segments by quadratic bèzier curve segments
JP6472171B2 (ja) 画像処理装置およびその方法
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US8624899B2 (en) Arc spline GPU rasterization for cubic Bezier drawing
Kilgard et al. GPU-accelerated path rendering
JP4693660B2 (ja) 描画装置、描画方法及び描画プログラム
JP2005100177A (ja) 画像処理装置およびその方法
US9858708B2 (en) Convex polygon clipping during rendering
US11842443B2 (en) Rendering three-dimensional objects utilizing sharp tessellation
US20170109906A1 (en) Contour gradients using three-dimensional models
JP2009301284A (ja) 描画装置および方法
JP6298422B2 (ja) マンマシンインターフェースのグラフィック表示用の文字列の処理技術
CN111091620A (zh) 基于图形学的地图动态路网处理方法及系统、计算机设备
Wu et al. Correct resolution rendering of trimmed spline surfaces
JP6058216B2 (ja) 描画装置及び描画方法及び描画プログラム
JP3155753B2 (ja) 図形処理装置及び方法
KR101654865B1 (ko) 스트로크 기반의 이미지 렌더링 장치, 방법 및 컴퓨터 프로그램
JP2011165062A (ja) 描画処理装置、描画処理方法、及びプログラム
Liu et al. High quality compatible triangulations for planar shape animation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170428

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170428

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180423

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180703

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190122

R151 Written notification of patent or utility model registration

Ref document number: 6472171

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151