OpenCV에서 캐니 에지 검출 알고리즘은 Canny() 함수에 구현되어 있습니다. Canny() 함수는 두 가지 형태로 정의되어 있고, 각각의 함수 원형은 다음과 같습니다.
void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize = 3, bool L2gradient = false); void Canny(InputArray dx, InputArray dy, OutputArray edges, double threshold1, double threshold2, bool L2gradient = false); |
|
• image |
8비트 입력 영상 |
• dx |
입력 영상의 x 방향 미분 영상. CV_16SC1 또는 CV_16SC3 |
• dy |
입력 영상의 y 방향 미분 영상. CV_16SC1 또는 CV_16SC3 |
• edges |
출력 에지 영상. 입력 영상과 크기가 같은 8비트 단일 채널 영상입니다. |
• threshold1 |
히스테리시스 에지 검출을 위한 첫 번째 임계값 |
• threshold2 |
히스테리시스 에지 검출을 위한 두 번째 임계값 |
• apertureSize |
그래디언트 계산을 위한 소벨 마스크 크기 |
• L2gradient |
그래디언트 크기 계산 시 L2 노름을 사용하려면 true를 지정합니다. 이 값이 false이면 L1 노름을 사용합니다. |
앞에 나열된 두 개의 Canny() 함수 중에서 첫 번째 함수는 일반 영상을 입력으로 전달하여 에지를 검출할 때 사용하고, 두 번째 함수는 이미 x 방향과 y 방향의 미분 영상을 가지고 있을 때 사용합니다. Canny() 함수를 사용할 때에는 두 개의 임계값을 적절하게 지정하는 것이 중요합니다. threshold1과 threshold2 인자에 지정하는 두 개의 임계값은 캐니 에지 검출기의 히스테리시스 에지 트래킹 단계에서 사용됩니다. 보통 threshold1 인자에는 낮은 임계값을 지정하고, threshold2 인자에는 높은 임계값을 지정합니다. 낮은 임계값과 높은 임계값은 보통 1:2 또는 1:3의 비율로 지정합니다. apertureSize와 L2gradient 인자는 기본값이 있으므로 생략할 수 있습니다.