とらりもんHOME  Index  Search  Changes  Login

画像解析入門: 画像データの基礎知識

ピクセル(画素)

 一般的に画像というと, モノクロもしくはカラーの写真や絵のことです。ただし, 「画像」という言葉は特に静止した画像(静止画)について用いられます。動く画像(動画)は「映像」と呼ばれます。

 計算機上では画像や映像は細かい点の集まりで構成されます。ひとつひとつの点が明るさや色を持っており, その集まりで写真や絵が構成されるわけです。そのような点のことを, 「画素」とかピクセルといいます。

 このようなピクセルを, まるでタイル張りの床のように大量に格子状に並べれば画像ができあがります。このような型式で記録・再現される画像のことを「ラスター画像」と呼びます。ラスターじゃない画像というのもあるのですが, 究極のところ, 計算機で画像を扱う以上, 最後にはどんな画像もピクセルの集合として, すなわちラスター画像として扱われることになります。

pixel_demo.jpg

↑ラスター画像の例。左の風景写真の赤枠部分を思い切り拡大すると, 右のようにタイル張りっぽく見える。この「タイル」ひとつひとつが「ピクセル」である。

問題: 「画像」と「映像」はどう違うか?

問題: ピクセルとは何か? ピクセルを日本語で言うと?

問題: ラスター画像とは何か?

 さて, ひとつひとつのピクセルが小さい程, 精細な画像になります。言い替えれば, 同じような画像を表現するとき, たくさんのピクセルで表現する程, 精細な画像になります。

 デジカメの性能を表す言葉として「メガピクセル」というのを聞いたことがありますか? 「メガ」とは約100万のことであり, 「メガピクセル」とはひとつの画像を100万個くらいのピクセルで表現する, という意味です。100万は1000の二乗なので, この場合, だいたい画像の縦横のピクセル数がそれぞれ1000個くらいということになります。

 このように, 画像をどのくらいの大きさのピクセル(またはどのくらいの数のピクセル)で表現するかということを, 「解像度」と呼びます。

 ちなみに, 一般的に17インチの液晶ディスプレーでは, 解像度は横1280ピクセル, 縦1024ピクセルくらいです。メガピクセルとは, この程度のスクリーンが全体を一度に表示できる限界の解像度です。

ピクセルの明るさと色

 前述のように, 画像をデジタル情報として表現する場合は, ひとつひとつの画素の明るさや色を数値で表現すればよろしい。

 たとえばモノクロの画像の場合, 各画素を, 明るさを表す数値ひとつで表現します。

 一方, カラー画像の場合は, 各画素を, 赤の明るさ・緑の明るさ・青の明るさというふうに, 光の3原色についてそれぞれの明るさを表す必要があるので, 3つの数値で表現します。

 これらの数値は, ほとんどの場合, 1バイトか2バイトの数値として表現されます。バイトとは何かわからない人は, こちらを参照して下さい。

 例えばモノクロ画像の場合, ひとつの画素を, 1バイトの非負整数, すなわち0から255の数で表現することが多く, その場合, 例えば0を黒, 255を白として, グレーをその間の数値で表現します。この場合, モノクロは256階調で表現されまず。もっと細かい微妙な明るさ(トーン)の違いを表現したい場合は2バイトの非負整数を使ったりします。この場合は16ビット, つまり2の16乗, つまり65536階調のモノクロトーンを表現できますが, そのかわり画像データのサイズは倍にふくれてしまいます。

 一方, カラー画像の場合は, ひとつの画素に, 赤(red)・緑(green)・青(blue)の3つの原色(RGB)についてそれぞれの明るさを1バイトで表現することが多いです。この場合, 1画素は3バイトで表現されるため, 8*3=24ビット, つまり2の24乗, つまり約1677万色の色が表現されます。以下に3バイトの色表現の例を示します:

Screenshot.png

画像データの大きさ

 以上からわかるように, 画像データは, 1〜3バイトで表現されるピクセルを格子状に並べたものなので,

画像データの大きさ = 横のピクセル数 × 縦のピクセル数 × 1ピクセルのバイト数(1〜3) 

