1/4
Date:Thu, 07 Jul 2011 00:14:50 +0900

From:

Tsukasa NAKANO

To:

Akira Tsuchiyama

Cc:

Kentaro UESUGI, Ryo Noguchi, Junya Matsuno, Takashi Nagano, Takashi Matsushima

Subject: sr_map
つちやまさま、
GSJ/AIST のなかのです。つちやまさんの Mac にインストールした「２次元画像の画素値を高度（標高値）と見なして陰影図（shaded relief map）を描くプログラム sr_map」のコードに間違いを見つけました。その再インストール用のものを含む、sr_map に関するきちんとした説明を以下に書きます。
(1) sr_map のインストール
sr_map のソースコードや Windows 用の実行ファイルなどは、
http://www-bl20.spring8.or.jp/~sp8ct/tmp/cm.pdf
で説明した画像の色情報の処理プログラム群の書庫ファイルに入れてあります。
http://www-bl20.spring8.or.jp/~sp8ct/tmp/cm.zip
http://www-bl20.spring8.or.jp/~sp8ct/tmp/cm.taz
Windows の場合、これらの中の MinGW（Minimalist GNU for Windows）でコンパイルした "*.exe" をお使い下さい。また、Linux や Mac OS の場合はこれらを解凍・展開したディレクトリ cm/ に移動した
後に、端末から "make" と入力するだけで sr_map を含む実行ファイルすべてを得ることができるハズです。その後、それらを実行パスに登録済みの適当なディレクトリにコピーするなどして下さい。
(2) sr_map の起動法
以下の３種類の起動法があります。
[1] グレースケールの陰影図を作成する
sr_mapvalue.tif

unit

λφ

ratio map.tif[2] 高度とは別に指定したカラーの画像に応じた陰影を付ける
sr_mapvalue.tif unit color.tif

λφratiomap.tif[3] 指定した単一の色の陰影を付ける
sr_mapvalue.tif unit R G B λφ

これらの起動パラメータの意味は以下の通りです。

ratiomap.tif

2/4
value.tif
その画素値を「高度」として使う TIFF 画像ファイルの名前。sr_map はこの value.tif と同じ画素数の陰影図の画像を作成する。
unit
画素値を高度に変換する際の単位。例えば、画素数が 256×256 程度の８ビット画像なら画素値をそのまま高度としても不都合は生じないので unit を１とすれば良い。しかし、16 ビット画像の場合には unit として小さな値を指定する必要がある。
color.tif
陰影図に貼り付ける TIFF 画像のファイル名。陰影図上では color.tif が表している色が value.tifを使って計算した陰影を加味した色になる。なお、color.tif の画像の画素数は value.tif のものと違っていてもかまわない。
R、G と B
陰影図に塗る色の R、G、B 成分の強度値。０～255 の整数値を指定する。これらの成分値やcolor.tif を指定しなかった場合、陰影図に塗る色は白になる。
λとφ陰影の計算に使う光源の方向を指す度単位の方位角と仰角。ただし、λは画像の x 方向が０度で y 方向が 90 度、また、光源を真上に置く場合のφが 90 度である。
ratio
光源の効果を決める０～１の値。これを１にすると影の部分が真っ暗になり、０を指定すると陰影なしの図が得られる。
map.tif
陰影図の画像を入れる TIFF 画像ファイルの名前。
(3) 陰影の付け方について
value.tif の画素値が表す「地形」の表面の単位法線ベクトルと光源の方向を表す単位ベクトルの内積を Pとして、sr_map では
P ≧０の場合

I = 1 - ratio + ratio × P

P ≦０の場合

I = 1 - ratioとして計算した値 I =０～１を陰影の強度に使っています。そして、color.tif を与えた起動法[2]の場合はその画像が表す色の成分値に I を乗じた色を陰影図に塗ります。それ以外も同様で、起動パラメータの値R、G、B を指定した起動法[3]の場合はそれらそれぞれに I を乗じた成分値の色を塗り、また、起動パラメータとして何も指定しなかった起動法[1]の場合は 255×I を８ビットのグレースケールとした陰影図になります。
とりあえず、以上です。

3/4
2017 / 2 / 24 追記
sr_map で描いた「真上から見た陰影図」を「斜め上もしくは側方から見た鳥瞰図（slant view map）」に変換するプログラム sv_map を書いた。そのソースコードや Windows 用実行ファイルの類は sr_mapと同じ書庫ファイルに入っており、また、そのインストール法も sr_map の場合とまったく同じである。
sv_map の起動法は以下の通り。
sv_mapvalue.tif unitSRM.tif bR

bGbB

wR

wG wB { SVA SVM.tif }ただし、value.tif と unit
それぞれに sr_map の起動パラメータと同じものを指定する。
SRM.tif
sr_map で作成した陰影図の画像のファイル名。
bR、bG、bB および wR、wG、wB
鳥瞰図の「背景」および「手前の壁」に塗る色の R、G、B 成分の強度値（０～255 の整数値）。
SVA と SVM.tif
視線方向の度単位の角度（slant view angle）とその方向から見た鳥瞰図の画像を書き込むファイルの名前。SVA として０～90 度の範囲の値を指定可能で、SVA が０なら真上から見た図を、また、90 度なら手前・真横方向から見た鳥瞰図を描画する。SVA と SVM.tif が起動パラメータとして指定されなかった場合には sv_map はそれらが並んでいる行を標準入力から読み取る。
その複数行の指定により視線方向が異なる複数枚の鳥瞰図の画像を作成することができる。
sr_map と sv_map の Linux or MacOS X or MSYS2 の C-shell 環境での実行例を以下に記す。
[1] 以下のデータファイル（数値地形および地質図の TIFF 画像）をダウンロードする。
http://www-bl20.spring8.or.jp/~sp8ct/junk/japan_gebco_2014.tif
http://www-bl20.spring8.or.jp/~sp8ct/junk/japan_gmj_1m.tif[2] sr_map の実行例（地形データの分解能を考慮しつつ標高値を 10 倍にする unit を指定）
set unit=0.0108
sr_map# = 10 / (4000000 / 360 / 120)

japan_gebco_2014.tif$unitjapan_gmj_1m.tif

-30

60

0.5

SRM.tif

これによって得た陰影図画像：http://www-bl20.spring8.or.jp/~sp8ct/junk/japan_sr_map.tif[3] sv_map の実行例（２度刻みの SVA の値を指定して 46 枚の鳥瞰図 “SVM/SVA.tif” を作成）
mkdir

SVMecho

2 | awk

sv_map# 鳥瞰図の画像ファイルを入れるディレクトリを作成‘{ for (sva = 0 ; sva <= 90 ; sva += $1) print sva, “SVM/” sva “.tif” }’ | ¥japan_gebco_2014.tif$unit

SRM.tif255

255 255

これによって得た鳥瞰図の画像をまとめた GIF 動画：
http://www-bl20.spring8.or.jp/~sp8ct/junk/japan_sv_map.gif

128

128

128

4/4
[4] オマケとして sr_map と sv_map で描いた陰影地質図の鳥瞰図をトリミングしたものを以下に示す。
ただし、このトリミング処理は以前に紹介したプログラム area_RGB と trim_RGB を用いて行った。
http://www-bl20.spring8.or.jp/~sp8ct/tmp/mask+trim.pdf