Search
Duplicate

Computer Vision/ 6. Fitting and Matching

1 Overview

fitting의 목표는 관찰된 데이터를 가장 잘 설명하는 파라메트릭 모델을 찾는 것이다. 우리는 데이터와 특정 모델 파라미터의 추정 사이의 선택된 fitting error를 최소화하여 그러한 모델의 최적의 파라미터를 얻는다. 전통적인 예는 주어진 (x,y)(x, y) 점의 집합에 선을 fitting하는 것이다. 이 수업에서 본 다른 예는 서로 다른 이미지에 대응점들의 집합 사이의 2d homography HH를 계산하거나 eight-point algorithm을 사용하여 fundamental matrix FF를 계산하는 것이 있다.

2 Least-squares

NN개의 일련의 2d 점 {(xi,yi)}i=1N\{(x_i, y_i)\}_{i=1}^N가 주어지면, least-squares fitting의 방법은 yy 차원의 제곱 에러가 최소화되도록 선 y=mx+by = mx+b를 찾으려 한다. 그림 1 참조.
구체적으로 우리는 방정식 1에서 주어진 yiy_i와 모델 추정치 y^i=mxi+b\hat{y}_i = mx_i + b 사이의 squared residual의 합을 최소화하도록 하는 모델 파라미터 w=[mb]w = [m \quad b]^\top을 찾기를 원한다. 우리는 residual을 yi=y^iy_i = \hat{y}_i로 정의한다.
E=i=1N(yiy^i)2=i=1N(yimxib)2(1-2)\begin{aligned} E &= \sum_{i=1}^{N} (y_i-\hat{y}_i)^2 \\ &= \sum_{i=1}^N (y_i - mx_i-b)^2 \end{aligned} \tag{1-2}
이것을 행렬 표기로 다음처럼 작성할 수 있다.
E=i=1N(yi[xi1][mb])2=[y1yN][x11xN1][mb]2=YXw2(3-5)\begin{aligned} E &= \sum_{i=1}^N (y_i - \begin{bmatrix} x_i & 1 \end{bmatrix} \begin{bmatrix} m \\ b \end{bmatrix})^2 \\ &= \|\begin{bmatrix} y_1 \\ \vdots \\ y_N \end{bmatrix} - \begin{bmatrix} x_1 & 1 \\ \vdots & \vdots \\ x_N & 1\end{bmatrix}\begin{bmatrix} m \\ b\end{bmatrix}\|^2 \\ &= \|Y - Xw\|^2 \end{aligned} \tag{3-5}
residual은 이제 r=yXwr = y-Xw이다. 우리는 XX가 skinny이고 full rank라고 가정한다. 우리는 residual squared의 norm을 최소화하는 BB를 찾기를 원한다. 이것은 다음처럼 작성할 수 있다.
r2=rr=(yXw)(yXw)=yy2yXw+wXXw(6-8)\begin{aligned} \|r\|^2 &= r^\top r \\ &= (y-Xw)^\top(y-Xw) \\ &= y^\top y - 2y^\top Xw + w^\top X^\top X w \end{aligned} \tag{6-8}
그러면 ww에 대한 residual의 gradient를 00으로 설정한다. XXX^\top X가 대칭임을 떠올려라.
wr2=2Xy+2XXw=0(9-10)\begin{aligned} \nabla_w\|r\|^2 &= -2X^\top y + 2X^\top Xw \\ &= 0 \end{aligned} \tag{9-10}
이것은 normal equations를 이끈다.
XXw=Xy(11)X^\top Xw = X^\top y \tag{11}
이제 방정식 12에서 ww에 대한 닫힌 형식의 해를 갖는다. AA는 full rank이므로 AAA^\top A는 가역이다.
w=(XX)1Xy(12)w = (X^\top X)^{-1} X^\top y \tag{12}
그러나 이 방법은 수직선(mm이 정의되지 않음)을 설명하는 점을 fitting하는데 완전히 실패하는 것에 유의하라. 이 경우에 mm은 매우 큰 수로 설정되어 수치적으로 불안정한 해를 이끈다. 이것을 해결하기 위해 ax+by+d=0ax + by + d = 0 형식의 대안 line formulation을 사용할 수 있다. b=0b = 0을 설정하면 수직선을 얻을 수 있다. 여기서 이 선 표현에 관한 생각을 하나 할 수 있다. 선 방향(slope)는 n\vec{\bold{n}}에 의해 주어지며, (x,y)(a,b)=xa+by=0(x, y) \cdot (a, b) = xa + by = 0를 만족하는 (x,y)(x, y)의 집합은 n\vec{\bold{n}}에 수직인 선이다. 그러나 선은 (x0,y0)(x_0, y_0)로 임의로 이동할 수 있다. 따라서 다음을 갖는다.
a(xx0)+b(yy0)=ax+byax0by0=ax+by+c=0(13-15)\begin{aligned} a(x-x_0) + b(y-y_0) &= ax + by - ax_0 - by_0 \\ &= ax + by + c \\ &= 0 \end{aligned} \tag{13-15}
여기서 c=ax0by0c = -ax_0 - by_0. 그러면 선의 기울기는 m=abm = -{a\over b}이다. 이것은 이제 정의되지 않을 수 있다. 이전에는 residual가 y축에만 있었지만 이제 새로운 선 파라미터화가 x와 y축 모두의 error를 고려하므로, 새로운 error는 squared orthogonal distance의 합이된다. 그림 2 참조.
2d 데이터 포인트 P=(xi,yi)P = (x_i, y_i)와 선의 점 Q=(x,y)Q = (x, y)가 주어지면, PP에서 선까지의 거리는 QP\overset{\longrightarrow}{QP}를 선에 수직인 normal vector(법선) n\vec{\bold{n}}에 projection한 길이와 같다. QP=(xix,yiy)\overset{\longrightarrow}{QP} = (x_i - x, y_i - y)n=(a,b)\vec{\bold{n}} = (a, b)라 하면 다음과 같이 된다.
d=QPnn=(a(xix)+b(yiy)a2+b2=axi+byi+ca2+b2(16-18)\begin{aligned} d &= {|\overset{\longrightarrow}{QP} \cdot \vec{\bold{n}}| \over \| \vec{\bold{n}}\|} \\ &= {|(a(x_i-x) + b(y_i - y)| \over \sqrt{a^2 + b^2}} \\ &= {|ax_i + by_i + c| \over \sqrt{a^2 + b^2}} \end{aligned} \tag{16-18}
QQ가 선 위에 놓인다는 것을 떠올려라. 따라서 c=axbyc =-ax-by
이제 새로운 파라미터 집합은 w=[abc]w = [a \quad b \quad c]^\top이다. error를 단순화하기 위해 해를 고유하게 만들고 n2=1\|\vec{\bold{n}}\|^2 = 1로 제한하여 분모를 제거한다. 따라서 새로운 에러는 다음과 같다.
E(a,b,x0,y0)=i=1N(a(xix0)+b(yiy0))2=i=1N(axi+byi+c)2(19-20)\begin{aligned} E(a, b, x_0, y_0) &= \sum_{i=1}^N (a(x_i-x_0) + b(y_i-y_0))^2 \\ &= \sum_{i=1}^N (ax_i + by_i + c)^2 \end{aligned} \tag{19-20}
여기서 a2+b2=1a^2 + b^2 = 1. 그러나 제한이 a,ba, b에만 존재할 때 cc의 존재하기 때문에 이것을 행렬 표기로 놓는 것은 여전히 까다롭다. 더 간단히 하기 위해 EE를 최소화하는 best fit의 결과 선은 다음처럼 정의되는 데이터 centroid (xˉ,yˉ)(\bar{x}, \bar{y})를 통과해야 한다는 것에 유의하라.
xˉ=1Ni=1Nxiyˉ=1Ni=1Nyi(21-22)\begin{aligned} \bar{x} &= {1\over N} \sum_{i=1}^N x_i \\ \bar{y} &= {1\over N} \sum_{i=1}^N y_i \end{aligned} \tag{21-22}
모든 n\vec{\bold{n}}과 점의 모든 가능한 집합 {(xi,yi)}i=1N\{(x_i, y_i)\}_{i=1}^N에 대해 c=axˉbxˉc = -a\bar{x} - b\bar{x}을 설정할 때 EE는 최소화된다. 즉 모든 점 (x0,y0)R2(x_0, y_0) \in \mathbb{R}^2가 주어지면 다음을 갖는다.
E(a,b,x0,y0)E(a,b,xˉ,yˉ)(23)E(a, b, x_0, y_0) \ge E(a, b, \bar{x}, \bar{y}) \tag{23}
이것이 왜 사실인지 보기위해 다음과 같은 벡터 w,zw, z를 정의한다.
wi=a(xix0)+b(yiy0)zi=a(xixˉ)+b(yiyˉ)(24-25)\begin{aligned} w_i &= a(x_i-x_0) + b(y_i-y_0) \\ z_i &= a(x_i - \bar{x}) + b(y_i - \bar{y}) \end{aligned} \tag{24-25}
그러면 error를 다음과 같이 작성할 수 있다.
E(a,b,x0,y0)=w2E(a,b,xˉ,yˉ)=z2(26-27)\begin{aligned} E(a, b, x_0, y_0) &= \|w\|^2 \\ E(a, b, \bar{x}, \bar{y}) &= \|z\|^2 \end{aligned} \tag{26-27}
그러면 wwzz 사이의 관계는
w=z+h1(28)w = z + h\bold{1} \tag{28}
여기서 h=a(xˉx0)+b(yˉy0)Rh = a(\bar{x}-x_0) + b(\bar{y}-y_0) \in \mathbb{R}이고 1\bold{1}은 값이 모두 1인 벡터이다. zz1\bold{1}에 직교하므로
z1=i=1Nzi=ai=1N(xixˉ)+bi=1N(yiyˉ)=a(i=1NxiN(1Ni=1Nxi))+b(i=1NyiN(1Ni=1Nyi))=0a+0b=0(29-32)\begin{aligned} z \cdot \bold{1} &= \sum_{i=1}^N z_i \\ &= a \sum_{i=1}^N (x_i - \bar{x}) + b\sum_{i=1}^N (y_i - \bar{y}) \\ &= a(\sum_{i=1}^N x_i - N({1\over N}\sum_{i=1}^N x_i)) + b(\sum_{i=1}^N y_i - N({1\over N}\sum_{i=1}^N y_i)) \\ &= 0a + 0b = 0 \end{aligned} \tag{29-32}
따라서 피타고라스 정리에 의해 다음을 갖는다.
E(a,b,x0,y0)=w2=z2+h2Nz2=E(a,b,xˉ,yˉ)(33-35)\begin{aligned} E(a, b, x_0, y_0) &= \|w\|^2 \\ &= \|z\|^2 + h^2 N \\ &\ge \|z\|^2 = E(a, b, \bar{x}, \bar{y}) \end{aligned} \tag{33-35}
best fit의 선이 (xˉ,yˉ)(\bar{x}, \bar{y})를 통과해야 함을 보았다. 따라서 cc를 다음과 같이 제약할 수 있다.
c=axˉbyˉ(36)c = -a\bar{x} - b\bar{y} \tag{36}
그러면 모든 점을 데이터 centroid 주위로 중심화되도록 이동하여((x0,y0)=(xˉ,yˉ)(x_0, y_0) = (\bar{x}, \bar{y})를 설정) cc를 제거할 수 있다. 이를 통해 최종적으로 에러를 행렬 곱으로 형식화할 수 있다.
E=i=1N(a(xixˉ)+b(yiyˉ))2=[x1xˉy1yˉxNxˉyNyˉ][ab]2=Xw2(37-39)\begin{aligned} E &= \sum_{i=1}^N (a(x_i - \bar{x}) + b(y_i - \bar{y}))^2 \\ &= \| \begin{bmatrix} x_1 - \bar{x} & y_1 - \bar{y} \\ \vdots & \vdots \\ x_N - \bar{x} & y_N - \bar{y} \end{bmatrix} \begin{bmatrix}a \\ b \end{bmatrix} \|^2 \\ &= \|Xw\|^2 \end{aligned} \tag{37-39}
여기서 w=[ab]w = [a \quad b]^\top이고 w2=1\|w\|^2 = 1. 이것은 이전 강의에서 보았던 제한된 least-squares 문제이다. SVD(full rank XX)에 의해 다음을 갖는다.
X=USV(40)X = USV^\top \tag{40}
URN×M,VRM×MU \in \mathbb{R}^{N \times M}, V^\top \in \mathbb{R}^{M \times M}은 모두 orthonormal 행렬이다. 반면 SRM×MS \in \mathbb{R}^{M \times M}XX의 singular 값을 내림차순으로 포함하는 대각 행렬이다. 여기서 M=2M = 2이다. U,VU, V가 직교이므로 다음을 안다.
USVw=SVwVv=w(41-42)\begin{aligned} \|USV^\top w\| &= \|SV^\top w\| \\ \|V^\top v\| &= \|w\| \end{aligned} \tag{41-42}
v=Vwv = V^\top w를 설정하면 이제 새로운 제약조건 v2=1\|v\|^2 =1과 동등한 조건으로 SVw\|SV^\top w\|를 최소화할 수 있다. SS의 대각 항목이 내림차순으로 정렬되기 때문에 SVw=Sv\|SV^\top w\| = \|Sv\|v=[01]v = [0 \quad 1]^\top일 때 최소화된다. 마지막으로 w=VVw=Vvw = VV^\top w = Vv를 얻으므로 error를 최소화하는 wwVV에서 마지막 열이다.
이득의 관점에서 해석하면 SVD X=USVX = USV^\top를 다음처럼 작성할 수 있다.
X=i=1Mσiuivi(43)X = \sum_{i=1}^M \sigma_i u_i v_i^\top \tag{43}
v1,...,vMv_1, ..., v_MVV의 열이고 σi\sigma_iS=diag(σ1,...,σM)S = \text{diag}(\sigma_1, ..., \sigma_M)의 대각 값이고, u1,...,uMu_1, ..., u_MUU의 열이다. ww를 SVD와 곱하면 USVwUSV^\top w가 되는데, 이것은 먼저 ww의 성분을 입력 방향 v1,...,vMv_1, ..., v_M을 따라 계산하고, σi\sigma_i로 성분을 scaling한 다음, 출력 방향 u1,...,uMu_1, ..., u_M을 따라 재구성하는 것으로 볼 수 있다. VwV^\top wwwVV의 각 열을 따라 projection한 것이다(vi2=1\|v_i\|^2 = 1를 떠올려라). 유사하게 UwUw'는 출력 방향의 선형 결합 u1w1+...+uMwMu_1w_1' + ... + u_Mw_M'으로 볼 수 있다. 따라서 w2=1\|w\|^2 = 1 제약 하에 XwXw를 최소화하는 ww를 찾는 것은 단순히 출력 벡터의 크기를 최소화하는 입력 방향을 선택하는 것이다. 이것은 VV의 마지막 열이다.
실제로 least-squares fitting은 noisy 데이터를 잘 다루지만 outlier에 취약하다. 왜 그런지 보기 위해 ii-번째 데이터 포인트에 대한 residual을 ui=axi+byi+cu_i = ax_i + by_i + c라 하고 비용을 C(ui)C(u_i)라 작성하면, error를 다음으로 일반화할 수 있다.
E=i=1NC(ui)(44)E = \sum_{i=1}^N C(u_i) \tag{44}
지금까지 사용한 제곱 에러 C(ui)=ui2C(u_i) = u_i^2의 2차적 증가(그림 4의 왼쪽에 그려짐)는 큰 잔차 uiu_i를 갖는 이상치가 비용 최소화에 지나치게 큰 영향을 미친다는 것을 의미한다.
다음과 같은 견고한 비용함수(그림 4의 오른쪽 절반)를 사용하여 큰 residuals(outliers)에 페널티를 부여할 수 있다.
C(ui,σ)=ui2σ2+ui2(45)C(u_i, \sigma) = {u_i^2 \over \sigma^2 + u_i^2} \tag{45}
residual uiu_i가 클 때 비용 CC는 1로 saturate(포화)되어 비용에 대한 그들의 기여가 제한되지만, uu가 작을 때는 비용함수는 squared error를 유사하다. 그러나 이제 scale parameter라 부르는 σ\sigma를 선택해야 한다. σ\sigma는 잠재적 outlier에 가중치를 얼마나 부여할지를 제어한다. 그림 5 참조. 큰 σ\sigma는 중심의 2차 커브를 넓혀서, 다른 포인트에 대해 outlier에 상대적으로 더 페널티 부여한다(원래의 제곱 에러 함수와 유사하게). 작은 σ\sigma는 2차 커브를 좁혀, outlier에 대한 페널티 덜 부여한다. σ\sigma가 너무 작으면 실제로 그렇지 않더라도 대부분의 residual가 outlier로 취급되어 빈곤한 fit을 이끈다. σ\sigma가 너무 크면 견고한 비용 함수에서 이점을 얻지 못하고 결국 least-squares fit이 된다.
견고한 비용함수가 비선형이기 때문에 그들은 반복적 방법으로 최적화된다. 실제로 닫힌 형식 least-squares 해를 종종 시작점으로 사용한 다음, 견고한 비선형 비용 함수를 사용하여 파라미터를 반복적으로 fitting한다. 견고한 추정기에 대한 추가 디테일은 [HZ]에서 부록 6.8의 ‘Robust cost function’을 참조하라. 또한 이 노트에서 선에 대한 least-squares fitting을 유도했지만 [HZ]의 섹션 4.1에서는 동일한 least squares 최적화 절차를 사용하여 homography를 계산하는 direct linear transformation(DLT) algorithm을 간결하게 다룬다.

3 RANSAC

또 다른 fitting 방법은 RANSAC이다. 이것은 random sample consensus의 약자로 outlier와 missing 데이터에 견고하도록 설계되었다. RANSAC을 사용하여 여러 line fitting을 수행하는 방법을 보이지만 이는 다양한 fitting 맥락으로 일반화할 수 있다.
다시 NN개의 2d 점 집합 X={(xi,yi)}i=1NX = \{(x_i, y_i)\}_{i=1}^N이 있고 여기에 line을 맞추기를 원한다고 하자. 그림 6 참조. RANSAC의 첫 번째 단계는 모델을 fit하는데 필요한 최소 수의 점을 랜덤으로 선택하는 것이다. 선에는 최소 2개 점이 필요하므로 녹색점 2개를 선택한다. 만일 fundamental 행렬 FF를 추정하면 eight-point algorithm을 사용하기 위해 8개의 대응점을 선택해야 한다. 만일 homography HR3×3H \in \mathbb{R}^{3 \times 3}을 계산하려면 scale까지 8개의 자유도를 다루기 위해 4개 대응점(각 대응점에 x,yx, y 좌표 2개)이 필요하다. RANSAC에서 두 번째 단계는 랜덤 샘플 집합에 모델을 맞추는 것이다. 여기서 녹색점 2개에 선이 fit 되어(즉, 두 점 사이에 선이 그려진다) 검은색 선을 얻는다. 세 번째 단계는 fit 된 모델을 사용하여 전체 데이터셋에서 inlier set을 계산하는 것이다. 모델 파라미터 ww가 주어지면 inlier 집합을 P={(xi,yi)r(p=(xi,yi),w)<δ}P = \{(x_i, y_i) | r(p = (x_i, y_i), w) < \delta\}로 정의한다. 여기서 rr은 데이터 포인트와 모델 사이의 residual이고 δ\delta는 임의의 threshold이다. 여기서 inlier set은 녹색과 파란색 점으로 표현된다. inlier set의 크기 P|P|는 전체 점 집합 중 fit된 모델과 일치하는 정도를 표시한다. PP를 사용하면 O=X\PO = X \backslash P를 정의하여 outlier set을 얻을 수도 있다. 여기서 outlier set은 빨간색 점으로 표시된다. 우리는 inlier set의 크기가 최대화될 때까지 유한한 반복 횟수 MM동안 이 단계를 새로운 새로운 랜덤 샘플로 반복한다. RANSAC이 다양한 fitting 시나리오에 대해 간단하고 구현하기 쉽지만, 샘플 횟수 nn과 tolerance(허용) threshold δ\delta와 같은 몇 가지 파라미터를 조정해야 한다. RANSAC은 또한 좋은 모델에 동의하는 충분한 수의 inlier가 있다고 가정하며 파라미터를 계산하는 횟수에 대한 상한선이 없다(계산적으로 실현 가능하지 않은 경우 제외)
그러나 모든 가능한 샘플을 시도하는 것은 불필요하다. 주어진 ss(모델을 fit하는데 필요한 최소 점 수)와 ϵ[0,1]\epsilon \in [0, 1](outlier 비율)에 대해 ‘real’ outlier’가 없는 inlier set을 갖는 최소 하나의 랜덤 샘플이 있을 확률 pp를 보장하는 반복 수 nn을 추정할 수 있다. 이제 ss개 점의 단일 랜덤 샘플이 모든 inlier를 포함할 확률은 (1ϵ)s(1- \epsilon)^s이므로, 최소 하나의 outlier를 포함할 확률은 1(1ϵ)s1 -(1- \epsilon)^s이다. 그러면 nn개의 모든 샘플이 최소 하나의 outlier를 포함할 확률은 (1(1ϵ)s)n(1-(1- \epsilon)^s)^n이고, nn개의 샘플 중 최소 하나가 outlier를 포함하지 않은 확률은 p=1(11ϵ)s)np = 1-(1-1-\epsilon)^s)^n이다. 이제 nnff로써 유도할 수 있다.
1p=(1(1ϵ)s)nlog(1p)=nlog(1(1ϵ)s)n=log(1p)log(1(1ϵ)s)(46-48)\begin{aligned} 1 - p &= (1-(1-\epsilon)^s)^n \\ \log (1-p) &= n \log (1-(1-\epsilon)^s) \\ n &= {\log (1-p) \over \log (1-(1-\epsilon)^s)} \end{aligned} \tag{46-48}

