JP2015022760A - 入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法 - Google Patents

入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法 Download PDF

Info

Publication number
JP2015022760A
JP2015022760A JP2014121399A JP2014121399A JP2015022760A JP 2015022760 A JP2015022760 A JP 2015022760A JP 2014121399 A JP2014121399 A JP 2014121399A JP 2014121399 A JP2014121399 A JP 2014121399A JP 2015022760 A JP2015022760 A JP 2015022760A
Authority
JP
Japan
Prior art keywords
segment
contour
input path
segments
contours
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.)
Granted
Application number
JP2014121399A
Other languages
English (en)
Other versions
JP6169048B2 (ja
JP2015022760A5 (ja
Inventor
ロナルド・エヌ・ペリー
N Perry Ronald
エレナ・ジェイ・ジャクビアク
J Jakubiak Elena
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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
Priority claimed from US13/942,799 external-priority patent/US9430851B2/en
Priority claimed from US13/942,837 external-priority patent/US20150023595A1/en
Priority claimed from US13/942,828 external-priority patent/US20150022546A1/en
Priority claimed from US13/942,808 external-priority patent/US9437014B2/en
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JP2015022760A publication Critical patent/JP2015022760A/ja
Publication of JP2015022760A5 publication Critical patent/JP2015022760A5/ja
Application granted granted Critical
Publication of JP6169048B2 publication Critical patent/JP6169048B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

【課題】非ゼロ巻数規則に従って定義された2次元入力パスを等価な出力パスに変換する。
【解決手段】入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスは、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれを用いてもレンダリングすることができる。
【選択図】図1

Description

本発明は、包括的にはコンピューターグラフィックスに関し、より詳細には、非ゼロ巻数規則によって定義されたパスを、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価なパスに変換することに関する。
本発明は、包括的にはコンピューターグラフィックスに関し、より詳細には、パスのセグメントを内部又は外部としてラベル付けすることに関する。
パス、輪郭及びグリフ
コンピューターグラフィックスの分野において、物理デバイスにレンダリングする必要があるグラフィックオブジェクトの形状を表すのに、多くの場合に2次元パスが用いられる。そのようなオブジェクトの例には、グリフ、構造化ベクトルグラフィックス、イラスト、企業のロゴ、マップ等が含まれる。ここではデジタルタイプ、場合によっては最も一般的で重要な2次元オブジェクトに焦点を当てるが、以下の説明は全てのタイプの2次元オブジェクトに当てはまる。一貫した設計を有するグリフの集合体はフォントと呼ばれる。フォントは、コンピューターアプリケーションにおいて遍在している。フォントは、コンピューターモニター、電話、プリンター、カメラ、携帯情報端末(PDA)、全地球測位デバイス、テレビ等の多くのタイプの物理デバイス上にレンダリングすることができる。
グリフはパスによって示される。形式上、パスは1組の輪郭及び塗りつぶし規則を含む。輪郭は、一連の区分的に連続した有向セグメントとして表される有界の閉領域である。セグメントは線形又は曲線形とすることができる。塗りつぶし規則は非ゼロ巻数規則(nonzero winding rule)及び奇数−偶数パリティ規則(even-odd parity rule)を含む。
奇数−偶数パリティ規則は、パスによって画定される形状に対する点の「内側性(insideness)」を判断し、当該判断は、任意の方向においてその点から無限遠への光線を描画し、この光線が交差する形状からのパスセグメントの数をカウントすることによって行われる。この数が奇数である場合は、その点は内側にあり、偶数である場合は、その点は外側にある。
非ゼロ巻数規則はより複雑である。所与のパスC及び所与の点Pについて、任意の方向においてPから無限遠に向かう光線、すなわち直線を構築する。Cとこの光線との全ての交差を見つける。以下のように巻数のスコアを計上する。全ての時計回りの交差について、すなわちPから見たときに左から右へ光線を通過するパスについて、1を減算し、全ての反時計回りの交差について、すなわち、Pから見たときに右から左へ通過するパスについて、1を加算する。総巻数がゼロである場合、PはCの外側にあり、そうでない場合、PはCの内側にある。
コンピューターアプリケーションのグリフは、非ゼロ巻数規則に従って設計されることが最も多い。グリフは、様々な視覚効果を達成するように、例えば無地一色で塗りつぶすことができる、あるいは、内部部分を塗りつぶすことなくそれらのパスの外形を描くことができる。
非ゼロ巻数規則
非ゼロ巻数規則に従って塗りつぶされるか又は外形を描かれることになるパスをレンダリングするとき、いくつかの問題が存在する。第1に、ほとんど全てのレンダリングシステムが奇数−偶数パリティ規則をサポートしているのに対し、多くのレンダリングシステムは、非ゼロ巻線規則が複雑であることに起因して非ゼロ巻線規則をサポートしていない。第2に、非ゼロ巻数規則は奇数−偶数パリティ規則よりも実行が低速である。これは、リソースが制限されたデバイスにおけるレンダリング時に問題となり得る。
第3に、部分グリフについて図6(a)、図6(b)及び図6(c)に示すように、非ゼロ巻数規則は、或る特定の方法で動作するレンダリングシステムの「内部エッジハロー(interior edge haloes)」601〜603を生成する可能性がある。このハローアーティファクトは、レンダリングが最初に形状を塗りつぶし、次に無条件に全てのエッジをアンチエイリアシングし、これによって塗りつぶしが損なわれることに起因して生じる。
他の内部アーティファクトが図6(d)及び図6(e)に示されている。図6(d)は、従来技術において文字Q612として正しく外形を描かれる2つの(有向)輪郭を有するパス611を示している。しかしながら、パス621が、図6(e)に示すように3つの輪郭又は自然な「ストローク」によって画定される場合、内部(非境界)エッジはレンダリング中に除去されず、外形622は不正確である。
非ゼロ巻数規則を用いるとき、この規則をサポートするレンダリングシステムであっても、他の問題が存在する。パスは多くの場合に自己交差、一致セグメント、及びレンダリングシステムがパスを不正確に塗りつぶすか又はパスの外形を不正確に描くことに起因して不適切に処理する他の縮退事例を含む。
したがって、非ゼロ巻数規則によって定義されるパスを、奇数−偶数パリティ規則又は非ゼロ巻数規則のいずれを用いてもレンダリングすることができる等価なパスに変換することが望ましい。等価なパスがより単純であり、より小さく、レンダリングをより高速に行い、上記したような縮退事例に起因する不正確な領域又は厄介なレンダリングアーティファクトを一切示さないことが理想である。
さらに、パスが自己交差、一致セグメント、及び他の縮退事例を含む場合であっても、パスのセグメントを内部又は外部として正しく正確に判断可能とすることが望ましい。セグメントを正しく正確に判断することによって、パスが縮退事例を含むときに、パスレンダリングシステム、パス圧縮システム、パス単純化システム等が正しく機能することが可能になる。
特許文献1は、非ゼロ巻数規則によって画定される多角形を奇数−偶数パリティ規則によって画定される多角形に変換する方法を記載している。その方法は、線形のエッジを有する閉じた多角形に対し動作し、各多角形は1組のラベル付けされた輪郭を含む。その方法は、一致セグメント、一致点、自己交差等の縮退事例を、それらの全ての変形において正しく処理するわけではない。その方法は、非ゼロ巻数規則によって画定される単純化された多角形を出力としてレンダリングすることができない。
特許文献2は、2つ以上の任意のパスに対して集合演算を行い、単純な外形パスを生成する方法を記載している。特許文献1のように、その方法は全ての縮退事例を正しく処理するわけではない。
米国特許第6,111,587号 米国特許第7,321,373号
方法は、非ゼロ巻数規則に従って定義された2次元入力パスを等価な出力パスに変換する。入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスは、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれを用いてもレンダリングすることができる。
非ゼロ巻数規則に従って定義された2次元入力パスのセグメントを内部又は外部としてラベル付けする方法が説明される。巻数が初期化される。セグメントに交差する走査線が特定される。入力パスの輪郭ごとに、巻値が、特定された走査線に交わる輪郭の任意のセグメントの巻数に累積される。ここで、セグメントと同じロケーションにおいて特定された走査線に交わる一致セグメントの累積は延期される。これらの一致セグメントはマーク付けされ、リスト内に保存される。内部又は外部としてのセグメントのラベル付けは、リスト及び巻数から判断される。
非ゼロ巻数規則に従って定義された2次元入力パスをレンダリングする方法が説明される。入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスの輪郭は、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれかによって塗りつぶされる。等価な出力パスのセグメントはアンチエイリアシングされる。
非ゼロ巻数規則に従って定義された2次元入力パスの外形を描く方法が説明される。入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスのセグメントが外形を描かれる。
従来技術との違い
概して、従来技術による方法は、線形エッジを有する閉じた多角形に対し動作し、各多角形は1組の既知のラベル付けされた輪郭を含む。本発明による実施形態は、形状のより一般的な表現、すなわち、非線形エッジを有し、いずれの輪郭がいずれの形状に属するかの所定のラベル付けのない開いたパス及び閉じたパスに対し動作する。
従来技術による方法は、非ゼロ巻数規則によって塗りつぶされたパスを、奇数−偶数パリティ規則によって塗りつぶされたパスに変換する。本発明による実施形態は、奇数−偶数パリティ規則又は非ゼロ巻数規則のいずれによっても塗りつぶされることができるパスに変換する。本発明による実施形態における出力パスは、多くの場合に入力パスよりも必要とする形状が少なく、したがってレンダリング及び保存がより効果的である。
従来技術による方法は、全ての事例における一致エッジ及び一致点を正しく処理することができるわけではない。例えば、これらの方法は様々なステップを用いて「外側エッジ」を求めるが、全ての事例において「外側エッジ」を適切に求めるわけではない。この方法では、「外側エッジ」がどのように求められるかに起因して輪郭が様々な形で「切り替わる」。また、従来技術による方法は、必ずしも縮退セグメントを正しく処理せず、また、本発明による実施形態において説明されるような方式で輪郭に対する反復的交差テストを収束するまで実行せず、基礎をなす整数グリッド座標における算術丸め誤差に適切に対処しない。
従来技術による方法は、全ての縮退事例を正しく処理することができるわけではなく、本発明によって用いられるパスのように、非ゼロ巻数規則による入力パスを、より少ない形状を有するより単純な等価な出力パスに変換しない。この単純化を容易にするために、本発明による実施形態は様々なステップを実行して、マーク付けされていない内部輪郭、縮退セグメント、及び縮退輪郭を除去する。
本発明の実施形態によって用いられる、入力パス及び出力パスを含む例示的な輪郭及びパスの概略図である。 非ゼロ巻数規則によって定義される2次元入力パスを等価な2D出力パスに変換する方法の流れ図である。 本発明の実施形態によるセグメントをラベル付けする手順の流れ図である。 図2の方法の概略図である。 本発明の実施形態による入力パス及び出力パスの対の概略図である。 図6(a)〜(c)は従来技術によるグリフのレンダリングの概略図である。 図6(d)〜(e)は従来技術によるグリフのレンダリングの概略図である。 本発明の実施形態によるウォーキング手順の流れ図である。 本発明の実施形態による、一致エッジをラベル付けする手順の概略図である。
本発明のいくつかの実施形態は、非ゼロ巻数規則に従って定義された2次元入力パスを、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価な2D出力パスに変換する方法を提供する。本発明による実施形態は、パスのセグメントを内部又は外部として正しくラベル付けする。本発明による実施形態は、エイリアシングも外形描画アーティファクトも伴わずにレンダリングを生成することができる。本発明による実施形態は以下の定義を用いて説明される。
定義
図1に示すように、入力パス201は1組の輪郭101及び102を含む。輪郭は一連の区分的に連続した有向セグメントとして表される。縮退輪郭は、非有界領域又は開領域104、又はゼロエリアを有する領域、又は単一点103によって定義される輪郭である。
整数グリッド上に定義される(x,y)座標を有する2つ以上の点を用いてセグメントが定義される。点は、始点104及び終点105を含む。オプションで、1つ又は複数の制御点106が存在することもできる。単純にするために、この説明は、2つ又は3つの点によって定義される線形セグメント及びベジェセグメントに限定されるが、任意の数の点及びBスプライン等の他の曲線セグメントへの拡張は当業者に明らかであろう。セグメントは始点から発し、終点で終了する。二次ベジェセグメントは、オフセグメント制御点も含む。セグメントは、非ゼロ巻数規則に従って塗りつぶされた領域を画定する輪郭の一部であるとき、外部である。そうでない場合、セグメントは内部である。
処理中に縮退セグメントが変換され、非縮退セグメントが生成される。以下にいくつかの例を挙げる。セグメント始点はセグメント終点と一致してはならない。そのようなセグメントは破棄される。二次ベジェ曲線セグメントB(t)(ただし、tは0〜1(0及び1を含む)の範囲をとる)の始点及び終点は、曲線セグメントの「内部」部分、すなわち0<t<1であるような時間パラメーターtを有する曲線セグメント部分に位置することができない。そのようなセグメントは、直線セグメントと置き換えられる。二次ベジェ曲線セグメントのオフカーブ制御点はその二次ベジェ曲線セグメントの始点とも終点とも一致してはならない。そのようなセグメントは直線セグメントと置き換えられる。
パスの各輪郭のセグメントを複数のセグメントに分割し、全てのセグメントがx方向及びy方向の双方において単調であることを強制する。セグメント内部において制御点を挿入することによってセグメントを2つのセグメントに分割することができる。例えばド・カステリョアルゴリズム(De Casteljau algorithm)に従って制御点を挿入することによって二次ベジェセグメントが分割される。これによって、自己交差輪郭を求めるときの性能が大幅に改善する。また、これによって、セグメントを内部又は外部としてラベル付けすることも単純かつ正確になる。
線形区画を用いてセグメントが近似される。1つの直線セグメントは単一の線形区画を用いて自明に近似される。1つの二次ベジェセグメントは1つ又は複数の線形区画を用いて近似される。二次ベジェセグメントを表すのに用いられる線形区画の制御点は、グリッド上の整数ロケーションに丸められる。目標レンダリングサイズを用いて、二次ベジェセグメントを表すのに必要な線形区画の数を制限し、それによって交差を計算する性能を改善する。線形区画は必要に応じて求められ、次に未来の処理のために保存される。線形区画の始点及び終点は一致してはならない。そのような区画は除去される。
接続点は特定の交差と関連付けられたデータを含む。接続点は、交差のデカルトロケーション(Cartesian location)を特定し、その交差から発する外部セグメントのリスト、すなわちアウトバウンド外部セグメントのリストを保持する。
非ゼロ巻数規則によって定義されるパスの変換
図2に示されるように、本発明のいくつかの実施形態は、非ゼロ巻数規則によって定義される入力パス201を、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価な出力パス202に変換する方法を提供する。パスは2次元(2D)座標系において定義される。ステップは図4において概略的に示される。
量子化及び変形
第1に、本方法は必要な場合、オプションで入力パスの非整数制御点を整数に変換する、すなわち量子化及び変形する(205)。例えば、TrueType(登録商標)フォントは、EMスクエアと呼ばれる十分な精度の整数座標系において定義され、したがって量子化も変形も必要としない。変換が必要なとき、浮動小数点又は固定小数点において指定される入力パスの制御点が変形され、例えば256を乗算され、次に丸められ、十分な精度の整数が求められる。
このステップをスキップすると、入力パスの制御点はそれらの元の座標系にとどまる。元の座標系は、いくつか例を挙げると、浮動小数点又は固定小数点グリッドにおいて定義することができる。量子化及び変形をスキップすることによって、より高い精度で算術演算を行うことができるが、これによって処理時間が増大し、出力パス202において欠陥が生じる場合がある。
縮退セグメントを置き換え又は除去し、オプションで単調性を強制
次に、整数変換後、縮退セグメントが除去される(210)。以下に縮退セグメントのいくつかの例を挙げる。セグメント始点はセグメント終点と一致してはならない。そのようなセグメントは破棄される。二次ベジェ曲線セグメントB(t)(ただし、tは0〜1(0及び1を含む)の範囲をとる)の始点及び終点は、曲線セグメントの「内部」部分、すなわち0<t<1であるような時間パラメーターtを有する曲線セグメント部分に位置することができない。そのようなセグメントは、直線セグメントと置き換えられる。二次ベジェ曲線セグメントのオフカーブ制御点はその二次ベジェ曲線セグメントの始点とも終点とも一致してはならない。そのようなセグメントは直線セグメントと置き換えられる。
オプションで、x方向及びy方向の双方におけるセグメントの単調性が強制される(215)。
縮退輪郭の除去
縮退輪郭が除去される(220)。縮退輪郭のいくつかの例は、単一の点、開輪郭、すなわち「水密(watertight)」でない輪郭、及び内部エリアを有しない輪郭で構成される輪郭を含む。
性能を加速するデータ構造の構築
方法の実行性能を改善するデータ構造がオプションで構築される(225)。データ構造はステップ230及び240中にオンデマンドで及び必要なときにのみ構築することもできる。例示的なデータ構造は、境界ボックスと、近接性クラスターツリーと、セグメント及び輪郭のグリッドとを含む。
交差を求める
自己交差輪郭が求められる(230)。自己交差輪郭は、Pにおいて、Pの前後の一連の連続セグメントに新たな制御点を挿入することによって、自己交差の各点Pにおいて分割され、分けられる。オプションの量子化及び変形ステップが実行された場合、グリッドの整数座標において交差が求められる。セグメントが交差に寄与し得ることが可能であるとき、ベジェセグメントが必要に応じて線形区画に分割される。線形区画に対し交差試験が行われ、性能及び正確性が改善される。セグメントの単調性及びデータ構造の加速を用いてセグメント間交差テストを最小限にする。自己交差を含む入力パスの各輪郭をマーク付けする(235)。これに続いて、輪郭間交差が求められ(240)、これらもマーク付される(245)。この説明の目的で、何らかの方法で明示的にマーク付けされていない輪郭が「未マーク」とみなされる。
以下は、交差を求めるときの追加の規則及び慣例である。冗長な交差を回避するために、t=0において生じる交差はカウントされないが、t=1において生じる交差はカウントされる。2つの一致する直線セグメントは最大で2つの交差を有する。共通の終点において輪郭内で連結されている一連の直線セグメントは、その共通の終点において交差しない。交差輪郭が処理された後、生成されたいずれの線形区画ももはや用いられない。交差は輪郭に挿入され、例えばベジェセグメントがそれらの交差において分割され、分けられ、以下で説明するようにパスの輪郭がウォーキングされる。
輪郭交差ステップは、更なる交差が生じなくなるまで繰り返される。この繰り返しは、前回求められた交差の結果として新たな交差が生じ得ることに起因して行われる。このステップは、出力パス202が正しく、後続のレンダリング及び処理にアーティファクトが一切ないことを確実にする。ほとんどの入力パスが単一の反復しか必要としないことに留意されたい。
マーク付けされていない内部輪郭の除去
入力パス201のマーク付けされていない内部輪郭が除去される(250)。任意のセグメントの巻数を求め、例えば通常、入力パス201の各マーク付けされていない輪郭の第1のセグメントを用いて、セグメントが内部輪郭であり、ウォーキングステップの前に除去される必要があるか否かを判断する。最初に隠されている入力パス201の輪郭は、ウォーキングステップの後に明らかにすることができ、したがってここで除去される。
接続点の連結及び生成
次に、各交差のデカルトロケーションと関連付けられた接続点を生成することによって交差がリンク付けされる(255)。接続点は特定の交差に関するデータを含み、交差のデカルトロケーションを指定し、そのロケーションにおいて開始するセグメントのリストを保持する。一意の交差ごとに、すなわち一意の(x,y)座標を有する交差ごとに、外部アウトバウンドセグメントのリストLが求められる。交差へのインバウンドセグメントごとに、Lへのポインターが保持される。外部アウトバウンドセグメントは、交差において開始するセグメントであり、交差から外向きに発し、そのセグメントの巻数は、そのセグメントが入力パス201の外部エッジであることを示す。アウトバウンドセグメントを外部として適切にラベル付けすることは重要なステップである。リンク付け255の後、Lのセグメントは適切にラベル付けされる。
ウォーキング
交差がリンク付けされた(255)後、パスの各マーク付けされた輪郭をウォーキング(260)して、マージによって新たな輪郭を生成することができる。ウォーキングはマーク付けされた輪郭上の任意の接続点において開始することができる。マーク付けされた輪郭のセグメントは、新たな輪郭にコピーされるか、又はセグメントが内部であるときに除去される。図7に示すように、ウォーキングプロセスの詳細なステップは以下の通りである。
1.マーク付けされた輪郭の交点IPごとに、すなわち接続点ごとに、以下のステップを実行する:
2.LをIPの外部アウトバウンドセグメントのリストに設定する(710)。
3.Lが空の場合、ステップ1に進み、次の交点に移る(715)。
4.Lが空でない場合、Lの開始セグメントを取得し、除去する。このセグメントにSを設定する(720)。
5.新たな輪郭Cを生成する(730)。
6.Cの最後にセグメントSを付加する(740)。
7.Sの終点がIPの場合、トラバースしてIPまで戻ったことになる。ステップ3に進む(750)。
8.Sの終点が別の交点でない場合、次のセグメントを取得し、このセグメントをSに設定し、ステップ6に移る(750)。
9.Sの終点がIP以外の別の交点Qである場合、輪郭を以下のように切り替える:Qの接続点Jを取得し、Jの外部アウトバウンドセグメントを取得及び除去し、この外部アウトバウンドセグメントをSに設定し、ステップ6に移る(750)。
マーク付けされた輪郭の除去
次に、入力パス201のマーク付けされた輪郭が除去される(265)。出力パス202に寄与するマーク付けされた輪郭のセグメントは前のウォーキングステップにおいて新たな輪郭にコピーされている。
縮退輪郭の除去
次に、残りの輪郭の縮退輪郭が除去される(268)。縮退輪郭の例には、単一点を有する輪郭、開輪郭、及び内部エリアを有しない輪郭が含まれる。
出力パスの形成
最後に、新たな輪郭及びマーク付けされていない輪郭が出力パス202として収集される(270)。単純化された出力パスは、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる。
量子化及び変形の反転
ステップ205において、入力パス201がオプションで量子化及び変形された場合、そのプロセスは出力パス202において反転され(275)、座標が元の座標系に復元される。
変換の効果
図5は、入力パス201を左に、出力パス202を右に、パス501〜506の例示的な対を示している。例は、出力パス202が非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれを用いても正しくレンダリングされることを示している。入力パス201における一致セグメント等の縮退事例の存在、及びそれらを適切に処理して正しい出力パス202が生成されることに留意されたい。
マージ輪郭手順はオブジェクトベースである。この手順は、更なる処理のための2D出力パス202を明示的に求める。従来技術による画像ベースの手法は、この動作をラスター化中に行うので、ピクセルのみが結果を示し、本明細書において説明されるような明示的な2D出力次元パスは形成されない。
マージ輪郭手順への入力は、グリフを表すパス等の単一の有向2Dパスである。パスの内部は非ゼロ巻数規則によって画定される。出力は、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価で単純化された2Dパスである。単純化は、重複する輪郭、自己交差輪郭、縮退輪郭及び不要な輪郭の除去を含むことができる。
パス変換:例
図4は、入力パス201を変換する方法の動作を概略的に示している。入力パス201は、外部輪郭401と、内部輪郭402と、2つの交差する輪郭403及び404とを含む。輪郭403は自己交差もしている(411)。輪郭403及び404は2つの輪郭間交差412を有する。交差を有する輪郭403及び404がマーク付けされる(M)。マーク付けされていない内部輪郭402は除去される。次に、接続点が交差と関連付けられる。各接続点におけるアウトバウンドセグメント420は内部又は外部である。各接続点における外部アウトバウンドセグメントはラベル付けされて、「||」によって示される。
ウォーキング中、輪郭をマージすることによって新たな輪郭430が生成される一方、マーク付けされた輪郭及び縮退輪郭が除去される。
上記の方法及び本明細書において説明する任意の他の手順又は方法のステップは、当該技術分野において既知のメモリ及び入出力インターフェース並びにデバイスに接続されたプロセッサにおいて実行することができる。
レンダリング:アーティファクトのないパスの塗りつぶし又は外形描画
上記で生成されるような出力パス202は、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれかによって塗りつぶすか又は外形を描くことによってレンダリングすることができる(280)。アンチエイリアシング285も適用することができる。従来技術と対照的に、塗りつぶされたパスは内部エイリアシングアーティファクトを一切含まない。同様に、外形を描かれたパスは内部エッジアーティファクトを一切含まない。
内部及び外部セグメントのラベル付け
図3は、セグメントSが内部にあるか又は外部にあるかを判断する手順を示している。第1に、巻数Wがゼロに初期化される(305)。次に、セグメントに交差することが保証される走査線が特定される(310)。x方向及びy方向の双方においてセグメントの単調性が強制される場合、走査線は、セグメントの中点を通過する水平走査線又は垂直走査線のいずれかであると迅速かつ正確に特定することができる。
輪郭Cごとに、セグメントSに交わる前に特定された走査線に交わる輪郭Cの任意のセグメントについて巻値がWに累積される(315)。セグメントSと同じロケーションにおいて走査線に交わる輪郭Cの一致セグメントについて巻値をWに累積することは、全ての輪郭が処理された後まで延期される。一致セグメントは、巻数に関する限りグループとして扱われなくてはならない。なぜならそれらは重複し、互いを相殺するためである。一致セグメントはマーク付けされ、リストL内に保存される(320)。一致セグメントについては図8も参照されたい。
一致セグメントが存在しない場合、以下のように進行する。Wが非ゼロであり、かつWがSを計上するように更新されたときに非ゼロである場合(345)、セグメントSは内部であるとマーク付けされ、そうでない場合、セグメントSは外部であるとマーク付けされる(350)。
一致セグメントが存在するとき、以下のように進行する。保存された一致セグメントのリストLにセグメントSを加える(335)。リストL内の互いに反対方向を有する一致セグメントの対は相殺し合い、それらの巻数の累積はゼロでありWが変化しない。巻値はセグメントSを除くリストL内の残りの相殺されていないセグメントについてWに累積される(340)。Wが非ゼロであり、かつ、Sを計上するように更新されたときにWが非ゼロである場合(345)、セグメントSは内部であるとマーク付けされ、そうでない場合、セグメントSは外部であるとマーク付けされる(350)。
従来技術による方法は上記で説明したような一致セグメントを処理せず、したがって内部アーティファクトを有する不正確な出力パスを生成する可能性があることに留意されたい。
図8は、出力パス202が正しくなるような入力パス201の輪郭801及び802のアウトバウンドセグメントのラベル付けを概略的に示している。輪郭は一致セグメント803を有する。外部アウトバウンドセグメントは「||」によって示される。上記で概説したステップの特性に起因して、セグメント803は内部として正しく識別され、このためこれらのセグメントはウォーキング中に除去される。本発明者らの知る限り、従来技術によるパスレンダリングはいずれも、この事例にその全ての変形において正しく対処するわけではない。この事例では、一致セグメントは巻数が求められるときにグループとして扱われる必要がある。
応用形態及び顕著な特徴
奇数−偶数パリティ規則に従ってパスを塗りつぶすレンダリング方法は、図2において概説したような輪郭マージ手順を前処理ステップとして用いて、非ゼロ巻数規則に従って塗りつぶされるように設計されたパス、例えばTrueType(登録商標)フォントにおけるグリフを正しくレンダリングすることができる。
輪郭マージ手順を用いて、様々なフォントレンダリングシステム内に存在する内部エッジハロー及び外形描画アーティファクトを取り除くこともできる。奇数−偶数パリティ規則は非ゼロ巻数規則よりも複雑でなく、実行が高速である。したがって、輪郭マージ手順を用いて入力パスを等価な出力パスに変換し、次に奇数−偶数パリティ規則を用いてレンダリングすることができる。
輪郭マージ手順は、2次元パスにおける、論理和、論理積、論理差等の2次元空間領域構成法(CSG:constructive solid geometry)演算を行うのに用いることもできる。
輪郭マージ手順は、リアルタイムで非常に困難な計算幾何学問題を解き、従来技術と比較すると幾つかの顕著な特徴を有する。輪郭マージ手順は、困難なグレージング条件及び特異性、例えば一致点及び一致セグメントを処理することができる。手順は、非線形曲線エッジ及び有向エッジをサポートする。ほとんどの従来技術による手順は、線形エッジを有する多角形に対してのみ機能する。輪郭マージ手順は、整数計算を用いて整数グリッドに対して演算を行うことができる。これは従来技術による同等の手順よりも1桁〜2桁高速である。
輪郭マージ手順は、グレージング条件、セグメント及び輪郭の縮退前処理及び後処理、並びに交差を求めるための曲線セグメントのオンデマンドテッセレーションを適切に処理するように、一致エッジの同時分類も提供する。曲線セグメントのテッセレーションは目標レンダリングサイズに基づくことができ、したがって所与の目標の性能を最適化することができる。より良好な性能及び正確性のためにセグメントの単調性を強制することができる。マージ中、全ての制御点を整数座標系上に表し、正確性及び性能を改善することができる。輪郭セグメントが交差において分割され、分けられると、手順は収束するまで反復交差テストを用いてロバスト性を確保することができる。
セグメントを内部又は外部として正しくラベル付けすることによって、パスが縮退事例を含むときに、パスレンダリングシステム、パス圧縮システム、パス単純化システム等が正しく機能することが可能になる。

Claims (28)

  1. 入力パスを変換する方法であって、該入力パスは2次元(2D)座標系における非ゼロ巻数規則に従って定義され、前記入力パスは1組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
    前記入力パスの縮退セグメントを除去するステップと、
    前記入力パスの縮退輪郭を除去するステップと、
    前記入力パスの交差を求めるステップと、
    前記交差を含む入力パスの前記輪郭をマーク付けするステップと、
    マーク付けされていない内部輪郭を除去するステップと、
    前記交差をリンク付けするステップと、
    前記マーク付けされた輪郭をウォーキングすることにより新たな輪郭を形成するステップと、
    前記マーク付けされた輪郭を除去するステップと、
    縮退輪郭を除去するステップと、
    前記新たな輪郭及びマーク付けされていない輪郭を収集することにより前記入力パスに等価な出力パスを得るステップと
    を含み、各前記ステップはプロセッサが実行する、入力パスを変換する方法。
  2. 前記入力パスはグリフを表す、請求項1に記載の方法。
  3. 前記入力パスはイラストを表す、請求項1に記載の方法。
  4. 前記入力パスは構造化ベクトルグラフィックを表す、請求項1に記載の方法。
  5. いかなるエイリアス又は内部エッジアーティファクトを生成することなく、前記非ゼロ巻数規則および奇数−偶数パリティ規則のいずれか一方によって前記出力パスをレンダリングすることを更に含む、請求項1に記載の方法。
  6. 前記レンダリングは前記輪郭を塗りつぶす、請求項5に記載の方法。
  7. 前記レンダリングは前記輪郭の外形を描く、請求項5に記載の方法。
  8. 線形区画を用いて曲線セグメントを近似することにより交差を求めることを更に含む、請求項1に記載の方法。
  9. 前記セグメントに単調性を強制することを更に含む、請求項1に記載の方法。
  10. 接続点を各交差と関連付けることを更に含み、前記接続点は前記交差のデカルトロケーションを特定し、前記交差から発する外部セグメントのリストを保持する、請求項1に記載の方法。
  11. 前記縮退セグメントは、
    そのセグメントの始点が終点と一致する任意のセグメントと、
    曲線から構成され、前記曲線の内部部分に前記始点及び前記終点を有する任意のセグメントと、
    前記曲線の前記始点又は前記終点のいずれかと一致する前記曲線のオフカーブ制御点を有する任意のセグメントと
    を含み、
    前記縮退輪郭は、
    非有界領域又は開領域である任意の輪郭、ゼロエリアを有する領域、又は、単一点によって定義される任意の輪郭を含む、
    請求項1に記載の方法。
  12. 前記セグメントのうちのいくつかは一致する、請求項1に記載の方法。
  13. 前記輪郭のうちのいくつかは自己交差である、請求項1に記載の方法。
  14. 前記セグメントを定義する座標は整数を用いて指定される、請求項1に記載の方法。
  15. 前記セグメントを定義する座標は浮動小数点数を用いて指定される、請求項1に記載の方法。
  16. 前記セグメントを定義する座標は固定小数点数を用いて指定される、請求項1に記載の方法。
  17. 前記入力パスの前記交差を求めることは、整数グリッドにおいて行われる、請求項1に記載の方法。
  18. 前記入力パスの前記交差を求めることは、浮動小数点グリッドにおいて行われる、請求項1に記載の方法。
  19. 前記入力パスの前記交差を求めることは、固定小数点グリッドにおいて行われる、請求項1に記載の方法。
  20. 前記入力パスの前記交差を求めることは、更なる交差が見つからなくなるまで繰り返される、請求項1に記載の方法。
  21. 前記入力パスの前記交差を求めることは、目標レンダリングサイズにおいて曲線セグメントのオンデマンドテッセレーションを用いて性能を改善する、請求項1に記載の方法。
  22. 前記入力パスの前記交差を求めることは、加速データ構造を用いて性能を改善する、請求項1に記載の方法。
  23. 前記加速データ構造は境界ボックス、ツリー、又はグリッドを含む、請求項22に記載の方法。
  24. 前記入力パスの前記セグメントは量子化され、整数グリッドに変形される、請求項1に記載の方法。
  25. 前記出力パスの前記セグメントは、前記収集することの前に変形され元の座標系に戻される、請求項24に記載の方法。
  26. 入力パスのセグメントを内部又は外部としてラベル付けする方法であって、前記入力パスは2次元(2D)座標系において非ゼロ巻数規則に従って定義され、前記入力パスは1組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
    巻数をゼロに初期化するステップと、
    前記セグメントに交差する走査線を特定するステップと、
    輪郭ごとに、巻値を前記走査線に交わる前記輪郭の任意のセグメントの前記巻数に累積するステップであって、前記セグメントと同じロケーションにおいて前記走査線に交わる前記輪郭の一致セグメントの前記累積は、全ての前記輪郭が処理されるまで延期され、前記一致セグメントはマーク付けされ、前記マーク付けされた一致セグメントはリスト内に保存される、ステップと、
    前記リストが空であり、かつ前記巻数がゼロでなく、かつ前記巻数が前記セグメントを計上するように更新されたときにゼロでない場合、前記セグメントを内部としてラベル付けするステップと、
    前記リストが空であり、かつ前記巻数がゼロであるか、又は前記巻数が前記セグメントを計上するように更新されたときにゼロである場合、前記セグメントを外部としてラベル付けするステップと、
    前記リストが空でなく、かつ、互いに反対の向きを有する前記リストのセグメント対を相殺した後に前記リストが前記セグメントを含むように拡張され、前記リスト内の前記セグメントを除く任意の残りの相殺されていないセグメントについて前記巻値を前記巻数に累積した後に、前記巻数がゼロでなく、かつ、前記セグメントを計上するように更新されたときに前記巻数がゼロでない場合、前記セグメントを内部としてラベル付けするステップと、
    前記リストが空でなく、かつ、互いに反対の向きを有する前記リストのセグメント対を相殺した後に前記リストが前記セグメントを含むように拡張され、前記リスト内の前記セグメントを除く前記残りの相殺されていないセグメントについて前記巻値を前記巻数に累積した後に、前記巻数がゼロであるか、又は、前記セグメントを計上するように更新されたときに前記巻数がゼロである場合、前記セグメントを外部としてラベル付けするステップと
    を含み、各前記ステップはプロセッサが実行する、入力パスのセグメントを内部又は外部としてラベル付けする方法。
  27. 入力パスをレンダリングする方法であって、該入力パスは2次元(2D)座標系における非ゼロ巻数規則に従って定義され、前記入力パスは1組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
    前記入力パスの縮退セグメントを除去するステップと、
    前記入力パスの縮退輪郭を除去するステップと、
    前記入力パスの交差を求めるステップと、
    前記交差を含む入力パスの前記輪郭をマーク付けするステップと、
    マーク付けされていない内部輪郭を除去するステップと、
    前記交差をリンク付けするステップと、
    前記マーク付けされた輪郭をウォーキングすることにより新たな輪郭を形成する、ステップと、
    前記マーク付けされた輪郭を除去するステップと、
    縮退輪郭を除去するステップと、
    前記新たな輪郭及びマーク付けされていない輪郭を収集することにより、前記入力パスに等価な出力パスを得るステップと、
    前記非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれか一方によって前記出力パスの前記輪郭を塗りつぶすステップと、
    前記出力パスの前記セグメントをアンチエイリアシングすることにより、前記入力パスをレンダリングするステップと
    を含み、各前記ステップはプロセッサが実行する、入力パスをレンダリングする方法。
  28. 入力パスの外形を描く方法であって、該入力パスは2次元(2D)座標系における非ゼロ巻数規則に従って定義され、前記入力パスは1組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
    前記入力パスの縮退セグメントを除去するステップと、
    前記入力パスの縮退輪郭を除去するステップと、
    前記入力パスの交差を求めるステップと、
    前記交差を含む入力パスの前記輪郭をマーク付けするステップと、
    マーク付けされていない内部輪郭を除去するステップと、
    前記交差をリンク付けするステップと、
    前記マーク付けされた輪郭をウォーキングすることにより新たな輪郭を形成するステップと、
    前記マーク付けされた輪郭を除去するステップと、
    縮退輪郭を除去するステップと、
    前記新たな輪郭及びマーク付けされていない輪郭を収集して、前記入力パスに等価な出力パスを得るステップと、
    前記出力パスの前記セグメントの外形を描くことにより前記入力パスの外形を描くステップと
    を含み、前記ステップはプロセッサが実行する、入力パスの外形を描く方法。
JP2014121399A 2013-07-16 2014-06-12 入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法 Expired - Fee Related JP6169048B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US13/942,799 2013-07-16
US13/942,828 2013-07-16
US13/942,808 2013-07-16
US13/942,837 2013-07-16
US13/942,799 US9430851B2 (en) 2013-07-16 2013-07-16 Method for converting paths defined by a nonzero winding rule
US13/942,837 US20150023595A1 (en) 2013-07-16 2013-07-16 Method for Rendering Paths without Outlining Artifacts
US13/942,828 US20150022546A1 (en) 2013-07-16 2013-07-16 Method for Rendering Paths without Aliasing Artifacts
US13/942,808 US9437014B2 (en) 2013-07-16 2013-07-16 Method for labeling segments of paths as interior or exterior

Publications (3)

Publication Number Publication Date
JP2015022760A true JP2015022760A (ja) 2015-02-02
JP2015022760A5 JP2015022760A5 (ja) 2017-04-13
JP6169048B2 JP6169048B2 (ja) 2017-07-26

Family

ID=52487088

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014121399A Expired - Fee Related JP6169048B2 (ja) 2013-07-16 2014-06-12 入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法

Country Status (1)

Country Link
JP (1) JP6169048B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113902755A (zh) * 2021-09-30 2022-01-07 中国人民解放军国防科技大学 基于之字形的多层轮廓图案的激光填充方法及装置
US11513029B2 (en) 2016-04-25 2022-11-29 Siemens Aktiengesellschaft Moving flying object for scanning an object, and system for analyzing damage to the object

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319346A (en) * 1990-08-29 1994-06-07 Xerox Corporation Conversion from odd to non-zero winding number specification using an extended frame buffer
JPH1021415A (ja) * 1996-07-03 1998-01-23 Brother Ind Ltd 図形処理装置並びに図形処理方法
US6173075B1 (en) * 1995-08-30 2001-01-09 Usanimation, Inc. Drawing pixmap to vector conversion
JP2005122302A (ja) * 2003-10-14 2005-05-12 National Institute For Rural Engineering 図形データ処理方法
WO2010134124A1 (ja) * 2009-05-19 2010-11-25 三菱電機株式会社 ベクトル図形描画装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5319346A (en) * 1990-08-29 1994-06-07 Xerox Corporation Conversion from odd to non-zero winding number specification using an extended frame buffer
US6173075B1 (en) * 1995-08-30 2001-01-09 Usanimation, Inc. Drawing pixmap to vector conversion
JPH1021415A (ja) * 1996-07-03 1998-01-23 Brother Ind Ltd 図形処理装置並びに図形処理方法
JP2005122302A (ja) * 2003-10-14 2005-05-12 National Institute For Rural Engineering 図形データ処理方法
WO2010134124A1 (ja) * 2009-05-19 2010-11-25 三菱電機株式会社 ベクトル図形描画装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11513029B2 (en) 2016-04-25 2022-11-29 Siemens Aktiengesellschaft Moving flying object for scanning an object, and system for analyzing damage to the object
CN113902755A (zh) * 2021-09-30 2022-01-07 中国人民解放军国防科技大学 基于之字形的多层轮廓图案的激光填充方法及装置
CN113902755B (zh) * 2021-09-30 2024-03-12 中国人民解放军国防科技大学 基于之字形的多层轮廓图案的激光填充方法及装置

Also Published As

Publication number Publication date
JP6169048B2 (ja) 2017-07-26

Similar Documents

Publication Publication Date Title
US9311738B2 (en) Path rendering by covering the path based on a generated stencil buffer
JP5600410B2 (ja) グラフィックス処理システム
JP6863693B2 (ja) グラフィックス処理システムおよび方法
US8928668B2 (en) Method and apparatus for rendering a stroked curve for display in a graphics processing system
JP5721358B2 (ja) グラフィックス処理システム
JP4157569B2 (ja) 描画装置、描画方法及び描画プログラム
JP5687692B2 (ja) コンピュータ生成画像をレンダリングするための方法及び装置
US20080079728A1 (en) Vector graphics shape data generation apparatus, rendering apparatus, method, and program
Governi et al. 3D geometry reconstruction from orthographic views: A method based on 3D image processing and data fitting
CN112233215A (zh) 轮廓渲染方法、装置、设备及存储介质
US20150023595A1 (en) Method for Rendering Paths without Outlining Artifacts
Yang et al. Effective clipart image vectorization through direct optimization of bezigons
JP2009301284A (ja) 描画装置および方法
Manson et al. Wavelet rasterization
JP6169048B2 (ja) 入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法
Dokter et al. Hierarchical rasterization of curved primitives for vector graphics rendering on the GPU
JP2006521627A (ja) 動画スクリプトに従ってフレームシーケンスとしてオブジェクトを動画化する方法
Naik et al. Featurenet: Upsampling of point cloud and it’s associated features
US9437014B2 (en) Method for labeling segments of paths as interior or exterior
US20150022546A1 (en) Method for Rendering Paths without Aliasing Artifacts
US9430851B2 (en) Method for converting paths defined by a nonzero winding rule
JP2015022760A5 (ja)
JP2006521625A (ja) 2次元距離フィールドを境界デスクリプタの集合に変換する方法
Park et al. Deep Color-Normal Residual Networks for Geometry Refinement Extracting Color Consistency and Fine Geometry
JP2007140976A (ja) 断面表示プログラムおよび断面表示装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170308

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170308

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170515

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170515

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170627

R150 Certificate of patent or registration of utility model

Ref document number: 6169048

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees