ram2 🚗

Edge Detection 본문

🌃 computer vision

Edge Detection

coram22 2022. 9. 27. 00:10
728x90
반응형
728x90

Edge pixels : 밝기가 급격하게 변하는 것

 

✅  어떻게 detect edges를 하는가?

[1차원]

1차 미분을 한다. 

즉, 미분 했을 때 0이 아닌 특정한 부분을 찾아서 검출하는 것.

 

[2차원]

image gradient를 사용한다.

grad(f) = x축 방향으로의 미분값과 y축 방향으로의 미분 값으로 이루어진다.

* gradient vector와 edge direction은 90도 차이.

* gradient vector는 해당 위치에서 변화량이 가장 급격한 방향.

 

[noise가 있는 경우]

noise가 있는 경우, edge detection이 힘들기 때문에 filtering을 사용해서 noise를 제거한다.

 

 

✅  Edge detection 방법

1. Sobel operators

자기 자신과 주변의 차이.

gradient를 계산하며, 연산을 위해서는 spatial filter가 필요하다. 

filtering을 먼저 하고 sobel operator를 적용하면 filter를 적용하지 않은 것에 비해 윤곽선이 뚜렷하게 보인다.

먼저, gx(gradient x)와 gy(gradient y)를 구하고, 각각의 절대값을 더하면 M(x,y) 즉, Magnitude를 구할 수 있다. 

 

2. Canny Edge Detector

Sobel보다 더 자주 사용된다.

 

Algorithm

1. 가우시안 필터를 사용하여 영상 내 잡음을 없앤다.

2. Sobel dedge mask를 사용해서 gradient의 크기와 각도를 계산한다.

3. gradient 방향으로 인접한 픽셀을 먼저 찾고, nonmaxima suppression을 적용한다.

 

(nonmaxima suppression이란?)

다음 예시의 경우, p5를 기준으로 만약 p2와 p8의 gradient magnitude보다 작다면, p5를 제거한다. 즉, 0으로 만든다.

이렇게 하면 p5는 edge가 될 가능성이 적어진다.

만약 P5가 p2, p8보다 gradient magnitude 값이 크다면 그냥 넘어가게 된다.

이런식으로 max만 남기는 것이 nonmaxima suppressiondlek. 

 

4. double thresholding과 connectivity analysis를 사용한다.

먼저, 사용자 지정으로 Th와 Tl을 정한다.

➡️ M(x,y) >= Th 인 경우, edge

➡️ M(x,y) < Tl 인 경우, non-edge

➡️ otherwise, 즉, Th와 Tl 사이의 값들

    이 경우, 만약 edge라고 판정한 부분과 연결되어 있으면 edge로, 그렇지 않으면 non-edge로 간주한다. 

 

 

Sobel edge와 Canny의 차이

➡️  canny는 Sobel에 비해 적은 수의 부분만을 edge로 판별할 수 있다.

728x90
반응형

'🌃 computer vision' 카테고리의 다른 글

Image feature matching  (0) 2022.10.30
Histogram Equalization  (0) 2022.10.08
Spatial Filtering  (0) 2022.10.08
Intensity transformation  (2) 2022.10.08
Line detection  (0) 2022.09.29