#include "mitkCylindricToCartesianFilter.h"
#include "mitkImageTimeSelector.h"
#include "mitkSlicedGeometry3D.h"
#include "mitkPlaneGeometry.h"
#include "mitkProperties.h"
#include <ipPic/mitkIpPicTypeMultiplex.h>
Go to the source code of this file.
Functions | |
template<class T > | |
void | _transform (mitkIpPicDescriptor *pic, mitkIpPicDescriptor *dest, float _outsideValue, float *fr, float *fphi, float *fz, short *rt, unsigned int *phit, unsigned int *zt, mitkIpPicDescriptor *coneCutOff_pic) |
void _transform | ( | mitkIpPicDescriptor * | pic, |
mitkIpPicDescriptor * | dest, | ||
float | _outsideValue, | ||
float * | fr, | ||
float * | fphi, | ||
float * | fz, | ||
short * | rt, | ||
unsigned int * | phit, | ||
unsigned int * | zt, | ||
mitkIpPicDescriptor * | coneCutOff_pic | ||
) |
Definition at line 28 of file mitkCylindricToCartesianFilter.cpp.
Referenced by mitk::CylindricToCartesianFilter::GenerateData().
{ T outsideValue = static_cast<T>(_outsideValue); register float f, ft, f0, f1, f2, f3; mitkIpInt2_t ox_size; mitkIpInt2_t nx_size, ny_size, nz_size; int oxy_size, nxy_size; T* orig, *dp, *dest_start; mitkIpInt2_t* coneCutOff=(mitkIpInt2_t*)coneCutOff_pic->data; orig=(T*)pic->data; ox_size=pic->n[0]; oxy_size=ox_size*pic->n[1]; nx_size=dest->n[0]; ny_size=dest->n[1]; nxy_size=nx_size*ny_size; nz_size=dest->n[2]; /*nx_size=360; ny_size=360; nxy_size=nx_size*ny_size; nz_size=256;*/ dest_start=dp=((T*)dest->data)+nxy_size*(nz_size-1); mitkIpInt2_t y; // int size=_mitkIpPicElements(pic); register mitkIpInt2_t x,z; for(y=0;y<ny_size;++y) { mitkIpInt2_t x_start; register mitkIpInt2_t x_end; int r0plusphi0=*rt; if(r0plusphi0>=0) { x_start=0; x_end=nx_size; } else { x_start=-r0plusphi0; x_end=nx_size+r0plusphi0; for(z=0;z<nz_size;++z,dp+=-nxy_size-x_start) for(x=0;x<x_start;++x,++dp) *dp=outsideValue; dp+=nxy_size*nz_size; dp+=x_end; for(z=0;z<nz_size;++z,dp+=-nxy_size-x_start) for(x=x_end;x<nx_size;++x,++dp) *dp=outsideValue; dp+=nxy_size*nz_size; dp-=x_end; fr+=x_start; fphi+=x_start; rt+=x_start; phit+=x_start; dp+=x_start; coneCutOff+=x_start; } for(x=x_start;x<x_end;++x, ++fr, ++fphi, ++rt, ++phit, ++dp, ++coneCutOff) { f=*fr; f3=*fphi; f0=1-f; f1=1-f3; f2=f0*f3; f0*=f1; f1*=f; f3*=f; r0plusphi0=*rt+*phit; mitkIpInt2_t z_start; z_start=*coneCutOff; T *op; register unsigned int step; unsigned int *ztp; op=orig+*rt+*phit; float *fzp; for(z=0;z<z_start;++z, dp-=nxy_size) *dp=outsideValue; ztp=zt+z_start; fzp=fz+z_start; for(z=z_start;z<nz_size;++z, dp-=nxy_size) { step=*(ztp++); register T *opt=op; opt+=step; f =*opt*f0; ++opt; f+=*opt*f1; opt+=oxy_size; --opt; f+=*opt*f2; ++opt; f+=*opt*f3; opt-=oxy_size; --opt; opt+=ox_size; ft =*opt*f0; ++opt; ft+=*opt*f1; opt+=oxy_size; --opt; ft+=*opt*f2; ++opt; ft+=*opt*f3; *dp=(T)((1-*fzp)*f+*fzp*ft+0.5); } dp+=nxy_size*nz_size; } fr+=nx_size-x_end; fphi+=nx_size-x_end; rt+=nx_size-x_end; phit+=nx_size-x_end; dp+=nx_size-x_end; coneCutOff+=nx_size-x_end; } }