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()
↑こう書くと↓こう変換されます