いるか座の新星 Nova Delphini 2013

いるか座の新星 2013 (2013/8/18)

いるか座の新星 2013 位置

いるか座の新星が埼玉から見えました。新星を見たのは初めてです。私の肉眼(眼鏡)ではカシオペアがぎりぎり見えるくらいの光害の空なので、8×42 の双眼鏡です。この双眼鏡では7~8等星くらいが見えているようです。天頂近いと暗い星までわかりますね。

見つけ方ですが、まず、夏の大三角のアルタイルはすぐにわかります。双眼鏡で少しずらすと、いるか座の特徴的な集団が視野に入ります。アルタイルといるか座から、や座を探します。や座を延長して、矢の先端の星と新星が双眼鏡の同じ視野(使用したのは約6°)内に入ります。いるか座とや座をそれぞれ延長した先の交わる辺りという見つけ方もあります。新星のすぐ近くに 5.7 等星があります。8/17~8/18 では、この 5.7 等星よりだいぶ明るく、5.0 等星くらいだったそうです。天の川が見えるようなところなら肉眼で見えますが、お天気が問題です。

写真は無理かなと思ったのですが、やってみたら一応は写りました。新星はやや左上、いるか座が左下、や座が右上、右下はアルタイル。Canon EOS Kiss Digtal N、EF-S 60mm、F3.2、3.2秒、ISO 800。三脚で固定撮影です。月齢11.6。

参考リンク

素晴らしい写真やきちんとした解説はネットを探すとたくさん見つかります。

(2013/8/18)

追記

(2013/8/19)

スピカ食 (2013/8/12)

スピカ食 2013/8/12 潜入 (潜入)

スピカ食 2013/8/12 出現 スピカ食 2013/8/12 出現 (出現)

毎年この時期はペルセウス座流星群ですが、今年はスピカ食がありました。東京は雷雨で停電していたようですが、埼玉では雲が多いものの、ギリギリで見えました。潜入時は双眼鏡でスピカが確認できず。出現時は数分後にスピカがチラッと見えました。その後埼玉の自宅も雷、雨となりました。

カメラは EOS Kiss Digital N、レンズは 3 BEACH DIGITAL 60E 600mm F12 です。あとで確認したら、カメラの時計は約4分進んでいました。

スピカ食 2013/8/13 潜入 ステラナビゲータ スピカ食 2013/8/12 出現 ステラナビゲータ

写真も拡大して探さないとよくわからないのですが、ステラナビゲータ Ver.9.1 で表示される位置と合っているものと思われます。

解説:

望遠鏡や赤道儀が欲しい…。

(2013/8/13)

バイナリエディタで .mov を回転

先日、携帯で QuickTime の .mov 動画を撮ったら、90°傾いて撮れてしまいました。iPhone 3GS のカメラでは、ときどき向きがおかしくなります。.mov を .mov のまま90°回転する無料のソフトを探したものの見つからず、直接バイナリエディタで向きを書き換えてみました。

以下、自分用のメモです。たまたまうまくいったように思えるだけで、実はファイルがめちゃくちゃに壊れているかもしれませんのであしからず。

要約

  1. iPhone 3GS で撮影した QuickTime の .mov ムービーを前提とする。
  2. 元の .mov ファイルは保存して、コピーした .mov ファイルをバイナリエディタで開いて編集。
  3. 文字列 ‘moov’ を検索。その下の文字列 ‘mvhd’ を探す。ファイルの下の方にあるはず。
  4. Figure 2-3  The layout of a movie header atom | QuickTime File Format Specification: Movie Atoms を参考に、アフィン変換の行列、Matrix structure (a, b, u, c, d, v, x, y, w) を見つける。w の 40 00 00 00(16進) の並びが目安。
  5. The Transformation Matrix | QuickTime Movie Creation Guide: Creating Movies の回転行列の式を参考に、(a b c d) を書き換える。x軸は右向き、y軸は下向き、角度は時計回りが正。固定小数点 16.16 形式なので、1 なら 00 01 00 00、-1 なら ff ff 00 00 。90度ごとの回転なら、値は 0 か 1 か -1 の組み合わせとなる。よく見かける回転行列の転置行列になっている。
  6. 再生してみて、希望通りに回転していれば O.K. のはず。
  7. (ファイルによっては、ほかの ‘mvhd’ のところの (a b c d) を書き換える必要があるかもしれない)

詳細と雑談

ランドスケープ(横長)のつもりで撮影したのに、ポートレイト(縦長)で記録された映像:

このファイルをバイナリエディタで開きます。直接書き換えるので、オリジナルのファイルは保存、コピーした作業用のファイルに対して操作します。無理やり操作するので、たいてい何回も間違えます。さて、QuickTime ムービー (.mov) ファイルの構造を仕様書で調べます。

まず、書き換えるべき値 Matrix structure の目印の文字列を探します。

より、バイナリエディタで Movie atom の文字列 ‘moov’ を検索し、すぐ下の Movie header atom の文字列 ‘mvhd’ を探します。(今回扱っている動画ファイルの場合、ヘッダと言いつつ、頭のほうではなくファイルの一番下の方にあります。’mvhd’ だけで検索すると、上の方にもありますが、こちらを書き換えても動画の向きは変わりませんでした。)

20130731a_mov_bin_moov 20130731c_mov_bin_mvhd

文字列 ‘mvhd’ がある Movie header atom の構造は、

qt_l_095 (図:同上より)

この Matrix structure のうち、[a b c d] を使って回転します。文字列 ‘mvhd’ があるのが Movie header atom の5~8バイトめ。次の Version から Reserved まで 1 + 3 + 4 + 4 + 4 + 4 + 4 + 2 + 10 ( = 36 )バイトあるので、Matrix structure の要素 a の先頭は ‘mvhd’ の ‘d’ の次から 37 バイト目です。こんな感じにがんばって数えていくと、この .mov ファイルの場合は

20130731e_mov_bin_matrix_org
a = &h 00 01 00 00 = 1.0
b = &h 00 00 00 00 = 0.0
u = &h 00 00 00 00 = 0.0
c = &h 00 00 00 00 = 0.0
d = &h 00 01 00 00 = 1.0
v = &h 00 00 00 00 = 0.0
x = &h 00 00 00 00 = 0.0
y = &h 00 00 00 00 = 0.0
w = &h 40 00 00 00 = 1.0

\cache \left( \begin{array}{ccc} a & b & u \\ c & d & v \\ t_x & t_y & w \end{array}\right) = \left( \begin{array}{ccc} 1.0 & 0.0 & 0.0 \\ 0.0 & 1.0 & 0.0 \\ 0.0 & 0.0 & 1.0 \end{array}\right)

となっています。各 4 バイトは固定小数点で、a, b, c, d, x, y は 16.16 ビット、u, v, w は 2.30 ビットの区切りです。行列と数値の形式は次の通り:

qt_l_054 (図:同上より)

アフィン変換というもので、一次変換と平行移動を同時に表現しているそうです。

QuickTime では、高校数学の回転行列や一次変換で見慣れた行列の形式と違って、その転置行列で表現しているようです。

このへんのことは、別の文書にもう少し詳しく書いてありました。

によると、平面の x 軸、y 軸の向きは

track_trans_movie_coord (図:同上より)

となっているようで、y 軸が上でなく下に向いています。

によると、常に u = v ≡ 0.0 、w ≡ 1.0 と書いてあります。つまり w は常に &h 40 00 00 00 となります。変換行列の末尾に必ず 40 が現れるので、これが探す目安になります。

回転行列のところでは、

rotation_matrix (図:同上より)

角度が q、θ、A と混乱していますが、同じ文字の誤植でしょう。また、回転の向きが反時計回り counterclockwise に角度 q と書いてありますが、その逆で、画面を見る人から見れば時計回りと考えられます。一般的な平面座標では x 軸が右向きで y 軸が上向きであり、x 軸から y 軸に向かう方向となる反時計回りが角度の正の向きです。しかし、QuickTime のように y 軸が下向きならば、x 軸から y 軸に向かう方向となる時計回りが正と考えるのが自然です。式の形からも、そうでないとおかしいでしょう。

さて、画像の中心が原点なら平行移動は不要なので、回転は (a b c d) の組だけ考えればいいはずです(原点は左上ではないかと思うのですが、勝手にセンタリングしてくれるようです)。

問題の映像ファイルの回転に関わる数値だけ行列で抜き出すと、

\cache \left( \begin{array}{cc} a & b \\ c & d\end{array}\right) = \left( \begin{array}{cc} 1.0 & 0.0 \\ 0.0 & 1.0\end{array}\right)

\cache \left( \begin{array}{cc} x^\prime & y^\prime \end{array} \right) = \left( \begin{array}{cc} x & y \end{array} \right) \left( \begin{array}{cc} a & b \\ c & d\end{array}\right) = \left( \begin{array}{cc} x & y \end{array} \right) \left( \begin{array}{cc} 1.0 & 0.0 \\ 0.0 & 1.0\end{array}\right) = \left( \begin{array}{cc} x & y \end{array} \right)

