Canny Edge Detector

1 개요

Canny Edge 검출 알고리즘을 이용하여 이미지의 윤곽을 찾아내는 알고리즘입니다.

2 알고리즘 상세 설명

Threshold Low/High 값을 기준으로 대상 픽셀이 엣지 부분인지 판별하여 이미지의 윤곽을 찾아내는 알고리즘입니다.
엣지 판별 알고리즘은 노이즈에 취약하기 때문에 Preprocessing 을 Gaussian 으로 설정하여 노이즈를 감소시켜 더 나은 결과를 획득할 수 있습니다.

Source Image Destination Image
Source Image Destination Image
Fig. Canny Edge Detector 동작 실행

3 파라미터 설정 및 사용 방법

동작을 위한 최소한의 기본 설정 파라미터는 아래와 같습니다.

멤버함수 파라미터 설 명
SetConvolutionMode EConvolutionMode eMode IN 전처리 타입을 설정합니다.

전처리 타입을 설정합니다. EConvolutionMode_Normal 설정 시 전처리를 진행하지 않으며, EConvolutionMode_Gaussian 설정 시 가우시안 합성곱 전처리를 진행합니다. eMode - Default Value: EConvolutionMode_Gaussian

멤버함수 파라미터 설 명
SetThreshold double f64Min, f64Max IN 최소 & 최대 임계값
SetThreshold CMultiVar<double> mvMinMax IN 최소 & 최대 임계값

최소 & 최대 임계값을 설정합니다. f64Min, f64Max - Default Value: 40, 128

4 예제 코드

CCannyEdgeDetector CannyEdge;

CFLImage fliSourceImage;
CannyEdge.SetSourceImage(fliSourceImage);

CFLImage fliDestinationImage;
CannyEdge.SetDestinationImage(fliDestinationImage);

CannyEdge.SetConvolutionMode(CCannyEdgeDetector::EConvolutionMode_Gaussian);
CannyEdge.SetThreshold(CMultiVar<double>(30, 120));

CannyEdge.Execute();
CCannyEdgeDetector CannyEdge = new CCannyEdgeDetector();

CFLImage fliSourceImage = new CFLImage();
CannyEdge.SetSourceImage(ref fliSourceImage);

CFLImage fliDestinationImage = new CFLImage();
CannyEdge.SetDestinationImage(ref fliDestinationImage);

CannyEdge.SetConvolutionMode(CCannyEdgeDetector.EConvolutionMode.Gaussian);
CannyEdge.SetThreshold(new CMultiVar<double>(30, 120));

CannyEdge.Execute();