1 ポイント 投稿者 GN⁺ 2025-08-24 | 1件のコメント | WhatsAppで共有
  • ラインスキャンカメラは、列車などの動く被写体を高解像度で歪みなく撮影するのに非常に適している
  • 画像処理には、関心領域検出速度推定再サンプリングなど多様なアルゴリズムと手法が必要となる
  • 水平および垂直ストライプ除去ノイズ抑制などの画質改善処理が重要である
  • 実装には大容量データ処理、Python, numpyの活用、さまざまな実験的改善が含まれる
  • 他の作家によるラインスキャン写真の事例との比較を通じて、さらなる洞察を得ることができる

ラインスキャンカメラの概要

  • ラインスキャンカメラは、1列(あるいは2列)のピクセルで非常に高速に画像をスキャンする
  • カメラは固定されており、列車がカメラの前を通過することで全体の形状が記録される
  • 静的な背景は画像のすべての縦列に繰り返し現れ、独特のストライプ効果が生じる
  • この方式では、列車全長にわたって歪みのない高解像度写真を撮影でき、鉄道模型などの趣味にも有用である
  • フィルムベースのストリップカメラも同様の原理で動作するが、感度の問題により手動でフィルム速度を合わせる必要がある点が異なる

カメラ機材

  • [Alkeria Necta N4K2-7C]モデルを使用し、4096×2の二重Bayerアレイ画像センサーを搭載している
  • 元データは16ビットのバイナリ配列として保存する
  • 都市地下鉄など多様な環境で撮影を行っている

関心領域(ROI)検出

  • 長時間スキャンでは背景データが大量に発生するため、動く物体区間を自動検出するアルゴリズムが不可欠である
  • エネルギー関数(gradientベース)と最大ピクセル値などを組み合わせ、垂直構造(動き)と水平構造(背景)を区別する
  • 画像はいくつかのチャンクに分割し、各チャンクの99パーセンタイルのエネルギーでスコアを算出する
  • スコアが最小値の1.5倍以上のチャンクを動く物体を含む領域とみなす
  • 従来方式は一般化に失敗しており、現在の方式のほうがさまざまな状況でより効率的に動作する

速度推定

  • 被写体が動いている際に速度推定に失敗すると画像が引き伸ばされたり潰れたりする歪みが発生する
  • カメラの2つの緑(Green)チャネルを比較して、各チャンクごとの移動速度を計算する
  • チャンクごとに-7〜+7までの小さなシフトを適用したうえで、2チャネル間の差の絶対値を計算し、cost arrayを生成する
  • subpixel peakを見つけるため、ガウシアンベースの[mean shift]スタイル補間を用い、splineで全体の変化量を補正する
  • 抽出されたspline値は元の時系列におけるサンプル間隔を意味し、画像の歪み補正に使われる

再サンプリング

  • splineに従ってサンプル位置を計算し、新しい画像を抽出する
  • splineが負の場合は左右反転し、0に近い場合はエラー処理を行うなど、例外的状況も考慮する
  • 各サンプル位置ごとにサンプル幅情報も保存し、Hannウィンドウなど適切なウィンドウ関数でアンチエイリアシング性能を向上させる
  • 単純な列選択や矩形ウィンドウは、アップサンプリング時に粗いアーティファクトが生じるため適していない

デモザイキング

  • 2列Bayer配列の空間的オフセットを考慮したbilinear interpolationなど、カスタムのデモザイキングが必要となる
  • 速度推定後、線形補間によってfringing現象などを補正する
  • 2つの緑チャネルのデータ差により、一般的なBayerアレイよりも優れたフルカラー復元が可能になる余地もある

垂直ストライプ除去

  • クロックジッター(stripes)や被写体の明るさ変化によって、画像に垂直ストライプが発生する
  • 線形回帰とガウシアン重みを用いた各列ごとの補正関数(iteratively reweighted least squares)でストライプを補正する
  • こうした補正関数は数学的な群構造を形成し、補正の累積によるドリフト防止のためにband-diagonal線形システムの解法を検討している
  • 実務では、指数平滑フィルタなどで高周波ノイズを抑制することもできる
  • ストライプ補正は必ず速度推定より前に実施しなければならない

ノイズ抑制

  • パッチベース(block matching)のノイズ制御手法を適用し、列車表面の反復的なテクスチャを積極的に活用する
  • 各3×3ピクセルパッチの特徴ベクトルを使い、類似パッチ内での加重平均によってノイズを低減する
  • 信号強度に応じてポアソン分布(平方根変換)で前処理してから比較すると性能が向上する
  • 既存のtotal variation denoising手法はテクスチャ損失が大きく、適していない
  • 本手法には計算量が多く処理速度が遅いという限界がある

傾き(Skew)補正

  • カメラが垂直でない場合、画像全体がわずかに傾いてしまう現象が発生する
  • スキュー検出は速度推定後、最終的な再サンプリング前に行うことで情報損失を最小化できる
  • Hough変換などにより、垂直構造に基づく自動検出が可能である

色補正

  • 現在は手動補正マトリクスで色味を調整している
  • 実際には自然なスキントーンなど、かなり良好な品質が得られている

