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

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

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


赤緯と方角

撮影した絵のほぼ中心の赤緯(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」とでもしてセーブすれば使える。画像は上にあるので勝手に使って欲しい。

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


# 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で開き、そのままプレビューして、結果画像を書き出す。だいたい揃っているはずだ。

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

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


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

最終調整

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

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

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

Hugin関連

*1:カメラ内蔵のインターバロメータはそんなに正確ではないようです。0.1秒くらいは平気でズレます。撮影画角によっては考慮する必要が有るようです。貧者の赤道儀 (The Poor Man's Equatorial) - (2-b) Huginで調整 - ぽこにっきを参照。