Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DICOM import] Quick fix for creation of multi series from unique series #807

Merged
merged 2 commits into from
Nov 26, 2020

Conversation

mjuhoor
Copy link
Contributor

@mjuhoor mjuhoor commented Nov 26, 2020

This is a quick fix that does not adress the underlying problem.

Simplified description of the issue:
When looking for files to import, medInria creates a temporary 'unique' identifier for each image series: if n files have the same identifier then they are part of the same series.
This identifier is a concatenation of multiple values of metadata, like patient name, series description, slice thickness, rows, columns... and orientation
The problem is that floating point values (like orientation) can have small variations in each DICOM files: this creates different identifiers for the same image series.
The issue was thought 'solved' previously, as evidenced by the comments in the code.

I personally believe that we should be creating an identifier using other metadata, e.g. the Series Instance UID tag and others, and remove the decimal tags.

@mathildemerle mathildemerle added this to the 3.2 milestone Nov 26, 2020
Copy link
Member

@Florent2305 Florent2305 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok

@Florent2305 Florent2305 merged commit a2f226f into medInria:medInria3.2.x Nov 26, 2020
@Florent2305
Copy link
Member

I personally believe that we should be creating an identifier using other metadata, e.g. the Series Instance UID tag and others, and remove the decimal tags.

I'm agree with this do you think it's a big change ?

@msermesant
Copy link
Contributor

be careful here. some of this code was specifically designed to reconstruct 3D+ t images from multiple 2D+t series, this is why it is also looking at position and orientation. This is typically the case with cine MRI. Please ensure that we still have a way to do this (it could be done in a 2nd step after importing all the series).

@Florent2305
Copy link
Member

be careful here. some of this code was specifically designed to reconstruct 3D+ t images from multiple 2D+t series, this is why it is also looking at position and orientation. This is typically the case with cine MRI. Please ensure that we still have a way to do this (it could be done in a 2nd step after importing all the series).

I can discuss with Olivier to find the best way to fix this bug while preserving this feature.

