허프 그래디언트 방법을 이용하여 원의 중심을 검출하는 과정을 그림 9-16에 나타냈습니다. 그림 9-16처럼 원주상의 모든 점에 대해 그래디언트 방향의 직선을 그리고, 직선상의 축적 배열 값을 증가시키면 결과적으로 원의 중심 위치에서 축적 배열 값이 크게 나타나게 됩니다. 일단 원의 중심을 찾은 후에는 다양한 반지름의 원에 대해 원주상에 충분히 많은 에지 픽셀이 존재하는지 확인하여 적절한 반지름을 선택합니다.
▲ 그림 9-16 허프 그래디언트 방법을 이용한 원 중심 검출
OpenCV에서는 HoughCircles() 함수를 사용하여 원을 검출할 수 있습니다. HoughCircles() 함수 원형은 다음과 같습니다.
void HoughCircles(InputArray image, OutputArray circles, int method, double dp, double minDist, double param1 = 100, double param2 = 100, int minRadius = 0, int maxRadius = 0); |
|
• image |
입력 영상. 에지 영상이 아닌 원본 그레이스케일 영상을 지정합니다. |
• circles |
검출된 원 정보를 저장할 출력 벡터 |
• method |
HOUGH_GRADIENT만 지정 가능합니다. |
• dp |
입력 영상과 축적 배열의 크기 비율 |
• minDist |
인접한 원 중심의 최소 거리 |
• param1 |
Canny 에지 검출기의 높은 임계값 |
• param2 |
축적 배열에서 원 검출을 위한 임계값 |
• minRadius |
검출할 원의 최소 반지름 |
• maxRadius |
검출할 원의 최대 반지름 |