Hi Yari, this was a test case for the mirroring issue or the dicom loading issue?
Either way, I tested it in the 2015.05 binary release on Windows and just dragging and dropping it works fine (all timesteps are there, no crash). I am then able to segment and the surface fits the image for me. Can you confirm this using the binary release? Best, Caspar -----Ursprüngliche Nachricht----- Von: yari mattei [mailto:yari.mat...@student.supsi.ch] Gesendet: Dienstag, 23. Juni 2015 10:13 An: mitk-users@lists.sourceforge.net Betreff: Re: [mitk-users] Read different volume Hi guys, I finally obtained a sharable example of a DICOM file which cause the problem. I put it on dropbox this is the link to download it : https://www.dropbox.com/s/sl4x4jlch3pp5gp/test_dicom_anon.dcm?dl=0 I hope you find it helpful to find out what's going on :) Best, Yari Il 15.06.2015 10:44, Eisenmann, Matthias ha scritto: > Hi Yari, > > now I attached the file mentioned in our last mail, sorry! > > Maybe I can investigate your other questions during our next bug squashing > session on Wednesday. > It would be great if you could double-check it with the provided code example. > > Best, > Matthias > > -----Ursprüngliche Nachricht----- > Von: yari mattei [mailto:yari.mat...@student.supsi.ch] > Gesendet: Donnerstag, 11. Juni 2015 09:11 > An: mitk-users@lists.sourceforge.net > Betreff: Re: [mitk-users] Read different volume > > Hi guys, > > Sorry for the late answer. I am using the 2014.10.0 release of MITK do you > think the bug is present in this version? Do you think is better to work > directly on the master branch? > > I unfortunately didn't recieve any attachment, is it possible for you to send > it to me? > > The code of my reader is the following (sorry if I didn't share it before): > > mitk::DataNode::Pointer MyMITKDICOMReader::readPhilips3D(const char > *filename){ > //intance of the DICOM reader > mitk::DicomSeriesReader reader = mitk::DicomSeriesReader(); > //check if the file is a Philips 3D DICOM > if (!reader.IsPhilips3DDicom(filename)){ > MITK_DEBUG << "THE FILE : " << filename << "IS NOT A PHILIPS 3D > DICOM ! "; > return NULL; > } > > mitk::StringList files = mitk::StringList(); > files.push_back(filename); > > UpdateCallBackMethod callback = false; > > mitk::Image::Pointer preLoadedImageBlock; > > return reader.LoadDicomSeries(files, true, true, false, > callback, preLoadedImageBlock); } > > Thanks for whole the help. > > Best, > > Yari > > > Il 03.06.2015 14:55, Eisenmann, Matthias ha scritto: >> Hi Yari, >> >> we had a further look at it. Since you did not provide the complete code >> (your own DICOM reader is missing), we adapted the MITK Tutorial Step 3 >> Application (see attachment). We added the ImageTimeSelector to be >> compatible with your code snippet. We could not reproduce the crash. >> >> Are you working with the current master branch? >> There were some problems reading 4D-DICOM data in MITK due to an ITK update >> some months ago (http://bugs.mitk.org/show_bug.cgi?id=18887). But that seems >> to be fixed. >> >> Can you provide your complete cpp file and your data set if updating your >> code base does not help? >> >> Best, >> Matthias and Thomas >> >> -----Ursprüngliche Nachricht----- >> Von: yari mattei [mailto:yari.mat...@student.supsi.ch] >> Gesendet: Donnerstag, 28. Mai 2015 15:38 >> An: mitk-users@lists.sourceforge.net >> Betreff: Re: [mitk-users] Read different volume >> >> Hi guys, >> >> thanks a lot, what are you saying i totally right, after the update the data >> are loaded. But when I am trinyg to display the image the application crash. >> >> The code I wrote is the following : >> >> // Create a QApplication instance first >> QApplication eco3DApp(argc, argv); >> eco3DApp.setApplicationName("Eco 3D"); >> >> QmitkRegisterClasses(); >> >> mitk::StandaloneDataStorage::Pointer ds = >> mitk::StandaloneDataStorage::New(); >> >> MyMITKDICOMReader myReader = MyMITKDICOMReader(); >> >> mitk::DataNode::Pointer node = >> myReader.readPhilips3D("filePath"); >> >> //ds->Add(node); >> mitk::Image::Pointer image = >> dynamic_cast<mitk::Image*>(node->GetData()); >> >> //take a time >> mitk::ImageTimeSelector::Pointer timeSelector = >> mitk::ImageTimeSelector::New(); >> >> int timeStep = 1; >> >> timeSelector->SetInput( image ); >> timeSelector->SetTimeNr( timeStep ); >> timeSelector->Update(); >> //timeSelector->UpdateLargestPossibleRegion(); >> >> >> mitk::Image::Pointer timeStepImage = >> timeSelector->GetOutput(); >> >> mitk::DataNode::Pointer stepImageNode = mitk::DataNode::New(); >> >> stepImageNode->SetData(timeStepImage); >> stepImageNode->Update(); >> ds->Add(stepImageNode); >> >> QmitkRenderWindow renderWindow; >> >> // Tell the RenderWindow which (part of) the datastorage to render >> renderWindow.GetRenderer()->SetDataStorage(ds); >> >> // Initialize the RenderWindow >> mitk::TimeGeometry::Pointer geo = >> ds->ComputeBoundingGeometry3D(ds->GetAll()); >> mitk::RenderingManager::GetInstance()->InitializeViews(geo); >> >> renderWindow.show(); >> renderWindow.resize(400, 400); //256, 256 original >> renderWindow.move(QPoint(500, 100)); >> >> return eco3DApp.exec(); >> >> When I launch it, it crash after the eco3DApp.exec() call, with this >> error >> >> Unhandled exception at 0x020B55DA (MitkCore.dll) in AwesomeApp.exe: >> 0xC0000005: Access violation reading location 0x00000000. >> >> exactely in : >> >> > >> MitkCore.dll!mitk::ImageDataItem::ConstructVtkImageData(itk::SmartPointer<mitk::Image >> const > iP) Line 234 C++ >> >> line 254 is : >> >> const mitk::Vector3D vspacing = geom3d->GetSpacing(); >> >> Thanks for the help. >> >> Cheers >> Yari >> >> >> Il 28.05.2015 10:12, Eisenmann, Matthias ha scritto: >>> Hi Yari, >>> >>> we had a look at your problem during our bug squashing session. We can >>> reproduce the situation you described: After loading a 3D+t image only the >>> first volume is initialized. >>> >>> Are you just wondering why this is the case or does your application crash? >>> >>> In our cases this is not a problem. The other volumes are initialized 'on >>> demand' after calling the Update() method of ImageTimeSelector for a >>> specific time step. >>> >>> Let us give you a pointer to a working example: The binary threshold tool >>> of the segmentation plugin. >>> In method >>> mitk::BinaryThresholdTool::CreateNewSegmentationFromThreshold(...) each >>> volume of a time series is processed. >>> >>> Best, >>> Matthias and Thomas >>> >>> -----Ursprüngliche Nachricht----- >>> Von: yari mattei [mailto:yari.mat...@student.supsi.ch] >>> Gesendet: Montag, 18. Mai 2015 14:32 >>> An: mitk-users@lists.sourceforge.net >>> Betreff: [mitk-users] Read different volume >>> >>> Hi everybody, >>> >>> I manage to open a Philips3D DICOM (with mithDicomSeriesReader) and I get a >>> DataNode. >>> >>> I would like to show the 9 different time step contained in the DICOM file >>> so I tried to get an image from the node with: >>> >>> mitk::Image::Pointer image = >>> dynamic_cast<mitk::Image*>(node->GetData()); >>> >>> And to select the volume with: >>> >>> mitk::ImageTimeSelector::Pointer time = >>> mitk::ImageTimeSelector::New(); >>> >>> time->SetInput(image); >>> time->SetTimeNr(1); >>> time->Update(); >>> >>> mitk::Image::Pointer image4 = time->GetOutput(); >>> >>> >>> mitk::StandaloneDataStorage::Pointer ds4 = >>> mitk::StandaloneDataStorage::New(); >>> mitk::DataNode::Pointer node4 = mitk::DataNode::New(); >>> >>> node4->SetData(image4); >>> >>> ds4->Add(node4); >>> >>> This works only if I set the TimeNr to 0. I check with the debugger the >>> value of the image and I see that there are 9 different volume but only the >>> first one has values inside (the others are NULL). >>> This is part of the dump of the debugger : >>> - image {m_Pointer=0x164978e0 {m_Channels={ size=1 } >>> m_Volumes={ size=9 } m_Slices={ size=1872 } ...} } >>> itk::SmartPointer<mitk::Image> >>> - m_Pointer 0x164978e0 {m_Channels={ size=1 } m_Volumes={ >>> size=9 } m_Slices={ size=1872 } ...} mitk::Image * >>> + [mitk::Image] {m_Channels={ size=1 } m_Volumes={ >>> size=9 } m_Slices={ size=1872 } ...} MitkCore.dll!mitk::Image >>> + mitk::SlicedData >>> {m_LargestPossibleRegion={m_Index={m_Index=0x16497984 {0, 0, 0, 0, >>> 0} } >>> m_Size={m_Size=0x16497998 {224, ...} } } ...} mitk::SlicedData >>> + m_Channels { size=1 } >>> std::vector<itk::SmartPointer<mitk::ImageDataItem>,std::allocator<itk::SmartPointer<mitk::ImageDataItem> >>> > > >>> - m_Volumes { size=9 } >>> std::vector<itk::SmartPointer<mitk::ImageDataItem>,std::allocator<itk::SmartPointer<mitk::ImageDataItem> >>> > > >>> [size] 9 int >>> [capacity] 9 int >>> + [0] {m_Pointer=0x1641ba88 {m_Data=0x235b0040 >>> "" m_PixelType=0x164af8a8 {m_ComponentType=1 m_PixelType=SCALAR (1) ...} >>> ...} } itk::SmartPointer<mitk::ImageDataItem> >>> + [1] {m_Pointer=0x00000000 <NULL> } >>> itk::SmartPointer<mitk::ImageDataItem> >>> + [2] {m_Pointer=0x00000000 <NULL> } >>> itk::SmartPointer<mitk::ImageDataItem> >>> + [3] {m_Pointer=0x00000000 <NULL> } >>> itk::SmartPointer<mitk::ImageDataItem> >>> ....... >>> >>> >>> Does anyone have any idea of what cause di problem? >>> >>> Thanks in advance >>> >>> Yari >>> >>> -------------------------------------------------------------------- >>> - >>> - >>> -------- One dashboard for servers and applications across >>> Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ >>> applications Performance metrics, stats and reports that give you >>> Actionable Insights Deep dive visibility with transaction tracing using APM >>> Insight. >>> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y >>> _______________________________________________ >>> mitk-users mailing list >>> mitk-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/mitk-users >> --------------------------------------------------------------------- >> - >> -------- _______________________________________________ >> mitk-users mailing list >> mitk-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/mitk-users > > ---------------------------------------------------------------------- > -------- _______________________________________________ > mitk-users mailing list > mitk-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mitk-users ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ mitk-users mailing list mitk-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mitk-users ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ mitk-users mailing list mitk-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mitk-users