« スペクトルデータ再画像化 - awkでハマる | トップページ | 青いフラウンホーファー線がよく見えないのは歳のせい? »

2016年6月19日 (日)

スペクトル画像の一次元化と再画像化の自動処理

引き続きほよほよ さんが作られたjpg2csvとcsv2bmpの応用です。この二つは

  ほよほよのブログ - 写真から撮影方向を分析する-新たな試み6 リリース

にあるリンクから入手することができます。ただ解凍するのにパスワードが必要です。パスワードはほよほよ さんの過去記事にあるのですが、探すのが面倒な方はほよほよ さんに直接聞けば教えてもらえるんじゃないかと思います。

なおスペクトル画像の数値化(グラフ化)については

  スペクトル画像(分光写真)を数値化(グラフ化)する方法

が参考になると思います。

再度構成図から行きます。
Photo

前記事でjpg2csv形式からマカリ出力形式への変換を作ったので残りは一次元化になります。

jpg2csv形式を読み込んで一次元化してjpg2csv形式に書き戻す方法でもいいのですが、ここではいったん一次元化したデータをマカリ出力形式で保存することにします。

マカリ出力形式の方がExcelでの扱いが楽だということもありますし、小さなものを組み合わせて複雑なことを実現するというUNIX的なやり方が好みということもあります。

 

--------

ついでなので今回もawkにします。awkしか使えないみたいですが、実際そんなところです (^^;;

BEGIN {
	FS=","
}
{
	if( NR == 1 ) {
		split($0,loc,"[=,]")
		y = (loc[8]+loc[4])/2+1.0
		NY= loc[8]-loc[4]+1
	} else {
		for( i=0; i < loc[6]-loc[2]+1; i++ ) {
			if( NR < NY+2 ) {
				Red[i]+=$i
			} else if( NR < NY*2+2 ) {
				Green[i]+=$i
			} else {
				Blue[i]+=$i
			}
		}
	}
}
END {
	if( (NR-1)/3 != loc[8]-loc[4]+1 ) {
		print "Error(1). レコード数=",NR
	} else if( NF != loc[6]-loc[2]+1 ) {
		print "Error(2). フィールド数=",NF
	} else {
		printf "\"X座標\",\"Y座標\",\"輝度\",\"R\",\"G\",\"B\"\n"
		for( i=loc[2]; i < loc[6]+1; i++ ) {
			printf "%6.1f,%7.1f,%21.8f,%21.8f,%21.8f,%21.8f\n",
				i+1.0, y, 0.0,Red[i]/NY,Green[i]/NY,Blue[i]/NY
		}
	}
}

今回はファイルを読み込んで順次処理していくだけなので簡単なスクリプトで済みます。

--------

ここまでできると

  1. スペクトル画像ファイルの任意の矩形領域を数値化する。
  2. データの一次元化を行う。
  3. スペクトルデータを再画像化する。

という作業がバッチで一気に行うことが可能です。

--------

rem 数値化
jpg2csv IMGP8975-M44d0-1430-1000=2000.jpg 0 80 999 179 > out_1.csv
rem 一次元化
"C:\Program Files\gawk\gawk.exe" -f pass4.awk out_1.csv > out_2.csv
rem ファイル形式変換・再画像化
"C:\Program Files\gawk\gawk.exe" -f pass3.awk out_2.csv

注 出力ファイルはa.bmpのいう名前になります。矩形領域の指定と入出力ファイル名をパラメータにすれば便利そうです。

-------

今回はこのスペクトル画像をサンプルにします。
Imgp8975m44d0143010002000


例によってF線からE線のところです。サンプルにできるようにISO値をあげて撮ったのでけっこうきたなくなっています。

画像の一次元化はスペクトルの分散軸と直交する方向に平均をとるだけですが、これによってノイズがかなり低減できます。100ピクセル分平均するというのは画像を100枚スタックするようなものですから、手間がかからないわりには効果があります。

上の画像の下半分を再画像化したものに置き換えてみました。
Imgp8975m44d01430100020001

ノイズが少なくなっているのでトーンカーブを調整するなどしても画像がそんなに荒れません。ブログの記事に使うのには便利です。
Imgp8975m44d01430100020001tc

それなりに納得できる結果が得られていると思います。


前の記事 「スペクトルデータ再画像化 - awkでハマる
次の記事 「青いフラウンホーファー線がよく見えないのは歳のせい?

まとめ記事
  「
簡易分光器 - 作り方・使い方のまとめとリンク集
    簡易分光器とは?
    簡易分光器の実力
      太陽光(フラウンホーファー線)
      蛍光灯
    原理・設計
    製作・材料
      スリット

      回折格子
      構成/構造
    フラウンホーファー線の撮影法
    簡易分光器の性能評価
    トラブルが起きたときの対処法
    画像の数値化・グラフ化
    デジカメの分光感度特性
    スペクトルデータの再画像化

    分光器の応用
      光害カットフィルターの特性を調べる
      半導体レーザー出力光の波長の変化
      簡易分光器では手が出せないもの
    スペクトルに関する資料集
    スペクトル(画像)の実例

---------


  「
測定対象別記事一覧(測定、電子工作、天文計算)
  「
過去記事の一覧(測定、電子工作、天文計算)

« スペクトルデータ再画像化 - awkでハマる | トップページ | 青いフラウンホーファー線がよく見えないのは歳のせい? »

簡易分光器とスペクトル」カテゴリの記事

コメント

上下で合わせた画像を見るとノイズが減っているのが一目瞭然ですね。
こういうやりかたをしていたのですね。

画像はともかく、分光分布曲線を見るときノイズが少なくなるので波長(極大、極小)がわかりやすくなるというのは大きなメリットです。
記事では効果を実感できる画像を撮ってきたのですが、よく撮れた画像ではそれほど見た目はかわらなかったりします (^^;;

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: スペクトル画像の一次元化と再画像化の自動処理:

« スペクトルデータ再画像化 - awkでハマる | トップページ | 青いフラウンホーファー線がよく見えないのは歳のせい? »

フォト

サイト内検索

  • 記事を探されるんでしたらこれがいちばん早くて確実です。私も使ってます (^^;; 検索窓が表示されるのにちょっと時間がかかるのはどうにかしてほしいです。

新着記事

リンク元別アクセス数

  • (アクセス元≒リンク元、原則PCのみ・ドメイン別、サイト内等除く)

人気記事ランキング

  • (原則PCのみ、直近2週間)
無料ブログはココログ