0. Morphological Transform
Morphological Transform이란 고전적인 컴퓨터 비전 기술로, 이미지에 기반한 연산으로 일반적으로 흑백이미지에 수행한다.
입력으로 원본이미지와 커널(특정연산을 수행)을 넣는다.
커널의 종류로는 Erosion,Dilation,Opening,Closing,Morphological gradient, Top hat 등이 있다.
이 Morphological Transform은 단순하고 쉽게 사용할 수 있으며, 이미지 전처리 영역에서 유용하게 사용된다.
우선 이미지를 불러오고 OpenCV 라이브러리를 이용하여 간단한 코드도 알아보도록 하자.
import cv2 as cv
import numpy as np
img = cv.imread('j.png', cv.IMREAD_GRAYSCALE)
kernel = np.ones((5,5),np.uint8)
1. Erosion
Erosion은 물체의 경계를 침식하는 작업으로, 이미지의 특징을 축소할 때 사용 한다.
홀수 크기의 커널이 이미지와 컨볼루션 연산을 수행하면서 커널아래의 모든 픽셀이 1이면 1, 그 외에는 0으로 변환한다. 이 과정을 통해 경계근처의 픽셀은 침식당한다.
erosion = cv.erode(img,kernel,iterations = 1)
2. Dilation
Dilation은 Erosion과 정반대의 작업으로 사물의 크기를 팽창할 때 사용한다.
홀수 크기의 커널이 이미지와 컨볼루션 연산을 수행하면서 커널 아래의 하나 이상의 픽셀이 1이면 1 그외에는 0으로 변환한다. 이 과정을 통해 경계 근처의 픽셀은 팽창된다.
dilation = cv.dilate(img,kernel,iterations = 1)
3. Opening
Opening은 Erosion 커널과 Dilation 커널을 순서대로 동작하는 연산이다.
이를 통해 노이즈를 제거하고, 기존의 이미지는 그대로 유지하게 된다.
opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)
4. Closing
Closing은 Dilation 커널과 Erosion 커널을 순서대로 동작시키는 연산이다.
이는 물체의 비어있는 부분을 채워주는 역할을 한다.
closing = cv.morphologyEx(img, cv.MORPH_CLOSE, kernel)
이 외에도 다양한 기법들이 있으며 아래의 OpenCV 페이지에서 사용법과 동작원리를 알아볼 수 있다.
'ML & DL > Computer vision' 카테고리의 다른 글
Backbone과 Decoder 개념 (0) | 2024.01.29 |
---|---|
Contour Detection (0) | 2024.01.29 |
DeepLabV3plus (0) | 2023.10.26 |
U-Net (0) | 2023.10.26 |
Image segmentation(recognition+localization) (0) | 2023.10.26 |