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

Simon Rit simon.rit at creatis.insa-lyon.fr
Thu Jun 25 02:57:00 EDT 2015


Hi,
So you checked that projections are read but did you check what's read with
a viewer, e.g. vv <http://vv.creatis.insa-lyon.fr>? Can you also tell us
what's the offset and the spacing in the reader.mha file?
Simon

On Thu, Jun 25, 2015 at 7:27 AM, safdary mohsen <ieee.safdary at gmail.com>
wrote:

> Hi
>
>  what is genuine rtkfdk.exe ?
>
> source code is attached to mail and command line is:
> rtkfdk --geometry geometry.xml --regexp .*.hnd --path Scan0  --output
> slice30.mha  --verbose  --spacing 0.25,0.25,0.25 --dimension 1024,1,1024
> --origin -127.875,30,-127.875  --hardware cuda
>
>
>
>
>
>
> On Wed, Jun 24, 2015 at 5:51 PM, Yang-Kyun Park <theday79 at gmail.com>
> wrote:
>
>> Hi Safdary,
>>
>> So you might have tried the genuine rtkfdk.exe for your recon. Would you
>> give me your command line you used?
>>
>> Yang
>> On Jun 24, 2015 3:48 AM, "safdary mohsen" <ieee.safdary at gmail.com> wrote:
>>
>>> Hi
>>>
>>> I cheched projectionreader and i abtained that all projection are readed.
>>> ( by using:
>>>
>>> typedef itk::ImageFileWriter<OutputImageType> WriterType;
>>>
>>> WriterType::Pointer writer = WriterType::New();
>>>
>>> writer->SetFileName( "reader.mha" );
>>>
>>> writer->SetInput( reader->GetOutput() );
>>>
>>> writer->Update();
>>> )
>>>
>>> and
>>>
>>> geometry is work for cpu mode means outputs are ok .
>>>
>>>
>>> I am confused for solving this problem!!!!!!!!!!!!!!!!!
>>>
>>> On Tue, Jun 16, 2015 at 11:09 AM, Cyril Mory <
>>> cyril.mory at creatis.insa-lyon.fr> wrote:
>>>
>>>>  Hi Safdary,
>>>>
>>>> Just to be sure: have you tried reconstructing in a larger volume
>>>> (something really huge), just to make sure you are not trying to
>>>> reconstruct some portion of space where, indeed, there is nothing ?
>>>> You can try that easily, just replace your spacing, dimension and
>>>> origin with
>>>> --spacing 16,16,16 --dimension 256,256,256 --origin -2040,-2040,-2040
>>>> in your rtkfdk command line.
>>>>
>>>> Cyril
>>>>
>>>>
>>>> On 06/15/2015 05:19 PM, safdary mohsen wrote:
>>>>
>>>>  Hi Yang
>>>>
>>>>
>>>>  I am use rtkfdk.exe but the results are same as  my code,
>>>>
>>>> means all pixels are zero!!!
>>>>
>>>>
>>>>  regards
>>>>
>>>>
>>>>
>>>> safdari
>>>>
>>>> On Mon, Jun 15, 2015 at 7:10 PM, Yang K Park <theday79 at gmail.com>
>>>> wrote:
>>>>
>>>>>  Hi Safdary,
>>>>>
>>>>>
>>>>>
>>>>> Again, please cc 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
>>>>> <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;
>>>>>
>>>>> }
>>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Rtk-users mailing listRtk-users at public.kitware.comhttp://public.kitware.com/mailman/listinfo/rtk-users
>>>>
>>>>
>>>>
>>>
>
> _______________________________________________
> Rtk-users mailing list
> Rtk-users at public.kitware.com
> http://public.kitware.com/mailman/listinfo/rtk-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/rtk-users/attachments/20150625/77a821ca/attachment-0002.html>


More information about the Rtk-users mailing list