説明

曲線分割装置、曲線分割方法、曲線分割プログラム、曲線分割プログラムを記録した記録媒体、曲線分割集積回路

【課題】曲線を直線に近似するときに、スタックを用いて再帰的に分割していく方法があるが、SIMDプロセッサのような並列処理システムでは応用しにくく、スタックを使用せず出力された曲線を再帰的に並列分割させようとすると出力曲線数が多くなりすぎ大量のメモリ領域が必要となる。
【解決手段】入力タスクを時分割処理するSIMDプロセッサは1曲線を2曲線に分割する曲線分割処理を行い、プロセッサ終了信号を受けたときに分割対象曲線がある場合にプロセッサの実行状態に依存せず曲線出力領域の曲線を再分割する水平方向分割と、分割対象曲線がある場合でもプロセッサの実行完了を待ち新たに分割された曲線を優先して再分割対象とする垂直方向分割とを動的に切り替える分割方向切替手段を具備することで高い並列性と省メモリを実現する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アウトラインフォントなどのベクターデータに含まれるベジェ曲線を直線に近似する曲線分割方法に関するもので、SIMD(Single Instruction Mutliple Data)プロセッサを用いて入力された曲線分割タスクを時分割で行う際に並列性を生かした直線近似を行う曲線分割装置、曲線分割方法、曲線分割プログラム、曲線分割プログラムを記録した記録媒体、曲線分割集積回路に関するものである。
【背景技術】
【0002】
コンピュータグラフィックスにおいて、アウトラインフォントなどのベクターコンテンツを表示するには曲線描画機能が必須である。従来の組み込み機器ではあらかじめ作成した固定サイズのビットマップを並べて表示していた文字表示機能が、今日のCPUやグラフィックLSIの進化に伴いアウトラインフォントから任意のサイズのフォントビットマップをリアルタイムに作成できるようになっている。アウトラインフォントは、文字の形状を、基準となる点の座標と輪郭線の集まりとして表現する形式であり、フォントの形状を定義するグリフデータを含んでいる。グリフデータは、2次元の「点座標列」と、点列をどのように結んでいくかを定義する「コマンド」から構成される。フォントの描画とは、グリフデータをラスタ化することである。ラスタ化とは、直線や曲線を表す数値データであるベクターデータをビットマップに変換する処理である。
【0003】
ここで、アウトラインフォントの代表例であるTrueTypeフォントでは、「コマンド」の代わりに、輪郭線上の点であるのか、輪郭線を構成する曲線の制御点であるのかを示すビットが各点に付加されており、それぞれ直線と2次ベジェ曲線に代替できる。すなわち、フォント形状上の点であれば「直線」として解釈し、フォント形状上の点でなければ当該点は「2次ベジェ曲線」として解釈できる。よって、フォントを描画するには、直線と2次ベジェ曲線のラスタライズを行えばよい。ラスタライズとは、コンピュータが扱う文字や画像を、プリンタで印刷したりディスプレイに表示できるように、色付きの小さな点の集まりで表現することである。ここで、2次ベジェ曲線をラスタライズする一つの方法として、曲線コマンドを複数の直線に近似し、すべてのコマンドを直線で処理する方法がある。
【0004】
ここで、ベジェ曲線について説明する。2次ベジェ曲線は3点P0、P1、P2から構成され、パラメータtを用いたパラメトリック曲線として数式1のように表現できる。また、3次ベジェ曲線は4点P0、P1、P2、P3から構成され、同様に数式2のように表現できる。
【0005】
【数1】

【0006】
【数2】

