더북(TheBook)

ρθ는 실수 값을 가지기 때문에 C/C++ 코드로 축적 배열을 구현하려면 ρθ가 가질 수 있는 값의 범위를 적당한 크기로 나눠서 저장하는 양자화(quantization) 과정을 거쳐야 합니다. 예를 들어 θ는 0부터 π 사이의 실수를 가질 수 있는데, 이 구간을 180단계로 나눌 수도 있고 360단계로 나눌 수도 있습니다. 구간을 촘촘하게 나눌 경우 입력 영상에서 정밀한 직선 검출이 가능하지만 연산 시간이 늘어날 수 있습니다. 반면에 구간을 너무 듬성하게 나눌 경우 연산이 빨라지지만 직선 검출의 정확도가 낮아질 수 있습니다.

OpenCV에서는 HoughLines() 함수를 사용하여 허프 변환 직선 검출을 수행할 수 있습니다. HoughLines() 함수 원형은 다음과 같습니다.

void HoughLines(InputArray image, OutputArray lines,
                double rho, double theta, int threshold,
                double srn = 0, double stn = 0,
                double min_theta = 0, double max_theta = CV_PI);

image

8비트 단일 채널 입력 영상. 주로 에지 영상을 지정합니다.

lines

직선 정보(rho, theta)를 저장할 출력 벡터

rho

축적 배열에서 ρ 값의 해상도(픽셀 단위)

theta

축적 배열에서 θ 값의 해상도(라디안 단위)

threshold

축적 배열에서 직선으로 판단할 임계값

srn

멀티스케일 허프 변환에서 rho 해상도를 나누는 값. srn에 양의 실수를 지정하면 rho 해상도와 rho/srn 해상도를 각각 이용하여 멀티스케일 허프 변환을 수행합니다. srn과 stn이 모두 0이면 일반 허프 변환을 수행합니다.

stn

멀티스케일 허프 변환에서 theta 해상도를 나누는 값

min_theta

검출할 직선의 최소 theta 값

max_theta

검출할 직선의 최대 theta 값

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.