という式が基本的に成り立ちます。たとえば, デジカメの標準設定で撮影される画像は, 多くの場合, 横2048ピクセル, 縦1536ピクセル, 1ピクセル3バイト(RGB各1バイト)です。その場合, ひとつの画像は, 2048*1536*3=9437184バイトとなります。ほとんど10MB(メガバイト)です。

 この10MBというのは相当大きなデータです。昨今のパソコンでは, ハードディスクの容量が60GB(ギガバイト)くらいですが, 1GBは約1000MBなので, この程度のハードディスクは上のサイズの画像は6000枚ほど保管できますが, 電子メールではふつう, 数MBもの添付ファイルは迷惑な部類なので, 上記の画像を何枚か添付したメールを送りつけるとしたら, ほとんどイヤガラセになってしまいます。一方, デジカメのメモリーカードも, だいたい1GBとか2GBのものが多いのですが, 10MBの画像なら100〜200枚くらいしか保存できません。

画像データの圧縮

 そこで, 画像の解像度と色調をそのままにしながらデータサイズを小さくしたいという欲望が発生します。それを実現するのがデータ圧縮という技術です。これは信号処理論という工学が扱う, 奥深い技術なのですが, 簡単に言えば, 似たような信号はひとまとめにしてしまう, というアイデアでデータ量を小さくします。たとえば画像上のある範囲で同じ赤色が広がっている場合, そこの全てのピクセルをひとつひとつ表現するのではなく, 「ここからここまでは赤色」というふうに表現してしまうのです。

 このような圧縮方法は, 色の数が少ないほど有効です。たとえばグラフや図などには有効です。しかしカラー写真となると, 上記のように約1677万もの色がフルに使われるので, なかなか同じ色が連続することはありません。そのような場合でも圧縮するためには, 人間の視覚では検知しづらいような微妙な差異や特徴を切り落としてしまって圧縮効率を上げたりします。こうすると, もともとの画像より多少, 質は落ちてしまいますが, データサイズはとても小さくすることができます。

 このように, 画像の圧縮方法には, もとの画像情報を全く切り落とさずに圧縮するやりかたと, 多少の情報を切り落としてしまって圧縮するやりかたがあります。前者を「可逆圧縮」, 後者を「非可逆圧縮」と言います。「可逆」とは, もとの状態を完全に再構成できる, という意味です。

画像データのフォーマット(形式)

 このように, 画像を表現するには, 横のピクセル数・縦のピクセル数・1ピクセルの色調・圧縮の有無など, いろんなことを考えねばなりません。そしてこれらに関する付帯的な情報も, 画像データに付帯させておかないと, その画像を読むことができません。そこで, こういった付帯情報のつけかたや圧縮の仕方などを具体的に表現するためのフォーマット(形式)がいろいろと提案されています。なかでも標準的なものは以下の通りです:

  • 非圧縮のフォーマット:
    • BMP (ビーエムピー)
    • TIFF (ティフ)
    • PNM (ピーエヌエム)
  • 可逆圧縮のフォーマット:
    • PNG (ピング)
  • 非可逆圧縮のフォーマット:
    • JPEG (ジェーペグ)
    • GIF (ジフ)

 それぞれの特徴を理解して, どういう画像をどのくらいの品質でどの程度のファイルサイズで扱うかということを踏まえて, 適切なフォーマットを選択するようになってください。とりあえずビギナーにアドバイスするとしたら,

  • 写真はJPEG, グラフや図はPNGで圧縮。
  • GIFはアニメーションを作ることができる。
  • 写真は可逆圧縮してもあまり小さくならない。
  • 解像度の大きい画像は処理が大変。スナップ写真やスライドに載せる写真なら, 800ピクセル×600ピクセル程度の解像度で十分。

くらいでしょうか。

 以下に, 同じグラフをPNGとJPEGという異なる2つのフォーマットで保存した場合の例をお見せします。PNGのほうがきれいに表現できていることがわかりますか?

2003_TKY_mizu14mRF_ave.png2003_TKY_mizu14mRF_ave.jpg

左:PNG形式のグラフ(画質はもとのまま) 右:JPEG形式のグラフ(色がくすんで, 数字がにじんでいる)

Last modified:2020/03/14 17:31:58
Keyword(s):
References:[画像解析入門]