teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

2018/10/18 02:37

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -17,4 +17,40 @@
17
17
  ])
18
18
  ```
19
19
 
20
- [参考リンク](http://pynote.hatenablog.com/entry/opencv-morpology#%E6%BC%94%E7%AE%97%E3%81%AE%E7%A8%AE%E9%A1%9E)
20
+ [参考リンク](http://pynote.hatenablog.com/entry/opencv-morpology#%E6%BC%94%E7%AE%97%E3%81%AE%E7%A8%AE%E9%A1%9E)
21
+
22
+ ## 追記
23
+
24
+ ```python
25
+ import matplotlib.pyplot as plt
26
+ import numpy as np
27
+
28
+ # 入力画像を作成する。
29
+ src = np.zeros((3, 9), dtype=np.uint8)
30
+ src[1, 2] = 255
31
+ src[1, 6] = 255
32
+ plt.imshow(src, cmap='gray')
33
+ plt.show()
34
+
35
+ kernel = np.array([[1, 1, 1]])
36
+ dst = cv2.morphologyEx(src, cv2.MORPH_DILATE, kernel,
37
+ borderType=cv2.BORDER_CONSTANT, borderValue=0)
38
+ plt.imshow(dst, cmap='gray')
39
+ plt.show()
40
+
41
+ # 縁を除く ROI を作成して、dilate する。
42
+ dst = src.copy()
43
+ dst[1:-1, 1:-1] = cv2.morphologyEx(dst[1:-1, 1:-1], cv2.MORPH_DILATE, kernel, iterations=2,
44
+ borderType=cv2.BORDER_CONSTANT, borderValue=0)
45
+ plt.imshow(dst, cmap='gray')
46
+ plt.show()
47
+ ```
48
+
49
+ ![イメージ説明](a7b729ecd082e00cd3468bda59ba4129.png)
50
+ 入力画像
51
+
52
+ ![イメージ説明](1a319089f576bc5ea56bd781c30711f9.png)
53
+ 入力画像に対して dilate を1回した結果
54
+
55
+ ![イメージ説明](07873c2c666a2673125c35d5284508dc.png)
56
+ 入力画像の外周のピクセルを除いて dilate を2回した結果

1

2018/10/18 02:37

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  CLOSE 演算は、dilate → erode を順番に行う処理なので、dilate、erode を単体で呼び出して調整してみてはどうでしょうか。
2
2
 
3
- morphologyEx() の第4引数 kernel で各走査点での処理する画素を定義しているので、ここを以下のようにカーネルを自分で定義することで、特定の方向だけ収縮したり、膨張したりもできます。
3
+ kernel 引数で各走査点での処理する画素を定義しているので、ここを以下のようにカーネルを自分で定義することで、特定の方向だけ収縮したり、膨張したりもできます。
4
4
 
5
5
 
6
6
  ```python