Canny Edge Detector

캐니 엣지 검출기는 John Canny가 1986년에 논문에서 발표한 내용으로 라플라스 필터 방식을 상당히 개선했다. 

J. Canny는 다음과 같은 3가지 조건을 충족하는 엣지 검출기를 만들고자 했다.

  • Good detection
    – 엣지가 아닌 점을 엣지로 찾거나 또는 엣지인데 엣지로 찾지 못하는 확률을 최소화한다.

  • Good localization
    – 실제 엣지의 중심부분을 검출한다.

  • Single edge
    – 하나의 엣지는 하나의 점으로 표현한다.

이러한 전제 조건을 충족시키기 위해 총 4단계에 걸친 복합적인 알고리즘을 만들었다.

1단계 노이즈 줄이기

이미지에서 엣지 검출은 노이즈에 민감하기 때문에 우선 노이즈를 제거하는 것이 중요하다. 첫번째 과정으로 5×5 가우시안 필터를 이미지에 적용하여 노이즈를 줄인다. 

2단계 그래디언트 계산

부드러워진 이미지는 수평 그리고 수직 방향으로 소벨 커널을 통해 필터링한다. 필터된 두 이미지를 통해 그래디언트의 크기와 방향을 구할 수 있게 된다.

그라데이션의 방향을 단순화 하기 위해 수직, 수평, 대각선 방향을 나타네는 네 각도 중 하나로 반올림 한다.

3단계 비최대 억제 (Non-maximum Suppression) 

그래디언트의 크기와 방향을 얻고 난 후, 하나의 엣지가 여러개의 픽셀로 표현되는 현상을 없애기 그래디언트 크기가 국지적 최대(local maximum)인 픽셀만을 엣지 픽셀로 선정한다.

4단계 히스테리시스 엣지 트래킹(Hysteresis edge tracking)

이 단계에서는 엣지가 실제로 엣지인지 아닌지를 결정한다. 이를 위해 최솟값 및 최댓값의 임계 값이 필요하다. 그래디언트의 강도가 최댓값보다 크면 엣지가 되고, 최솟값 보다 작으면 버려진다. 최솟값과 최댓값의 경계 사이에 있는 값들은 다른 엣지와의 연결성을 확인하여 최종적인 엣지로 선정한다.

OpenCV에서 제공하는 Canny 함수는 다음과 같다.

Imgproc.Canny(Mat image, Mat edges, double threshold1, double threshold2)
image : 입력 영상
edges : 출력 영상
threshold1 : 최소 임계값 
threshold2 : 최대 임계값

레나 이미지를 Grayscale로 변경하고, 최소값 50, 최대값 100과 함께 Canny 함수를 적용한 결과는 다음과 같다. 

카테고리: OpenCV

1개의 댓글

wprkftlr · 2023년 11월 24일 9:09 오전

캐니에지는 딥러닝에서도 중요하게 쓰입니다.

https://brunch.co.kr/@f6cf51e0a3154dc/123

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.