Symfoware

Symfowareについての考察blog

Python + OpenCV3 指定領域のノイズを修復する(Inpaint)

画像内に写り込んだ不要なものやノイズを除去したい場合は、
OpenCVの「Inpaint」を使えば良いことを知りました。

画像内の不要部分を取り除き、修復する(OpenCV / iOS)
その他の画像変換
Image Inpainting

早速試してみます。


画像の準備



元画像

891_01.png

適当に落書きします。
・noize.png

891_02.png

落書きした箇所を白で塗りつぶし。
ここが修復を行う範囲になります。

891_03.png

修復を行わない箇所は黒塗りに変換。
・filter.png

891_04.png

これで準備は整いました。


サンプル



プログラムは至って簡単。
用意したノイズ入りの画像とフィルター画像をinpaintに指定するだけです。


  1. # -*- coding:utf-8 -*-
  2. import cv2 as cv
  3. def main():
  4.     # ファイルを読み込み
  5.     img = cv.imread('noize.png', cv.IMREAD_COLOR)
  6.     mask = cv.imread('filter.png', cv.IMREAD_GRAYSCALE)
  7.     # 修復実行
  8.     dst = cv.inpaint(img, mask, 3, cv.INPAINT_TELEA)
  9.     #dst = cv.inpaint(img, mask, 3, cv.INPAINT_NS)
  10.     
  11.     cv.imwrite('result.png', dst)
  12.         
  13.     
  14. if __name__ == '__main__':
  15.     main()




INPAINT_TELEAを指定した場合の結果。

891_05.png


INPAINT_NSを指定した場合の結果。

891_06.png

近傍円形領域の半径を15とした場合
dst = cv.inpaint(img, mask, 15, cv.INPAINT_TELEA)

891_07.png


【参考URL】
画像内の不要部分を取り除き、修復する(OpenCV / iOS)
その他の画像変換
Image Inpainting
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2018/06/14(木) 23:38:11|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<C# 透過pngをレイヤーとして表示するPictureBoxを作成する | ホーム | C# BackgroundWorker 処理状況の通知とキャンセル、複数タスクの実行(.NET Core 2)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://symfoware.blog.fc2.com/tb.php/2192-11530a50
この記事にトラックバックする(FC2ブログユーザー)