世界を動かす技術を、日本語で。

列車撮影のためのラインスキャンカメラ画像処理

概要

  • ラインスキャンカメラ を用いた鉄道写真の撮影と画像処理の詳細解説
  • 原理・カメラ仕様・領域検出・速度推定 など各工程の技術的工夫
  • サンプリング・デモザイク・縦縞補正・ノイズ除去 の具体的手法
  • 失敗例・改善案 も含めた実践的なノウハウ
  • 鉄道ファンや画像処理技術者向けの 応用・課題 の整理

ラインスキャンカメラによる鉄道写真撮影と画像処理

  • ラインスキャンカメラは 1列または2列の画素 で被写体を高速スキャンするカメラ
  • カメラ本体は 静止 し、電車や列車が移動することで 全長を歪みなく撮影 可能
  • 背景は静止しているため、 画像内で繰り返し表示 され独特のストライプ模様が生じる
  • 鉄道模型作成や高解像度写真 (10万ピクセル超)に最適
  • 従来のフィルムストリップカメラも類似原理だが、 フィルム感度の違い により速度調整が必要

使用カメラと撮影環境

  • 使用機材は Alkeria Necta N4K2-7C、4096×2のBayer配列センサー搭載
  • 16ビット生データ として保存し、後処理で画像生成
  • ニューヨークの地下鉄 など様々な現場で撮影

領域検出(Region of Interest)

  • 長時間撮影で生じる 背景データの自動除去 が必要
  • 画像の最大画素値や勾配(エネルギー関数)を用いて 動きのある領域を自動検出
  • 画像をチャンク分割し、 99パーセンタイルエネルギー でスコア付け
  • 最小スコアの1.5倍以上 のチャンクを「動体あり」と判定
  • 風で揺れる背景 やノイズへの耐性も考慮した手法

速度推定

  • 被写体速度が不明だと画像が 伸びたり縮んだり してしまう
  • 2本のグリーンチャンネル間のシフト量を サブピクセル精度で推定
  • 画像をチャンク分割し、 -7~+7ピクセルのシフトでコスト計算
  • 平均シフト推定・スプラインフィッティング でサンプル間隔を決定
  • 正確な推定が難しい場合は 特徴点抽出や円検出 による補正も検討

再サンプリング

  • スプラインから得たサンプル間隔に基づき 再サンプリング
  • サンプル間隔が負の場合は画像 反転 として処理
  • サンプル幅に応じて Hann窓 などのウィンドウ関数でアンチエイリアス処理
  • 矩形窓だと ジャギーや文字潰れ が顕著になるため注意

デモザイキング

  • 2列のBayer配列のため、 空間オフセットを考慮した補間 が必要
  • 単純なグルーピングでは 色ずれやフリンジ が発生
  • バイリニア補間 で大部分のフリンジは解消
  • 緑チャンネルの100%カバーを活かした 最適化余地 もあり

縦縞ノイズの除去

  • クロックジッタ や被写体の明暗変化で縦縞が発生
  • 各列間で 線形回帰モデル を重み付き最小二乗法でフィット
  • 相対モデルとグローバルモデル の組み合わせで全体補正
  • 指数移動平均 による高周波ノイズ除去が有効
  • 補正は 速度推定前 (時系列領域)に実施が原則

ノイズ除去(デノイジング)

  • パッチベース(ブロックマッチング) のノイズ除去アルゴリズムを実装
  • ラインスキャン画像に多い 繰り返し模様 を活用
  • 鉄道車両などの テクスチャ復元 に有効

この手法は、鉄道ファンや技術者にとって 高精度な車両画像生成新たな画像処理応用 の可能性を広げる知見。今後は 特徴点ベースの速度推定強化デモザイク最適化 など、さらなる改善も期待される。

Hackerたちの意見

個人的には、ノイズ除去がちょっと不自然に見えて、残ってるアーティファクト、特に細部の周りの色フリンジが目立つと思う。だから、私はそれをオフにしておくかな。あと、デモザイクのステップについてだけど、今のプロセスから出るアーティファクトなしで解像度を改善するRCDのバージョンを実装できるか気になるな。

