2011-09-24 3 views
1

나는 hough transform (극좌표)로 작업하고 있습니다. 내가 hough 변환에서 좌표에서 라인의 벡터 표현을 계산하고 싶습니다.hough 변환 좌표에서 효율적인 라인

내 현재 구현은 이미지의 모든 픽셀 좌표를 (0,0)에서 (M, N)까지 반복합니다. 여기서 M과 N은 이미지의 크기입니다. 루프가 공간을 가로 지르면이 값이 계산됩니다.

// 각도와 rho는 허프 공간의 극좌표입니다.

tmp = (int * (i * cos (angle)) + (j * sin (angle)));

여기서 tmp-rho == 0은 줄의 일부이므로 그 위치를 추적합니다. 루프가 이미지 (i, j) == (M, N)의 끝 부분에 도달하면 루프는 반대 방향 (M, N)에서 (0,0)으로 다시 수행됩니다.

왼쪽에서 오른쪽으로가는 첫 번째 (tmp-rho == 0)와 오른쪽에서 왼쪽으로가는 두 번째 (tmp-rho == 0)는 줄의 좌표입니다. 그런 다음 그 픽셀 좌표를 빼서 그 공간에서 선의 벡터를 얻습니다.

이것은 매우 비효율적이며 (느린) 100 % 확신 할 수있는 방법이 있지만 계산할 수는 없습니다. 어떤 도움이라도 대단히 감사하겠습니다!

답변

4

당신은 내가 = M, J = 0, J = N 대신

rho = i * cos(angle) + j * sin(angle) 

i = 0 --> j1 = rho/sin(angle) 
i = M --> j2 = (rho - M*cos(angle))/sin(angle) 
j = 0 --> i1 = rho/cos(angle) 
j = N --> i2 = (rho - N*sin(angle))/cos(angle) 
+0

덕분에 루핑의 = 전 0 당신의 방정식을 해결할 수 있습니다! 나는 그것이 단순한 무언가가되는 것을 두려워했다. 오늘 밤 한번 보도록하겠습니다. –