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 페이지에서 사용법과 동작원리를 알아볼 수 있다.
OpenCV: Morphological Transformations
Goal In this chapter, Theory Morphological transformations are some simple operations based on the image shape. It is normally performed on binary images. It needs two inputs, one is our original image, second one is called structuring element or kernel wh
docs.opencv.org
'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 |