[scikit-image] 37. 画像の欠損部分を修復(skimage.restoration inpaint)

python

はじめに

scikit-imageライブラリには、画像の欠損部分を修復するための機能が含まれています。この記事では、skimage.restoration モジュールの inpaint 関数を使って、画像内の欠損部分や不要な部分を修復する方法について解説します。inpaint 関数は、指定したマスク領域を周囲のピクセル情報を利用して自然に埋める機能を提供します。

コード

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

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

解説

モジュールのインポート

画像データの読み込み

下のロフォフォラの画像を読み込みます。

マスク画像の作成

image_orig.shape[:-1]は(512,512)となるため、maskは全要素が0の配列として初期化されます。その後、マスクの特定位置を1に設定してマスク画像を作成しています。

画像のマスク処理

マスク画像のマスク部分を読み込んだ画像に適用します。RGB画像には3つの層(R, G, B)があるため、各層に対してマスク処理を行います。image_defect.shape[-1]は、RGB画像の場合3になります。

画像の修復

inpaint_biharmonic関数を使用して画像の欠損部分を修復します。image_defectは欠損部分がマスク処理された画像で、maskはその欠損部分を示すマスク画像です。カラー画像の場合はmultichannel=Trueを設定し、グレースケール画像の場合はFalseを設定します。

画像の表示

右下のInpainted imageでは、欠損部分がぼかしたような自然な形で修復されていることが確認できます。

まとめ

scikit-imageのinpaint関数を使うことで、画像の欠損部分や不要なオブジェクトを効果的に修復することができます。マスク画像を適切に作成し、アルゴリズムを選択することで、様々な画像修復タスクに対応できます。この技術は写真修復、古い画像の復元、不要物の除去など、幅広い用途に活用できます。

参考

Fill in defects with inpainting — skimage 0.25.2 documentation
skimage.restoration — skimage 0.25.2 documentation

コメント