11.2.2 캐니 엣지 검출기 구현
캐니 엣지 검출기의 구현은 그리 간단하지가 않다. 이미 앞에서 설명한 바와 같이 가우시안 필터링, 그래디언트 계산 등의 일련의 과정들을 차례대로 수행해야 한다. 여기서는 일단 캐니 엣지 검출기를 구현 함수 전체를 살펴보고, 각각의 부분에 대해 자세히 분석해보자. 먼저 IppFeature.h 파일에 다음과 같이 IppPoint 클래스 정의와 IppEdgeCanny 함수 선언을 추가하자.
class IppPoint { public: int x; int y; public: IppPoint() : x(0), y(0) {} IppPoint(int _x, int _y) : x(_x), y(_y) {} }; void IppEdgeCanny(IppByteImage& imgSrc, IppByteImage& imgEdge, float sigma, float th_low, float th_high);
IppPoint 클래스는 픽셀의 좌표를 저장하는 클래스이며, 정수형 멤버 변수 x와 y를 가지고 있다. IppEdgeCanny 함수는 다섯 개의 인자를 받는다. 첫 번째 인자 imgSrc는 입력 영상이며, 두 번째 인자 imgEdge는 엣지 검출 마스크 연산이 수행된 결과가 저장될 영상이다. sigma는 가우시안 필터링에서 사용할 표준 편차 값이고, th_low와 th_high는 히스테리시스 엣지 트래킹에서 사용할 임계값들이다. IppEdgeCanny 함수에 의해 생성되는 결과 영상 imgEdge는 바이너리 영상의 형태로 표현되며, 이는 imgEdge 영상의 픽셀 값이 0 또는 255 값으로 구성됨을 의미한다. IppEdgeCanny 함수의 구현은 소스 11-4에 나타내었다.