Canny Edge Detection 알고리즘
Canny Edge Detection은 이미지에서 엣지를 효과적으로 검출하는 알고리즘으로, 1986년 John F. Canny에 의해 개발되었습니다. 에지 검출을 최적화 문제로 취급하였습니다. 그는 좋은 에지 알고리즘이 갖추어야할 세가지 기준을 제시하였습니다.
- 최소 오류율 : 없는 에지를 생성하거나 에지를 못찾는 경우를 최소하여야 한다.
- 위치 정확도 : 검출된 에지는 실제 에지의 위치와 가까워야한다.
- 에지 두께 : 실제 에지에 해당하는 곳에는 한 두께의 에지만 생성해야한다.
1. Canny Edge Detection 과정
Canny Edge Detection 알고리즘은 다음과 같은 5단계로 이루어집니다.
1.1. Gaussian Blur (가우시안 블러)
노이즈가 있는 이미지에서는 엣지 검출이 불안정할 수 있습니다. 이를 방지하기 위해 먼저 가우시안 필터를 적용하여 노이즈를 제거합니다.
- 보통 5x5 또는 3x3 커널을 사용하여 블러를 적용합니다.
1.2. Gradient Calculation (기울기 계산)
엣지를 찾기 위해 Sobel 필터를 사용하여 X축과 Y축의 기울기(Gradient) 를 계산합니다.
- Sobel 필터를 사용하여 ( G_x ) (수평 방향) 및 ( G_y ) (수직 방향) 기울기를 구합니다.
- 전체 기울기 크기(Magnitude)와 방향(Direction)을 계산합니다.
1.3. Non-Maximum Suppression (비최대 억제)
엣지를 더 얇고 명확하게 만들기 위해 비최대 억제(Non-Maximum Suppression)를 수행합니다.
- 각 픽셀의 기울기 방향에 따라 인접한 픽셀과 비교하여 가장 큰 값만 남깁니다.
- 작은 값은 제거하여 엣지를 가늘게 만들고, 더 명확하게 유지합니다.
1.4. Double Threshold (이중 임곗값)
검출된 엣지 픽셀을 두 개의 임계값(Threshold)으로 구분하여 강한 엣지와 약한 엣지를 나눕니다.
high threshold보다 큰 값 → 강한 엣지(Strong Edge)
low threshold보다 작은 값 → 버림(Non-Edge)
low threshold와 high threshold 사이 → 약한 엣지(Weak Edge)
high threshold의 값은 low threshold의 2-3배로 설정할 것을 권고.
1.5. Edge Tracking by Hysteresis (히스테리시스 엣지 추적)
high threshold보다 높은 값을 가지는 화소에서 엣지 추적을 시작한다.
강한 엣지는 유지하고, 약한 엣지는 강한 엣지와 연결될 때만 유지합니다.
- 이 과정을 통해 노이즈를 제거하고 끊어진 엣지를 연결할 수 있습니다.
3. Canny Edge Detection의 장점과 단점
✅ 장점
- 노이즈에 강함 → 가우시안 블러 적용
- 엣지를 선명하게 검출 → 비최대 억제 사용
- 이중 임계값으로 엣지 연결 유지 → 히스테리시스 엣지 추적
- 대부분의 이미지에서 좋은 결과 제공
❌ 단점
- 파라미터 튜닝이 필요함 → low threshold와 high threshold 값을 조정해야 함
- 일부 이미지에서는 세밀한 엣지가 손실될 수 있음
- 비교적 연산량이 많아 실시간 처리에서 부담될 수 있음
참고문헌
- 컴퓨터비전 (2014), 오일석, 한빛아카데미
- CHATGPT 답변