OpenCV 기반 영상 추적 알고리즘 실습(2)

Yk Lee·2022년 6월 7일
0

AI영상인식실습

목록 보기
15/16

이미지 형태 변환

이미지 노이즈 개선을 위한 구현된 알고리즘을 실습할 수 있다.

이미지 Opening/Closing
이미지 Erosion(침식) 및 Dilation(확장) 기법

커널을 2x2 크기의 주황색 사각형으로 정의
1. 커널 안의 픽셀 값이 모두 1일 경우 -> 결과 이미지에 1 기록
2. 커널 안의 픽셀 값이 모두 1이 아닐 경우 -> 결과 이미지에 0기록
Erosion 기법


Erosion(침식)을 반복하면 이미지가 가늘어지다가 사라질 수 있다.
Opening 기법 : Erosion 수행 후 Dilation을 수행하여 본래 크기로 돌려 놓음
Closing 기법 : Dilation 수행 후 Erosion을 수행하여 본래 크기로 돌려 놓음

실습

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

dotImage = cv2.imread('dot_image.png')
holeImage = cv2.imread('hole_image.png')

#5x5 형태의 커널을 정의
# kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
#7x7 형태의 커널을 정의
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(7,7))
# kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
# kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))

erosion = cv2.erode(dotImage,kernel,iterations = 1)
dilation = cv2.dilate(holeImage,kernel,iterations = 1)

opening = cv2.morphologyEx(dotImage, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(holeImage, cv2.MORPH_CLOSE,kernel)

images =[dotImage, erosion, opening, holeImage, dilation, closing]
titles =['Dot Image','Erosion','Opening','Hole Image', 'Dilation','Closing']
for i in range(6):
    plt.figure(i+1),plt.imshow(images[i]),plt.title(titles[i])
    plt.xticks([]),plt.yticks([])

plt.show()

결과는 위의 사진과 같이 나온다.

profile
AR개발자지망생

0개의 댓글