gnoliyil / ipwithopencv

Automatically exported from code.google.com/p/ipwithopencv
0 stars 0 forks source link

Unexpected Behaviour on larger point sets #2

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Modify the example code to use following snipplet

        std::vector<realPoint> iP, iiP;

    int height = 512;
    int width = 512;

    int nppdim = 20;

    double dd = (double)width / nppdim;
    for (int y = 0; y < nppdim; y++) {
        for (int x = 0; x < nppdim; x++) {
            iP.push_back(realPoint(x*dd, y*dd));
            iiP.push_back(realPoint(x*dd, y*dd));
        }
    }

    iP.push_back(realPoint(0, 0));
    iiP.push_back(realPoint(0, 0));
    iP.push_back(realPoint(0, height - 1));
    iiP.push_back(realPoint(0, height - 1));
    iP.push_back(realPoint(width - 1, 0));
    iiP.push_back(realPoint(width - 1, 0));
    iP.push_back(realPoint(width - 1, height - 1));
    iiP.push_back(realPoint(width - 1, height - 1));

2. See an unexpected distortion ( this comes from floating point calcs i think )

expected output:
     the same image as the original!

instead:
     the image get's distorted!

Bugfix: 
   in computeSplineCoeffs:
   ->   make all the matrixes double precission ( instead of float )
   in fktU:
     shouldn't it be  "(r2 * log(r))" instead of "(r2 * log(r2))" ?

Original issue reported on code.google.com by derchris...@gmail.com on 8 Nov 2014 at 3:29