とらりもんHOME  Index  Search  Changes  Login

C言語による画像処理: フォールスカラー合成

筑波大学農林工学系 奈佐原(西田)顕郎

前回見たように, カラー画像は, 各カラーチャンネルを自由に配置することで多様な画像を合成できます。

そこで, 任意の3枚のモノクロ画像を, RGBの各チャンネルに配置することで, 仮想的なカラー合成画像を作ることができます。そのような画像は現実の画像ではないので「フォールスカラー画像」とよばれ, ものごとの観察に非常に有用です。

ここでは, フォールスカラー画像の例として, 森林の季節変化を観察してみましょう:

まずこのファイル2004_TKY_ppm.tar.gzをダウンロードして展開してください。これは岐阜県高山市にある, 森林生態観測サイトで観測された, 2004年春の芽吹きの時季の, 定点での樹冠全天魚眼画像です。

2004_144_TKY_f02u.ppm     DOY144(5/23)の画像
2004_149_TKY_f02u.ppm     DOY149(5/28)の画像
2004_154_TKY_f02u.ppm     DOY154(6/2)の画像

これらをそれぞれ, 3チャンネルの平均化によってモノクロ画像に変換してください。

次に, 3時期のモノクロ画像を, それぞれ赤・緑・青に割り当てて合成画像を作ってください。ヒント:3つのファイルを同時に開くには, 標準入力は使えない。かわりに,

FILE *fp1, *fp2, *fp3;
 .....
fp1=fopen("2004_144_TKY_f02u_bw.pgm", "rb");
fp2=fopen("2004_149_TKY_f02u_bw.pgm", "rb");
fp3=fopen("2004_154_TKY_f02u_bw.pgm", "rb");
 .....
fread(&data[0], 1, 1, fp1);
fread(&data[1], 1, 1, fp2);
fread(&data[2], 1, 1, fp3);
 .....
fclose(fp1); fclose(fp2); fclose(fp3);

のようにする。*fp1などは「ファイルポインタ」と呼ばれ, これまでのstdinなどと同様の働きをする。fopenは, ファイルポインタにファイルを割り当てる。その中のrbは, read binaryの略。ファイルポインタを使ってファイルを読み書きしたあとは, fcloseでファイルを閉じること。

2004_TKY.jpg フォールスカラー画像。5/23赤 5/28緑 6/2青。

赤く見える葉は, 5/23では明るく(空), 5/28以降は暗く(葉のめぶき)なっていたことがわかるので, 5/23から5/28の間に出た葉であることがわかります。黒く見える葉は, 最初からずっと暗かったということなので, 5/23以前から芽吹いていた葉です。

Last modified:2018/10/22 13:53:24
Keyword(s):
References:[画像解析入門]