画像処理とは、写真などのアナログ画像をデジタル化して、明暗や色のバランスを整えたり、輪郭を鮮明にするなどの処理をすることです。このようなフォトレタッチソフトは多く市販されています。ここでは、主に静止画像を対象にして、画像処理の基本的技術を取り扱います。
なお、このような分野の説明には実際の画像を示すのが適切ですが、それらは参考資料を見ていただくことにします。
画像のデジタル化
デジタル化において重要なことは、
できるだけ元の画像を忠実に再現できるようにすること
記録容量をできるだけ小さくすること
という二律背反的な要求に対して、目的に応じて調和させることにあります。
- 標本化
- アナログ画像をデジタル化するには、画像を細かいメッシュに分割して、それらの点の画像情報を入手します。それを標本化といいます。取り込んだ標本のことを画素、ピクセルともいいます
粗い分割では、元のアナログ画像を忠実に再現することはできません。逆に、非常に細かく分割すると、画素数が大きくなり、大容量を必要とします。シャノンの標本化定理により、元画面の周波数(濃淡や色の変化度合い)の1/2以下のの間隔で分割すれば、正しく分割できることが証明されています。それで、最大(細かい)でも1/2の間隔でよいのですが、厳密な再現が不要なときは、それよりも粗くして、容量を小さくします。
スキャナで画像を取り込むときには、スキャナの解像度(dpi、1インチ当たりのドット(標本数))で制限されます。現在のスキャナは、文字読取が目的なら600bpi程度、写真読取用では6400dpi程度です。
- 量子化
- 画素の情報である色と濃淡を、通常は色の3原色(赤、青、緑)のそれぞれの強さを0~255(16進数では00~FF)で表現します。これをフルカラーといいます。赤、青、緑の順に16進法で FF0080 のように表示することがよくあります。赤は FF で最大の強さ、青は 00 で最小の強さ(青の要素はない)、緑は 80 で中間の強さ、すなわち、赤1と緑1/2の光を合成した色になります。FF0000 は赤、00FF00 は青、0000FF は緑、FFFFFF は白、000000は黒になります。
フルカラーでは、画素あたり3バイト=24ビットですから、224=約16万色になります。通常の人では、これ以上の色の違いは認識できないといわれています。
イラストなどでは、使っている色数は少なく256色があれば十分な場合が多いのです。この場合は画素あたり1バイトでよいので、フルカラーの1/3の容量ですみます。
写真のようなキメの細かい画像では細かいメッシュのフルカラーにして、イラストなどは粗いメッシュで256色にするとか、芸術作品や医学写真ではさらに細かく多色にするするなど、元の画像や用途に応じて標本化・量子化のレベルを決めます。
単純な加工
以下の画像処理は単純であり、通常は画像処理とはいいません。
- トリミング
- 取り込んだデジタル画像(元画像)のうち、必要な部分だけを選択する処理です。このときは、選択した部分をコピーするだけですから、その品質には変化がありません。
- 縮小
- 例えば一辺を1/2に縮小するのであれば、画素を一つおきに選択すればよいのですが、割り切れない場合は、それに近い画素にするか、周辺の画素を平均化するなどの加工が行われるので、品質はかえって悪くなることがあります(縮小するのだからキメが細かくなるのではありません)。
- 拡大
- 例えば一辺を2倍に拡大する場合、追加される画素は、両側あるいは周囲の画素から計算して補充します。ですから、拡大すれば細かいところが見えることはありません。全体としてぼけた画像になります。
代表的な画像処理
ここでは、話を単純にするために、画像はモノクロで画素情報は濃淡だけだとします。それで、ここでの画像処理とは、元画像の濃淡を変化させることになります。色についても同様な考え方が使われます。
関数変換
関数(下図のようなグラフ)により、元の画像の濃淡(明暗)を変更する処理です。
変│ ┌── 変│ ┌── 変│ ┌───
換│ / 換│ │ 換│ │
後│ / 後│ ┌─┘ 後│ │
濃│ / 濃│ │ 濃│ │
淡│ / 淡│ ┌─┘ 淡│ │
│ / │ │ │ │
└──┴───── └─┴────── └───┴────
元の濃淡 元の濃淡 元の濃淡
(1)線形変換 (2)ポスタリゼーション (3)2値化
|
|
- 線形変換
- (1)では、元の画像の、暗い部分、中間部分、明るい部分の3つに分けて、暗い部分は真っ黒、明るい部分は真っ白にして、中間部分を黒から白の範囲に広げています。注目する部分が中間部分のとき、見やすい画像になります。空や雪が明るく、人物が暗くなっている写真の修正などに使われます。
- ポスタリゼーション
- (2)のような階段状の変換をすると、元画像が連続的な階調だったのを断続的ないくつかの階調に分割されます。濃淡変化がくっきりする効果があります。
- 2値化
- (3)は(2)を極端にして、黒・白の2つにしたものです。文字が画像になっているとき、灰色部分をなくして文字を明瞭にしたいようなときに用います。
- ガンマ補正
- 関数を曲線で与えます。γ=1なら元のまま、γ>1なら明るくなり、γ<1なら暗くなります。
ヒストグラム変換
ヒストグラムとは、濃淡のレベル別に画素数を数えたもので、横軸に濃淡レベル、縦軸に画素数の割合をとったグラフで表します。
ヒストグラムは、暗い画像では左側に偏り、明るい画像では右側に偏ります。それを一様分布あるいは中央に山がくるように、ヒストグラムの分布を与え、元のヒストグラムでの濃淡を与えられたヒストグラムになるように変換します。それにより、画像の明るさが改善されること、コントラストを変更することができます。
フィルタリング
画像処理の一つにフィルタリングがあります。単純にいえば、ある画素の情報値を、その画素およびその周囲の画素の情報を計算して置き換える操作です。
┌1/9 1/9 1/9┐ ┌ 0 -1 0┐ ┌ -1 0 1┐ ┌ -1 -2 -1┐
│1/9 1/9 1/9│ │-1 5 -1│ │ -2 0 2│ │ 0 0 0│
└1/9 1/9 1/9┘ └ 0 -1 0┘ └ -1 0 1┘ └ 1 2 1┘
(1)平滑化 (2)鮮鋭化 (3)エンボス
- 平滑化
- (1)では、注目する画素の濃淡を、左上から右下までの9つの画素にそれぞれ 1/9 の係数をかけています。すなわち、周囲の画素の濃淡の平均値に置き換えています。結果として、元画像の濃淡変化が平滑化され、ぼかした画像になります。ノイズを減らす効果もあります。
- 鮮鋭化
- (2)では、注目画素の濃淡を強調し、上下左右の濃淡を逆転させることにより、濃淡の変化を強調させています。(1)とは逆に、ぼやけた画像を改善するのに効果があります。写真で対象となる物体の輪郭を背景から浮き出せるようなときに用います。
- エンボス
- (3)はソーベルともいわれ、2つの操作を行います。左の操作では、水平方向の濃淡変化がが、右の操作では垂直方向の濃淡変化が強調され、結果として、輪郭だけが取り出された画像になります。
関連技術
画像処理により、新しい画像を作成するのではなく、ディスプレイなどに表示するときに使われる技法があります。
アンチエイリアシング(anti-aliasing)
スムージングともいいます。ディスプレイに画像を表示するとき、斜めの線や曲線の部分に現れるギザギザ(ジャギ、Jaggy)を目立たなくする方法です。特に、文字フォントの表示を美しくするのに重視されています。
画面では画素が格子状に並んでいるので、水平部分と垂直部分以外にはジャギが発生します。標本化するときに、メッシュを細かくすれば目立たなくなりますが、大容量になってしまいます。
基本的な方法は、境界線の周囲に中間色の画素を挿入して目立たなくします。そのため、画像がややぼやけてしまう欠点があります。
最近のパソコンでは、文字フォント表示に「ClearType」が使われています。高度な仕組みなのですが、簡単にいえば、ディスプレイの赤・青・緑のサブピクセルを使って、キメの細かい補正をしているのです。
ブレンディング
ある画像に半透明な画像を重ねる技法です。アンチエイリアシングとして用いることもありますが、背景画像に画像を加えるようなときに使われます。二つの画像を係数(アルファ値)を使って半透明合成することをアルファブレンディングといいます。