Python OpenCV3でシャープ化フィルタリング
シャープ化フィルタリングをすると、画像全体がはっきりと見えるようになる。
[amazonjs asin="4061538225″ locale="JP" title="OpenCVによる画像処理入門 (KS情報科学専門書)"]
前提
元画像
細い線がシャープになる様子を見るために、花火の画像(hanabi.jpg)を使う。
source/image ディレクトリに画像を設置する。
filter2Dメソッドの使い方
filter2Dメソッドの使い方は次の通り。
[python title="filter2Dメソッドの使い方"]
cv2.filter2D(img_src, 出力画像のbit深度, シャープ化するためのオペレータ)
[/python]
出力画像のbit深度は以下の中から選択できる。
負の値を入力することで、入力画像と同じものを指定できる。
cv2.CV_16S cv2.CV_16UC2 cv2.CV_32FC4 cv2.CV_64FC1 cv2.CV_8SC3 cv2.CV_16SC1 cv2.CV_16UC3 cv2.CV_32S cv2.CV_64FC2 cv2.CV_8SC4 cv2.CV_16SC2 cv2.CV_16UC4 cv2.CV_32SC1 cv2.CV_64FC3 cv2.CV_8U cv2.CV_16SC3 cv2.CV_32F cv2.CV_32SC2 cv2.CV_64FC4 cv2.CV_8UC1 cv2.CV_16SC4 cv2.CV_32FC1 cv2.CV_32SC3 cv2.CV_8S cv2.CV_8UC2 cv2.CV_16U cv2.CV_32FC2 cv2.CV_32SC4 cv2.CV_8SC1 cv2.CV_8UC3 cv2.CV_16UC1 cv2.CV_32FC3 cv2.CV_64F cv2.CV_8SC2 cv2.CV_8UC4
シャープ化するためのオペレータは以下のような考え方で作成する。
シャープ化フィルタリング
sourceディレクトリにshape.pyを作成する。
[python title="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()
[/python]
実行してみる。
[shell]
(opencv_python)$ python shape.py
[/shell]
ぱっと見画像が荒くなったように見えるが、元画像と比較すると火花が細くなっているのがわかる。
ディスカッション
コメント一覧
まだ、コメントがありません