end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

opencv.morphologyEx() による画像のオープニング/ クロージング処理

medianBlur() による中央値フィルタ、erode() / dilate() による膨張/収縮 の関連。

今回はopencv.morphologyEx() による画像のオープニング/ クロージング処理。

scriptと、それによる変換結果は、以降に記載していますが、今回も期待過多

type 内容
オープニング 収縮処理の後に、膨張処理を実施
クロージング 膨張処理の後に、収縮処理を実施

opencv.erode() / dilate() による画像の膨張処理 / 収縮処理 - end0tknr's kipple - 新web写経開発

opencv.medianBlur() で、中央値フィルタ - end0tknr's kipple - 新web写経開発

参考url

モルフォロジー変換 — OpenCV-Python Tutorials

Python OpenCV3でオープニング・クロージングを施してノイズを除去してみる | from umentu import stupid

script

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import sys

def main():
    org_file = sys.argv[1]

    # 強制的にグレー画像として読む
    # http://opencv.jp/opencv-2.1/cpp/reading_and_writing_images_and_video.html
    img = cv2.imread(org_file, 0)
    cv2.imwrite('org.png', img)

    # グレースケールを更に2値化
    ret, img_new = cv2.threshold(img,
                                 200,               # 閾値
                                 256,               # 画素値の最大値
                                 cv2.THRESH_BINARY) # 2値化type

    # 近傍の定義
    neiborhood = np.array([[1, 1, 1],
                           [1, 1, 1],
                           [1, 1, 1]],
                           np.uint8)
    # neiborhood = np.array([[0, 1, 0],
    #                        [1, 1, 1],
    #                        [0, 1, 0]],
    #                        np.uint8)

    # 1回目: open=膨張、close=収縮 
#    img_new = cv2.morphologyEx(img_new,cv2.MORPH_OPEN, neiborhood)
    img_new = cv2.morphologyEx(img_new,cv2.MORPH_CLOSE,neiborhood)
    # 2回目: open=膨張、close=収縮 
#    img_new = cv2.morphologyEx(img_new,cv2.MORPH_OPEN, neiborhood)
#    img_new = cv2.morphologyEx(img_new,cv2.MORPH_CLOSE,neiborhood)
    # 3回目: open=膨張、close=収縮 
#    img_new = cv2.morphologyEx(img_new,cv2.MORPH_OPEN, neiborhood)
#    img_new = cv2.morphologyEx(img_new,cv2.MORPH_CLOSE,neiborhood)
    
    cv2.imwrite('new.png', img_new)


if __name__ == '__main__':
    main()

↑こう書くと↓こう変換されます f:id:end0tknr:20171103163626p:plain:w270 f:id:end0tknr:20171104075249p:plain:w270