【0007】
曲線コマンドを複数の直線で近似するには図2のようにベジェ曲線のパラメータtに0.0から1.0の値を等間隔で入れて曲線上の点を求めていくことができる。しかし、曲率によっては、ほぼ直線にもかかわらず過度な分割が行われる。さらに、曲率が大きい場合には逆に分割が少なく、がたつきが生じるという課題が発生する。図2では、tを0.1間隔でずらしていく様子を表したものだが、t=0.7〜t=1.0のような曲率が小さいにもかかわらず分割されてしまう現象が発生する。このような課題を解決する方式として、ベジェ曲線の特徴を利用した再帰的曲線分割方式がある。図3のような2次ベジェ曲線を用いて説明する。ベジェ曲線には、ベジェ曲線を構成する点301、302、303の点301と302を結ぶ線分の中点304、点302と303を結ぶ線分の中点305、点304と305を結ぶ線分の中点306を用いて、2つのベジェ曲線301、304、306(左側ベジェ曲線)と306、305、303(右側ベジェ曲線)に分割することができるという特徴がある。さらに左側ベジェ曲線301、304、306は、2つのベジェ曲線301、307、309と309、308、306に、右側ベジェ曲線306、305、303は、2つのベジェ曲線306、310、312と312、311、303に分割できる。このように分割回数を増やし深さ方向に再帰的に分割を行い、ある段階まで分割したら構成点を直線で結んでいけば直線に近似した曲線を描画することができる。再帰的に分割するか否かの判定は1回の分割毎に行われ、曲線の曲率に応じて判断される。したがって、直線に近い部分は殆ど分割されず、曲率が大きい部分は細かく分割されるので、描画結果として滑らかな曲線描画を実現できる。
【0008】
このような従来の再帰的曲線分割方式を使用した例として、スタックメモリを用いて逐次的に再帰的曲線分割を行う曲線分割装置があった(例えば、特許文献1参照)。図4は特許文献1に記載された従来の曲線分割装置の構成の一例を示すブロック図である。
【0009】
図4において、曲線の制御点の各座標値を格納する第1のレジスタ401と、レジスタで保持されている制御点を2分割し、2組の曲線の各制御点を形成する2分割回路402と、2分割回路によって生成された2組の曲線の各制御点を格納する第2のレジスタ403と、複数組の各制御点を順次格納するスタックメモリ404と、第1、第2のレジスタとスタックメモリとの間に位置し、1組の各制御点を格納する第3のレジスタ405と、第2のレジスタで格納される制御点に基づき、2分割回路で制御点の2分割を行わせるか否かを決定する判定回路406とを備えている。
【特許文献1】特開平8−329261号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、上記従来の構成を、入力タスクを時分割で処理できるSIMDプロセッサシステムに適用した場合、スタックメモリを用いた逐次処理を行うことになりマルチプロセッサの利点をまったく得ることができない。図5における点線は、スタックメモリを用いた逐次処理を行った場合の処理の流れである。曲線の上下関係は、それぞれの依存関係を示している。図5のように、曲線の分割は深さ方向に行われる。そして、従来例のような再帰的分割は、一つ前に分割された曲線を使う。そのため、再帰的分割でSIMDプロセッサの並列性を活かすのは難しい。さらに、同様の理由で、入力データを異なるタスクに割り付ける時分割処理も難しい(一つ前に分割された曲線をさらに細かい2つの曲線に分割している)。
【0011】
そこで、再帰的分割処理を複数のSIMDプロセッサで並列に動作させようとした場合は、図6のように動作させるのが好ましい。そうすると、1つの曲線が2つの曲線に同時に分割され、2つの曲線は4つの曲線に同時に分割され、・・・・N個の曲線は2×N個の曲線に・・・・と、並列処理が可能になる。なお、図6に記載の番号は、実行順序を示している。そして、さらに依存関係のない曲線データを異なるタスクに割り付ける時分割処理が可能になる。しかしながら、上記方法の場合、曲線が十分直線に近似されていると判断されるまで分割した曲線を保持しておかなければならず、メモリが増大してしまうという課題が新たに発生してしまう。
【0012】
本発明は、上記従来の課題を解決するもので、SIMDプロセッサの利点である並列性を活かしながらも、少ないメモリで滑らかな直線近似を実現する曲線分割装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記従来の課題を解決するために、本発明の曲線分割装置は、各プロセッサが入力タスクを時分割処理するSIMDプロセッサシステムにおいて、N個の曲線を構成する点と評価値をN個のSIMDプロセッサに入力する曲線入力手段と、前記評価値をもとに曲線分割処理を行うか近似直線出力処理を行うかを判断し、曲線分割処理を行う場合には左側曲線と右側曲線の2つの曲線に分割し2曲線を構成する点と評価値を曲線出力領域に出力し、近似直線出力処理を行う場合には入力曲線を構成する点から求めた直線を直線出力領域に出力する曲線処理手段と、入力タスクに割り当てられた前記曲線処理手段の実行制御を行い、処理終了時に終了信号を発行する前記SIMDプロセッサと、前記SIMDプロセッサから終了信号を受けたときに、前記曲線出力領域に曲線が存在する場合前記曲線処理手段の実行状態に依存せずに前記曲線出力領域の曲線を前記曲線入力手段に再入力する水平方向分割と、前記曲線出力領域に曲線が存在する場合でも前記SIMDプロセッサからの終了信号を待ち新たに出力された曲線を優先してN=1として前記曲線入力手段に再入力する垂直方向分割とを動的に切り替える分割方向切替手段とを具備し、はじめに設定された1個の曲線を構成する点と評価値に対して再帰的に行うことで所望の曲線近似直線を生成するので、SIMDプロセッサの利点である並列性を活かしながらも、少ないメモリ容量で滑らかな直線近似を実現することができる。
【発明の効果】
【0014】
本発明によれば、入力曲線に対しての曲線分割を終えて再分割の必要がある場合に、並列性を生かし他の曲線分割処理の完了を待たずにすでに分割済みの曲線を順に曲線入力手段に再入力する水平方向分割と、曲線分割処理の完了を待って新たに出力された曲線を優先して曲線入力手段に再入力する垂直方向分割とを動的に切り替える分割方向切替手段を設けることで、SIMDプロセッサの利点である並列性を活かしながらも、少ないメモリ容量で滑らかな直線近似を実現することができる。
【発明を実施するための最良の形態】
【0015】
以下本発明の実施の形態について、図面を参照しながら説明する。
【0016】
(実施の形態1)
図1は、本発明の実施の形態1における曲線分割装置の構成を示すブロック図である。曲線分割装置は、曲線入力手段101と、SIMDプロセッサ102と、曲線処理手段103と、曲線出力領域104と、直線出力領域105と、分割方向切替手段106と、で構成される。
【0017】
曲線入力手段101は、N個の曲線を構成する点と評価値とを、それぞれN個のSIMDプロセッサ102に入力する。N個の曲線を構成する点とは、例えば、2次ベジェ曲線の場合には、図7に示すように、701、702、703を表す点である。また、3次ベジェの場合には、図7に示すように、707、708、709、710を表す点である。そして、N個の曲線を構成する点は、少なくとも始点と終点、そして曲率を制御する制御点で構成される。さらに、点の位置は2次元座標で表現できる。
【0018】
評価値とは、入力された曲線がすでに十分直線に近似できているかを判断するための値である。評価値は、曲線処理手段103内で1つの曲線を2つの曲線に分割するときに計算される。評価値を計算するための評価式は本特許では特に限定しないが、点の位置座標に依存したものが望ましい。たとえば評価式の一例としては、点のうち曲線の始点と終点を示す座標値S(SX、SY)、E(EX、EY)の各座標成分の差分の絶対値の和(|SX−EX|+|SY−EY|)としたものが挙げられる。また、評価式は、曲線を囲むようなバウンダリ領域の大きさを評価式としてもかまわない。さらに、分割対象となる曲線をはじめに入力するときに、あえて必ず再分割されるような評価値を初期値として設定しておいてもかまわない。また、Nの最大値はSIMDプロセッサの個数であり、分割方向切替手段106で決まる水平方向分割と垂直方向分割により切り替わる。分割対象となる曲線をはじめに入力するときはN=1で行う。
【0019】
そして、曲線入力手段101は、曲線を構成する点と評価値を各SIMDプロセッサ102に転送する。
【0020】
SIMDプロセッサ102は、複数のSIMDプロセッサから構成される。各SIMDプロセッサは、曲線入力手段から転送された曲線を構成する点と評価値を受け取り、曲線処理手段103の処理プログラムの入力データとして投入したのち、曲線処理手段103の処理プログラム(再分割判定及び分割曲線出力、又は再分割判定及び近似直線出力)を実行制御し、曲線処理手段103の終了時に分割方向切替手段106に終了信号を発行する。各SIMDプロセッサは、異なる入力曲線に対して、曲線処理手段103による処理を行う。さらに、SIMDプロセッサは、入力タスクを時分割で処理する特徴を持つ。すなわち、プロセッサごとに異なる入力データを同じ処理プログラムで処理することが可能であるとともに(SIMDプロセッサの特徴)、各プロセッサにおいても異なる入力データ(別の入力タスク)を時分割で処理することが可能である(入力タスクの時分割処理)。SIMDプロセッサなので、ある入力タスクに対しての曲線処理手段103の処理は同時に終了する。
【0021】
曲線処理手段103は、評価値と判定のための閾値と比較し、入力された曲線が、十分に直線近似されているかどうかを判断する。入力された曲線が直線近似されていると判断したら、入力曲線を近似直線と見立てて直線出力領域105に出力する。入力された曲線が直線近似されていないと判断したら、再分割が必要だと判断し、曲線分割を行う。そして、曲線分割によって生成された2曲線を曲線出力領域104に出力する。曲線処理手段103は、典型的にはSIMDプロセッサ102上で動作するプログラムとして実現される。
【0022】
各SIMDプロセッサは、入力曲線の点と評価値に対して前述のような曲線処理を行うことになり、結果としてプロセッサごとに直線出力を行うか、曲線分割して曲線出力を行うかが異なる可能性がある。ある曲線に対して十分直線に近似できていると判断した場合、入力曲線の点をもとに近似直線を作り直線出力領域105へ出力する。どのような直線を生成するかは具体的には限定しないが、曲線を構成する点を通るような直線であることが望ましい。例えば始点と終点を結んだ線分を出力してもかまわない。また、入力曲線のうちすべての点を結んだ複数の線分を出力してもかまわない。
【0023】
上記曲線分割は、1つの曲線を2つに分割する再帰分割処理で行われる。再帰分割処理は、分割後でも同じ特徴を持つ曲線に分割する処理である。再帰分割処理される曲線は、分割後でも同じ特徴を持つ曲線である。ベジェ曲線などは代表的な再帰分割可能な曲線の一つである。図7のように、1つの2次ベジェ曲線701、702、703は、701と702の中点である704、702と703の中点である705を結ぶ線分704、705のさらに中点706を用いて、2つの2次ベジェ曲線701、704、706と706、705、703に分割することができる。また、1つの3次ベジェ曲線707、708、709、710も同様に、707と708の中点である711、708と709の中点である712、709と710の中点である713、711と712の中点である714、712と713の中点である715、714と715の中点である716を用いて、2つの3次ベジェ曲線707、711、714、716と716、715、713、710に分割することができる。分割されたベジェ曲線の点を用いて、それぞれ新たに評価式を適用し評価値を計算しベジェ曲線を構成する点とともに曲線出力領域104に出力する。
【0024】
曲線出力領域104は、曲線処理手段103でまだ十分に直線に近似されていないと判断し出力された曲線を格納する。SIMDプロセッサからアクセス可能なメモリであれば、レジスタファイルで構成されていてもよいし、SRAMのような容量の大きいメモリで構成されていても良い。曲線出力領域104に出力された曲線は、直線近似のために曲線入力手段101で再入力されさらなる曲線分割処理が行われる。
【0025】
直線出力領域105は、曲線処理手段103で入力された曲線が直線近似されていると判断された場合に、上記近似直線を格納する。一例として、上記近似直線は、近似直線の開始点座標と終了点座標、及び直線の傾き値と切片値の組として保持する。SIMDプロセッサからアクセス可能なメモリであれば、レジスタファイルで構成されていてもよいしSRAMのような容量の大きいメモリで構成されていても良い。直線出力領域105に出力された直線は、十分近似できているものとして扱われ、例えば線を描画するラスタライザで処理される。
【0026】
分割方向切替手段106は、曲線入力手段101に再入力する水平方向分割と、曲線入力手段101に再入力する垂直方向分割と、を動的に切り替えるものである。
【0027】
水平方向分割とは、再分割すべき1つ以上の曲線を同時に曲線入力手段101に再入力するモードである。例えばM個(MはSIMDプロセッサ数)のベジェ曲線を曲線入力手段101に同時に入力し、曲線処理手段103がすべて再分割必要と判断した場合、2×M個の曲線が同時に曲線出力領域に出力されることになる。しかし、同時出力された2×M個の曲線は、すべて分割の深さ(分割回数)が同じであるため、これらの曲線間には依存関係は発生しない。そのため、曲線出力領域に出力された2×M個の曲線のうち、SIMDプロセッサ数であるM個の曲線を曲線入力手段101に再入力することができる。さらに続けて残りのM個の曲線も曲線処理手段103の実行状態を待たずに曲線入力手段101に別のタスクとして再入力することができる。すなわち、水平方向分割では、図8の801のように、同じ分割回数の曲線間には依存関係がないため、異なる入力タスクとして曲線処理手段103の完了を待つことなく並列に曲線再帰分割を行うことができる。水平方向分割を行うときの曲線出力領域の管理はFIFO(First In First Out)で実現するのが望ましい。
【0028】
これに対し、垂直方向分割とは、図8における802のように、1つの曲線に対して曲線分割を行い、分割結果である2つの出力曲線のうちどちらか一方の曲線に対してさらに曲線分割を行い、もう一方の曲線は片側の曲線を完全に直線近似し終わるまで曲線分割処理を行わずスタックメモリに保持しておくものである。すなわち、垂直方向分割では、一方の曲線を曲線入力手段101に再入力し曲線分割処理103が曲線出力領域104にさらに分割された2曲線を出力するのを確認した後でないと、もう一方の曲線を曲線入力手段101へ入力することができない。1つの曲線を深さ方向に分割していくため、常に入力対象の曲線と、出力され再入力される曲線とで依存関係が発生してしまう。垂直方向分割の利点として、SIMDプロセッサの並列性は生かせないが、曲線出力領域に必要なメモリ容量を低減することができる。
【0029】
分割方向切替手段106は、水平方向分割を行うと判断した場合には、曲線出力領域に出力された(First In)曲線のうち、最初に出力された曲線から順にリード(First Out)する。そして、プロセッサ個数の曲線を1つの入力タスク単位として曲線入力手段101に再入力する。ただし、Mが大きくなるにつれ、従来課題でも述べたように、保持しておくのに必要な曲線出力領域が大きくなり、省メモリ組み込みシステムで実現するのは困難である。
【0030】
分割方向切替手段106は、垂直方向分割を行うと判断した場合には、垂直方向分割を行うときの曲線出力領域の管理を行う。そして、この管理は、スタックメモリで実現できる。分割の深さが増加するたびに2つの曲線分の領域を使用する。そして、そのうち1つの曲線を曲線入力手段101に再入力し、もう1つの曲線の情報をスタックメモリに保持しておく。スタックしておく曲線の情報は格納されている曲線出力領域のアドレス、あるいは曲線データそのものなど、特に制限するものではない。垂直方向分割では、曲線出力領域に曲線が出力されない場合、すなわち当該曲線がすべて近似曲線と判断された場合には、当該曲線の再分割は行わず、スタックメモリに保持している曲線があればそれを取り出して、曲線入力手段101に再入力する。これをスタックが空になるまで行えば曲線を直線近似することができる。
【0031】
本特許のポイントは、水平方向分割と垂直方向分割とを動的に切り替えることができる点である。水平方向分割を行うか垂直方向分割を行うかの判断基準は、曲線出力領域に一定以上の空きサイズがあるかを基準としてもかまわない。すなわち、もし曲線出力領域の空きサイズがQ個分の曲線しかないにもかかわらず、水平方向分割による最大曲線出力数がQを超えてしまう場合には、垂直方向分割に切り替える。例として図9、図10を用いる。
【0032】
図9、図10は、SIMDプロセッサが4個の場合の、入力曲線データの処理の流れを示した図である。例えば図9のように、曲線12〜15を4つのSIMDプロセッサで処理させるためには、曲線出力領域902の空きサイズは曲線8個分以上の空きサイズが必要である。しかし、曲線出力領域902の空きサイズが足りない場合には、垂直方向分割によるスタック処理に切り替え、空き領域をスタック管理に置き換える。逆に、図10のように、曲線出力領域1002に空きサイズが十分あれば、曲線12〜15を、曲線分割処理に入力することができる。曲線8〜11の分割処理完了を待たずに曲線分割処理に入力することができるので、高い並列性を活かすことができる。
【0033】
水平方向分割に必要な曲線出力領域のメモリ容量は、分割の深さNまでを行う場合には、最大2のN乗個分の曲線を保持できる容量である。垂直方向分割に必要なメモリ容量は、2×N+N個分の曲線を保持できる容量である。ここでいう水平方向分割における必要容量は、分割の深さNまで分割しても、それらのすべての曲線が直線近似できていないと判断された場合の最悪ケースである。曲線の一部が直線近似されていると判断される場合には、そのときの出力は直線出力領域に出力され、曲線出力領域には出力されない。そのため、分割の最大の深さがNであっても、実際には2のN乗個分の曲線が曲線出力領域に出力されるわけではない。したがって、空き領域(2のN乗からそれまでに出力された直線数×2)が生じる。その空き領域を有効利用することにより、深さNよりも細かい(深い)分割のときに水平方向分割が可能となる。少なくとも1つのプロセッサに割り付けられた曲線処理手段103が直線近似と判断された場合、曲線出力領域の空き領域に余裕が生まれ、水平方向分割が選択されやすくなる。
【0034】
図11は、曲線出力領域の空き領域のサイズに応じて水平方向分割を行うか、垂直方向分割を行うかを決定するためのフローチャートを示した図である。分割方向切替手段106は、曲線処理手段で再分割が必要と判断された場合に、1101で分割した2曲線を曲線出力領域に出力する。ここで、曲線出力領域は、図12のように管理しておく。曲線出力先アドレス1201は、曲線処理手段で再分割が必要だと判断された場合に、曲線を出力する曲線出力領域内のアドレスであり、出力のたびに更新される(図11のフローチャートにおける1102で更新する)。
【0035】
再投入済アドレス1202は、入力処理手段に再投入される曲線が記憶されている曲線出力領域内のアドレスであり、曲線入力手段に入力されるたびに更新される(図11のフローチャートにおける1110、1113で更新する)。曲線出力先アドレスと再投入済アドレスの差に存在する領域は、未処理の曲線領域1203ということになる。そして、曲線出力領域全体から、未処理の曲線領域1203を引いた領域が空き領域1204である。
【0036】
曲線処理手段の1102で曲線出力先アドレスを更新し、1回目の分割が終了したら分割方向切替手段は終了信号を受信し(1103)、空き領域サイズを前述のように計算する(1104)。曲線処理手段が処理していた曲線の分割回数(深さ)をM、スタック処理で必要な領域をSとすると、空き領域サイズが2の(M+1)乗+S以下であれば垂直方向分割に切り替え、そうでなければ水平方向分割に切り替える(1105、1106、1111)。
【0037】
垂直方向分割に切り替えた場合に曲線出力領域に未処理曲線があれば曲線入力手段に曲線の1つを再投入し、他の未処理曲線をすべてスタックに保持する(1108)。未処理曲線がなければスタックに積まれている1曲線を取得し、曲線入力手段に再投入する(1109)。
【0038】
水平方向分割に切り替えた場合には、プロセッサ数の曲線を曲線入力手段に再投入する(1111)。未処理曲線の数がプロセッサ数以下であれば、未処理曲線の数だけ曲線入力手段に再投入する。再投入してもまだ未処理曲線が残っているあいだは、曲線処理手段の実行状態に依存せずに曲線入力手段に再投入する(1114)。
【0039】
なお、水平方向分割を行うか垂直方向分割を行うかの判断は、曲線出力領域に出力されている曲線の分割深さを基準としてもかまわない。すなわち、曲線出力領域に出力された曲線分割の深さが閾値以上であれば、それ以上の分割は垂直方向分割に切り替える。この場合、分割方向切替手段106が水平方向分割に切り替えたときに曲線出力領域に曲線がなければ、はじめの曲線は直線に近似されたものとして曲線近似直線の生成を終了する。そして、分割方向切替手段106が垂直方向分割に切り替えたときに曲線出力領域に曲線が存在するときは、右側曲線をスタックメモリに積み、左側曲線を曲線入力手段101に再入力する。さらに、直線出力領域にだけ近似直線が出力されているときは、スタックメモリに積まれた曲線を取り出し曲線入力手段101に再入力する。さらに、そして、スタックメモリが空になったら曲線近似直線の生成を終了する。分割方向切替手段106は、再分割するべき複数の曲線を曲線入力手段101へ転送し、曲線近似直線の生成を終了するまで再帰的に行う。
【0040】
なお、曲線入力手段、SIMDプロセッサ、分割方向切替手段などの各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部またはすべてを含むように1チップ化されても良い。ここではLSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0041】
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセサで実現しても良い。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0042】
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適応などが可能性としてありうる。
【産業上の利用可能性】
【0043】
本発明にかかる曲線分割装置は、図1において、各プロセッサが入力タスクを時分割処理するSIMDプロセッサシステムにおいて、N個の曲線を構成する点と評価値をN個のSIMDプロセッサに入力する曲線入力手段と、評価値をもとに曲線分割処理を行うか近似直線出力処理を行うかを判断し、曲線分割処理を行う場合には左側曲線と右側曲線の2つの曲線に分割し2曲線を構成する点と評価値を曲線出力領域に出力し、近似直線出力処理を行う場合には入力曲線を構成する点から求めた直線を直線出力領域に出力する曲線処理手段と、入力タスクに割り当てられた曲線処理手段の実行制御を行い、処理終了時に終了信号を発行するSIMDプロセッサと、SIMDプロセッサから終了信号を受けたときに、曲線出力領域に曲線が存在する場合曲線処理手段の実行状態に依存せずに曲線出力領域に出力されている曲線を曲線入力手段に再入力する水平方向分割と、曲線出力領域に曲線が存在する場合でもSIMDプロセッサからの終了信号を待ち新たに出力された曲線を優先してN=1として曲線入力手段に再入力する垂直方向分割とを動的に切り替える分割方向切替手段とを具備し、はじめに設定された1個のベジェ曲線を構成する点と評価値に対して再帰的に行うことで所望の曲線近似直線を生成するので、省メモリかつ並列性を活かした、美麗な曲線描画を実現することができ、SIMDプロセッサシステム構成を持つ携帯電話やテレビといった組み込み機器上でのアウトラインフォント表示方式として有用である。
【図面の簡単な説明】
【0044】
【図1】本発明の実施の形態による曲線分割装置の構成を示すブロック図
【図2】曲線分割方法のうち、ベジェ曲線のパラメータを用いて分割可能であることを説明する図
【図3】曲線分割方法のうち、ベジェ曲線を再帰的に分割可能であることを説明する図
【図4】従来の曲線分割装置における構成の一例を示す図
【図5】従来の曲線分割装置の曲線分割の処理順序を示す図
【図6】SIMDプロセッサによる曲線分割装置の曲線分割の処理順序を示す図
【図7】本発明の実施の形態による曲線分割装置における曲線処理手段を説明する図
【図8】本発明の実施の形態による曲線分割装置における水平分割処理と垂直分割処理の判断方法の一例を示す図
【図9】本発明の実施の形態による曲線分割装置における分割方向切替手段の一例を説明する図
【図10】本発明の実施の形態による曲線分割装置における分割方向切替手段の一例を説明する図
【図11】本発明の実施の形態による曲線分割装置における分割方向切替手段の一例のフローチャート
【図12】本発明の実施の形態による曲線分割装置における分割方向切替手段の一例を実現するための曲線出力領域を説明する図
【符号の説明】
【0045】
101 曲線入力手段
102 複数のSIMDプロセッサ
103 曲線処理手段
104 曲線出力領域
105 直線出力領域
106 分割方向切替手段
301 最初の2次ベジェ曲線の始点
302 最初の2次ベジェ曲線の制御点
303 最初の2次ベジェ曲線の終点
304,305 分割1回目で生成された2次ベジェ曲線の制御点
306 分割1回目で生成された2次ベジェ曲線が通る点
307,308,310,311 分割2回目で生成された2次ベジェ曲線の制御点
309,312 分割2回目で生成された2次ベジェ曲線が通る点
401 第1のレジスタ
402 2分割回路
403 第2のレジスタ
404 スタックメモリ
405 第3のレジスタ
406 判定回路
701 2次ベジェ曲線の始点
702 2次ベジェ曲線の制御点
703 2次ベジェ曲線の終点
704,705,706 2次ベジェ曲線の再帰的分割で必要な点
707 3次ベジェ曲線の始点
708,709 3次ベジェ曲線の制御点
710 3次ベジェ曲線の終点
711〜716 3次ベジェ曲線の再帰的分割で必要な点
801 水平分割処理が行われるときの曲線・直線出力の様子
802 垂直分割処理が行われるときの曲線・直線出力の様子
901 曲線入力手段による入力データ
902 曲線出力領域
1001 曲線入力手段による入力データ
1002 曲線出力領域
1101〜1114 フローチャートのブロック
1201 曲線出力先アドレス
1202 再投入済アドレス
1203 未処理の曲線領域
1204 曲線出力領域の空き領域

