1 ポイント 投稿者 GN⁺ 2025-08-24 | まだコメントはありません。 | 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]には、日本各地の多様な列車ラインスキャン写真が大量に掲載されている
  • フィルムスリットスキャンカメラベースと推定され、非常に高い多様性と品質を備えている
  • サイトは技術的問題でしばしばダウンしており、連絡も取れない

まだコメントはありません。

まだコメントはありません。