ラスター画像
デジタル画像データには大きく分けて2種類ある。ラスター画像とベクトル画像である。フォトレタッチを含むペイント系のソフトでは主にラスター画像を、ドロー系のソフトでは主にベクトル画像を扱う。今回はこのラスター画像のデータ構造についてお話しする。
画像サイズ
ラスター画像は点々の集まりでできている。この一つ一つをピクセル(pixel、画素)と呼ぶ。これが、その画像データを構成する最小単位である。ネットで手に入れたピクセル数の少ない画像を大きく表示すると、拡大方法によってはモザイク模様が見える。この一つ一つのモザイクが、ピクセルを目で見える大きさにしたものと理解してよい。滑らかに拡大する方法もあるが、それだけで元の画像に記録されていない細部が戻るわけではない。
同じ範囲の被写体を記録するなら、ピクセルが多いほど細部を表現できる余地が増える。ただし、画質には撮影時のピントやぶれなども関わる。この画像の大きさは通常、横と縦のピクセル数を使って1,000×1,000ピクセルとか2,000×3,000ピクセルなどと表現する。「何百万画素」というのは、この掛け算の結果を表している。
同じ画像モードとビット深度なら、ピクセル数が多いほどデータが大きくなり、メモリーや保存容量を使い、入出力や処理の負担も増える。その分、細部を記録できる可能性は高まるが、用途に対して過大なデータは負担にもなる。ただし、後で一部を切り抜いたり、大きく印刷したりするための余裕として役立つこともある。
どの程度が適当かは、最終的にどんな目的のためにデータを作るかによって決めなければならない。
たとえば、35mmポジフィルムをスキャニングして印刷物に使う場合を考えてみよう。一般的な35mm判の画面は約36mm×24mmなので、仮にフィルム上の1mmあたり100ピクセルで読み取れば、3,600×2,400ピクセルとなる。これは読み取り密度を仮定した計算例であり、必要なピクセル数は仕上がりの大きさや用途によって変わる。
解像度
画像のピクセル数と、印刷などでの実際の大きさを結びつけるのが解像度である。画像の解像度はppi(pixels per inch)という単位で示される。要するに、1インチの中に何ピクセルを配置するかを表している。1インチは2.54cmなので、センチメートルで考える場合は換算が必要になる。
一方、プリンタなどが打つ点の密度には、dpi(dots per inch)が使われる。ppiは画像の画素密度、dpiはプリンタなどのドット密度を表す。プリンタは複数のドットを使って色や階調を表現するため、両者は分けて考えたい。モニタの画素密度にはppiを使う。
画像のppiの設定値だけを変えても、ピクセル数が変わらなければ細部は増えない。

画像モード
RGBカラーの画像では、R(レッド)、G(グリーン)、B(ブルー)の3色の値を組み合わせて色を表す。各色8ビットの場合、1色あたり256段階の階調を記録できる。すなわち256の3乗で16,777,216通りという膨大な組み合わせとなる。これは一つの画素に対し、16,777,216通りの色の値のうち一つを記録できるということである。1枚の画像の中に、それだけの異なる色が入っているという意味ではない。8ビットが3つあるので、1画素あたり24ビットとなり、24ビットカラーともいう。ここでは、このRGBカラー・各色8ビットを例に説明する。
解像度、実サイズ(cmまたはinch)、画像サイズ(ピクセル数)は互いに関係している。また、ピクセル数、画像モード、ビット深度によって、画像の基本的なデータ量が決まる。理解を助けるために、Photoshopの設定画面で実際に確かめてみよう。
メニューバーの「ファイル」から「新規」を選び、幅と高さをそれぞれ2インチ、解像度を72ピクセル/インチ、カラーモードをRGBカラー、ビット深度を8ビットに設定して画像を作成する。ここでの72ppiは計算のための例である。
「イメージ」から「画像解像度」の設定画面を開き、「再サンプル」をオフにする。幅と高さの単位をインチにし、解像度を倍の144ピクセル/インチに変えてみよう。幅も高さも1インチになる。ピクセル数を変えないでppiを倍にしたので、幅や高さが半分になったのである。センチメートルで考えても同じことだ。
ここで解像度を72ピクセル/インチに戻すと、幅と高さは再び2インチになる。次に「再サンプル」をオンにし、幅と高さの単位をピクセルにする。どちらも144ピクセルなので、縦横比を固定したまま幅を288ピクセルに変えると、高さも288ピクセルになる。幅も高さも2倍なので、総ピクセル数と圧縮前の画素データ量は4倍になる。
解像度を72ピクセル/インチのままにして、幅と高さの単位をインチに戻すと、どちらも4インチになる。このように数値を変えてみると、ピクセル数、解像度、実サイズの関係がつかみやすい。
さて、「再サンプル」をオンにしたまま、幅と高さを2インチに戻そう。解像度は72ピクセル/インチのままとする。並んでいる数値を数式に書くと、
72ppi×2インチ=144ピクセル
高さも同じなので、
144ピクセル×144ピクセル=20,736画素
の画像データであることになる。
画像はRGBカラー・各色8ビットなので、1色あたり8ビット=1バイト、1画素あたりでは3バイトのデータとなる。したがって、
20,736画素×3バイト/画素=62,208バイト
が圧縮前の画素データ量となる。1KiB=1,024バイトで換算すると60.75KiBである。先ほどの288×288ピクセルなら、248,832バイト=243KiBとなり、確かに4倍になる。ソフトによっては、この1,024バイト単位の値を「KB」や「K」と表示する場合もある。
ところが、この画像に絵を描き込んだり、さまざまなファイル形式で保存したりすると、実際のファイルサイズがまちまちで、計算と合わないことに気付くと思う。
これは、ファイル形式によって圧縮の有無や方式が異なり、画像の内容によっても圧縮のしやすさが変わるほか、縦横の長さなどの基本情報、カラープロファイル、レイヤー、透明度、サムネイルなどが一緒に保存されるためだ。
144×144ピクセル、RGB各色8ビットで、追加チャンネルやヘッダーのない非圧縮データとして保存すれば、画素データは計算どおり62,208バイトになる。上の計算は、この画素データだけを対象としている。
