Python OpenCV3でシャープ化フィルタリング

Share on Facebook
Pocket
LINEで送る
Bookmark this on Google Bookmarks

シャープ化フィルタリングをすると、画像全体がはっきりと見えるようになる。

 

前提

ディレクトリ構成などはこことかこことか。

 

元画像

細い線がシャープになる様子を見るために、花火の画像(hanabi.jpg)を使う。
source/image ディレクトリに画像を設置する。

hanabi

 

filter2Dメソッドの使い方

filter2Dメソッドの使い方は次の通り。

cv2.filter2D(img_src, 出力画像のbit深度, シャープ化するためのオペレータ)

出力画像のbit深度は以下の中から選択できる。
負の値を入力することで、入力画像と同じものを指定できる。

シャープ化するためのオペレータは以下のような考え方で作成する。

スクリーンショット 2015-07-05 2.43.30

 

シャープ化フィルタリング

sourceディレクトリにshape.pyを作成する。

# -*- coding: utf-8 -*-

import cv2
import numpy as np

if __name__ == '__main__':
    
    # シャープの度合い
    k = 10.0
    # シャープ化するためのオペレータ
    shape_operator = np.array([[0,        -k, 0],
                  [-k, 1 + 4 * k, -k],
                  [0,         -k, 0]])


    # 画像の読み込み
    img_src = cv2.imread("./image/hanabi.jpg", 3)

    # 作成したオペレータを基にシャープ化
    img_tmp = cv2.filter2D(img_src, -1, shape_operator)
    img_shape = cv2.convertScaleAbs(img_tmp)

    # 表示
    cv2.imshow("Show SHAPE Image", img_shape)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

実行してみる。

(opencv_python)$ python shape.py

スクリーンショット 2015-07-05 2.34.01

 

ぱっと見画像が荒くなったように見えるが、元画像と比較すると火花が細くなっているのがわかる。

 

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です