Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Multidimensional fitting of two sets of data

  1. Aug 1, 2014 #1
    Hello, my problem is the following:

    A lasers gives out a bunch of data points which are reflected off a metal surface and recorded by a camera attached to the side of the laser. The image the camera receives is however distorted.

    In order to calibrate the camera I need to find a function of two variables (f(x,y)) which transforms the distortet(wrong) data points back into their originals so that the camera image can be used for accurate analysis.

    I know the location (x and y values) of the original image and their corresponding camera positions (x' and y').

    How can I use these to find a transfer function between the two data sets?
    I have already used SVD and a 6th order polynom merit function for multidimensional fits I found in "Numerical Recipes", and although I get resonable results, they are not accurate enough.

    Any help is greatly appreciated!!
  2. jcsd
  3. Aug 1, 2014 #2
    You'll have to correct me if any assumptions are wrong.

    You have two sets of [itex]n[/itex] 2D points, [itex]P[/itex] (original) and [itex]Q[/itex] (camera), with the dimensions [itex]2 \times n[/itex]. Let's assume there exists a function such that [itex]\vec{q} = \vec{f}(\vec{p})[/itex] with [itex]\vec{p}[/itex] and [itex]\vec{q}[/itex] being individual points from [itex]P[/itex] and [itex]Q[/itex] respectively and has dimension [itex]2 \times 1[/itex].

    You then want to find the function [itex]\vec{p} = (\vec{f})^{-1}(\vec{q}) = \vec{g}(\vec{q})[/itex]?

    Let's assume the inverse function [itex]\vec{g}(\vec{q})[/itex] exists. We can then write it, for each individual point, as [tex]\left[\begin{array}{c}
    p_x \\
    p_y \end{array} \right] = \left[\begin{array}{c}
    g_x(q_x, q_y) \\
    g_y(q_x, q_y) \end{array} \right][/tex]
    I suppose what you could do then is to interpolate each row, either with polynomials or splines.
  4. Aug 1, 2014 #3
    How many datapoints?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook