ねこふくろうのメモ置き場
記事一覧に戻る

TITLE:東京の夜空を眺める 1/2

公開日:2025/11/16

導入

個人情報ですが私は東京に住んでいます。
東京の星空にはどんなイメージがあるでしょうか。
町明かりで星が全然見えない。明るい星はちょっと見える。そもそも興味ない。住んでる場所や生活スタイルによって様々あると思います。

私は星を見るのが好きなので近くの広場で星をながめることが多々あります。
好きが高じてカメラを買いました。

今回はその写真を見で遊ぼうと思います。

本文

星空全体を見る

早速、カメラのスペックとその写真を見ていただこうとおもいます。

  • 機種
    • Z6
  • レンズ
    • TTArtisan 25mm F2.0 APS-C Z マウントレンズ
  • フィルター
    • 偏向フィルター(中古で購入したもののため、商品名は不明)
      • kenko製

画像1: 撮影した写真の全体像
画像1: 撮影した写真の全体像
画像1を見てみると肉眼では確認できない写真が無数に映っています。
調べたところ8等級までの星が星の名前まで特定できました。
星の名前が特定できない星もあるためもっと等級の低い星も映っているかもしれません。

アンドロメダ星雲周りを重点的に見る


アンドロメダ銀河周辺を拡大して見てみましょう。
画像2: アンドロメダ銀河を拡大
画像2: アンドロメダ銀河を拡大
中央にアンドロメダ銀河があり、銀河の雲が映っていることが分かります。
画像1では気が付きませんでしたが拡大画像を見てみると画像全体にノイズがあり、もやがかかっているように見えます。
そのせいでアンドロメダの雲はどこまで映っているのか分からないのと、星なのかノイズなのかが分からない箇所が複数あります。
そのため、ノイズを除去をする方法を考える必要があります。

画像を加工解析する

ノイズ除去への解決策

今回は100枚の写真を合成することでランダム要素を取り除きノイズを除去します。
今回はその前段として画像から星を検出する方法を考えます。

星を強調して見る

まず画像の星が目立つように諧調変換を行います。
今回は以下の式で諧調変換を行いました。
f(x)=11+e0.05(255(x20.35)2552)(1)f(x) = \frac{1} {1+e^{-0.05(255(x^2-0.35)-\frac {255} {2})}} \tag {1}
プロットすると以下のようになります。
fig-1: 諧調変換
fig-1: 諧調変換
画像2に適用すると以下のようになります。
画像3: 諧調変換の画像
画像3: 諧調変換の画像
fig-1から分かる通りmax(f(x))<1{max(f(x))} < 1であるため修正の余地がありますが、画像3で分かる通り星が強調されているため今回はf(x)f(x)を採用し、この画像をもとに星検知のアルゴリズムを考えます。

星を検知する

1つの星にフォーカスしてさらに画像を拡大してみてみます。
画像4: 星抜粋(1)
画像4: 星抜粋(1)
画像5: 星抜粋(2)
画像5: 星抜粋(2)
画像6: 星抜粋(3)
画像6: 星抜粋(3)
画像7: 星抜粋(4)
画像7: 星抜粋(4)

画像4-7を見るとガウス関数に似ていると私は感じました。
今回は星の中心座標(x0,y0)(x_0,y_0)に対して周辺の明るさを以下のような式で近似することを考えます。
g(x,y)=he(xx0)2+(yx0)2a+b(2)g(x,y) = h e^{-\frac {(x-x_0)^2 + (y-x_0)^2} {a}} + b \tag{2}
それぞれの変数の意味以下のように定義しました。
x0x_0:星の中心のx座標
y0y_0:星の中心のy座標
hh:星の中心の明るさ
aa:星の明るさが周りに及ぼす影響度
bbは定数であり、画像の平均値として定義しています。

画像4-7のようなごく狭い画像に対し二乗誤差を最小にするx0x_0, y0y_0, hh, aaを求め、hh, a-aが閾値を超えれば(x0,y0)(x_0,y_0)その点に星があると予測します。
aaをマイナスにしている理由はaaは値小さい方が明るい範囲が一点に集中するためとなります。

式2は画像内に星が1つしかないことを前提としています。
そのため画像を狭い範囲に分割し、その画像の中には星が1つしかないと仮定し式2による星の検知処理を実施します。
この詳しい処理をフローチャートで表すと以下のようになります。
fig-2: 星検知のフローチャート
fig-2: 星検知のフローチャート
このフローチャートをもとにプログラムを組み、実際に星検知をしてみます。
結果は以下のようになりました。
画像8: 星検知の出力結果
画像8: 星検知の出力結果
緑色の四角で囲った箇所が私が作成した星検知のアルゴリズムが検知した座標になります。
これを見ると画像から星を検知できていることが分かります。
一方で星があるのにも関わらず、星として検知していない箇所が多々あります。
これは星が耀すぎることでaaが大きくなっている場所など星が近くにあるせいで小画像の中に複数の星が映っている箇所です。
最終目標の画像を合成するのであれば最低3つ検知できれば良いため今回はこのアルゴリズムで完成とします。

最後に

いかがでしたでしょうか。
一枚の画像だけでも多くの星が確認できました。
また、簡単なアルゴリズムで星が検知できることもわかりました。
本来であれば星がどのように映るのかをより詳細に調べるべきではありますが今回は簡単な近似にとどめました。
今後、より高倍率の画像を入手できればその調査も行おうと思います。
次回は100枚の画像を合成することで高画質の写真を生成します。

続きの記事:作成中
記事一覧に戻る