ベクタ形式

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ベクターイメージから転送)
移動先: 案内検索

ベクタ形式(ベクタけいしき、vector graphics)は、コンピュータグラフィックスなどにおいて、画像を円や直線などのような解析幾何的な「図形」の集まりとして表現する形式である。平面をスキャンし、その各点の濃淡の集まりによって画像を表現する「ラスタ形式」(ビットマップ画像)と対置される。それを描画する操作として(仮想の)絵筆を動かすようなスタイルになることから、ドロー形式、ドローグラフィックなどとも呼ばれる。

座標[編集]

ラスタ形式が通常[1]、データの順序によって座標を間接的に示すのと異なり、ベクタ形式はオブジェクトごとに座標を明示的に指定するものが多い。

直交座標と極座標[編集]

縦横の位置で表す「直交座標」と、方向と距離で表す「極座標」がある。極座標のほうが便利な場合もあり、たとえば一般の回転角についてなど、厳密な結果を保存するために極座標が必要なこともあるが、通常は直交座標のほうが扱いやすい。また円弧の指定などでも併用される。

絶対座標と相対座標[編集]

Turtle draw.jpg

常にグローバルな原点をベースとする「絶対座標」と、他オブジェクトからの位置関係や、最終参照位置との相対で表す「相対座標」がある。

たとえば、LOGOなどの「タートルグラフィックス」では、もともと、コンピュータから制御される、実体を持ったロボット(右の写真を参照)を制御するというモデルをベースとしていたこともあり、相対座標が基本である。

この2種類もやはり併用されることも多い。全体に対する(グローバルな)絶対座標によりあるオブジェクト(図形のグループ)の原点(座標系)を指定し、そのグループ内の図形はその(ローカルな)座標系を使って定義する、といった感じである。そのようにすると、たとえば、ローカルな座標系に対し移動や変換を掛けるだけで、そのグループ自体には干渉することなくその全体を移動や変形させることができる。

オブジェクト[編集]

プリミティブと複合[編集]

複数の図形のグループ化や、グループ化にとどまずステンシルとしての使用など複数の図形を組み合わせる方法と、それらの基になるプリミティブが用意されていることが多い。

線と面[編集]

日常的に、あるいは数学等でも無意識に混同していることが(それで特に困らない場合もあって)多いが、たとえば、中身のある「円盤」とその辺(エッジ)のみである「円周」は異なるものであり、ベクタグラフィックでは「内側」のある図形であればその内側を塗りつぶすか否かの選択がある。また、辺についてはゼロでない太さを指定すれば目に見える図形となる。以下の文ではこれらを識別できていないことがある。

プリミティブ[編集]

プリミティブの例としては、ライン(線分)やポリゴン(多角形)、サークル(円)、カーブ(円弧、円の一部)などがある。高機能なアプリケーションにおいてはベジェ曲線を自由に操作できる。その代表的な製品にAdobe IllustratorCorelDRAWがある(ベジェ曲線はたいして高度な曲線ではないので、それを自由に操作できても実際のところたいして高機能とは言えないが、そのように信じられていることも多いようである。真に高度な曲線としては、CADの世界や、CGの世界でも研究者などには常識であるNURBSや、「対数美的曲線」[2]などがある)。

  • 線(line)や折れ線(polyline)
  • 多角形
  • 楕円
  • ベジェ曲線
  • ベジェ曲線によって囲まれた図形
  • テキスト(特にアウトラインフォントを用いる場合は、それぞれの文字はベジェ曲線によって形作られる。)

これ以外にもスプライン曲線などの図形が基本図形として使えるアプリケーションもある。また、ビットマップもオブジェクトとして扱えるようになっている場合が多い。

パス[編集]

点で結ばれた線で図形を表す。結ばれた線の終点が始点と重なった、四角や円、多角形などの閉じた図形の内部の領域を「面」と呼ぶ。点の座標と、線の属性(線の太さ、色、破線、実線など)、線で囲まれた面の属性(色や、パターンなど)、で表現される。点、線、面のそれぞれのさまざまな性質、たとえば、線の起終点の位置、曲線であればその曲がり方、太さ、色、それら線に囲まれた面の色、などの変化のしかたなどを数値で表す。SVGでは、任意のアウトラインを表現するために、このプリミティブを大量のデータをともなって多用することを考慮したデータ形式(path要素のd属性の値)となっている。

文字[編集]

文字(ないし文字列)もオブジェクトとして扱えることが多い。文字自身の文字コードと座標の他、フォント名、サイズ、色、変形方法などが指定できることが多い。サイズには他のオブジェクト同様の、座標値やミリ単位の他に、ポイントなど文字として扱いやすい単位も使えることが多い。

ビットマップ[編集]

ビットマップ画像もひとつのオブジェクトとして扱うことができるものも多い。描かれる座標と縦横の表示上のサイズ(または縦横の解像度や拡大率)を持つ。場合によっては、描画方向(回転角度や反転軸)、アフィン変換などの変形の情報を持つこともある。ビットマップデータは、埋込み方式のものもあれば、外部のファイルなどを参照する方式もある。大きな画像データなどでは後者の方法が扱えたほうが取り回しが良いが、ファイル1個に必要な全てのデータが入っていない不便もある。

変換[編集]