実装詳細

  • 全体のパイプラインはPythonおよびnumpyで実装している
  • データサイズが大きく(4096行×数十万列)、メモリ不足の問題を克服するため、チャンク単位の段階的処理方式を採用している
  • 一括メモリ割り当ては現実的でないため、各段階ごとにデータを部分処理して保存する

実装経験

  • AIツールを導入してコード実装を試みたが、結果は限定的だった
  • AIが線形問題を不要に二次時間計算量にしてしまうなど、非効率なコードを生成するケースが頻発した
  • 大規模配列処理では、不要な全体マスク生成などのメモリ問題もあった
  • 一部のAPIやコードの構造化、可視化(Matplotlib)などはAIの助けで効率化できる

他者によるラインスキャン列車写真の事例

Adam Magyar

  • [Adam Magyar]は独自のモノクロラインスキャンカメラで"Stainless"、"Urban Flow"プロジェクトを進めている
  • 屋内地下鉄などの低照度環境でも非常にクリーンな成果物を撮影している
  • 地下鉄照明のフリッカーを避けるため、撮影位置の選定が必要である

KR64ブログ

  • [kr64.seesaa.net]には、日本各地の多様な列車ラインスキャン写真が大量に掲載されている
  • フィルムスリットスキャンカメラベースと推定され、非常に高い多様性と品質を備えている
  • サイトは技術的問題でしばしばダウンしており、連絡も取れない

1件のコメント

 
GN⁺ 2025-08-24
Hacker Newsのコメント
  • このアイデアは本当に気に入っていて、似たような方法でドローンを使ってニューイングランドで最も大きな木をスキャンしようとしたことがある。結果はそれほど良くなかったけれど、もう一度試してみようかと思っている。
    結果
    このプロジェクトはこの話の一部だった

  • 私も似たような工程を使うが、普通のカメラで撮影してフレームを手作業でつなぎ、アニメーションを作っている。
    この方法の特徴は、被写体に自然とピントが合い、背景が抽象的なパターンに変換されることだ。
    各「ライン」はおよそ15px幅。
    例1 例2 例3
    東京のスカイラインの夕暮れタイムラプスを撮影し、似た技法を適用したうえで、モーショントラッキングによって時間がフレームの左から右へ流れるようにした。
    ここでは各ラインは4ピクセルで、元のアニメーションは8k解像度。
    関連動画 モーショントラッキング

  • ラインスキャンの列車の例をさらに探してみた。ここで確認

  • フラットベッドスキャナーをデジタルバックのように使っていた初期の実験を思い出した。
    例: リンク

  • ラインスキャンカメラで車や列車から動く風景を撮るとどう見えるのか気になる。パララックス効果で面白い歪みが生まれるかもしれないと思う。

    • 列車から撮った写真が何枚かある —
      大阪 南海6000系: 写真
      フランスの風景: 写真1
      マルセイユ: 写真2
      カリフォルニア: 写真3 写真4
      紫色の木は、カメラが近赤外線に感度を持っているためそう見えている。IRカットフィルターを買ってからは列車写真を撮れていない。いくつかにはフレームドロップやほかのアーティファクトもある。
    • まさに気になっていた内容だ。技術的に、1時間ほどの列車旅行の風景全体を「スキャン」することが可能なのか気になる。
    • ただ全部ぼやける。この投稿本文の写真にある背景と似た感じになる。
      車や列車のように速いとまともには見えない。かなり遅い速度でないと、良い歪みにはならない。
  • 記事は本当に興味深い。特にケーブルカーの写真が印象的だった。
    背景の内容をどう選ぶかも面白い考えどころだ。

  • 記憶が正しければ、前回のオリンピックでOmegaは高周波ライン表示をゴールラインのストリップカメラに組み合わせて使っていた。
    普通のカメラでは点滅するラインに見えたが、フォトフィニッシュの背景にはOmegaのロゴが入っていた。
    とてもさりげないが、これを実装していたのは印象的だった。

  • 競馬場のフォトフィニッシュカメラに関するこの動画が好きなので紹介したい。ほかの人も面白く見られると思う。

  • 列車が色の帯の間に完璧にシャープなまま止まっているように見えて、ものすごい速度感がある。

  • 私の考えでは、ノイズ除去(denoising)はやや不自然に見え、残っているアーティファクト、特にディテール部分のカラーフリンジ(fringe)をむしろ強調している感じがする。
    私はこの機能はオフのほうがよいと思う。
    それからdemosaic処理に関しては、RCDのこのバージョンを実装すれば、アーティファクトのない高解像度が得られるのか気になる。

    • 実際、私もデフォルトではノイズ除去を無効にしている。各水平ラインの縞模様がよりはっきり見えるし、速度もかなり遅くなるからだ。
      垂直縞の補正もすべてのケースでうまく動くわけではなく、むしろ縞を増やしてしまうこともある。
      まだやるべき作業は多い。
      RCD demosaicingはまさに次のステップだ。カラーフリンジの問題は、赤と青のチャンネルに単純な線形補間を使っているために起きている。
      緑チャンネルは画像全体をカバーしているので、このチャンネルをガイドとして補間をもっと上手く行う方法を考えている。
    • 私もノイズ除去した結果は特別良く見えない派だ