[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nikomat 18498] Digital dark room



やぁ、rin@NewFM2です。
「電子暗室教室」ってことで、
画像のデジタル化について書いてみました。
後半飽きてきたので多少適当になってます。(^^;;)
#長いです....


画像のデジタル化する場合、
まず、画像を点に分解します。

たとえば、1280×1024の分解するなら、
ジグソーパズルのように一枚の絵を
1310720ピースに分解するわけです。
ただし、ピースとピースの間はジグソーパズルのように
バラバラにする必要はありませんので直線で分解します。

この分解する能力がデジタルカメラの「130万画素」等の表示であり、
スキャナーの「1600DPI」等の表示であるわけです。
ちなみに「130万画素」はレンズを通してデジタルカメラの
フィルムにあたるCCDに結像した画像を1280×1024に分解する事を意味し、
「1600DPI×1600DPI」はスキャナーの読み取り対象を
1インチ角あたりを1600ドット×1600ドットに分解することを意味します。
DPIはDot Par Inchの略です。 → Dot/Inch

余談ですが、COOLPIX990は「334万画素CCD」とカタログにありますが、
得られる画像は2048×1536でこれを計算すると3145728になります。
これは、「CCDは334万画素だけど、実際使っているのは314万画素」
ということです。


画像を点(ピース)に分解したら今度はこのピースの色を数値化します。
数値化の方法は、色々ありますが、
コンピューターで使用しているのが、RGBに分解する方法です。

テレビは、色々な色を表示していますが、
虫眼鏡で見ると、赤、緑、青の三色の小さい点の
それぞれが明るくなったり暗くなったりしているだけです。

テレビの表示と同様に先ほど分解したピースの色を
赤(Red)、緑(Green)、青(Blue)それぞれの明るさに対して、
0〜255の数値であらわします。
たとえば、真っ赤を表現する場合、赤の明るさが最大の255
緑、青の明るさは0となります。
また、真っ白は赤、緑、青、全ての色が255。真っ黒は
赤、緑、青、全ての色が0となります。

この、RGB各色256階調の事を、
256は8ビットである事から、8Bit×3色(RGB)で「24Bitカラー」
または、コンピューター上では、この24Bitカラーの
16777216色を色の全てとしているので、
「TRUE Color」と呼びます。


さて、それでは先ほど分解した点(ピース)の色を
数値化してみましょう。
しかし、ここで二つの問題が発生します。
一つはピースにはいくつかの色が混ざっている事。
二つ目は各色の、0の暗さと255の明るさを何処にするかです。

ピースにいくつかの色が混ざっている場合、
解決方法の一つはピースをもっと細かくする事です。
しかし、これはデジタルカメラや、スキャナーの
ハードウェアに依存する物ですから簡単に上げるわけにはいきません。
結局、どうするかというと、色を混ぜて平均を取るわけです。
赤と緑が一つのピースにある場合。
赤:R255,G0,B0
緑:R0,G255,B0
     ↓
R127,G127,B0(暗い黄色)
となります。
逆にいうと解像度が高いほうが一つ一つのピースの色が
正確に表現できるわけです。

次に、0の暗さと255の明るさについてです。
これは、「真っ黒がRGBともに0で真っ白がRGBともに255」で
問題無いと思われるかも知れません。
しかし、この「真っ黒」と「真っ白」が、くせ者です。

写真で白く飛んでしまっている場合や黒くつぶれている
場合があるように色の明るさを数値化する時に
正しくしないと、白飛び、黒つぶれを連発したり、
コントラストの低い「眠い絵」になったり、
色バランスが崩れたりします。

そして、この数値化を手助けするのがヒストグラム表示です。



とりあえず、話を単純化するために白黒写真のスキャンを例に
ヒストグラムを見てみましょう。

|
|
|
|       ..
|      .  .
|     .    .
|    .      .
|    .        .
|   .           ..
|   .              ....
| .                     ........
+---------------------------------------------
0               100               200        255

ヒストグラム表示をするとグラフの形は様々ですが、
上記のようなグラフが表示されます。
下の数字は補助的に記載しましたが表示されている事は
あまり無いです。

このグラフは、横軸が明るさで0から255までを表し、
縦軸がその明るさの点(ピース)の数でスケールは
一番多い明るさの点の数によって、変動します。