つまり、単位行列です。90°回転されているようにみえるこの映像は、内部的に QuickTime のファイルとしては回転されていませんし、ほかの変換(マッピング)もされていません。

試しに、x と y を入れ替えるような行列にすると、

\cache<br />
\left( \begin{array}{cc} x^\prime &amp; y^\prime \end{array} \right)<br />
= \left( \begin{array}{cc} x &amp; y \end{array} \right) \left( \begin{array}{cc} a &amp; b \\ c &amp; d\end{array}\right)<br />
= \left( \begin{array}{cc} x &amp; y \end{array} \right) \left( \begin{array}{cc} 0.0 &amp; 1.0 \\ 1.0 &amp; 0.0\end{array}\right)<br />
= \left( \begin{array}{cc} y &amp; x \end{array} \right)

w の &h40 を目安に、その上の方の &h01 の2カ所をバイナリエディタで探して、それぞれ別の場所に書き換えます。

20130731d_mov_bin_xy-yx

90°の傾きは解消しましたが、天地が反転した映像になりました。駅名の文字も裏返っています。この動画を、さらに y’ を反転させればよさそうです。

\cache<br />
\left( \begin{array}{cc} x^\prime &amp; y^\prime \end{array} \right)<br />
= \left( \begin{array}{cc} x &amp; y \end{array} \right) \left( \begin{array}{cc} a &amp; b \\ c &amp; d\end{array}\right)<br />
= \left( \begin{array}{cc} x &amp; y \end{array} \right) \left( \begin{array}{cc} 0.0 &amp; -1.0 \\ 1.0 &amp; 0.0\end{array}\right)<br />
= \left( \begin{array}{cc} y &amp; -x \end{array} \right)

20130731h_mov_bin_rot90

-1.0 は整数部を2の補数にして &h ff ff 00 00

映像の最後のほうで駅のホームの文字が読めるので、裏返しにはなっていません。空と海の位置関係から上下も合っています。正常に反時計回りに 90° 回転できたように思われます。’mvhd’ で検索するともう一ヵ所あるので、そちらも直すべきなのかもしれませんが、今回は放置しました。ともかく、これで書き換えは成功したということにします。

さて、よく見かける回転行列は、角度をθとして

 \cache<br />
\left( \begin{array}{c} x^\prime \\ y^\prime \end{array}\right)<br />
=\left( \begin{array}{cc} \cos \theta &amp; -\sin \theta \\ \sin \theta &amp; \cos \theta \end{array}\right)<br />
\left( \begin{array}{c} x \\ y \end{array}\right)

ですが、QuickTime では転置した形で書いてあるので

 \cache<br />
\left( \begin{array}{cc} x^\prime &amp; y^\prime \end{array}\right)<br />
=\left( \begin{array}{cc} x &amp; y \end{array}\right)<br />
\left( \begin{array}{cc} \cos \theta &amp; \sin \theta \\ -\sin \theta &amp; \cos \theta \end{array}\right)

です。Matrix structure(アフィン変換)全体も同じく転置行列になっています。

反時計回りに 90° 回転するとき、上述のように時計回りが正なので θ = -90° 、QuickTime の方の式で

 \cache<br />
\left( \begin{array}{cc} x^\prime &amp; y^\prime \end{array}\right)<br />
=\left( \begin{array}{cc} x &amp; y \end{array}\right)<br />
\left( \begin{array}{cc} \cos (-90) &amp; \sin (-90) \\ -\sin (-90) &amp; \cos (-90)\end{array}\right)<br />
=\left( \begin{array}{cc} x &amp; y \end{array}\right)<br />
\left( \begin{array}{cc} 0 &amp; -1 \\ 1 &amp; 0 \end{array}\right)<br />
=\left( \begin{array}{cc} y &amp; -x \end{array}\right)

試行錯誤的に成功したときの行列と一致します。回転方向が普通と逆で時計回りが正だということに気がつくまでずいぶんかかりました。試行錯誤で回転はできたものの、Apple の解説に書いてあることと一致しないので、どこを間違えたのだろうかと悩みました。(もちろん、今でも私が間違っている可能性があります)

ところで、映像の回転については、はじめは iPhone の splice というアプリを試しました。