多くのドローソフトあるいはデータ形式では、これらのオブジェクトに対し、拡大縮小・回転などを掛けることができる。一般化してアフィン変換としているものが多い。共通部分や差分を取り出す、いわゆるブーリアン演算も付いているものが多い。グラデーションや透明度(アルファ、あるいは不透明度opacity)などを扱えるドローソフトやグラフィックフォーマットもある。透明度を含んだ合成に関する詳細はアルファチャンネルの記事を参照。

ベクタイメージは、デバイス非依存の図形・画像を記述するのに優れている。ラスタライズや印刷の処理プログラム等を各デバイス向けに作ることができ、それぞれの描画指示のもととなる図形情報だけをデータとして扱うことができるからである。このような考え方からPostScriptPDFといったページ記述言語の描画モデルはベクタベースである。

3次元コンピュータグラフィックスでは3次元空間上の多角形(ポリゴン)や曲面等として形状を作成する。これは2次元図形であるベクタイメージを作成するとき、基本図形を組み合わせて複雑な図形イメージを作ることと非常に似ている。この3次元の図形イメージを透視図法などで2次元のビットマップに変換する作業をレンダリングと呼ぶが、これは、形状や位置のほかに、光のあたり具合なども計算しなければならないので、2次元のラスタライズの処理に比べはるかに複雑である。そのためゲームなどの速度を要するレンダリングでは、曲面を用いずに平面であるポリゴンの集まりで物体を表現するのが普通である。

フォーマット[編集]

Macintoshで使われるQuickDrawDTPで使われるPostScriptCADで使われるHP-GLなどがある。PostScriptやHP-GLなど「図形処理言語」と呼ばれるものは、形状表現だけではなくプログラミング言語的な機能も持つものがある(特に、PostScriptはほとんど汎用言語並みの能力がある)。アプリケーションだけでなく、プリンタ内部にもそれらの言語処理系が用意され、スピーディにラスタライズできる機種がある。

アプリケーション[編集]

ドローソフトと呼ばれる。以下には、ドローソフトの機能も備える汎用のグラフィックソフトを含む。

画像フォーマット[編集]

ラスタ形式との変換[編集]

ベクタ形式のラスタ化[編集]

ラスタイメージに展開することをラスタライズと言う。ラスタライズは容易な変換だと思う者もいるようだが、実は、サブピクセルの考慮など、素人が思うほど容易ではない。コンピュータシステム内では、多くの場合、グラフィックシステムの描画APIを利用して、ビットマップオブジェクト等に対して描画コマンドを発行する、というようなスタイルで生成できる。ディスプレイの何倍もの画素数であっても、内部に仮想フレームバッファを設定すれば可能となるが、そのためには大きなメモリが必要である。

ラスタ形式のベクタ化[編集]

逆は一般に難しい。なぜなら、逆問題だからである。一部の高度なソフトにはベクタ化の機能を持つものもあるが、必ずしも万能ではない。2016年現在でも、新しい手法の提案などが学会等での研究発表で見られる分野である。

パフォーマンス[編集]

ベクタイメージ ビットマップ
ベクタイメージ ビットマップ
ベクタイメージ ビットマップ
ベクタイメージ ビットマップ
ベクタイメージは品質の劣化なくサイズを変更可能

画像をピクセルの集合で表現しようとするビットマップと比べ、拡大、縮小、その他の変形を施しても図形イメージが基本的に劣化しないという特性を持つ。単純な図形で構成されている場合、ラスタ形式よりもデータサイズは小さい。

しかしながら、写真のような画像から線や面を抽出して数値化することは現在の技術では困難であり、実際には、はじめからグラフィックソフトウェアを使用してベクタイメージを作成する場合を除いては、画像アプリケーションには使われない。すなわち、ロゴや非リアリスティックなイラストには向くが、そのほかの一般画像には不向きである。逆に文字のフォントデザインにおいては、拡大や縮小その他の変形が容易なことから、多用される。このようなベクタイメージの手法を用いた文字フォントを「アウトラインフォント」と呼ぶ。

出力[編集]

ディスプレイ[編集]

ラスタースキャンディスプレイにはラスタライズして表示される。

1950〜1980年代のコンピュータでは、ラスタースキャンでの高精細な表示は高価につき(ラスタースキャンに必要なフレームバッファを構成できる性能と容量のメモリなどのため)難しいことから、図形の表示目的に、ベクタースキャンディスプレイが用いられていた(また当時はプロッターも活用された)。CADなどで使われた。ベクタースキャンでは、スキャンの速さを変えることでも輝度を変えることができる。これに対しラスタースキャンでは、ブラウン管電子銃は表示面を均等に走査するのであって、輝度は電子銃からの電子線の強さを変調することで表現している。

紙への出力[編集]

プリンターの多くもディスプレイ同様、ラスタスキャンを行っている。それゆえアウトラインフォントのテキストやベクタイメージを印刷するときは、OS上もしくはプリンターの内部で、高解像度にラスタライズされてから印刷している。

プロッターは、ベクタ形式のデータを直接印刷する。これはペンなどを移動させて作図しており、図形処理言語が座標を指定して作図することからX-Yプロッタとも呼ばれる。プロッターは設計図面の印刷などに用いられる。

[編集]

  1. ^ ラスタ形式でも、部分的な差分などのために座標が付いているデータも少なくない。
  2. ^ http://www.yoshida-lab.net/research-j/log-aesthetic/