@mjuhoor mjuhoor deleted the quickFixMultiSeries branch August 3, 2021 08:34
mathildemerle added a commit to mathildemerle/medInria-public that referenced this pull request Dec 14, 2023
mathildemerle added a commit to mathildemerle/medInria-public that referenced this pull request Jan 19, 2024
Florent2305 added a commit that referenced this pull request Feb 5, 2024
[PolygonROI] ROI/repulsor crashs and interactor problems (#807)
fcollot added a commit to fcollot/medInria-public that referenced this pull request Apr 11, 2024
* Add PYNCPP external project

* [add PYNCPP] Minor changes following review

* [Four-views] solve crash closing the views

* [Zoom] proper zoom displaying data on xy and not xyz

* [Tabs] handling of tabs: removal, switch

* [Tabs] manage the case of removing the last tab before opening new ones

* [N4Bias] manage process cancel if the user wants to quit the app

* [Reslice] fix zoom error + code clarity

* [Reslice] dimension -> size

* [Paint] create mask before trying to paint + hide a button

* [3.3.1] release notes & version number with four view crash-fix

* [Git diff] solve differences between musicardio to medInria3.4

* [DCM] do not corrupt exported/imported dcm with odd axis

* set minimum cmake version to 19

* [Registration] selector toolbox empty connect

* [DCMTKImageIO] redo GetPositionOnStackingAxisForImage to get closest axis

* [DCM] get the index value from metadata string

* [DCMTKImageIO] debug if max abs value is not first

* [CMake] minimum version at 3.19

* [CMake] minimum inside src set with variable

* [CMake] remove unnecessary cmake mimum required fct

* [med3.4] Release notes and version number

* [release notes] add bug fix 3.3.2

* [Github] ssh key change

* [MemoryLeak] homepage widgets

* Python packaging and initialization (medInria#1123)

* adapt to PYNCPP changes

* switch to lowercase for pyncpp

* Fix handling of install path of embedded Python

* more Python fixes

* Minor correction to find OpenSSL automatically on macOS

* [VTK] avoid med crash with wrong version of vtk files

* [Thumbnail]3.4, add a setting to [de]activate thumbnail generation for RAM purpose

* [Thumbnail] add final line in file

* [SplashScreen] speeds up launch removing txt on splashscreen

* make Packaging a dedicated project (medInria#1141)

* Packaging project

* packaging fix

* [Thumbnail] generate thumbnail setting typo, oups

* [MemoryLeak] DCMTKImageReader and INRImageReader

* [MemoryLeak] enhance dcmtk image reader destructor

* [memLeak] rm changes on mutex

* [MemoryLeak] medLogger TeeStreams, TeeDevices and d (medInria#1117)

* [MemoryLeak] medLogger TeeStreams, TeeDevices and d

* [MemoryLeak] medLogger: buffers

* [Settings] solve graphical bug of database widget

* [MemoryLeak] medVtkView::buildThumbnail (medInria#1124)

* [MemoryLeak] medVtkView::buildThumbnail

* [MemoryLeak] medAbstractData::generateThumbnailInGuiThread

* [MemoryLeak] rm TimeLineParam changes, created segfault closing the app

* [MemoryLeaks] solve several memory leaks  (medInria#1130)

* [MemoryLeak] medAbstractData::generateThumbnailInGuiThread

* [MemoryLeak] rm TimeLineParam changes, created segfault closing the app

* [RAM] solve some memory leaks

* [RAM] mem leak with instances

* [MemLeak] rm composer, do not instantiate everything on homepage, etc

* [MemLeak] solve a graphic pb in Paint

* [vtkImage2DDisplay] vtkSmartPointer instead of Delete

* [medParameterPoolManagerL] parameters in std::shared_ptr, private class in unique_ptr

* [instances] switch to std::unique_ptr

* [viewinteractor] add back a deletion

* [medToolBoxHeader] remove unnecessary nullptr after delete

* [RAM] after review, remove some QString and changes

* [medVtkImageInfo] proper reset of a complex structure (medInria#1151)

* [Instances] adapt new singleton system to new code (medInria#1161)

* [vtkImageInfo] an other way to reset the complex structure and please gcc (medInria#1162)

* [medToolBoxHeader] no need to delete png (medInria#1163)

* [medCropToolBox] fix error return value (medInria#1164)

* workaround for Inrimage exporting on 3.4 (medInria#1166)

* [DCMTKreader] roll back on a change on static Qlist

* [SlashScreen] use directly QSplashScreen & update splash medInria logo

* [Splash] correction of a square on the logo

* [Splash] no need to test here splashScreen variable

* [3.4] update release notes with current enhancement (medInria#1169)

* [Close] 4D+3D data in view crash at app closing

* [Thumbnail] no need to warn if no thumbn since the thumbnail setting added

* [Splash] add closing attribute to delete variable

* [Histogram] switch QObject+QGraphicsItem to QGraphicsObject

* [Thumbnail] remove a warning reading data

* [Parameters] solve mem leaks

* [Closing] no need to delete manually labels here

* [PolygonROI] ROI/repulsor crashs and interactor problems (medInria#807)

* [4D data] fix Cropping, Variational Seg and VoiCutter toolboxes (medInria#782)

* [4D data] fix Cropping, Variational Seg and VoiCutter toolboxes

* [CropTlbx] use proper return value

* [ProcessOutputs] adapt methods to processoutputs

* [manualRegistration] solve top views size problem (medInria#781)

* [polygonRoi] process output returned nullptr (medInria#772)

* [polygonRoi] fix processsOutput crash when no roi (medInria#777)

* Remove annotation data when destroying paint toolbox (medInria#771)

* [Paint] crash at app closing if no painting (medInria#776)

* [PolygonRoi] avoid spam of warning if contour outside image (medInria#775)

* [PolygonRoi] avoid spam of warning if contour outside image

* [PolygonRoi] loop index from 0

* [Reslice] proper release of RAM (medInria#774)

* [Reslice] proper release of RAM

* [Reslice] copy view data before destruction

* [Reslice] in case user drops 2D image in view (we never know...)

* [vtkImage2DDisplay] vtkSmartPointer instead of Delete

* [Reslice] use std::array and avoid a loop

* [ResliceToolBox] use std::array and avoid a loop

* [view] put back previous behavior, if needed it'll be changed by medInria

* [view] rm deleted variable set to nullptr as in original PR

* [merge] prepare rebase

* [polygonRoi] hide activation label (medInria#773)

* Assume 0 for missing origin

* [Paint] solve problems switching between tools (medInria#770)

* [Paint] solve problems switching between tools

* Update medAlgorithmPaintToolBox.cpp : && instead of &&

* [Paint] separate condition for add and erase

* [Paint] allow to forceHide the Save button (medInria#767)

* [Polygon] adapt to change of instance

* [PolygonROI] pipeline adaptation - put back extension to include

* Compile VTK Python wrappings (with pyncpp's Python)

* Add python plugin path (medInria#763)

* [instances] merge

* allow duplicate series names

* [Export] allow export of multiple data at same time (medInria#780)

* [Video] put a better default frame rate

* [DCM] same test as on med3.3 branch, quicker

* [DCMTK] repo not accessible anymore, switch to github

* {Reslice} background color for selected view

* Switch to <package_name>_ROOT (medInria#1212)

* [Linux packaging] install external projects manually (medInria#1216)

* Fix python packaging (medInria#1213)

* Place superbuild options earlier (medInria#1215)

* [PolygonRoi] clear deactivating the tlbx (medInria#812) (medInria#1223)

Co-authored-by: mathildemerle <mathilde.merle@ihu-liryc.fr>

* [VoiCutter] solve keys, min and max intensity, and add waiting toolbox (medInria#829) (medInria#1222)

* {VoiCutter} keySym instead of keyCode and wait status

* [VoiCutter] solve min and max intensity and keys on mac & linux

Co-authored-by: mathildemerle <mathilde.merle@ihu-liryc.fr>

* added a patch for ITK to compile on visual studio 2019 (medInria#1221)

* Remove BUILD_ALWAYS from external projects (medInria#1220)

* Use DICOM Ids to identify patients and studies (medInria#1219)

* Add development settings (medInria#1218)

* Order of settings widgets (medInria#1217)

* Adapt ep initialization macro for non-cmake projects (medInria#1214)

* Minor changes (spaces etc.) (medInria#1226)

* Icon in Windows taskbar (medInria#1225)

* Avoid removal of files during windows install (medInria#1224)

* merge fixes

---------

Co-authored-by: MERLE Mathilde <“mathilde.merle@ihu-liryc.fr”>
Co-authored-by: MathouNH <mathilde.merle@pm.me>
Co-authored-by: Florent <florent.leray@inria.fr>
Co-authored-by: Mathilde Merle <mathilde.merle@ihu-liryc.fr>
Co-authored-by: paulineMig <pauline.migerditichan@rebrain.eu>
Co-authored-by: jcastelneau <julien.castelneau@ihu-liryc.fr>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants