728x90

목표

- 침식 erosion, 팽창 dilation, 열림, 닫힘 등 다양한 모폴로지 연산을 사용해봅시다.

 

이론

- 모폴로지 연산은 이미지 형태를 이용한 단순한 연산이라고 할수 있습니다.

- 보통 2진 이미지를 가지고 하는데요.

- 입력은 2개로, 하나는 원본 영상, 그리고 연산 종류를 결정하는 커널(구조 요소)가 됩니다.

- 기본적은 두가지 모폴로지 연산은 침식과 팽창 연산이 있습니다.

- 이들을 이용해서 열림과 닫힘, 그라디언트 같은 연산을 수행할수 있게 됩니다.

 

 

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('C:/Users/do/Documents/github/opencv_python/res/j.png')

kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)
dilation = cv2.dilate(img,kernel,iterations = 1)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

plt.subplot(231),plt.imshow(img),plt.title('origin')
plt.xticks([]), plt.yticks([])
plt.subplot(232),plt.imshow(erosion),plt.title('erosion')
plt.xticks([]), plt.yticks([])
plt.subplot(233),plt.imshow(dilation),plt.title('diliation')
plt.xticks([]), plt.yticks([])
plt.subplot(234),plt.imshow(opening),plt.title('opening')
plt.xticks([]), plt.yticks([])
plt.subplot(235),plt.imshow(closing),plt.title('closing')
plt.xticks([]), plt.yticks([])
plt.subplot(236),plt.imshow(gradient),plt.title('gradient')
plt.xticks([]), plt.yticks([])

plt.show()

 

 

 

300x250

+ Recent posts