朱鷺の杜(IBIS)ブログ

情報論的学習理論(IBIS)に関する管理人の独断と偏見に満ちた意見

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

金環日食の画像処理

今日は落書きモードです.

前にも書いたように最近は私のところにもいろいろデータ解析の依頼が来ます.
それもたいてい,
「とりあえずたくさんデータ取ってみたんだけどなんか出ない?」
というようなのが多いです.

まあ機械学習は懐が深いので?そういういい加減なデータでもそこそこなんとかできるというのが売りだと思うのですが,解析者のスキルもそこそこ必要で,普段からの訓練が欠かせません.

それで金環日食です(無理矢理ですが).

とりあえずフィルタを望遠レンズにつけたカメラで撮影したのと,天体望遠鏡の太陽投影板を手作りして 投影面を撮影しました.

でも高級な自動ガイドの架台とか当然持っていないので,時間間隔も適当,写っている大きさや位置も適当.
データ解析のちょうどいい練習問題と思ってやってみました.
今回は画像処理が多いのですが,共同研究などを通じて鍛えられて?いるのでそこはなんとか.

まず,カメラ撮影の方は,とりあえずこんな画像がいっぱい
IMG_0035_1.jpg

幸い太陽はほとんど真円なので,
・エッジ抽出
・(外側の)円の抽出
・位置と大きさあわせ
という流れでできそうです.

今回用いたのは matlab の image processing + optimization toolbox ですが,R でも python でも OpenCV でも基本的にそれほど変わらないと思います.

問題はエッジ抽出と円の抽出のところでいくつかパラメータがあること.
エッジ抽出には canny filter というのを使ったのでそこにパラメータが一つ.
エッジ情報からの円の抽出は基本的に「いくつかのランダム点であてはめるというのを繰り返して,inlier ができるだけ大きくなるものを選ぶ」というRANSAC と呼ばれる手法を使いました.
さらに,今回は一番外側の円が欲しいので,内側の点の数とかも数えたりしています.
で,それらにもいくつかのパラメータ.

できればこの辺り全自動でいけば理想的ですが,なんといっても「なんちゃってデータ解析」なので,結果を見てパラメータを適当に変えられるようなインタラクティブなスクリプトを書いて半自動で抽出しました.

これを時間順に並べればアニメーションができます. ただし,撮影間隔も適当だったので,理想的には動的計画法かなんかでできるだけ等間隔のものを抜き出すプログラムとか作ってやるということも考えられましたが,ちょっと面倒だったので,適当な間隔に並んでいるのを抜き出して,あとは目の子で微調整.

で,できたアニメーションがこちら↓↓↓↓


(いろんなところに投稿したのでもう見飽きた方はごめんなさい_o_)

あと,撮影時刻と太陽の軌道計算を使って投影すればこんな図もできます↓↓↓
movement2.jpg



まあこれは比較的すぐにできたのですが,太陽投影板の方は苦労しました.
得られている画像はこんな画像
ixy20120521 101


研究でやっていたレンズのキャリブレーションとはちょっと違って,もっと原始的?なキャリブレーションが必要だったので,自分で一から計算して画像の補正法をプログラム. 基本的には楕円が真円に写るように傾き補正すればいいのですが.

・ピンホールカメラだと思って考えると,円をななめから見た像は楕円.というわけでまずは楕円の抽出.
・楕円の抽出はやはり RANSAC で,円の抽出をちょっと改変してOK
  ちなみに RANSAC の最適化規準を一般化したあてはめに関する論文は藤木さんらとの共同研究で何本か出ています.
・これが円に載っているような面をパラメタライズして方程式を立てると2変数の非線形方程式が出ます.
・まあ2変数ともコンパクトサポートなので,適当に解けばいいのですが,今回は matlab の最適化ルーチンに解かせました.
・その面が正面に見えるように透視射影を求め直して,image processing toolbox に渡してやると円に見える?像が得られます.

結果が下の画像
r-ixy20120521 101-r

なお,この問題を解くためにはカメラの焦点距離と画素のスケールが必要です. 焦点距離は35mm 換算とかで画像ファイルに数値が入っているので今回はそれを利用. ただし,35mm 換算って何?っていうほどの素人なのでその辺りググったりして画像のスケーリングなどを計算しました.

もしかするとこんなキャリブレーションはどこかにコードが落ちているかも知れませんが,まあお勉強ということで.



このプログラムは6月4日の部分月蝕と6月6日の金星太陽面通過でも活躍するはずだったのですが,月蝕も雲の向こうにかすかに見えただけだし,金星太陽面通過も完全に曇ってしまいました.
さすがの機械学習も,ないデータはいかんともしがたいです.
(えっとまあ機械学習と言えるほどすごいことはやっていませんけど)

というわけで,今年起きる金星蝕か,それ以降の日蝕・月蝕までお蔵入りです.
それまでに自分の書いたプログラムの使い方を覚えていられるかが非常に怪しいです.

さらに,今請け負っているいくつかのデータ解析に対するスキルが上がったかというと...これも怪しいです^^;
スポンサーサイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://ibisforest.blog4.fc2.com/tb.php/127-88d4c889
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。