濃淡表示

濃度階調変換

入力値を x, 表示のための出力値を y とする。

線形変換

y = (ymax - ymin)/(xmax - xmin)・(x - xmin) + ymin

区分線形変換

x1, x2, ... xN を y1, y2, ... yN に対応させ、その間を直線で補間する。
y = (ymax - ymin)/(xmax - xmin)・(x - xmin) + ymin

三角波変換

変換関数は必ずしも単調関数である必要はない。三角波形の関数を使うこともできる。

連続関数による変換

y = x2, y = x1/2
y = x1/γ
など。

局所的濃度変換

注目する画素 xiを中心とした局所領域を考え、 その領域の画素の濃度の平均値を <xi>, 標準偏差を si, 画像全体の濃度の平均値を <x> とする
yi = Gi(xi - <xi>) + β<xi> + γ
但し、Gi = α<x>/si
α: 局所ゲイン係数(0 < α < 1)
β, γ: 出力の濃度分布を調整する定数

統計量変換

平均・偏差を調製する。
y = (sy/sx)(x - <x>) + <y>

ヒストグラム平坦化

色空間への変換

シュードカラー表示(白黒からカラーへ)
フォールスカラー合成(異なるスペクトルの画像を R,G,B に割り当てる)
HSV変換を用いて解像度を落とさずにフォールスカラー合成をおこなう。

擬似濃淡表示

ここから昨年の資料 その2で講義します。

その2にある問題の2.と3.をレポート課題とします。提出はメールで、期限は1997年7月17日です。


問題についての質問がありましたので、回答をかねてヒントです。

> earth.gifの絵をとってきてそれをppmに変換してvxでgrayscaleのpgmでセーブして
> 下のプログラムに通してみました。
> fullcolerでセーブしてプログラムに通すと画像が半分になったりしてうまくいきません。
> (あとこの操作でよかったのかどうかも自信がないので)教えてもらえれば幸いです。


課題は 4x4 の行列を使うように要求しています。

static int matrix[2][2] = {204,614,819,409};

これでは、2x2 です。半分のサイズの行列
を使って拡張していることに注意してください。

フルカラーだと PPM 形式になります。
1 pixel あたり RGB 各1バイトの処理が必要です。

xv でセーブした画像は、コメント行がつくので、
コメントに関する処理が必要になります。
xv でロード、セーブを繰り返すとその度にコメント
行が増えますから、単に1行読み飛ばすだけでは
いけません。

giftoppm(または giftopnm) や djpeg コマンドで
ppm に変換して、ppmtopgm でグレースケールに
するなどの処理をおこなってください。