[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