4 Hough transform

Hough transform이라는 또 다른 fitting 방법을 소개한다. 이것은 또 다른 voting 절차이다.
다시 y=mx+ny = m'x + n' 형식의 선을 이미지에서 점의 시리즈 {(xi,yi)}i=1N\{(x_i, y_i)\}_{i=1}^N에 fit하기를 원한다고 하자. 그림 7의 왼쪽 절반 참조. 이 선을 찾기 위해 그림 7의 오른쪽 절반에 나온 dual parameter 또는 Hough space를 고려한다. 이미지 공간의 점 (xi,yi)(x_i, y_i)(선 yi=mxi+ny_i = mx_i + n 상에 있음)는 n=xim+yin = -x_im + y_i으로 정의되는 파라미터 공간의 선이 된다. 유사하게 파라미터 공간에서 점 (m,n)(m, n)은 이미지 공간에서 y=mx+ny = mx + n으로 주어지는 선이 된다.
파라미터 공간의 선 n=xim+yin = -x_im + y_i는 이미지 공간의 점 (xi,yi)(x_i, y_i)를 통과하는 이미지 공간의 모든 가능한 선을 나타낸다. 따라서 이미지 공간의 점 (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2)를 모두 지나는 선을 찾으려면 두 점을 Hough space의 선과 연관시키고 교차점 (m,n)(m',n')을 찾는다. 이 Hough space의 점은 이미지 공간의 두 점을 모두 지나는 선을 나타낸다. 실제로 파라미터 공간에 대해 width ww인 정사각형 셀로 이루어진 이산 grid로 Hough space를 나눈다. 초기에 모든 (m,n)(m, n)에 대해 (m,n)(m, n)을 중심으로 하는 w×ww \times w 셀의 갯수 격자 A(m,n)=0A(m, n) = 0을 유지한다. 이미지 공간의 모든 데이터 포인트 (xi,yi)(x_i, y_i)에 대해 n=xim+yin = -x_im + y_i를 만족하는 모든 (m,n)(m, n)을 찾아 갯수를 1 증가시킨다. 모든 데이터 포인트에 대해 이 작업을 수행한 후에 Hough space에서 가장 높은 갯수를 가진 점 (m,n)(m, n)이 이미지 공간의 fit 된 선을 나타낸다. 이제 왜 이것이 voting 절차인지 알 수 있다. 각 데이터 요소 (xi,yi)(x_i, y_i)는 이미지 공간 각 후보 line (m,n)(m, n)에 대해 최대 1표를 투표할 수 있다.
그러나 기존 파라미터화에 주요 한계가 있다. least-squares에서 논의한 것처럼 이미지 공간에서 선의 기울기는 <m<-\infty < m < \infty로 unbounded이다. 이로 인해 Hough voting가 실제로는 계산과 메모리 집약 알고리즘이 되는데, 갯수를 유지 하는 파라미터 공간의 크기에 제한이 없기 때문이다. 이것을 해결하기 위해 그림 8에 나온 선의 polar 파라미터화를 사용한다.
xcos(θ)+ysin(θ)=ρ(49)x \cos(\theta) + y \sin(\theta) = \rho \tag{49}
그림 8의 왼쪽 절반에서 ρ\rho가 원점에서 선까지의 최소 거리(이미지 크기 또는 데이터셋에서 임의의 두 점 사이의 최대 거리로 bound 됨)이고, θ\theta는 x축과 선의 normal vector 사이의 각도(0과 π\pi사이로 bound 됨)이다. 이전과 동일한 Hough voting 절차를 사용하지만 Cartesian space에서 특정한 (xi,yi)(x_i, y_i)를 지나는 모든 가능한 선은 이제 통해 Hough space에서 sinusoidal profile에 해당한다. 그림 8의 오른쪽 절반 참조.
실제로 noisy 데이터 점은 이미지 공간에서 동일한 선 상의 점들에 해당하는 Hough space의 sinusoidal profile이 Hough space에서 반드시 동일한 점에서 교차하지 않을 수 있다. 이것을 해결하기 위해 그림 9에 나온 것처럼 grid cell의 width ww를 증가시켜서 imperfect(불완전한) 교차점에 대한 tolerance(허용 오차)를 증가시킬 수 있다. 이렇게 하면 noisy 데이터를 다루는데 도움이 되지만 조정해야 하는 또 다른 파라미터가 생긴다. 작은 grid 크기는 noise 때문에 이미지 공간의 선을 놓칠 수 있는 반면, 큰 grid 크기는 모든 ρ,θ\rho, \theta 내의 셀이 가능한 선이기 때문에 다른 선을 병합하고 추정 정확도를 낮출 수 있다.
게다가 이미지 공간에 uniform noise가 존재하면, Hough space에 spurious(허위) peak가 존재할 수 있고 적절한 모델에 대한 명확한 consensus가 없게 된다.