[ITK] [ITK-users] Conversion of itk::Image to other formats
Timothee Evain
tevain at telecom-paristech.fr
Fri Mar 11 05:35:53 EST 2016
Hello Lambert,
Try something like this :
template<typename ValueType,unsigned int Dimension>
extern int ItkToAvs(AVSfield** ppAvs, typename itk::Image<ValueType,Dimension>::Pointer InputImage);
This way you should be able to use the function for any itkImage type, given that you provide the ValueType and the Dimension to the function at compile time like :
[...]=ItkToAvs<ValueType,Dimension>([...]);
But I cannot guarantee that this is the best way to do it, since I'm quite a beginner with templates.
HTH,
Tim
----- Mail original -----
De: "Lambert Zijp" <ljzijp at gmail.com>
À: "Matt McCormick" <matt.mccormick at kitware.com>
Cc: insight-users at itk.org
Envoyé: Jeudi 10 Mars 2016 18:06:35
Objet: Re: [ITK] [ITK-users] Conversion of itk::Image to other formats
Hi Matt,
Let me try it this way. I tried all the following prototypes, but none of them worked. Probably some C++ syntax problem...
template <class T1, int T2>
extern int ItkToAvs(AVSfield** ppAvs, itk::Image<T1, T2> pItkImage);
template <int T2>
extern int ItkToAvs(AVSfield** ppAvs, itk::Image<fPixelType, T2> pItkImage);
extern int ItkToAvs(AVSfield** ppAvs, itk::Image<fPixelType, 3> pItkImage);
template< typename TImage>
extern int ItkToAvs(AVSfield** ppAvs, TImage* pItkImage);
template< typename TPixel, unsigned int VImageDimension>
extern int ItkToAvs(AVSfield** ppAvs, const itk::Image<TPixel, VImageDimension> pItkImage);
template< typename TObjectType>
extern int ItkToAvs(AVSfield** ppAvs, const itk::SmartPointer<TObjectType> pItkImage);
The first parameter is the output of the function. The second parameter is any itk image.
As you can see, I don't know what I'm doing... Any idea what a good prototype would be?
Greetings,
Lambert
On Thu, Mar 10, 2016 at 5:40 PM, Matt McCormick < matt.mccormick at kitware.com > wrote:
Hi Lambert,
A function prototype without templates would be run-time to run-time
type comparison and conversion. The example shows how to do run-time
to compile-time comparison, and it is relevant to both in-memory and
file conversion.
HTH,
Matt
On Thu, Mar 10, 2016 at 11:28 AM, Lambert Zijp < ljzijp at gmail.com > wrote:
> Hi Sarthak,
> There is no file I/O involved. It is about conversion in memory. In my
> original post, MyFormat is a struct containing things like pixeltype and
> number of dimensions and a couple of pointers to the pixels, the sizes of
> the dimensions, and the coordinates. Conversion from MyFormat to itk, I got
> more or less working. Now I want to convert from itk to MyFormat. A function
> prototype is needed...
>
> Greetings,
> Lambert
>
> On Thu, Mar 10, 2016 at 5:02 PM, Scapegoat Sarthak
> < scapegoat.sarthak at gmail.com > wrote:
>>
>> Hi Lambert,
>>
>> What you could do is to make a function what just takes in a file name as
>> input and call the templated ITK function inside as an inline function.
>> There is no way I know to do I/O in ITK without using templates.
>>
>> Best,
>> Sarthak
>>
>>
>> On 10 March 2016 at 10:55, Lambert Zijp < ljzijp at gmail.com > wrote:
>>>
>>> Hi Scapegoat,
>>> Thank you for responding. What would the function prototype then be (of
>>> function that accepts any itk image. I mean, the syntax, preferably not
>>> templated)?
>>> Because I deal mostly with 3D or 4D signed short pixels (medical images),
>>> I keep them as they are: half the memory consumption and easier histogram
>>> computations.
>>>
>>> Greetings,
>>> Lambert
>>>
>>> On Thu, Mar 10, 2016 at 4:35 PM, Scapegoat Sarthak
>>> < scapegoat.sarthak at gmail.com > wrote:
>>>>
>>>> I would advice you to perform a check on the image dimensions (2 or 3)
>>>> and keep the pixel type as float throughout. In any case you will be doing
>>>> computation so the extra memory is going to be helpful.
>>>>
>>>>
>>>> On 10 March 2016 at 10:28, Matt McCormick < matt.mccormick at kitware.com >
>>>> wrote:
>>>>>
>>>>> Hi Lambert,
>>>>>
>>>>> This example shows how to read in an unknown image type. It
>>>>> demonstrates how to go between run-time type specification and the
>>>>> compile-image type specification of ITK.
>>>>>
>>>>>
>>>>> http://itk.org/ITKExamples/src/IO/ImageBase/ReadUnknownImageType/Documentation.html
>>>>>
>>>>> This approach could be used for your problem.
>>>>>
>>>>> HTH,
>>>>> Matt
>>>>>
>>>>> On Thu, Mar 10, 2016 at 9:56 AM, Lambert Zijp < ljzijp at gmail.com > wrote:
>>>>> > Dear itk users,
>>>>> > I'm new to itk and also not very proficient in C++...
>>>>> > I want to try some deformable registration methods implemented in
>>>>> > itk, and
>>>>> > need to convert my own format of images and volumes to itk, and back.
>>>>> > For conversion to itk, I use 'ImportImageFilter', because I do not
>>>>> > want to
>>>>> > make a copy of the pixels/voxels.
>>>>> > Converting itk images and volumes back to my own format, is giving me
>>>>> > a
>>>>> > headache; I'm confused about 'Image', SmartPointer and ConstPointer
>>>>> > and
>>>>> > template stuff.
>>>>> > Could you get me started by suggesting me a function prototype?
>>>>> >
>>>>> > Something like:
>>>>> > int ItkToMyFormat(MyFormat** ppMyFormat, itk::Image* pItkImage);
>>>>> >
>>>>> > The ItkImage can be any pixeltype, any dimension, and vector images
>>>>> > should
>>>>> > also be accepted by the conversion routine. In that conversion
>>>>> > function, and
>>>>> > need to be able to put a switch on pixeltype and number of
>>>>> > dimensions.
>>>>> >
>>>>> > Greetings,
>>>>> > Lambert
>>>>> >
>>>>> > _____________________________________
>>>>> > Powered by www.kitware.com
>>>>> >
>>>>> > Visit other Kitware open-source projects at
>>>>> > http://www.kitware.com/opensource/opensource.html
>>>>> >
>>>>> > Kitware offers ITK Training Courses, for more information visit:
>>>>> > http://www.kitware.com/products/protraining.php
>>>>> >
>>>>> > Please keep messages on-topic and check the ITK FAQ at:
>>>>> > http://www.itk.org/Wiki/ITK_FAQ
>>>>> >
>>>>> > Follow this link to subscribe/unsubscribe:
>>>>> > http://public.kitware.com/mailman/listinfo/insight-users
>>>>> >
>>>>> _____________________________________
>>>>> Powered by www.kitware.com
>>>>>
>>>>> Visit other Kitware open-source projects at
>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>
>>>>> Kitware offers ITK Training Courses, for more information visit:
>>>>> http://www.kitware.com/products/protraining.php
>>>>>
>>>>> Please keep messages on-topic and check the ITK FAQ at:
>>>>> http://www.itk.org/Wiki/ITK_FAQ
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://public.kitware.com/mailman/listinfo/insight-users
>>>>
>>>>
>>>
>>
>
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
_______________________________________________
Community mailing list
Community at itk.org
http://public.kitware.com/mailman/listinfo/community
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
More information about the Community
mailing list