DGtal  0.9.4beta
images/exampleRigidtransformation3d.cpp

Example of 3D rigid transformation using forward and backward model.

Geometric transformations
Result for backward model
#include <iostream>
#include <cmath>
#include "DGtal/images/ImageSelector.h"
#include "DGtal/images/ImageContainerBySTLVector.h"
#include "ConfigExamples.h"
#include "DGtal/helpers/StdDefs.h"
#include "DGtal/base/Common.h"
#include "DGtal/io/writers/GenericWriter.h"
#include "DGtal/images/RigidTransformation3D.h"
using namespace std;
using namespace DGtal;
using namespace functors;
using namespace Z3i;
int main( int , char** )
{
typedef ForwardRigidTransformation3D < Space > ForwardTrans;
typedef BackwardRigidTransformation3D < Space > BackwardTrans;
typedef DomainRigidTransformation3D < Domain, ForwardTrans > MyTransformedDomain;
typedef MyTransformedDomain::Bounds Bounds;
trace.beginBlock ( "Example rigidtransformation3d" );
ForwardTrans forwardTrans( Point ( 5, 5, 5 ), RealVector ( 1, 0, 1 ), M_PI_4, RealVector( 3, -3, 3 ) );
BackwardTrans backwardTrans( Point ( 5, 5, 5 ), RealVector ( 1, 0, 1 ), M_PI_4, RealVector( 3, -3, 3 ) );
MyTransformedDomain domainForwardTrans ( forwardTrans );
Identity idD;
Image image = VolReader<Image>::importVol ( examplesPath + "samples/cat10.vol" );
Bounds bounds = domainForwardTrans ( image.domain() );
Domain transformedDomain ( bounds.first, bounds.second );
trace.beginBlock ( "Backward - Eulerian model" );