うん、ノイズ除去した結果もあんまり良くないと思う。

実はデフォルトで無効にしてるんだ。横のストライプが目立つし、すごく遅いからね。それに、縦のストライプ補正が全てのケースでうまくいかないこともあって、逆にストライプが増えちゃうこともある。まだまだやることが多いよ。RCDデモザイシングについては、次のステップだね。色フリンジは赤と青のチャンネルの単純な線形補間が原因なんだ。でも、RCD戦略を使えば、緑のチャンネルが画像全体をカバーしてるから、それをガイドにして補間を改善できるかもしれない。

フラットベッドスキャナーをデジタルバックとして使った初期の実験を思い出すな。これがその一例だよ。

地下鉄の影もキャッチしてるのが面白いね。電車のすぐ前に到着した影だし。このバーチャルな影は、スリットが向いていたレールと壁の断面の形をした押し出しチューブに投影されてるんだ。

すごい記事だね。ケーブルカーの写真が好きだな。背景の内容を決めるのも面白そうだね。

超クールだね。普通の2D CMOSデジタルカメラセンサーを再利用できるか気になるな。でも、今気づいたけど、君のセンサーは基本的に1Dで、95kHzのサンプリングレートなんだね。同じレートで4kセンサーを使ったら、データが多すぎて保存できなくて、大半を捨てなきゃいけなくなるよ。

できると思うけど、めっちゃ高くつくよ。すごく速いADCがたくさん必要だから。カメラが5千ドルだとして、フルフィールドでその露出時間を得るには、水平解像度を800倍にするためにハードウェアを800倍複製しなきゃいけない。カメラ一台にしてはゼロが多すぎる。

面白い読み物だね!センサーキャリブレーションの仕事をしてたことがあって、ほとんどの人はスマホでいい写真を撮るためにどれだけのエンジニアリングが必要かを当たり前だと思ってる。現代のスマホカメラには、かなりの数学と計算写真が関わってるんだよ。

確か、前回のオリンピックでオメガは高周波のリニアディスプレイをフィニッシュラインのストリップカメラと組み合わせてたよね。普通のカメラだと点滅するラインが見えるけど、フォトフィニッシュの背景にはオメガのロゴがあったんだ。すごく微妙だけど、実現するのは印象的だった。

プロジェクトのためにラインカメラを調べたことがあるんだけど、主な用途はコンベヤーベルト上の食品の品質管理だと思う。ボトルネックになりがちな自動仕分けシステムがたくさんあるよね。俺が仕様を考えたユニットは、最大40kfpsで8kピクセルのラインを記録できるんだ。https://youtu.be/E_I9kxHEYYM

OCT(光干渉断層撮影)で使われてるよ。OCTは近赤外線(だいたい950nm、幅は約100nm)を使って組織を「透過」する技術なんだ。戻ってきた信号は干渉計を通って、ラインカメラが見る「広がり」を生み出す回折格子を通過する。信号処理(FFTが大事)をすると、深さでの強度が得られるんだ。X,Y方向に何らかの方法でスイープすれば、通常は鏡でビームを偏向させて、MRIや超音波のようなボリュメトリック画像が得られるよ。特に血管がある網膜の後ろをイメージングするのにすごく役立つ。

誰か、移動中の車や電車からラインスキャンカメラで風景を撮影したときの様子を知ってる人いる?パララックスで面白い歪みが出るんじゃないかなと思ってる。

ただのぼやけた感じだね。この記事の写真の背景みたいに。すごく遅いスピードだと面白い歪みが得られるけど、車や電車のスピードだと何も見えないよ。

これ大好き!同じアイデアを使って、ニューイングランドで一番高い木をドローンでスキャンしようとしたんだけど、あんまりうまくいかなかった。でも、今また挑戦してみようかな。結果はこんな感じだったよ: https://www.daviddegner.com/wp-content/uploads/2023/09/Tree-... これはこのストーリーの一部だよ: https://www.daviddegner.com/photography/discovering-old-grow...