JA EN

画像修復 (Inpainting) の技術と応用 - 古典手法から深層学習まで

· 約 9 分で読めます

画像修復 (Inpainting) とは - 欠損を自然に埋める技術

画像修復 (Inpainting) は、画像中の指定された領域 (マスク) を周囲の情報から自然に復元する技術です。写真からの不要物除去、古い写真の傷修復、ウォーターマーク除去、テキストオーバーレイの除去など、幅広い応用を持つ画像処理の重要分野です。

Inpainting の入力と出力:

技術的な課題: Inpainting は本質的に不良設定問題 (ill-posed problem) です。欠損領域の「正解」は存在せず、周囲の文脈から最も自然に見える内容を推定する必要があります。小さな傷 (数ピクセル) の修復は比較的容易ですが、大きな領域 (画像の 20% 以上) の修復は非常に困難で、意味的な理解が必要になります。

手法の分類:

修復領域のサイズと内容の複雑さに応じて、適切な手法を選択することが重要です。小さな傷には拡散ベース、中程度のテクスチャ領域にはパッチベース、大きな構造的欠損には深層学習ベースが適しています。

古典的手法 - Navier-Stokes 法と Telea 法

OpenCV に実装されている 2 つの古典的 Inpainting アルゴリズムを解説します。どちらも小さな欠損 (傷、テキスト、細い線) の修復に適しており、計算コストが低く実装が容易です。

Navier-Stokes 法 (cv2.INPAINT_NS): Bertalmio et al. (2001) が提案した手法で、流体力学の Navier-Stokes 方程式に着想を得ています。画像の等照度線 (isophote: 同じ輝度値を持つ曲線) を欠損領域の境界から内部に向かって伝播させます。

原理: 欠損領域の境界での勾配方向と大きさを計算し、その情報を内部に向かって反復的に伝播させます。等照度線の曲率を保存するため、エッジの連続性が自然に維持されます。

Telea 法 (cv2.INPAINT_TELEA): Alexandru Telea (2004) が提案した FMM (Fast Marching Method) ベースの手法です。欠損領域の境界から内部に向かって、距離に基づく重み付き平均で値を埋めていきます。

原理: 境界に近いピクセルから順に処理し、既知ピクセルの加重平均 (距離が近いほど重み大) で値を決定します。FMM により処理順序が最適化され、高速に動作します。

OpenCV での実装:

result = cv2.inpaint(img, mask, inpaintRadius=3, flags=cv2.INPAINT_TELEA)

inpaintRadius は各ピクセルの修復に参照する近傍の半径 (ピクセル) です。3-5 が一般的で、大きくすると滑らかになりますが処理時間が増加します。

性能比較: 1,920 × 1,080画像、マスク面積 1% で、Telea 法は約 50ms、NS 法は約 200ms です。品質は NS 法がエッジ保持に優れ、Telea 法は均一領域の修復に優れます。マスク面積が 5% を超えると両手法とも品質が急激に低下し、ぼけた結果になります。

パッチベース手法 - PatchMatch と Criminisi アルゴリズム

パッチベースの Inpainting は、画像内の既知領域から類似するパッチ (小さな矩形領域) を検索し、欠損領域にコピーする手法です。テクスチャの再現性に優れ、中程度の欠損領域 (画像の 5-15%) に対して高品質な結果を生成します。

Criminisi アルゴリズム (2004): 欠損領域の境界から優先度に基づいて修復を進める手法です。エッジ (構造) が通る境界ピクセルを優先的に処理し、構造の連続性を保証してからテクスチャを埋めます。

処理手順: (1) 境界ピクセルの優先度を計算 (信頼度 × データ項)。(2) 最高優先度のピクセルを中心とするパッチ (9x9 程度) を設定。(3) 既知領域から最も類似するパッチを SSD (Sum of Squared Differences) で検索。(4) 見つかったパッチの対応部分を欠損領域にコピー。(5) 境界を更新して繰り返し。

PatchMatch (2009): Barnes et al. が提案した高速な近似最近傍パッチ検索アルゴリズムです。ランダム初期化 → 伝播 → ランダム探索の 3 ステップを反復し、全パッチの最近傍を準最適に求めます。

5-6 回の反復で収束し、全探索の 100-1000 倍高速に近似最近傍を見つけます。Adobe Photoshop の「コンテンツに応じた塗りつぶし」の基盤技術です。

性能: 1,920 × 1,080画像、マスク面積 10% で約 2-5 秒 (CPU)。GPU 実装では 200-500ms に高速化可能です。テクスチャの繰り返しパターン (芝生、壁、空) の修復に特に優れます。

深層学習ベースの Inpainting - 意味的理解による修復

深層学習ベースの Inpainting は、大規模な画像データセットから学習した意味的知識を活用し、従来手法では不可能だった大きな欠損領域の修復や、構造的に複雑な内容の生成を実現します。

Partial Convolution (2018): NVIDIA が提案した手法で、マスクされた領域を無視する特殊な畳み込み演算を使用します。通常の CNN はマスク領域のゼロ値に影響されますが、Partial Conv は有効ピクセルのみで正規化された畳み込みを行い、マスク境界のアーティファクトを抑制します。

