2016-11-10 3 views
1

당신은 OpenCV's HoughLines 기능에 나에게 rhotheta 매개 변수의 빠른 정의를 줄 수(ρ)의 설명 및 HoughLines의 세타 매개 변수

void cv::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 
) 

나는이 문서에서 찾을 수있는 유일한 방법은 다음과 같습니다

(ρ) : 누적 기의 거리 분해능 (픽셀 단위)입니다.

세타 : 누산기의 각도 분해능 (라디안 단위).

이 나는 ​​내 이미지의 픽셀의 다음 rho=2 1/2을 설정하면 ... = 2 보폭의 일종 무시됩니다 것을 의미합니까?

+0

. 2D 히스토그램 용입니다. 1D 히스토그램이라면 각 빈의 크기를 설정하는 것과 같습니다. – Miki

답변

0

Hough Transform을 사용하여 선을 감지하려면이 이미지에 표시된 것처럼 두 개의 매개 변수 rho와 theta의 방정식을 사용하여 선을 표현하는 것이 가장 좋습니다.

X cos⁡ (θ) + Y의 sin⁡ (θ) = ρ

가 (X, Y) 라인 파라미터이다 : 방정식은 다음과 같다.

(θ, ρ) 파라미터 Y는 = 같이 검출 적게 쓰는 것보다 위치 따라되도록 이러한 기입 A * X + B

(θ, ρ)이 문맥에서 이들에 대한 불연속 줄 두 개의 매개 변수

Hough explanation

+1

이것은 어떻게 전혀 설명합니까? –

0

난 아직 시간이 검색하고있다는 깔끔하게 설명 장소를 발견하지 않았습니다. 그러나 조각을 집어 들고, 나는 그것을 얻은 것 같아요.

알고리즘 (예를 들어, 캐니 (Canny)의 결과) 각 에지 픽셀을 벗어나 θ 많은 값의 경우, 수학 식을 이용 ρ = x * cosθ + y * sinθρ을 계산한다.

θ 실제 단계는 함수 파라미터에 의해 정의되고, 그래서 세타의 일반적인 math.pi/180.0 값을 사용하는 경우, 알고리즘은 이미지의 단 하나 개의 엣지 화소 총 ρ 180 시간을 계산한다. 더 큰 세타를 사용하면 계산이 줄어들고 어큐뮬레이터 열/버킷이 줄어들어 더 적은 행이 발견됩니다.

다른 매개 변수 ρ는 "지방"축적의 행이 방법을 정의합니다. 값이 1 인 경우 누적 기 행 수가 처리 가능한 이미지의 대각선 인 최대 ρ과 같아야한다고 말하고 있습니다. 그러므로 두 가지 값이 θ 인 경우 ρ에 가까운 값을 얻으면 정확도를 높이기 위해 계속해서 누적 버킷으로 분리됩니다. 매개 변수 ρ의 값이 클수록이 두 값은 동일한 버킷으로 끝날 수 있습니다. 궁극적으로 버킷 수가 많아서 임계 값을 초과하므로 더 많은 행을 줄 것입니다.

일부 유용한 리소스 : 그것은 어큐뮬레이터 공간이 아니라 이미지 공간에서 stride_의 _kind의

http://docs.opencv.org/3.1.0/d6/d10/tutorial_py_houghlines.html

https://www.mathworks.com/help/vision/ref/houghtransform.html

https://www.youtube.com/watch?v=2oGYGXJfjzw