전공지식정리/영상처리(Image Signal Processing)

6. Canny edge detector

TimeSave 2020. 12. 8. 23:33

Canny Edge detection
86'년 John F. Canny가 개발한 알고리즘.
우월한 Edge 검출기이다. 
-> 잘찾으면서, 회색물질 관련 에지를 제거할 수 있음.

장점.
1. 낮은 에러율
2. 정확한 에지의 위치.
3. 에지당 1개의 점만 표시.

단점
 복잡해서, 실행시간이 길다.

Canny edge는 5단계(혹은 4단계)를 거친다.

1. Smoothing
뒷단계에서 미분하는 작업이 있는데, 미분을 하면 Noise가 많이 생긴다.
Smoothing을 통해서 미리 제거해준다.
Canny edge에서는 Gaussian filter를 사용한다.

2. Gradients
Edge는 Image의 Intensity가 급격하게 변하는 부분이다
변화의 방향도 중요한 정보이므로, 이를 얻기위해 vector의 형태로 구해본다.

이 변화의 강도(=크기,Norm)은 

각도는 

를 이용해 구할 수 있다.

Sobel filter를 이용해 x축 변화, y축 변화를 각각 구해서 위 값을 계산해보자.
[ Sobel 이 앞뒤 pixel의 값차이로 통해 중심픽셀의 변화량을 계산했던 필터다, 좌우극한 좁아지는 것과 비슷]


3. Non-maximum suppression
suppression : n. 억압.
-> 즉, 최대 변화가 아닌 값들은 없애버린다는 뜻이다.

위에서 gradient의 direction(방향)과 norm(크기)를 구했었다.
direction 값을 통해서, 비교 pixel을 정하고,
norm의 크기 비교를 통해서, edge를 선택해준다.

3.1.각 direction 값을 그룹화 하여, 0, 45 ,90 135 ,180으로 구분해준다.



3.2. 그리고 이 방향을 토대로 픽셀 값을 비교한다.
180 = 우픽셀 ~ 좌픽셀
0     = 좌픽셀 ~ 우픽셀
45   = 좌하 ~ 우상 
135 = 우하 ~ 좌상
90   = 하 ~ 상

정해진 방향으로 픽셀 비교

그림을 보면 알겠지만, 180과 0, 그리고 45와 135는 부호가 다르다. 구분해야한다.

3.3 비교했을 때, norm이 가장 크다면 살리고, 아니라면 버린다.
 -> 변화가 가장 큰 곳이 edge이므로,


4. Double thresholding 5. edge tracking by hysteresis
[= linking and Hysteresis thresholding]

위의 과정을 거쳐도, noise가 섞일 수 있다. 
한번 더 걸러서 깔끔하게 만들자.

4.1 2개의 magnitude(=norm,크기) Threshold(높은,낮은)를 설정한다.

4.2 낮은 Threshold 기준으로, 작은 크기의 local maximum(위에서 구한 edge)는 noise이므로 버린다.

4.3 높은 Threshold 기준으로, 이것보다 크면 확실히 edge이므로 살린다.

4.4. Threshold사이에 있는 애매한 edge들은, 인접 8방향 Scan을 통해서 
주변에 위에서 구한 강한 edge가 연결되어 있으면, 살린다.

위의 애매한 edge을 설명하는 그림

4.4.1
 맨 왼쪽 그림에서 회색 그림자 같은 부분이, 위에서 설명한 애매한 부분이다.(흰색 진한선은, 강한 edge)

4.4.2 위의 파란색 부분이 강한 edge와 연결된 부분이고.
                 빨간색 부분이 연결되지 않은 부분이다.
=> 빨간색은 없애고, 파란색은 살린다.





norm과 direction의 단어가 어려우니까, 잘 알아두자
특히 영어로 된 설명을 읽었다면, norm을 몰라서 처음에 이해하기 힘들 수 있다.






출처 : http://carstart.tistory.com/188
       : Learning OpenCV. O'Reilly Media, Inc . Gary Bradski, Adrian Kaehler. 2008.10

'전공지식정리 > 영상처리(Image Signal Processing)' 카테고리의 다른 글

모두를 위한 머신러닝/딥러닝 강의  (0) 2020.12.08
7. Hough Transform  (0) 2020.12.08
5 Color Model  (0) 2020.12.08
4. Labeling  (0) 2020.12.08
2. linear filtering  (0) 2020.12.08