Thank you so much, now it works :)
Zitat von Schwarz Tobias <[email protected]>:
> Hi Claudia,
>
> please try including the implementation directly:
>
> #include <itkSmartPointerForwardReference.txx>
>
> Actually I don’t remember why, but sometimes this is necessary.
>
> Best,
> Tobi
>
> ------------------------------------------------------------
> Tobias Schwarz
> DKFZ
> German Cancer Research Center (Deutsches Krebsforschungszentrum)
> Member of the Helmholtz Association
> Division of Medical & Biological Informatics E130
> Im Neuenheimer Feld 280
> D-69120 Heidelberg
> Phone: 49-(0)6221-42-2353
> Fax: 49-(0)6221-42-2345
> E-Mail: [email protected]<mailto:[email protected]>
> Web: www.dkfz.de<http://www.dkfz.de>
> Confidentiality Note: This message is intended only for the use of
> the named recipient(s) and may obtain confidential and/or privileged
> information. If you are not the intended recipient, please contact
> the sender and delete the message. Any unauthorized use of the
> information contained in this message is prohibited.
>
> Von: Claudia Hänel [mailto:[email protected]]
> Gesendet: Donnerstag, 29. Juli 2010 18:29
> An: [email protected]
> Betreff: Re: [mitk-users] Saving 3D data over time into one mitk::Image
>
> Hi Michael,
>
> I'm using Visual Studio 2008, ITK 3.16, MITK svn version 27/07/2010.
> The error means that a library is missing. I've included all headers
> that you've mentioned. I use CMake to set all properties for the
> project. Normally all include directories and additional libraries
> should be set. But I have to set some libraries manually (e.g.
> Qwt.lib) and I guess the missing one, too. That are all included
> libraries of my project:
>
> $(NOINHERIT) kernel32.lib user32.lib gdi32.lib winspool.lib
> shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
> Qmitk.lib mitkCore.lib mitkIpPic.lib mitkIpFunc.lib mbilog.lib
> vtkGraphics.lib vtkCommon.lib vtkFiltering.lib vtkftgl.lib
> vtkGraphics.lib vtkHybrid.lib vtkImaging.lib vtkIO.lib
> vtkParallel.lib vtkRendering.lib vtkVolumeRendering.lib
> vtkWidgets.lib vtkjpeg.lib vtkpng.lib vtkzlib.lib vtkexpat.lib
> vtkfreetype.lib ITKAlgorithms.lib ITKStatistics.lib ITKFEM.lib
> pic2vtk.lib IIL4MITK.lib ipSegmentation.lib ann.lib
> C:\Programme\Qt\lib\QtGuid4.lib imm32.lib winmm.lib
> C:\Programme\Qt\lib\QtCored4.lib ws2_32.lib vtkHybrid.lib
> vtkParallel.lib vtkexoIIc.lib vtkRendering.lib vtkGraphics.lib
> vtkverdict.lib vtkftgl.lib vtkImaging.lib vtkIO.lib vtkFiltering.lib
> vtkCommon.lib vtkDICOMParser.lib vtkNetCDF.lib vtkmetaio.lib
> vtksqlite.lib vtksys.lib vfw32.lib vtktiff.lib opengl32.lib
> vtkjpeg.lib vtkpng.lib vtkzlib.lib vtkexpat.lib vtkfreetype.lib
> ITKNumerics.lib itkNetlibSlatec.lib ITKBasicFilters.lib ITKIO.lib
> ITKNrrdIO.lib itkgdcm.lib itkjpeg12.lib itkjpeg16.lib itkopenjpeg.lib
> snmpapi.lib rpcrt4.lib itkpng.lib itktiff.lib itkjpeg8.lib
> ITKSpatialObject.lib ITKCommon.lib itkvnl_inst.lib itkvnl_algo.lib
> itkv3p_netlib.lib itkvnl.lib itkvcl.lib ITKMetaIO.lib comctl32.lib
> wsock32.lib itksys.lib ITKDICOMParser.lib ITKEXPAT.lib ITKniftiio.lib
> ITKznz.lib itkzlib.lib ws2_32.lib mitkDeformableRegistration.lib
> Qwt.lib mitkIpPic.lib
>
> Regards,
> Claudia
>
> Zitat von Müller Michael <[email protected]>:
>
>> Hi Claudia,
>>
>> i just compiled and executed a small program containing your code
>> without any problems:
>>
>> #include <mitkImage.h>
>> #include <mitkPicFileReader.h>
>> #include <mitkImageDataItem.h>
>> int main(int argc, char* argv[])
>> {
>> mitk::PicFileReader::Pointer reader = mitk::PicFileReader::New();
>> const char * filename =
>> "/local/muellerm/mitk/src/mitk/Core/Code/Testing/Data/Pic2DplusT.pic.gz";
>> reader->SetFileName(filename);
>> reader->Update();
>>
>> mitk::Image::Pointer image = reader->GetOutput();
>> MITK_INFO << image;
>> mitk::Image::Pointer imageSeries = mitk::Image::New();
>> imageSeries->Initialize(image);
>> int time = 1;
>>
>> // your code
>> mitkIpPicDescriptor* currentVolume
>> = image->GetVolumeData(0)->GetPicDescriptor();
>>
>> imageSeries->SetPicVolume(image->GetVolumeData(0)->GetPicDescriptor(),time);
>> // end of your code
>>
>> MITK_INFO << imageSeries;
>> }
>>
>> I am running Ubuntu with ITK 3.16. Unfortunately, I can`t remember if
>> your Visual Studio compiler complains about incomplete types (as GCC
>> does) or if the MS Linker just throws unresolved symbols errors.
>> However, make sure that you have mitkImageDataItem.h included because
>> mitk::ImageDataItem is just forward declared in mitkImage.h.
>> So far I have no other idea what may be the cause of your error.
>>
>> Regards,
>> Michael
>>
>> Von: Claudia Hänel [mailto:[email protected]]
>> Gesendet: Donnerstag, 29. Juli 2010 15:57
>> An: Schwarz Tobias
>> Cc: [email protected]
>> Betreff: Re: [mitk-users] Saving 3D data over time into one mitk::Image
>>
>> Hi,
>>
>> if I try it with
>>
>> mitkIpPicDescriptor* currentVolume =
>> image->GetVolumeData(0)->GetPicDescriptor();
>> imageSeries->SetPicVolume(image->GetVolumeData(0)->GetPicDescriptor(),time);
>>
>> I get a linking error
>>
>> error LNK2001: Nicht aufgelöstes externes Symbol ""public: __thiscall
>> itk::SmartPointerForwardReference<class
>> mitk::ImageDataItem>::~SmartPointerForwardReference<class
>> mitk::ImageDataItem>(void)"
>> (??1?$smartpointerforwardrefere...@vimagedataitem@mitk@@@itk@@q...@xz)".
>>
>> But I can't figure out which library is missing. itkCommon.lib (for
>> itk::SmartPointerForwardReference) and mitkCore.lib (for
>> mitk::ImageDataItem) are included
>>
>> Best regards,
>> Claudia
>>
>>
>> Zitat von Schwarz Tobias <[email protected]>:
>>
>>> Hi Claudia,
>>>
>>> I don't see any error in your code. I use a similar approach, which
>>> works fine:
>>>
>>> // initialize
>>> mitk::Image::Pointer image = mitk::Image::New();
>>> image->Initialize(mitk::PixelType(typeid(unsigned char)),
>>> dimension, dimensions); // dimension = 4
>>>
>>> // Fill with zeroes (optional)
>>> unsigned int byteSize = sizeof(unsigned char);
>>> for (unsigned int dim = 0; dim < dimension; ++dim)
>>> {
>>> byteSize *= image->GetDimension(dim);
>>> }
>>> memset(image->GetData(), 0, byteSize );
>>>
>>> // Fill a time step
>>> mitkIpPicDescriptor* currentVolume =
>>> resultImage->GetVolumeData(0)->GetPicDescriptor(); // resultImage is
>>> 3D
>>> image->SetPicVolume( currentVolume , currentTime );
>>> // currentTime is counted up
>>>
>>>
>>>
>>> Could you please try it this way, too? Maybe there is a bug in
>>> SetImportVolume().
>>>
>>> Best,
>>> Tobi
>>>
>>>
>>> ------------------------------------------------------------
>>> Tobias Schwarz
>>> DKFZ
>>> German Cancer Research Center (Deutsches Krebsforschungszentrum)
>>> Member of the Helmholtz Association
>>> Division of Medical & Biological Informatics E130
>>> Im Neuenheimer Feld 280
>>> D-69120 Heidelberg
>>> Phone: 49-(0)6221-42-2353
>>> Fax: 49-(0)6221-42-2345
>>> E-Mail: [email protected]
>>> Web: www.dkfz.de
>>> Confidentiality Note: This message is intended only for the use of
>>> the named recipient(s) and may obtain confidential and/or privileged
>>> information. If you are not the intended recipient, please contact
>>> the sender and delete the message. Any unauthorized use of the
>>> information contained in this message is prohibited.
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Claudia Hänel [mailto:[email protected]]
>>> Gesendet: Mittwoch, 28. Juli 2010 10:20
>>> An: [email protected]
>>> Betreff: [mitk-users] Saving 3D data over time into one mitk::Image
>>>
>>> Hi,
>>>
>>> I want to write some 3D data over time into a mitk::Image.
>>> What I do is the following:
>>>
>>> void MyImageData::Initialize(mitk::Image::Pointer image, int nrOfVolumes)
>>> {
>>> unsigned int *d = image->GetDimensions();
>>> d[3] = nrOfVolumes;
>>>
>>> imageSeries = mitk::Image::New();
>>> imageSeries->Initialize(image->GetPixelType(), 4,d,1);
>>>
>>> initialized = true;
>>> }
>>>
>>> bool MyImageData::pushDataBack(mitk::Image::Pointer image)
>>> {
>>> if (initialized)
>>> {
>>> imageSeries->SetImportVolume(image, time);
>>> imageSeries->GetData();
>>> imageSeries->Update();
>>>
>>> if(imageSeries->IsVolumeSet(time))
>>> {
>>> time++;
>>> return true;
>>> }
>>> return false;
>>> }
>>> else
>>> return false;
>>>
>>> }
>>>
>>> It works fine for the first image. After that I get exceptions in the
>>> memory management. I tried all variants of
>>> mitk::Image::ImportMemoryManagementType in the SetImportVolume-function.
>>> As I understand the concept of mitk::Image I can save data with the
>>> same region and data type over time just by increasing the time
>>> variable, right?
>>> Can anyone help me, please?
>>>
>>> Best regards,
>>> Claudia
>>>
>>>
>>>
>>>
>>
>------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users