Hatena::ブログ(Diary)

ぽこにっき

2016-01-28

貧者の赤道儀 (The Poor Man's Equatorial) - (5) 南東の空

南東に限らず、真南でない場合はひと手間増える。今回のモデルケースは、5分間隔で撮影した12時間分の夜空。つまり、赤道儀として写真をスタックするのではなく、横に並べてパノラマを作成する。写真を整列させる手順は同じだ。このやり方が理解できれば、全天どこでもOKな筈だ。「貧者の赤道儀」でも「逆パノラマ」でも自由自在。

手順は、赤緯と方角をざっくり求め、比較明合成した画像から赤緯と方角を細かく追い込み、ピッチ角度とロール角度を求めて、パノラマを試作して、最終的にズレを画角で追い込み。結構な手間だが、順を追えばむづかしくはない、と思う。ひと通り、Huginには習熟しておく必要がある。このブログでも過去に取り上げた。ちなみに、ワシはHugin歴5年だ…

f:id:rikipoco:20160128085814j:image:w260:right

赤緯と方角

撮影した絵のほぼ中心の赤緯(DE)と方角(Alt)をざっくりメモっておく。プラネタリウムソフトを使えば良い。ワシのオススメはStellariumだが、お好きなのをどうぞ。

しかしアレだね、天文学者は単位をどないかしろって思うよね。赤緯は「度・分・秒」で赤経は「時・分・秒」だと。それに、ワシ的には赤経のプラマイが逆のような気がして気持ち悪い。まあ、専門家じゃ無いんで良く分かりませんが。

比較明合成

比較明合成用のアプリケーションだとか、フォトショップのプラグインとか、酔狂なもん使ってねえだろうな。

Imagemagickで一発だよ。

$> convert DSC_????_Lighten.tif -background none -compose Lighten -flatten DSC_4467_Lighten.tif

この画像をHuginに喰わせて、角度やらを求めさせるので、星が繋がらないような絵が欲しい。赤道儀のつもりで撮影したのなら間引いて合成すれば良い。

ピッチとロールの決定

パノラマ作成ソフト、Huginを起動して、さっきの比較明合成画像をロードする。画像の位置情報として、ピッチ(Pitch)は赤緯度単位に変換したもの、ロール(Roll)には先ほどの方角(Alt)をλとして、(90 - λ) sin (λ)を度単位で入力する。プレビュー画面で確認して、星の軌跡が水平に流れていることを確認。水平じゃないなら、計算間違えたかプラマイ逆だか、そんなんでしょ。あ、

プレビューはEquirectangular図法でやること。


これが凄く大事。この、Huginを利用した画像整列の肝だ。Rectilinearなカメラレンズの画像をEquirectangularに変換させることによって、緯度・経度を縦横直角にしてしまい、カメラ固定で撮影した写真の時間の流れを、横方向の移動に置き換えられるのだ。

で、比較明合成した画像をよく見て欲しい。軌跡はほぼ直線で、ほぼ平行に見えたりするが、直線ではなくて「弧」を描いている。この「弧」が直線になるようなピッチを求める訳だ。ざっくりとした数字はプラネタリウムソフトで拾ったが、その先だよね。以下はHuginでの手順。

  • 軌跡を新たな直線として登録する。画面の上の方から下の方まで、まんべんなく、5本くらいかな。コントロールポイントタブでコントロールポイントを選択すると、その右下に「モード」というのがある。こいつだ。これでピッチを追い込む。
  • 軌跡を平行線として登録する。これも5本くらい、まんべんなく。これでロールを追い込む。
  • Optimize(最適化)のGeometricで、"Custom"を選択する。すると”Optimizer”タブが増えるので、そこで最適化する項目を選択する。選択は「Ctrl」を押しながらクリック、太字は最適化の対象。
  • Pitch(p)とRoll(r)を最適化の対象にする。

説明が難しい。Huginのファイルを引用しておく。選択してメモパッドにでも貼り付けて、「Honya.pto」とでもしてセーブすれば使える。画像は上にあるので勝手に使って欲しい。

で、最適化すると細かいピッチとロールへ収束するはずだ。もう一度プレビューで確認して、気に入ったのなら記念に書き出しとこうか。こんなになる。

f:id:rikipoco:20160128093931j:image

# hugin project file
#hugin_ptoversion 2
p f2 w3414 h5295 v49  E0 R0 S0,3414,1905,5295 n"TIFF_m c:LZW r:CROP"
m g1 i0 f0 m2 p0.00784314

# image lines
#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y0 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4467_Lighten.tif"


# specify variables that should be optimized
v v0
v Ra0
v Rb0
v Rc0
v Rd0
v Re0
v r0
v p0
v Vb0
v Vc0
v Vd0
v


# control points
c n0 N0 x338 y518 X77.7093804824899 Y727.8478154543 t2
c n0 N0 x1948 y585 X358.17 Y1824.93 t2
c n0 N0 x1982 y797 X239.54 Y2181.99 t2
c n0 N0 x169.4 y2490.54 X1297 Y1506 t2
c n0 N0 x1947 y585 X1875.93499489512 Y634.762781318444 t3
c n0 N0 x1738 y733 X1806.78934397121 Y683.893158081857 t3
c n0 N0 x1669 y782 X1736.91374387819 Y733.04059076082 t3
c n0 N0 x1602 y830 X1669.17496797016 Y781.268300679791 t3
c n0 N0 x1536 y879 X1601.88750117862 Y830.603159032442 t3
c n0 N0 x1471 y927 X1536.78098881659 Y878.199078631043 t3
c n0 N0 x1406 y976 X1470.68154205641 Y927.639694472706 t3
c n0 N0 x1342 y1024 X1406.14398754606 Y975.731688907353 t3
c n0 N0 x1278 y1073 X1341.85618932312 Y1024.42751981664 t3
c n0 N0 x1215 y1121 X1278.08221607658 Y1072.68379971319 t3
c n0 N0 x1152 y1170 X1214.80679961834 Y1121.3049373357 t3
c n0 N0 x1090 y1218 X1152.47428107237 Y1169.40243460017 t3
c n0 N0 x1028 y1267 X1089.99449205705 Y1218.13214229031 t3
c n0 N0 x966 y1316 X1027.73693071701 Y1266.94531663111 t3
c n0 N0 x905 y1365 X966.303601813403 Y1315.83739392724 t3
c n0 N0 x844 y1415 X905.103905519004 Y1365.51162108874 t3
c n0 N0 x783 y1465 X844.019135353334 Y1415.12446806299 t3
c n0 N0 x722 y1515 X782.899405754531 Y1464.92562714111 t3
c n0 N0 x661 y1565 X721.843714762074 Y1514.48983485902 t3
c n0 N0 x1844 y891 X1912.09 Y843.59 t4
c n0 N0 x1778 y938 X1845.32478534487 Y890.848344788925 t4
c n0 N0 x1711 y985 X1777.49988553987 Y937.85933724945 t4
c n0 N0 x1646 y1034 X1711.74779619807 Y986.717497467631 t4
c n0 N0 x1580 y1080 X1645.01524221152 Y1032.84955070629 t4
c n0 N0 x1516 y1128 X1580.216585646 Y1080.8974881462 t4
c n0 N0 x1453 y1174 X1516.79851411884 Y1126.72780432209 t4
c n0 N0 x1390 y1224 X1453.13027890074 Y1176.64642904673 t4
c n0 N0 x1327 y1270 X1389.5911419119 Y1222.5361418944 t4
c n0 N0 x1264 y1319 X1326.22192202946 Y1271.42311424853 t4
c n0 N0 x1203 y1367 X1264.76376736487 Y1319.16580611629 t4
c n0 N0 x1142 y1414 X1203.31600496756 Y1366.01339663699 t4
c n0 N0 x1079 y1461 X1139.97592512169 Y1412.84928547096 t4
c n0 N0 x1020 y1511 X1080.69792808005 Y1462.39930067398 t4
c n0 N0 x959 y1560 X1019.40641606349 Y1511.09310888519 t4
c n0 N0 x899 y1609 X959.183105688586 Y1559.90831413161 t4
c n0 N0 x839 y1659 X898.955126191024 Y1609.46477056726 t4
c n0 N0 x778 y1708 X837.800689784399 Y1657.98175364357 t4
c n0 N0 x719 y1759 X778.7380463938 Y1708.63839875571 t4
c n0 N0 x660 y1810 X719.751266245055 Y1758.97174039886 t4
c n0 N0 x601 y1861 X660.505274686135 Y1809.76267301568 t4
c n0 N0 x538 y1912 X597.68822883033 Y1859.98771297517 t4
c n0 N0 x481 y1966 X540.893175807419 Y1913.33361436113 t4
c n0 N0 x420 y2017 X479.815915705403 Y1963.84438582874 t4
c n0 N0 x362 y2072 X421.992654355283 Y2018.03937249197 t4
c n0 N0 x300 y2127 X359.958977441387 Y2072.53905888318 t4
c n0 N0 x231 y2976 X288.38 Y2916.92 t5
c n0 N0 x289 y2917 X346.136959131196 Y2858.22374022248 t5
c n0 N0 x345 y2857 X402.002989960617 Y2798.42653193504 t5
c n0 N0 x403 y2800 X459.769736047143 Y2742.09384378398 t5
c n0 N0 x460 y2742 X516.435547965682 Y2685.0412126683 t5
c n0 N0 x513 y2684 X228.24 Y2975.52 t2
c n0 N0 x980 y2606 X1089.22 Y2503.46 t6
c n0 N0 x1032 y2556 X1141.38960530072 Y2454.89042752245 t6
c n0 N0 x1090 y2504 X1199.90343922018 Y2404.35521248409 t6
c n0 N0 x1144 y2455 X1254.17755964457 Y2356.37718298435 t6
c n0 N0 x1199 y2403 X1309.95083794772 Y2305.92714336839 t6
c n0 N0 x1255 y2357 X1366.51908641303 Y2261.29627487604 t6
c n0 N0 x1309 y2308 X1421.00744490399 Y2213.25824332018 t6
c n0 N0 x1366 y2261 X1478.9720975034 Y2167.65094103771 t6
c n0 N0 x1420 y2212 X1533.8362301219 Y2119.76802616973 t6
c n0 N0 x1481 y2165 X1595.70758093094 Y2073.66540178419 t6
c n0 N0 x1537 y2121 X1652.1890744242 Y2030.38632661232 t6
c n0 N0 x1595 y2073 X1711.60338138466 Y1983.7688757739 t6
c n0 N0 x1652 y2030 X1769.85463788659 Y1941.56828450402 t6
c n0 N0 x1712 y1985 X1830.67479311016 Y1897.18582824548 t6
c n0 N0 x1771 y1940 X1890.9970908495 Y1852.99042642079 t6
c n0 N0 x1829 y1898 X1034.92 Y2555.39 t2
c n0 N0 x1951 y63 X1875.77 Y118.82 t7
c n0 N0 x1875 y117 X1801.16496033781 Y172.115706698813 t7
c n0 N0 x1801 y173 X1728.66207934778 Y226.939311456155 t7
c n0 N0 x1729 y225 X1657.24008738936 Y278.97264368429 t7
c n0 N0 x1658 y281 X1587.77081884091 Y333.806840771929 t7
c n0 N0 x1587 y335 X1517.95340647872 Y387.245608408433 t7
c n0 N0 x1520 y387 X1451.45422700589 Y439.320882826272 t7
c n0 N0 x1448 y440 X1380.03551673787 Y491.943307535156 t7
c n0 N0 x1383 y490 X1316.1428994432 Y541.353321252356 t7
c n0 N0 x1316 y543 X1249.87160805913 Y593.954180025747 t7
c n0 N0 x1249 y595 X1183.13756547549 Y646.041725796021 t7
c n0 N0 x1184 y644 X1119.00651309486 Y694.465129974223 t7
c n0 N0 x1117 y694 X1052.13464973654 Y744.75957331642 t7
c n0 N0 x1055 y744 X990.894677458152 Y794.243511853329 t7
c n0 N0 x988 y795 X924.009995410056 Y845.560449023026 t7
c n0 N0 x926 y845 X862.533958691161 Y895.204728187318 t7
c n0 N0 x861 y897 X1950.6 Y62.93 t2

#hugin_optimizeReferenceImage 0
#hugin_blender enblend
#hugin_remapper nona
#hugin_enblendOptions 
#hugin_enfuseOptions 
#hugin_hdrmergeOptions -m avg -c
#hugin_outputLDRBlended true
#hugin_outputLDRLayers false
#hugin_outputLDRExposureRemapped false
#hugin_outputLDRExposureLayers false
#hugin_outputLDRExposureBlended false
#hugin_outputLDRStacks false
#hugin_outputLDRExposureLayersFused false
#hugin_outputHDRBlended false
#hugin_outputHDRLayers false
#hugin_outputHDRStacks false
#hugin_outputLayersCompression LZW
#hugin_outputImageType tif
#hugin_outputImageTypeCompression LZW
#hugin_outputJPEGQuality 90
#hugin_outputImageTypeHDR exr
#hugin_outputImageTypeHDRCompression LZW
#hugin_outputStacksMinOverlap 0.7
#hugin_outputLayersExposureDiff 0.5
#hugin_optimizerMasterSwitch 0
#hugin_optimizerPhotoMasterSwitch 21

パノラマの試作

一遍の理屈を言えば、ピッチとロールと画角が決定してるので、後は並べるだけじゃん、となる訳だが、そうも行かぬ。だから試作が必要。なんせ、本番は100枚を超える合成なので、一時間仕事になるのだ。これを何度もやり直すと心が折れる。

  • まあ、ピッチとロールは(Huginの精度の範囲で)正確に出ただろう。
  • 画角は未だ。メーカ発表の焦点距離はいい加減だ。±5%は許容してるようだ。
  • レンズの歪みもあるし、
  • 天体のシーイングもある。

ここから先は臨機応変に、その場合わせで、適当に誤魔化す訳だ。

先ず、比較明合成を平行にしたときのHuginのプロジェクトファイルを別名で保存し、エディタで開き、行の先頭が、「p」「m」「i」の行を残し、他を全て消す。こんなん。

# hugin project file
#hugin_ptoversion 2
p f2 w3414 h5295 v49  E0 R0 S0,3414,1905,5295 n"TIFF_m c:LZW r:CROP"
m g1 i0 f0 m2 p0.00784314

# image lines
#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y0 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4467_Lighten.tif"

「p」行は最終出力に関する設定なので、そのまま。「m」はよく分からない、そのまま。「i」は入力画像に関するもの。これをコピーして、次のようなプロジェクトファイルをでっち上げる。

# hugin project file
#hugin_ptoversion 2
p f2 w3414 h5295 v49  E0 R0 S0,3414,1905,5295 n"TIFF_m c:LZW r:CROP"
m g1 i0 f0 m2 p0.00784314

# image lines
#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y2.50 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4465.tif"

#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y1.25 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4466.tif"

#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y0 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4467.tif"

#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y-1.25 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4468.tif"

#-hugin  cropFactor=1.5
i w2006 h3009 f0 v28.2168123707418 Ra0 Rb0 Rc0 Rd0 Re0 Eev0 Er1 Eb1 r38.8385038079284 p-14.2136815663542 y-2.50 TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"DSC_4469.tif"

入力画像が増えた。ここでは五枚とした。撮影は5分間隔だったので、Yawは1.25°刻み(360 / 24 / 60 * 5 = 1.25)になる。このプロジェクトファイルをHuginで開き、そのままプレビューして、結果画像を書き出す。だいたい揃っているはずだ。

f:id:rikipoco:20160128111154j:image

f:id:rikipoco:20160128111404j:image:medium:left 揃っちゃいませんね。これをどうにかしないといけません。揃って無いなら無いで、見べきところも在ります。画面全体で同じようにズレているか、これが大事。

  • 画面の上下でズレ量が段々と変化してるようなときは、ピッチが正確でなかった可能性がある。
  • 画面の右は真っ直ぐ横一列にズレてるのに、左は違うぞ、などは、最初のロール角度が違うんじゃなかろうか。
  • 画面の上では横一列なのに、下の方では弧を描いてる、などは、そもそもの画角がデタラメな可能性がある。

などなどなど。でも、比較明合成の画像がピッタリ整列しているのを確認しているのなら、そんなオカシナ事にはなってない筈だ。最適化を「ピッチとロール」と「それ以外、主に画角」の二段階にわざわざ分けたのは、問題の切り分けのためだ。

最終調整

どうやって揃えましょうか。出力される画像に科学的な根拠が無くなっても良いなら、つまり実際には有り得ない星の並び、と言っても数ピクセルなので気にはなりませんが、各画像をX方向にズラシちまえば終了。拡大して、ズレ量を測り、プロジェクトファイルのYawを1.25°刻みとしたところを修正すれば良い。

横にズラすのが気持ち悪い、撮影間隔から算出した角度に誤差があるわけ無いじゃん、という方は、適当にコントロールポイント拵えて、画角最適化しましょう。

最終的に、Yawなり画角なりを追い込んで、本番用のプロジェクトファイルをでっち上げると、こんなんになります。縦横半分にリサイズしてます。撮影は、2015/1/26の夕刻から夜明けまで、ISO400、f/4.0、4secで5分間隔。木星、火星、土星、金星、水星が順番に東の空から昇って行くところを撮影した。ついでなので、オリオン座と、お月さんにも登場いただいて、横210°をこえるパノラマ、正確には「逆パノラマ」。

f:id:rikipoco:20160128113213j:image


関連する記事


Hugin関連

2016-01-22

RawtherapeeにWavelet Denoisingがキター

ウェーブレットでデノイズだと。まったく意味不明だが、想像するに。以前は、肌のキメを整えるのに、フォトショップで周波数ドメインのレイヤー拵えてしこしこ作業してたのを、のを〜、ウェーブレットで一発ぅ、みたいな。違うかなあ、多分遠からずやで。

ウェーブレットの威力については、下の記事が分かり良い。Neat Imageっつう商用プラグインと複数フレーム平均を比較した記事だが、Neat Imageはおそらくウェーブレットを応用したものなので。


Rawtherapeeでの操作については、試験ビルドのレポートが分かり良いかも。今現在だと、apt-get install rawtherapee-unstableでサクッとインストールできるぜ。

2016-01-21

貧者の赤道儀 (The Poor Man's Equatorial) - (4) コツなど

処理前と処理後を比較してみる。一枚目はRAWから目一杯コントラストあげて現像したもの。ノイズが酷い。二枚目は処理後。ノイズは掃き出され、M42が楽に確認できる。

f:id:rikipoco:20160121125316j:image:w260f:id:rikipoco:20160121125308j:image:w260


まとめる暇もなく勢いで書いたのでとっ散らかってしまったが、引き続き「貧者の赤道儀」はやっていくつもりだ。そこで、今回気づいたことなど。

  • とてつもなく時間(CPU時間、作業者時間)と空間(HDD空間)を浪費する。カメラの吐き出す24Mピクセルそのままで作業する根性はなかったので、50%(ファイルサイズで25%)にリサイズして作業したが、それでも60GBを超えるHDDを使用した。RAWからの現像に2時間強、変形・平均化に2時間強。
  • 上の例だと、APS-C 105mm、ISO3200で1/2秒を999枚。同様の写真を赤道儀を使用して撮るとしたら、ISO100で16秒の露光となる(のか?)。うーん、ヤスモンの赤道儀で充分だなあ。
  • 上に加えて、試行錯誤する時間が掛かった。計算通りに画像がピタリと重ならないのだ。今回は書き下さなかったが、画角を追い込むやり方だとかは面白かった。
  • 重ならない理由。単なる計算違いをやってしまう。カメラの画角が結構いい加減。これを合わせないと結果で数ピクセル像が流れるのはザラ。
  • 多分、歪んだレンズではうまく行かない。歪んでるのならキッチリ補正してから処理しましょう。
  • 「貧者の…」なんて言ってるが、カネが無い人に薦めているわけではない。不便を不便と思わずに知恵と工夫で乗り切ることは楽しくもあるよ、と言ってるわけ。
  • 「…赤道儀」なんて言ってるが、そんな訳はない。言うならば「逆パノラマ」だ。被写体に動いてもらって写真取ってつなぎ合わせてる。

2016-01-20

貧者の赤道儀 (The Poor Man's Equatorial) - (3) スクリプトの準備

撮影フレームの赤緯が正確に判ったので、後は位置合わせして重ねあわせる処理を行う。これを自動化するためにシェルスクリプトを用意する。

シェルスクリプトからはNonaImagemagickやGraphicsmagickを呼び出す。が、Nonaは処理条件などをファイルで指定する必要が有るので、Nona用のファイルも準備する必要がある。Nona用のファイル(.pto)のひな形は、前回にHuginで変形させたときにセーブしたファイルを使うと良い。下のように変数を書き換えられるように編集しておく。

# hugin project file
# hugin_ptoversion 2
p f2 w6236 h7863 v92  E-0.0291464 R0 S0,6236,4862,7765 n"TIFF_m c:LZW"
m g1 i0 f0 m2 p0

# image lines
#-hugin  cropFactor=1.5
i w1990 h2985 f0 v30.0 Ra0 Rb0 Rc0 Rd0 Re0 Eev-0.02915 Er1 Eb1 r0.26 p-36.04250367 yYAWANGLE TrX0 TrY0 TrZ0 j0 a0 b0 c0 d0 e0 g0 t0 Va1 Vb0 Vc0 Vd0 Vx0 Vy0  Vm5 n"INPUTFILENAME"

k i0 t4 p"-17 2701 2063 2701 2051 3003 -29 3024"

  • pの行、wとhとvは変形後の寸法と画角。今回の撮影は水平画角32°だったが、前後に1時間15分づつ撮影しているので、それぞれ20°くらい足して72°となる。これをEquirectangularに変形させると少し広がって92°となった。実際にはHuginのプレビュー画面で確認するしか無い。
  • iの行、wとhは入力画像の大きさ。pは算出した赤緯。yはヨー(首振り)角度、nは入力ファイル名で、後から書き換えて使えるように適当な文字列を埋め込んでおいた。

余所のカメラは知らないが、ワタシが使っているカメラのインターバロメータ撮影では、例えば9秒間隔と設定すると、9秒間隔で露光が開始される。この9秒を角度に換算して、先ほどのヨー(首振り)角度として使う。角度とファイル名の書き換えを行うシェルスクリプトをでっちあげる。

#!/bin/bash

for i in 0 1 2 3 4 5 6 7 8 9; do
  for j in 0 1 2 3 4 5 6 7 8 9; do
    for k in 0 1 2 3 4 5 6 7 8 9; do
      # projection to equirectanglar
      n=$((${i} * 100 + ${j} * 10 + ${k}))
      y=`echo "scale=8; (577 - ${n}) * 9 * 0.25 / 60" | bc`;
      f=DSC_`printf %05d ${n}`.tif;
      echo ${f} ${y}; 
      cat nona.pto.template | sed "s/INPUTFILENAME/${f}/" | sed "s/YAWANGLE/${y}/" > nona.pto;
      nona -o ${f}.Nona.tif nona.pto;
      convert DSC_`printf %05d ${n}`.tif.Nona.tif0000.tif -repage +0+0 DSC_`printf %05d ${n}`.tif.Nona.tif0000.tif ;
    done;
    convert DSC_00${i}${j}?.tif.Nona.tif0000.tif -background none -compose Lighten -flatten DSC_100${i}${j}_Nona.tif;
  done;
  convert DSC_100${i}?_Nona.tif -background none -compose Lighten -flatten DSC_2000${i}_Nona.tif;
done;

convert DSC_2000?_Nona.tif -background none -compose Lighten -flatten DSC_30000_Nona.tif

999枚の元画像はDSC_00000からDSC_00998までにリネームしてある。10枚づつ変形させて比較明合成、10個1を10枚合わせて比較明合成、100個1を10枚合わせて比較明合成して最終出力としている。PCに搭載しているメモリの量にも拠るだろうが、10枚づつぐらいが安全だろう。

比較明合成ではなく、平均化の場合は次のようにする。ビット深度とかは好きにすれば良い。

gm convert -average -define tiff:sample-format=ieeefp,tiff:bits-per-sample=64 DSC_2000?_Nona.tif DSC_30000_Nona_Average_64.tif

2016-01-19

貧者の赤道儀 (The Poor Man's Equatorial) - (2) 視点の算出

何処の写真を撮ったのか、赤緯を知る必要がある。それもかなりの精度で。撮影時の計画で大体の位置は分かっていると思うが、それ以上は写真から算出する。算出すると言っても、決定的な方法はないので、泥臭い方法でやる。

f:id:rikipoco:20160118182013j:image:w360:left

左は撮影した写真だが、上の方に明るくシリウスが、下の方にカノープスが写っている。写真が傾いている(ロールしている)場合は事前に修正しておこう。

こいつらの赤緯プラネタリウムソフトで調べると次のようになっている。*1

  • Sirius: -16°42'27"
  • Canopus: -52°25'15"

で、写真上の赤緯が上下に等方的だと仮定して、写真の中心の赤緯を計算する。実際には、この写真の場合だと、写真の上の方がピクセルあたりの赤緯が小さい。つまり、写真の端に行くほど拡大されている。

一旦計算した赤緯を使って、今度は写真を変形させてから、再び上と同じ方法で赤緯を計算する。変形にはHuginとか、Nonaとかを使用する。元の写真を指定して読み込み、写真のPitchにさっきの赤緯を入力して、投影法はEquirectangularとして、画像を描き出す。

描き出した画像で赤緯を計算したら、また元の画像(変形させる前)を読み込み、赤緯を指定して繰り返す。3度もやれば値は収束するはずだ。日周運動する星の軌跡を撮影した写真を、算出した赤緯でEquirectangularで投影させると、軌跡が一直線になるはずだ。

f:id:rikipoco:20160118184959j:image:w360:left

こうなってしまえば後は難しくない。Equirentangular図法は赤経赤緯がそれぞれXY方向に直行して投影されるので、X方向の移動がそのまま時間の経過になるのだ。

*1大気の回折の影響を受けた数字と、そうでない数字があると思うが、影響を受けた数字のほうが良いだろう。別に気温と気圧を設定できる場合は実状にだいたい合わせれば良いだろう。