Gated Convolution (2019): Partial Conv の改良で、学習可能なゲーティング機構により、各ピクセルの有効性を動的に判断します。不規則な形状のマスクに対してより自然な結果を生成します。

LaMa (Large Mask Inpainting, 2022): 現時点で最高性能の Inpainting モデルの 1 つです。Fast Fourier Convolution (FFC) を使用して大きな受容野を効率的に実現し、画像全体の構造を考慮した修復が可能です。画像の 50% 以上が欠損していても自然な結果を生成できます。

Stable Diffusion Inpainting: 拡散モデルベースの Inpainting で、テキストプロンプトで修復内容を指示できます。「この領域を青空で埋める」「人物を除去して背景を復元する」といった意味的な指示が可能で、クリエイティブな用途に適しています。

性能比較 (FID スコア、低いほど良い):

実務での活用パターン - 不要物除去からデータ拡張まで

Inpainting 技術の実務での具体的な活用パターンを、適切な手法の選択指針とともに紹介します。

写真からの不要物除去: 観光写真の通行人除去、電線の除去、ゴミ箱やコーンの除去など。マスクの作成にはセグメンテーションモデル (SAM: Segment Anything Model) を使用し、除去対象を自動検出します。小さな物体は Telea 法で十分ですが、大きな物体 (画像の 10% 以上) は LaMa や Stable Diffusion が必要です。

ウォーターマーク除去: 半透明のウォーターマークは単純なマスクでは対応できません。ウォーターマークのアルファ値を推定し、元画像を逆算する手法 (Blind Watermark Removal) が研究されています。ただし、著作権保護の観点から倫理的な配慮が必要です。

古い写真の修復: スキャンした古い写真の傷、折り目、色褪せを修復します。傷の検出 (エッジ検出 + 形態学的処理) → マスク生成 → Inpainting のパイプラインで自動化可能です。色褪せはヒストグラム補正で対応し、Inpainting は物理的な損傷のみに適用します。

機械学習のデータ拡張: 学習データの多様性を増やすため、画像の一部をランダムにマスクして Inpainting で復元する手法 (Cutout + Inpainting) が使用されます。モデルが欠損に対してロバストになり、汎化性能が向上します。

動画の Inpainting: 動画からの物体除去では、時間的な一貫性が重要です。フレームごとに独立して Inpainting すると、修復結果がフレーム間でちらつきます。光学フロー (Optical Flow) で時間的な整合性を保証する手法 (Video Inpainting) が研究されており、STTN (Spatial-Temporal Transformer Network) などが高品質な結果を示しています。

マスク生成の自動化と品質評価

Inpainting の品質はマスクの精度に大きく依存します。適切なマスク生成手法と、修復結果の品質を定量的に評価する指標を解説します。

手動マスク生成: ブラシツールで修復領域を塗る最も直感的な方法です。Photoshop、GIMP、Web アプリケーションで広く使用されています。精密なマスクが必要な場合に最適ですが、大量処理には不向きです。

自動マスク生成:

マスクの膨張: 検出されたマスクは対象物のぎりぎりの境界であることが多く、修復品質を上げるためにマスクを 3-5 ピクセル膨張 (dilate) させるのが一般的です。これにより境界のアーティファクトが軽減されます。

品質評価指標:

主観評価: 最終的には人間の目による評価が最も重要です。数値指標が高くても、意味的に不自然な修復 (存在しないはずの物体が生成される) は品質が低いと判断されます。

関連記事

背景透過の技術解説 - セグメンテーションとマット処理の仕組み

画像の背景透過 (背景除去) に使われる技術を解説。セマンティックセグメンテーション、トリマップベースのマット処理、エッジ検出の仕組みと精度の違いを比較します。

画像ノイズ除去の原理と実践 - デジタル写真のノイズリダクション完全ガイド

画像ノイズの発生原因から除去アルゴリズム、実践的なワークフローまで解説。高感度撮影や暗所撮影で発生するノイズへの対処法を紹介します。

GAN の画像応用 - スタイル変換、画像生成、修復における敵対的生成ネットワーク

GAN の画像処理応用を体系的に解説。StyleGAN、Pix2Pix、CycleGAN の原理と実装、スタイル変換・画像生成・修復での活用パターンを具体例とともに紹介します。

アルファマッティングの技術解説 - 自然画像から精密な前景抽出を実現する手法

画像マッティングの原理から最新の深層学習手法まで網羅的に解説。トライマップ、クローズドフォーム、ディープマッティングの実装と比較を詳述します。

画像の自動タグ付け技術 - 物体検出、シーン認識、キャプション生成の仕組み

画像認識 AI による自動タグ付けの技術を解説。物体検出 (YOLO)、シーン認識、画像キャプション生成の仕組みと、Web アプリケーションへの実装方法を具体例とともに紹介します。

深層学習による超解像技術 - SRCNN から Real-ESRGAN までの進化と実践

深層学習を用いた画像超解像技術の発展を体系的に解説。SRCNN から Real-ESRGAN までの主要モデルの原理、性能比較、実務での導入方法を紹介します。

関連用語