上記のグラフの場合、バランスよく数値化されているようですが、
200以上の明るさが有りませんので、真っ白い所は無い
写真をスキャンした場合です。

また、下記のようなグラフは真っ白(255)まで有りますが、
ほとんどが真っ黒で、夜景や、黒つぶれ写真を
スキャンしたの場合下記のグラフのようになります。

|.
|.
|.
|.
|.
|..
|..
|..
|..
|. .
|.  ..........................................
+---------------------------------------------
0               100               200        255

さて、次のヒストグラムの場合、1番明るいピースが
127ぐらいまでしか有りません。

|
|
|
|.
|.
|.
|..    ..
|..   .  .
|. ...    ..
|.          ...
|.             .......
+---------------------------------------------
0               100               200        255


これを真っ白から真っ黒まで均等にしたい場合、
全てのピースの明るさを2倍にすれば均等になります。
しかし、元のデータが128階調しかありませんので、
このままではグラデーションが綺麗に出ません。

ここで、有効なのがスキャナーのカタログなどにある
「10Bit入力」とか「12Bit入力」とか言うものです。

10Bit入力の場合、実際表現できる階調より
2Bit多く1024階調で入力できます。
これは、どういうことかというと、
各明るさに対して、更に4段階明るさに分けられる事を意味します。
例えば
先ほどまで明るさ0とされていたピースは
暗いほうから
0-0,0-1,0-2,0-3
と4種類に分けられるわけです。
明るさ1のピースも同様で、
1-0,1-1,1-2,1-2
と分けられます。

これを先ほどのように明るさを倍にすると、
0は全て0、1は全て2と偶数階調しかなかった物が、
0-0,0-1→0
0-2,0-3→1
1-0,1-1→2
1-2,1-3→3
とちゃんと奇数階調も表現できるようになります。

つまり、「10ビット入力」、「12ビット入力」と言うのは
「スキャナーの入力できる真っ白から、真っ黒までの
1/4の部分の明るさの階調(もしくは1/8)でも、
きちんと表現できます」ということになります。
そして、その真っ白から真っ黒までのレンジがカタログに
「3.4OD」とか書いてある数値です。
EV値で書いてくれたほうが人によっては
分かりやすいかもしれません。

ヒストグラムの最後に「眠い絵」のヒストグラムを
見てみましょう。

以下がいわゆる「眠い絵」のヒストグラムです。
|
|
|
|               ..
|              .  .
|             .    .
|            .      .
|            .        .
|           .           .
|          .             ..
|        ..                ..
+---------------------------------------------
0               100               200        255
真っ黒もなく、真っ白も無く、
明るさの真中に集まっている為、
メリハリが無くなってしまいます。

しかし、スキャナー等の基本性能を見る場合は
真っ黒から真っ白までのレンジが広い事を意味しているので、
非加工でこの様に入力が可能な機械の方がよいです。

スキャナーから入力した画像を
コンピュータでファイルに保存する場合、
Jpegなどでは24Bitカラーで保存されます。
つまり、スキャナーの各色12bit入力等の
情報は落ちてしまいます。
また、一般的なスキャナーはスキャナーから
コンピュータへ出力した時点で各色8bitで出力しますから、
(最近の機械は入力したbit数で出力できる物もあるかもしれません)
スキャンの時点で最大のデータ入力をして、
加工は最低限に抑える方がソースに忠実なデータを作成できます。

ただし、データ的にソースに忠実でも、
意図的に白を飛ばしたい、黒をつぶしたいという
場合があると思います。
この場合は、スキャン時にその作業をしてしまいましょう。

「加工のためのデータソースとしてスキャンする」
のか「作品としてスキャンする」のかによって
真っ黒から真っ白まで漏れなく0から255を与えるのか、
ある値を境に全部、真っ黒や真っ白にしてしまって、
必要な明るさの部分だけ取るのかが変わってきます。


さて、残りはカラーについてですが、
実は、先ほどの白黒写真の話を
赤(Red)、緑(Green)、青(Blue)の三原色に
色分解した三枚の白黒写真にして考えれば同じ事です。
--
// NEC IC Microcomputer Systems, Ltd. 物質転送:HAYASHI Futoshi
// HUMAN RESOURCES DEVELOPMENT OFFICE 情報転送:rin@nims.nec.co.jp
//                                休日情報転送:rin@mb3.em.nttpnet.ne.jp