C# OpenCV 강좌 : 제 26강 - 원 검출
원 검출(Hough Transform Circles)
영상이나 이미지의 원을 찾기
위해 사용합니다.
영상이나 이미지에서 HoughCircles
를 이용해 원
을 찾을 수 있습니다.
원본(Source, src)
은 영상이나 이미지를 사용합니다.
클래스 코드
세부 코드
houcircle
은 원본을 복사한 이미지입니다. gray
이미지는 GrayScale
과 Blur
를 적용한 이미지입니다.
Hough Transform Circles
은 GrayScale
의 이미지를 사용하며, 정확도를 높이기 위하여 Gaussian Blur
를 적용합니다.
Blur Parameter 알아보기
: 13강 바로가기
원(Circles)을 검출하기 위하여 Storage
, circles
를 선언하고 Cv.HoughCircles()
를 적용합니다.
Cv.HoughCircles(그레이스케일, 메모리 저장소, 계산 방법, 분해능, 최소거리, Edge 임계값, 중심 임계값, 최소반지름, 최대반지름)
입니다.
계산 방법
은 HoughCirclesMethod.Gradient
만 지원합니다.
분해능
은 화면 최대크기에 대한 축소율입니다.
1을 사용할 경우 이미지와 동일한 크기를 사용합니다. 2를 사용할 경우 이미지의 절반 크기로 사용합니다.
최소거리
는 원과 원 사이의 최소한의 거리입니다.
Edge 임계값
은 Canny Edge의 상위 임계값입니다. 하위 임계값은 상위 임계값의 절반으로 자동으로 설정됩니다.
중심 임계값
은 CV_HOUGH_GRADIENT에 적용된 중심 Histogram에 대한 임계값입니다.
최소반지름
, 최대반지름
은 검출될 원의 반지름의 범위입니다. 0
을 입력 시, 검출 할 수 있는 최소, 최대 반경으로 모든 원을 검색
합니다.
-
Tip :
Edge 임계값
이 낮을 수록 같은 위치의 더 많은 원을 검출합니다. -
Tip :
중심 임계값
이 낮을 수록 다른 위치의 더 많은 원을 검출합니다.
foreach
문을 이용하여 검출된 원
을 circle
으로 사용합니다. Cv.Circle()
을 이용하여 원을 그립니다.
circle
에는 중심점(Center)
와 반지름(Radius)
값이 저장됩니다.
circle.Center.X
와 circle.Center.Y
를 이용하여 중심점의 (x, y)
를 따로 얻을 수 있습니다.
댓글 남기기