imfindcircles
원형 허프 변환(Circular Hough Transform)을 사용하여 원 찾기
구문
설명
[
는 centers
,radii
] = imfindcircles(A
,radiusRange
)radiusRange
로 지정된 범위의 반지름을 갖는 원을 찾습니다. 추가 출력 인수 radii
는 centers
의 각 원의 중심에 대응하는 반지름 추정값을 포함합니다.
[
는 각 원의 누산기 배열 피크 크기(내림차순)를 포함하는 열 벡터 centers
,radii
,metric
] = imfindcircles(A
,radiusRange
)metric
도 반환합니다. centers
와 radii
의 행은 metric
의 행에 대응됩니다.
[___] = imfindcircles(___,
는 위에 열거된 구문에 이름-값 인수를 하나 이상 추가 옵션으로 지정합니다.Name=Value
)
예제
입력 인수
출력 인수
팁
radius
(또는rmin
) 값이 5보다 작거나 같으면,imfindcircles
의 정확도가 제한됩니다."TwoStage"
대신"PhaseCode"
방법(디폴트 값)을 사용하면, 일반적으로 반지름 추정 단계가 더 빠릅니다.두 계산 방법
"PhaseCode"
와"TwoStage"
는 동심원 검출 성능이 그리 우수하지는 않습니다. 동심원 검출 결과는 입력 영상에 따라 다를 수 있습니다.imfindcircles
는 중심이 영상 영역 밖에 있는 원은 찾지 않습니다.imfindcircles
는 영상을 처리하기 전에 함수rgb2gray
를 사용하여 트루컬러 영상을 회색조 영상으로 변환합니다. 이진(logical
형) 영상과 정수형 영상은 처리 전에im2single
함수를 사용하여single
형으로 변환됩니다. 이진 영상 결과의 정확성을 높이기 위해imfindcircles
는 전처리 단계로imfilter
를 사용하여 가우스 평활화도 적용합니다.
알고리즘
imfindcircles
는 영상의 원을 찾을 때 원형 허프 변환(CHT) 기반의 알고리즘을 사용합니다. 이 방식을 사용하는 까닭은 잡음과 가림 현상, 다양한 조명에서도 성능이 견고하기 때문입니다.
CHT는 엄격하게 지정된 알고리즘이 아닙니다. 오히려 구현 단계에서 다양한 방법을 선택할 수 있습니다. 그러나 모든 방법에는 세 가지 중요 단계가 공통됩니다.
누산기 배열 계산
큰 기울기의 전경 픽셀이 후보 픽셀이 되도록 지정되며, 이러한 픽셀은 누산기 배열에서 '투표'하는 것이 허용됩니다. 기본적인 CHT 구현에서 후보 픽셀은 자신을 중심으로 고정 반지름의 완전한 원을 형성하는 패턴으로 투표합니다. 그림 1a는 실제 원(실선 원)에 놓인 후보 픽셀과 그 후보 픽셀의 기본적인 CHT 투표 패턴(파선 원)의 예를 보여줍니다.
기본적인 CHT 투표 패턴
중심 추정
영상의 원에 속하는 후보 픽셀의 투표는 그 원의 중심에 해당하는 누산기 배열 Bin에 누적되는 경향이 있습니다. 따라서 누산기 배열에서 피크를 검출하면 원의 중심이 추정됩니다. 그림 1b는 실제 원(실선 원)에 놓인 후보 픽셀(실점)과 실제 원의 중심에서 일치하게 되는 투표 패턴들(파선 원)의 예를 보여줍니다.
반지름 추정
CHT 알고리즘에서 흔히 그러하듯 같은 누산기 배열이 두 개 이상의 반지름 값에 사용될 경우, 검출된 원의 반지름은 별도의 단계로 추정해야 합니다.
imfindcircles
는 영상에서 원을 찾을 수 있는 두 가지 알고리즘, 즉 위상 코딩 방법(디폴트 값)과 2단계 방법을 제공합니다. 두 알고리즘은 공통된 계산 단계가 있기도 하지만, 고유한 특성도 있습니다.
두 알고리즘의 공통된 계산 특징은 다음과 같습니다.
2차원 누산기 배열 사용
기본적인 허프 변환은 여러 반지름에 대한 투표를 저장하는 데 3차원 배열을 필요로 합니다. 따라서 저장 공간이 많이 필요하고 처리 시간이 오래 걸립니다. 위상 코딩 방법과 2단계 방법은 모든 반지름에 대해 2차원의 단일 누산기 배열을 사용하기 때문에 이 같은 문제가 없습니다. 이 방법은 반지름 추정을 위한 추가 단계가 필요하지만, 전체적인 계산 부하가 대체로 낮고, 특히 반지름 범위가 큰 경우에 계산 부하가 낮습니다. 최신 CHT 구현에 아주 널리 채택되는 방법입니다.
경계 픽셀 사용
전체적인 메모리 요구 사항과 속도는 후보 픽셀 수에 큰 영향을 받습니다. 후보 픽셀 수를 제한하기 위해, 입력 영상의 기울기 크기에 임계값이 적용됩니다. 따라서 집계된 투표에는 기울기가 큰 픽셀만 포함됩니다.
경계 방향 정보 사용
또한 후보 픽셀에 사용 가능한 Bin 개수를 제한하여 성능이 최적화됩니다. 이렇게 하려면 국소적으로 사용 가능한 경계 정보를 활용하여, 기울기 방향에 따라 제한된 간격으로만 투표를 허용하면 됩니다(그림 2). Figure에서 점 cmin과 점 cmax 간의 투표 간격 너비는 rmin과 rmax에 의해 정의된 반지름 범위로 결정됩니다.
투표 모드: 기울기 방향에 따른 여러 반지름
rmin | 최소 탐색 반경 |
rmax | 최대 탐색 반경 |
ractual | 후보 픽셀이 속한 원의 반지름 |
cmin | 반지름 rmin인 원의 중심 |
cmax | 반지름 rmax인 원의 중심 |
cactual | 반지름 ractual인 원의 중심 |
함수 imfindcircles
에서 채택하는 두 CHT 방법은 원 반지름 계산 방식이 근본적으로 다릅니다.
2단계
반지름은 영상 정보에 따라 추정된 원의 중심을 기준으로 명시적으로 추정됩니다. 이 기법은 방사형 히스토그램 계산에 기반합니다 [3].
위상 코딩
반지름은 누산기 배열의 복소수 값을 배열 요소의 위상에 인코딩된 반지름 정보와 함께 사용하여 추정됩니다 [1]. 경계 픽셀의 투표 결과에는 가능한 중심 위치의 정보뿐만 아니라, 그 중심 위치와 관련한 원의 반지름 정보도 들어 있습니다. 반지름 히스토그램을 사용하여 반지름을 명시적으로 추정해야 하는 2단계 방법과 달리, 위상 코딩에서는 누산기 배열에서 추정된 중심 위치의 위상 정보를 디코딩하기만 하면 반지름을 추정할 수 있습니다.
참고 문헌
[1] T.J Atherton, D.J. Kerbyson. "Size invariant circle detection." Image and Vision Computing. Volume 17, Number 11, 1999, pp. 795-803.
[2] H.K Yuen, .J. Princen, J. Illingworth, and J. Kittler. "Comparative study of Hough transform methods for circle finding." Image and Vision Computing. Volume 8, Number 1, 1990, pp. 71–77.
[3] E.R. Davies, Machine Vision: Theory, Algorithms, Practicalities. Chapter 10. 3rd Edition. Morgan Kauffman Publishers, 2005.