Fitting plane to 3D points using Hough transform

542 Views Asked by At

I have a set of $N$ points in form of their $xyz$ coordinates. I am not using all of them due to high computation time. I am looking to find best plane fit to given set of points.

I used this as reference: Hugh transform on page 3, there's algorithm number 2 that interests me

I am calculating their Hough space coordinates using this formula:

$$p = x_n \cos(\theta)\sin(\phi) + y_n\sin(\phi)\sin (\theta) + z_n\cos(\phi),$$

wher $\phi \in [-90°, 90°]$, $\theta \in [0°, 360°]$.

This is where I am probably wrong:

So for each point I am calculating $180 × 360$ possible combinations of degrees in sin and cos. I defined a matrix that has $360$ rows and $180$ columns for each combination of $\phi$ and $\theta$. I increment cells in this matrix if threshold $p$ is less than $0.03$.

If this is incorrect please tell me what I am doing wrong there.

So in the end I have matrix of votes and highest numbers in matrix represents combination of $\phi$ and $\theta$ that are best solution for algorithm.

But what I need is classic plane formula:

$$Ax + By + Cz + D = 0.$$

How do I get that equation from $\phi$ and $\theta$ that I get from algorithm?

1

There are 1 best solutions below

0
On

You need three parameters to specify a surface in 3D: two angles $\phi$ and $\theta$, and a radius $r$.

That means you need a 3-dimensional matrix, with values for $\phi$, $\theta$ as you've done, and values for $r \in [0, R]$, where $R$ is the maximal radius possible for your data.

After running the algorithm, you will get values $\phi^\ast$, $\theta^\ast$, and $r^\ast$ which correspond to the higher number of votes in your matrix.

Now you know the points on the optimal plane satisfy $r^\ast = x \cos(\theta^\ast)\sin(\phi^\ast) + y\sin(\theta^\ast)\sin(\phi^\ast) + z\cos(\phi^\ast)$.

In other words, if we set $A = \cos(\theta^\ast)\sin(\phi^\ast)$, $B = \sin(\theta^\ast)\sin(\phi^\ast)$, $C = \cos(\phi^\ast)$, and $D = -r^\ast$, your plane is parametrized by $Ax+By+Cz+D=0$.