【特許請求の範囲】
【請求項1】
各プロセッサが入力タスクを時分割処理するSIMDプロセッサシステムにおいて、
N個の曲線を構成する点と評価値をN個のSIMDプロセッサに入力する曲線入力手段と、
前記評価値をもとに曲線分割処理を行うか近似直線出力処理を行うかを判断し、曲線分割処理を行う場合には左側曲線と右側曲線の2つの曲線に分割し2曲線を構成する点と評価値を曲線出力領域に出力し、近似直線出力処理を行う場合には入力曲線を構成する点から求めた直線を直線出力領域に出力する曲線処理手段と、
入力タスクに割り当てられた前記曲線処理手段の実行制御を行い、処理終了時に終了信号を発行する前記SIMDプロセッサと、
前記SIMDプロセッサから終了信号を受けたときに、前記曲線出力領域に曲線が存在する場合前記曲線処理手段の実行状態に依存せずに前記曲線出力領域に出力されている曲線を構成する点と評価値を前記曲線入力手段に別の入力タスクとして再入力する水平方向分割と、前記曲線出力領域に曲線が存在する場合でも前記SIMDプロセッサからの終了信号を待ち新たに出力された曲線を優先してN=1として前記曲線入力手段に再入力する垂直方向分割とを動的に切り替える分割方向切替手段と、
を具備し、
はじめに設定された1個の曲線を構成する点と評価値に対して再帰的に行うことで所望の曲線近似直線を生成する、
ことを特徴とする曲線分割装置。
【請求項2】
前記曲線は、分割後でも同じ特徴を持つ曲線に分割可能な曲線であることを特徴とする請求項1に記載の曲線分割装置。
【請求項3】
前記曲線は、ベジェ曲線であることを特徴とする、請求項2に記載の曲線分割装置。
【請求項4】
前記Nの最大値は、SIMDプロセッサシステムにおけるプロセッサ数であり、Nが2以上であることを特徴とする請求項1に記載の曲線分割装置。
【請求項5】
前記曲線出力領域は、前記分割方向切替手段により水平方向分割に切り替えた場合はFIFO(First In First Out)で構成されている領域であり、垂直方向分割に切り替えた場合にはスタックで構成されている領域であることを特徴とする請求項1に記載の曲線分割装置。
【請求項6】
前記分割方向切替手段は、曲線出力領域の空き領域サイズを判断基準として、空きサイズが閾値以下になった場合に垂直方向分割に切り替え、閾値より大きい場合に水平方向分割に切り替えることを特徴とする請求項1に記載の曲線分割装置。
【請求項7】
前記分割方向切替手段は、曲線の分割回数を判断基準として、曲線の分割回数が閾値以上になった場合に垂直方向分割に切り替え、閾値より小さい場合に水平方向分割に切り替えることを特徴とする請求項1に記載の曲線分割装置。
【請求項8】
前記分割方向切替手段が水平方向分割に切り替えた場合に、曲線出力領域に曲線が存在しないときは曲線近似直線の生成を終了することを特徴とする請求項6又は請求項7に記載の曲線分割装置。
【請求項9】
前記分割方向切替手段が垂直方向分割に切り替えた場合に、曲線出力領域に曲線が存在するときは右側曲線をスタックに積み左側曲線を前記曲線入力手段に再入力し、近似直線出力領域にだけ近似直線が出力されるときは前記スタックに積まれた曲線を取り出し前記曲線入力手段に再入力し、スタックが空になったら曲線近似直線の生成を終了することを特徴とする請求項6又は請求項7に記載の曲線分割装置。
【請求項10】
前記曲線の評価値は、前記曲線処理手段における曲線分割処理で分割したあとの曲線を構成する点の座標値から計算することを特徴とする請求項1に記載の曲線分割装置。
【請求項11】
はじめに分割対象となる曲線を処理する際には水平方向分割で処理することを特徴とする請求項1に記載の曲線分割装置。
【請求項12】
各プロセッサが入力タスクを時分割処理するSIMDプロセッサシステムを用いた曲線分割装置の集積回路であって、
評価値をもとに曲線分割処理を行うか近似直線出力処理を行うかを判断し、曲線分割処理を行う場合には左側曲線と右側曲線の2つの曲線に分割し2曲線を構成する点と評価値を曲線出力領域に出力し、近似直線出力処理を行う場合には入力曲線を構成する点から求めた直線を直線出力領域に出力する曲線処理手段と、
N個の曲線を構成する点と評価値をN個のSIMDプロセッサに入力する曲線入力手段と、入力タスクに割り当てられた前記曲線処理手段の実行制御を行い、処理終了時に終了信号を発行する前記SIMDプロセッサと、
前記SIMDプロセッサから終了信号を受けたときに、前記曲線出力領域に曲線が存在する場合前記曲線処理手段の実行状態に依存せずに前記曲線出力領域の曲線を前記曲線入力手段に別の入力タスクとして再入力する水平方向分割と、前記曲線出力領域に曲線が存在する場合でも前記SIMDプロセッサからの終了信号を待ち新たに出力された曲線を優先してN=1として前記曲線入力手段に再入力する垂直方向分割とを動的に切り替える分割方向切替手段と、
を具備し、
はじめに設定された1個の曲線を構成する点と評価値に対して再帰的に行うことで所望の曲線近似直線を生成する、
ことを特徴とする集積回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2010−146250(P2010−146250A)
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2008−322137(P2008−322137)
【出願日】平成20年12月18日(2008.12.18)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】