[DL]Image Segmentation 3
Contents
개요
- 이전 글에 이어서 Image segmentation의 접근 방법 (Edge 기반 방법, 영역 기반 방법)에 대해서 알아보고자 한다.
- 먼저 Edge 기반 방법의
Edge Detection에 대해 알아보겠다.
Edge Detection
Edge Detection은 영상(Image)의Edge(경계선, 윤곽선)을 검출하는 것이다. 이때Edge는 깊이, 색깔, 조명이 달라서등 다양한 원인에 의해서 생길 수 있다.Edge는 이러한 원인들에 의해서 밝기가 급격하게 변한다라고 말할 수 있다.
- 따라서 영상상의
Edge의 밝기를 분석했을 때Edge에 해당하는 부분은 픽셀의 밝기가 급격하게 변한다라는 특징을 가지고 있다.
[그림 1] intensity function - 위 [그림 1]을 보면 중간 그림 처럼 아래로 떨어지는 부분이나, 위로 오르는 부분이
Edge이다. 이 부분을 미분을 해보면 우측 그림 처럼 극값이Edge라고 할 수 있다.
- 따라서
Edge검출 방법은 미분을 이용하여 근처 픽셀과의변화율을 찾아 검출하는 것이다.변화율을 찾을 때 1차 미분, 2차 미분을 이용하는 방법이 있다.
Edge Detection에선 1차 미분의 중앙 차분 방법을 사용하는데 이 방법을 영상 속 픽셀에 적용시키기 위하여미분 마스크를 사용하게 된다.미분 마스크는 가로(x), 세로(y) 방향이 있고 x,y 방향 둘 다 계산(1차 미분)을 하여 두 개의 결과를 합쳐서 일정threshold를 기준으로Edge를 검출 할 수 있게 된다.
[그림 2] Edge Detection flow
[그림 3] Mask Filter 미분 마스크의 여러 형태(마스크의 값)이 있는데 이 중 일반적으로 간단한sobel을 많이 사용한다.
- 라이브러리 cv2의
Sobel메서드를 사용하면 미분 마스크를 사용해볼 수 있다.import cv2 img = cv2.imread("some_img.png", cv2.IMREAD_GRAYSCALE) dx = cv2.Sobel(img,-1,1,0, delta = 128) # delta는 시각화를 위하여 dy = cv2.Sobel(img,-1,0,1, delta = 128) # delta는 시각화를 위하여- 3*3 필터로 각각 x방향, y방향 편미분을 하는 방식
Region Growing
- 영역 기반 방식에서 가장 많이 사용되는 방식이
region-growing알고리즘이다. 이 방식은 **기준 픽셀(SEED)**을 정하고 기준 픽셀과 비슷한 속성을 갖는 픽셀로 영역을 확장하여 더 이상 속성을 갖는 것들이 없으면 확장을 마치는 방식이다.
- **기준 픽셀(SEED)**를 정하는 방식은
Thresholding&Morphological등의 방법이 사용될 수 있다.Thresholding을 사용하여 그림을 추출 한 후 구체적인 포인트를 뽑기 위해Morphological Erosion을 하는 방식이 있다.
- 시드포인트를 정한 후 확장하는 방법도 다양하다.
- 원래의 시드 픽셀과 비교
- 기존 시드 픽셀과 비교하여 일정 범위 이내가 되면 영역을 확장하는 방법. (잡음에 민감, seed에 민감)
- 확장된 위치의 픽셀과 비교