     readable  = true;
 
     // Get the rectified signals along the image cuts
-    popart::identification::matrix3x3 mHomography( hom );
-    popart::identification::matrix3x3 mInvHomography;
-    popart::identification::invert_3x3( mHomography, mInvHomography );
+    popart::geometry::matrix3x3 mHomography( hom );
+    popart::geometry::matrix3x3 mInvHomography;
+    mHomography.invert( mInvHomography );
 
     dim3 block;
     dim3 grid;

        }

        // Bilinear interpolation
        cut_signals[i] = popart::identification::getPixelBilinear( src, xRes, yRes );

        x += stepX;
        y += stepY;
    }
}

__global__
void idGetSignals( matrix3x3 mHomography, matrix3x3 mInvHomography, cv::cuda::PtrStepSzb src, float* d, const int vCutsSize, const int vCutMaxVecLen )
{
    int myCut = blockIdx.x * 32 + threadIdx.y;


#include <cuda_runtime.h>

#include "frame.h"
#include "clamp.h"
#include "geom_matrix.h"

using namespace std;

namespace popart {

namespace identification {

struct CutStruct
{
