[scikit-image] 69. 全体的に欠損した画像を修復(skimage.restoration inpaint_biharmonic)

python

はじめに

scikit-imageライブラリのrestorationモジュールに含まれるinpaint_biharmonic関数を使用して、全体的に欠損した画像を修復する方法について解説します。この手法は、画像内の欠損部分を周囲のピクセル情報を利用して滑らかに補完するもので、特に広範囲にわたって散在する欠損に効果的です。本記事では、実際のコード例を示しながら詳しく見ていきます。

なお、塊上の欠損がある画像の修復については下記記事で解説した。

[scikit-image] 37. 画像の欠損部分を修復(skimage.restoration inpaint)
scikit-imageライブラリのrestoration.inpaint関数を使って画像の欠損部分を修復する方法を解説します。マスク画像の作成方法、修復アルゴリズムの選択、実践的な例を通じて画像修復の基本を学びましょう。

コード

解説

モジュールのインポートなど

画像データの読み込み

下の画像を用います。サイズは256 x 256となっています。

欠損画像生成関数

ランダムな位置が1となっているマスク画像を作成し、それを元画像に適用することで欠損画像を生成します。

欠損画像とマスク画像の生成

欠損領域の比率が10%から80%となっている画像とマスク画像を生成しました。

画像の修復

inpaint_biharmonic関数を使用すると、欠損画像とマスク画像を指定することで画像を修復できます。RGB画像の場合は、multichannel=Trueと設定します。

結果の表示

mpl_toolkits.axes_grid1のImageGridを使い、並べて表示しました。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

本記事では、scikit-imageのinpaint_biharmonic関数を使用して全体的に欠損した画像を効果的に修復する方法を紹介しました。この手法は特に散在する欠損に対して優れた結果を示し、マスク画像を用いて欠損領域を指定することで、自然な見た目の修復が可能です。画像処理において欠損修復は重要なタスクであり、この手法を理解することでより高品質な画像処理が実現できるでしょう。

参考

Inpainting — skimage v0.16.1 docs
skimage.restoration — skimage 0.26.0rc0.dev0 documentation

コメント