[Rtk-users] error on build rtk in visual studio 2012 when rtk use cuda

Yang K Park theday79 at gmail.com
Mon Jun 15 10:40:37 EDT 2015


Hi Safdary, 

 

Again, please cc rtk-users at openrtk.org <mailto:rtk-users at openrtk.org>  when you send your email, since other users (much better experts than me!) can give us any suggestions.

 

Thanks.

 

Yang

 

From: Yang K Park [mailto:theday79 at gmail.com] 
Sent: Monday, June 15, 2015 10:37 AM
To: 'safdary mohsen'
Cc: rtk-users at openrtk.org
Subject: RE: [Rtk-users] error on build rtk in visual studio 2012 when rtk use cuda

 

Hi Safdary,

 

I recommend you to try rtkfdk.exe first (with cuda option) to see if it works for you.

 

The example of the command line would be:

 

rtkfdk --geometry geom.xml --path proj_dir --regexp .*.his --output  test_output.mha --verbos  --spacing 1,1,1 --dimension 512,10,512 --origin -127.875,29.5,-127.875 --hardware cuda

 

If it works for your image, then you can mimic the original rtkfdk code to make your own one.

 

Good luck!

 

Yang

 

 

 

 

From: safdary mohsen [mailto:ieee.safdary at gmail.com] 
Sent: Saturday, June 13, 2015 11:58 PM
To: Yang K Park
Subject: Re: [Rtk-users] error on build rtk in visual studio 2012 when rtk use cuda

 

Hi Yang

 

I have tried to adjust the window/level to see something inside of the image but all pixels set to zero.

My code is:

#define USE_CUDA

int main(int , char **)

{

//// variable

const unsigned int Dimension = 3;

typedef float OutputPixelType;

#ifdef USE_CUDA

typedef itk::CudaImage< OutputPixelType, Dimension > OutputImageType;

#else

typedef itk::Image< OutputPixelType, Dimension > OutputImageType;

#endif

////////////////////////////////////////////////////////////////////////////////////////////////////

// Generate file names of projections

itk::RegularExpressionSeriesFileNames::Pointer names = itk::RegularExpressionSeriesFileNames::New();

names->SetDirectory(std::string("d://RTK/build/bin/Release/Scan1/"));

names->SetRegularExpression(std::string("Proj_.*.hnd"));

 ////////////////////////////////////////////////////////////////////////////////////////////////////

//// geometry

// Defines the RTK geometry object

typedef rtk::ThreeDCircularProjectionGeometry GeometryType;

GeometryType::Pointer geometry = GeometryType::New();

// Projection matrices

unsigned int numberOfProjections = 86;

unsigned int firstAngle = 0;

unsigned int angularArc = 360;

unsigned int sid = 1000; 

unsigned int sdd = 1200; 

int isox = 0; 

int isoy = 0 ;

for(unsigned int noProj=0; noProj<numberOfProjections; noProj++)

{

double angle = (float)firstAngle + (float)noProj * angularArc / (float)numberOfProjections;

geometry->AddProjection(sid,

sdd,

angle,

isox,

isoy);

}

/////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Projections reader

typedef rtk::ProjectionsReader< OutputImageType > ReaderType;

ReaderType::Pointer reader = ReaderType::New();

reader->SetFileNames(names->GetFileNames());

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

// Create reconstructed image ////////////////////////////////////

typedef rtk::ConstantImageSource< OutputImageType > ConstantImageSourceType;

ConstantImageSourceType::Pointer ImageSource = ConstantImageSourceType::New();

ConstantImageSourceType::PointType origin;

ConstantImageSourceType::SizeType sizeOutput;

ConstantImageSourceType::SpacingType spacing;

origin[0] = -127.75;

origin[1] = -127.75;

origin[2] = -127.75;

  

sizeOutput[0] = 512;

sizeOutput[1] = 512;

sizeOutput[2] = 512;

spacing[0] = .5;

spacing[1] = .5;

spacing[2] = .5;

ImageSource->SetOrigin( origin );

ImageSource->SetSpacing( spacing );

ImageSource->SetSize( sizeOutput );

ImageSource->SetConstant( 0. ); 

// getchar(); //////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 

std::cout << "Performing reconstruction" << std::endl;

// FDK reconstruction filtering

// FDK reconstruction filtering

#ifdef USE_CUDA

typedef rtk::CudaFDKConeBeamReconstructionFilter FDKType;

#elif USE_OPENCL

typedef rtk::OpenCLFDKConeBeamReconstructionFilter FDKType;

#else

typedef rtk::FDKConeBeamReconstructionFilter< OutputImageType > FDKType;

#endif

FDKType::Pointer feldkamp = FDKType::New();

feldkamp->SetInput( 0, ImageSource->GetOutput() );

feldkamp->SetInput( 1, reader->GetOutput());

feldkamp->SetGeometry( geometry);

TRY_AND_EXIT_ON_ITK_EXCEPTION( feldkamp->Update() );

std::cout << "Writing output image" << std::endl;

// Writer

typedef itk::Image< float, 3 > ImageType;

typedef itk::ImageFileWriter<ImageType> WriterType;

WriterType::Pointer writer = WriterType::New();

writer->SetFileName( "output11.mha" );

writer->SetInput( feldkamp->GetOutput() );

writer->Update();

 

getchar();

return 0;

}

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20150615/7e54bea0/attachment-0002.html>


More information about the Rtk-users mailing list