しかし、この動画についてはうまく読み込めないようです。いろいろ検索語をかえながら探していたら、PC の QuickTime Pro なら回転の編集が一瞬で終わるとのこと。一瞬ということなら、ヘッダを書き換えるだけでよいはず。それでみつけて参考にしたのが、

Apple のデベロッパーセンターからダウンロードできる dumpster というツールを使うのですが、運が悪いことに、

の直後であちこちダウンしたまま、登録できず、なにもダウンロードできずという状態でした。ほかのサイトからダウンロードできるのは dumpster の Win32 ビット版のみで、そのサイトによると、もともと 64 ビット版はないらしい。QuickTime atom をいじるほかのツールも Apple デベロッパー センターがダウンしていてダウンロードできず。

で概要を読むと、自分でプログラムを作って利用できなくはないようでした。さらに検索していたら

などがでてきて、バイナリエディタだけでもちょっとした書き換えならどうにかなりそう。ということでやってみました。

正規の QuickTime のライブラリをきちんと使っているソフトなら変換行列を使うのでしょうが、向きを決め打ちで表示しているソフトでは90°傾いたままなのでしょうね。それ以前に、ひょっとして、この書き換えで不整合を生じて、読み込みさえ不能の可能性もあり? いやいや、この程度の書き換えなら大丈夫ですよね。仕様書や解説は matrix のところを拾い読みしただけなので、一抹の不安が残っています。

(2013/7/31)

(2013/8/8) サムネイル画像追加

mathTeX.cgi のキャッシュ

LaTeX 数式の表示は、サーバに latex と dvipng の実行ファイル( TeX Live 2010 )を入れ、mathTeX の CGI から呼び出しています。(一部は mimeTeX)

昨日気がついたのですが、このサイトのところどころで mathTeX のエラー(7) が発生しています。

エラーメッセージ ☞ (7) Can't run latex program... mathtex.cgi

(7) Can’t run latex program:
check -DLATEX=\”path\”, etc.
See mathtex.html#message7

対処療法的には、ページ記述の際に数式に mathtex.cgi の \cache オプションを付加して明示的にサーバにキャッシュを生成するようにすれば、何度かページを再読み込みする間に解消するようです。明示しなくてもデフォルトでサーバにキャッシュ画像を生成するはずなのですが、うまくいかないことがあるようです。latex や dvipng で処理した画像のキャッシュファイルが一度生成できれば、次からはキャッシュ画像を返すようになります。

サイトをご覧の方の側では、ブラウザで何度か再読み込みを繰り返すと、そのうちに数式画像が表示されるようになります。(たいていは…… orz )

このエラーは複数の LaTeX 数式画像があるページで発生していて、ブラウザで再読み込みするたびに違う数式画像がエラーになります。サーバ上の mathtex.cgi 用キャッシュ ディレクトリを眺めていると、エラーになるような場合、数式画像のキャッシュが残っていません。

エラーメッセージによると latex プログラムが実行できないと言っているので、処理が間に合わずに多重起動で失敗が連鎖していくような状況でしょうか。何がおこっているのかはよくわかりません。場合によっては、dvipng が実行できないエラーのこともあります。以前のサーバでは発生していなかったようにも思えるので、CGI や実行ファイルの起動数など、サーバ側の設定による可能性もあります。

だいたい、LaTeX の処理系自体、シェルログインできないサーバにFTP でファイル一式コピーして、無理やり動かしています。そんな状態なので、現象や問題の切り分けからして難しいんですよね。

mathtex.cgi は 1.05 が出ていたので 1.03 からバージョンアップしましたが、同じ現象が起こっているようです。

mathTeX version 1.03 → mathTeX version 1.05

mathtex.cgi に \version を渡すと、

現在: \cache \version

なお、一度キャッシュが生成されると自動的には書き換わらないので、バージョンアップしたらキャッシュをクリアしておかないと、いつまでも古いバージョンとして表示され続けます。

< img src=”…/mathtex.cgi?… ” / > で直接書くより、 [ tex ] ~ [ /tex ] で呼び出すほうがエラーの率が高いように思えますが、はっきりしません。問題は mathtex.cgi ではなく、[ tex ] のほうのプラグインかもしれません。

以下、適当に数式を載せてみます。

TeX入門/簡単な数式(2) – TeX Wiki より

mathTeX manual (mathtex.html) より

       

エラー(7)にならずに表示されているでしょうか。このページ作成時には表示可能でしたが……。私のサイトには LaTeX 処理系のサブセットしか入れていないので、表示不能の例もいろいろありました。そういう場合もエラー(7)が表示されるようです。

(2013/7/13)