ブレ除去 (デブラー) の原理と実践 - モーションブラーからピンボケまで
画像のブレとは - 劣化モデルの理解
画像のブレ (Blur) は、撮影時のカメラや被写体の動き、レンズのフォーカスずれなどにより発生する画質劣化です。数学的には、鮮明な画像 f にブレカーネル (PSF: Point Spread Function) h を畳み込み、ノイズ n を加えた劣化モデルで表現されます。
g = h * f + n
ここで g は観測されたブレ画像、* は畳み込み演算です。デブラー (Deblurring) の目標は、g と h (既知の場合) から元の鮮明画像 f を復元することです。
ブレの種類:
- モーションブラー: カメラの手ブレや被写体の動きによる方向性のあるブレ。PSF は線分状になる
- ピンボケ (Defocus Blur): フォーカスが合っていない領域に発生する円形のブレ。PSF は円盤状 (Pillbox) になる
- 大気ブレ: 大気の揺らぎによるランダムなブレ。天体観測や長距離撮影で問題になる
- 空間変動ブレ: 画像内の位置によって PSF が異なるブレ。回転ブレやズームブレが該当する
デブラーの困難さ: デブラーは本質的に逆問題 (Inverse Problem) であり、ノイズの増幅、リンギングアーティファクト、解の非一意性という 3 つの根本的な課題があります。特にノイズが存在する場合、単純な逆フィルタリングではノイズが爆発的に増幅され、実用的な結果が得られません。
非ブラインドデブラー - PSF 既知の場合の復元手法
非ブラインドデブラー (Non-blind Deblurring) は、ブレカーネル (PSF) が既知の場合に鮮明画像を復元する手法です。周波数ドメインでの処理が基本となり、ノイズ耐性を持つ正則化が鍵となります。
逆フィルタ (Inverse Filter): 最も単純な手法で、周波数ドメインで H(u,v) の逆数を掛けます。F(u,v) = G(u,v) / H(u,v)。しかし H が 0 に近い周波数でノイズが無限大に増幅されるため、実用的ではありません。
ウィーナーフィルタ (Wiener Filter): ノイズとシグナルのパワースペクトル比を考慮した最適フィルタです。
F(u,v) = [H*(u,v) / (|H(u,v)|² + K)] × G(u,v)
K はノイズ対シグナル比 (NSR) で、通常 0.001-0.01 の範囲で設定します。K が大きいほどノイズ抑制が強くなりますが、復元のシャープさが低下します。OpenCV では cv2.filter2D() と FFT を組み合わせて実装可能です。
Richardson-Lucy (RL) デコンボリューション: ポアソンノイズモデルに基づく反復的手法で、天文学や顕微鏡画像で広く使用されます。各反復で推定画像を更新し、通常 20-50 回の反復で収束します。非負制約を自然に満たす利点がありますが、反復回数が多すぎるとノイズを増幅するリンギングが発生します。
全変動 (TV) 正則化: 画像のエッジを保持しながらノイズを抑制する正則化手法です。コスト関数 ||g - h*f||² + λ×TV(f) を最小化します。λ は正則化の強さで、0.001-0.1 の範囲で調整します。エッジの鮮明さとノイズ抑制のバランスを制御できます。
ブラインドデブラー - PSF 推定と画像復元の同時最適化
ブラインドデブラー (Blind Deblurring) は、PSF が未知の状態でブレ画像から鮮明画像と PSF の両方を同時に推定する、より困難な問題です。実際の撮影では PSF が不明なケースがほとんどであり、実用上最も重要な技術です。
MAP (Maximum A Posteriori) 推定: ブラインドデブラーの古典的アプローチは、画像と PSF の事前分布を仮定し、事後確率を最大化する交互最適化です。
- 画像の事前分布: 自然画像の勾配はヘビーテール分布 (超ラプラス分布) に従う
- PSF の事前分布: 非負、合計 1、スパース (多くの要素が 0 に近い)
- 交互最適化: f を固定して h を推定 → h を固定して f を推定 → 収束まで繰り返す
粗から細へのマルチスケール戦略: ブラインドデブラーは局所最適解に陥りやすいため、画像ピラミッドを構築し、最も粗いスケールから推定を開始します。粗いスケールでの PSF 推定結果を次のスケールの初期値として使用し、段階的に解像度を上げていきます。通常 4-6 スケールのピラミッドを使用します。
エッジベースの PSF 推定: Cho-Lee (2009) の手法は、画像のエッジ (勾配の大きい領域) のみを使って PSF を推定します。エッジ領域はブレの方向と大きさの情報を強く保持しているため、効率的かつ正確な推定が可能です。ショックフィルタでエッジを強調し、勾配ドメインで PSF を推定する 2 段階アプローチにより、従来手法の 10 倍以上の高速化を実現しました。
深層学習によるデブラー - エンドツーエンドの復元
深層学習ベースのデブラー手法は、PSF の明示的な推定を行わず、ブレ画像から鮮明画像への直接的なマッピングを学習します。2017 年以降急速に発展し、従来手法を大幅に上回る性能を達成しています。
DeblurGAN (2018): GAN ベースのモーションブラー除去手法です。Generator は ResNet ベースのエンコーダ-デコーダ構造で、Adversarial Loss + Perceptual Loss で学習します。GoPro データセット (3,214 ペア) で学習し、PSNR 28.7dB を達成しました。推論速度は 720p で約 50ms (GPU) です。
DeblurGAN-v2 (2019): Feature Pyramid Network (FPN) を導入し、マルチスケールの特徴を活用します。バックボーンに MobileNet-v2 を使用した軽量版は、品質を維持しながら 10 倍の高速化を実現し、モバイルデバイスでのリアルタイム処理を可能にしました。
MPRNet (2021): Multi-Stage Progressive Restoration Network は、3 段階の処理で段階的に画像を復元します。各段階でエンコーダ-デコーダの出力を次の段階に渡し、残差学習で細部を補正します。GoPro データセットで PSNR 32.66dB を達成し、当時の最高性能を記録しました。
Restormer (2022): Transformer アーキテクチャを画像復元に適用した手法です。Multi-Dconv Head Transposed Attention により、高解像度画像でも効率的にグローバルな依存関係を捉えます。GoPro で PSNR 32.92dB、HIDE データセットで 31.22dB を達成しています。計算コストは 1,280 × 720で約 300ms (A100) です。
NAFNet (2022): Nonlinear Activation Free Network は、活性化関数を使わないシンプルなアーキテクチャで、Restormer と同等の性能を半分の計算コストで実現します。SimpleGate と Simplified Channel Attention の 2 つの革新により、PSNR 33.69dB (GoPro) を達成しました。
空間変動ブレと動画デブラー
実際の撮影では、画像内の位置によってブレの方向や大きさが異なる空間変動ブレ (Spatially-Varying Blur) が一般的です。また、動画のデブラーでは時間方向の情報を活用した手法が有効です。
空間変動ブレの原因:
- カメラ回転: ロール方向の回転により、画像中心と周辺でブレの方向が異なる
- 被写界深度: フォーカス面からの距離に応じてピンボケの大きさが変化する
- 動体ブレ: 画像内の異なる物体が異なる速度で動いている場合
- ズームブレ: 撮影中のズーム操作により、放射状のブレが発生する
空間変動ブレへの対処: 画像を小領域 (パッチ) に分割し、各パッチで局所的な PSF を推定する手法が基本です。パッチサイズは 64x64 から 128 × 128が一般的で、隣接パッチ間の PSF の連続性を制約として加えます。深層学習では、Deformable Convolution を用いて空間的に適応的なフィルタリングを実現する手法が主流です。
動画デブラー: 連続フレームの情報を活用することで、単一フレームのデブラーより高品質な復元が可能です。EDVR (Enhanced Deformable Video Restoration) は、隣接 5 フレームの情報を Deformable Convolution でアラインメントし、統合することで PSNR を 1-2dB 向上させます。
イベントカメラとの融合: イベントカメラ (DVS) はマイクロ秒単位の時間分解能を持ち、ブレの発生過程を記録できます。通常カメラの露光中のイベントデータを活用することで、従来不可能だった大きなモーションブラーの復元が可能になっています。E-CIR (Event-guided Cascaded Image Restoration) は、イベントデータをガイドとして使用し、PSNR 34dB 以上の復元を実現しています。
実践的なデブラーツールと品質評価
デブラー技術を実務で活用するための具体的なツール、パラメータ設定、品質評価方法を解説します。用途に応じた最適な選択肢と、よくある失敗パターンの回避策を示します。
デスクトップツール:
- Topaz Sharpen AI: 深層学習ベースの商用ツール。モーションブラー、ピンボケ、ソフトフォーカスの 3 モードを自動判別。処理時間は 24MP で約 5 秒 (GPU)
- Adobe Photoshop: フィルター > シャープ > ぶれの軽減。PSF を自動推定し、ウィーナーフィルタベースで復元。手動で PSF の方向と長さを調整可能
- DxO PhotoLab: レンズプロファイルに基づく光学補正。レンズ固有の PSF データベースを使用した高精度な復元
Python ライブラリ:
scikit-image:skimage.restoration.wiener()とrichardson_lucy()を提供OpenCV:cv2.filter2D()+ FFT でウィーナーフィルタを実装可能DeepDeblur: PyTorch ベースの深層学習デブラー。事前学習モデルで即座に利用可能
品質評価指標:
- PSNR: 参照画像がある場合の基本指標。30dB 以上で良好、35dB 以上で優秀
- SSIM: 構造的類似度。0.9 以上で良好
- LPIPS: 知覚的類似度 (低いほど良い)。0.1 以下で良好
- NIQE: 参照画像不要の品質指標。自然画像統計からの逸脱度を測定
よくある失敗と対策: リンギングアーティファクト (エッジ周辺の波紋) は正則化パラメータの調整で軽減できます。ノイズ増幅は事前にデノイズ処理を適用するか、デブラーとデノイズを同時に行う手法を選択します。過度なシャープニングによるハロー効果は、処理強度を控えめに設定することで回避できます。