Could not load ultrasound from .mvl (Medison) file format

Hello!

“Could not load: - as a 48 frames MultiVolume by ImagePositionPatient+AcquisitionTime as a MultiVolume”

Just received that error trying to load the DICOM information from an ecography. 3D/4D data in “.mvl” (Medison Volume) format.

Anyone can help, new to the software here.

Best Regards and thanks in advance

Operating system: MACOSX HIGH SIERRA
Slicer version: 4.8.1
Expected behavior: load dicom ecography
Actual behavior: Could not load: - as a 48 frames MultiVolume by ImagePositionPatient+AcquisitionTime as a MultiVolume

Please review the following articles from the Slicer FAQ and let us know the result:

1 Like

SlicerHeart extension has 3D/4D ultrasound importers for Philips and GE systems.

As far as I know Medison MVL format is a closed, proprietary format, not even DICOM. If sufficient number of input files are available then probably the format can be reverse-engineered (as it was done by TomoVision developers), but it would take a couple of weeks of work, which would require dedicated funding.

I would recommend trying the followings:

  • Check if you can export to Cartesian DICOM file format and then try to import it as @fedorov recommended above. If you don’t find an option like that then ask your Medison representative about what export options are available.
  • Try import using TomoVision. If import works, contact TomoVision developers, asking for image export in NRRD format.

It is important to make ultrasound manufacturers aware that they are hurting researchers by using closed, proprietary file formats. When you buy a new ultrasound system make sure you buy one that can export images in a format that can be freely accessed - preferably in DICOM format.

2 Likes

I guess I figured out that there was a lot of files inside the directory and that lead me to open files individually…sorry for my lack of knowledge…learning over this.

The thing is that I opened a single file and the R view shows it ok…but the Y and G shows what it should be other dimensions views but they are really shrinked…pol6

I it does not create the 3d mesh correctly…any suggestion?

The pictures above show just secondary captures (screenshots). Probably the 3D image information is stored in private DICOM fields in the same files. If you can share anonymized data sets then we can have a look at them to confirm.

Hi everyone. I’m in the same boat. The USS machine I used was a Samsung UGEO_HM70A. Tried with Tomovision Babysliceo(demo) and I could see the baby and edit everything but it’s quite expensive for a couple of mvl files I want to edit/use.

If anyone is working on these kind of files (mvl), feel free to get all of them from my dropbox. All of them are anonimyzed and exported as 3d volume, default mode.

Grretings from Spain

Thanks for sharing the data. It is easy to load these images once you know the image geometry (pixel start position and x y z size and spacing) just by creating a .nhdr header file for it. The geometry values can be determined by trial and error. One of the projects for the Slicer project week (that starts tomorrow) will be about automating this process - your data sets will be perfect test data for this.

For example, you can load one of your data sets by creating a “DAN 1_0000.nhdr” file in the same folder with the content below and then loading the .nhdr file into Slicer:

NRRD0004
# Complete NRRD file format specification at:
# http://teem.sourceforge.net/nrrd/format.html
type: unsigned char
dimension: 3
space: left-posterior-superior
sizes: 376 124 158
space directions: (-0.30,0,0) (0,-0.60,0) (0,0,0.90)
kinds: domain domain domain
endian: little
encoding: raw
space origin: (0,0,0)
byte skip: 620919
data file: DAN 1_0000.mvl

After applying masking (to remove some reflections that would occlude the face), casting to double, and applying anisotropic filtering, you get this volume rendering result:

Here is the link to the complete Slicer scene of the imported and processed image.

Hi again

Thank you so much for your explanation and I’m really glad that you found useful these data sets for the Slicer project week.

On the other hand I tried doing myself following your steps and using the same file and when I import or drag the nhdr file I created I’m still getting 3 black screens. Do I need any specific extension? I tried importing as a volume, sequence of volumes, etc without success.

Regards

Create the nhdr in the same folder as the .mvl file. If the image does not load correctly then please post the application log (menu: Help / Report a bug).

Both are in the same folder. Here is the log.

Logs
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Session start time .......: 2019-01-29 11:13:24
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Slicer version ...........: 4.10.1 (revision 27931) win-amd64 - installed release
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Operating system .........: Windows /  Professional /  (Build 9200) - 64-bit
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Memory ...................: 16331 MB physical, 18763 MB virtual
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - CPU ......................: AuthenticAMD AMD Ryzen 5 1600X Six-Core Processor           , 12 cores, 12 logical processors
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - VTK configuration ........: OpenGL2 rendering, TBB threading
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Developer mode enabled ...: no
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Prefer executable CLI ....: yes
[DEBUG][Qt] 29.01.2019 11:13:24 [] (unknown:0) - Additional module paths ..: C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/DCMQI/lib/Slicer-4.10/cli-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/SlicerDMRI/lib/Slicer-4.10/cli-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/SlicerDMRI/lib/Slicer-4.10/qt-loadable-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/SlicerDMRI/lib/Slicer-4.10/qt-scripted-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/SlicerHeart/lib/Slicer-4.10/qt-loadable-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/SlicerHeart/lib/Slicer-4.10/qt-scripted-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/Sequences/lib/Slicer-4.10/qt-loadable-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/Sequences/lib/Slicer-4.10/qt-scripted-modules, C:/Users/chinl/AppData/Roaming/NA-MIC/Extensions-27931/SlicerITKUltrasound/lib/Slicer-4.10/cli-modules
[DEBUG][Python] 29.01.2019 11:13:25 [Python] (D:\Program Files\Slicer 4.10.1\lib\Slicer-4.10\qt-scripted-modules\SubjectHierarchyPlugins\AbstractScriptedSubjectHierarchyPlugin.py:36) - Scripted subject hierarchy plugin registered: Annotations
[DEBUG][Python] 29.01.2019 11:13:26 [Python] (D:\Program Files\Slicer 4.10.1\lib\Slicer-4.10\qt-scripted-modules\SubjectHierarchyPlugins\AbstractScriptedSubjectHierarchyPlugin.py:36) - Scripted subject hierarchy plugin registered: SegmentEditor
[DEBUG][Python] 29.01.2019 11:13:26 [Python] (D:\Program Files\Slicer 4.10.1\lib\Slicer-4.10\qt-scripted-modules\SubjectHierarchyPlugins\AbstractScriptedSubjectHierarchyPlugin.py:36) - Scripted subject hierarchy plugin registered: SegmentStatistics
[DEBUG][Qt] 29.01.2019 11:13:26 [] (unknown:0) - Switch to module:  "Welcome"
[INFO][Stream] 29.01.2019 11:13:41 [] (unknown:0) - starting storescp process
[INFO][Stream] 29.01.2019 11:13:41 [] (unknown:0) - (u'Starting D:/Program Files/Slicer 4.10.1/bin/../bin\\storescp.exe with ', ['11112', '--accept-all', '--output-directory', u'C:/Users/chinl/OneDrive/Documentos\\SlicerDICOMDatabase/incoming', '--exec-sync', '--exec-on-reception', u'D:/Program Files/Slicer 4.10.1/bin/../bin\\dcmdump.exe --load-short --print-short --print-filename --search PatientName "C:/Users/chinl/OneDrive/Documentos\\SlicerDICOMDatabase/incoming/#f"'])
[INFO][Stream] 29.01.2019 11:13:41 [] (unknown:0) - process D:/Program Files/Slicer 4.10.1/bin/../bin\storescp.exe now in state Starting
[INFO][Stream] 29.01.2019 11:13:41 [] (unknown:0) - process D:/Program Files/Slicer 4.10.1/bin/../bin\storescp.exe now in state Running
[ERROR][VTK] 29.01.2019 11:15:07 [vtkITKArchetypeDiffusionTensorImageReaderFile (0000017CB56A6170): vtkITKArchetypeImageSeriesReader::ExecuteInformation: Cannot open D:/DAN 1_0000.nhdr. ITK exception info: error in unknown: itk::ERROR: NrrdImageIO(0000017CBB0781C0)] (D:\D\S\Slicer-4101\Libs\vtkITK\vtkITKArchetypeImageSeriesReader.cxx:622) - ReadImageInformation: Error reading D:/DAN 1_0000.nhdr:
[nrrd] nrrdLoad: trouble reading "D:/DAN 1_0000.nhdr"
[nrrd] nrrdRead: trouble
[nrrd] _nrrdRead: trouble reading NRRD file
[nrrd] _nrrdFormatNRRD_read: hit end of header, but no "data file" given
[ERROR][VTK] 29.01.2019 11:15:07 [vtkCompositeDataPipeline (0000017CBAD2EB40)] (D:\D\S\Slicer-4101-build\VTK\Common\ExecutionModel\vtkExecutive.cxx:782) - Algorithm vtkITKArchetypeDiffusionTensorImageReaderFile(0000017CB56A6170) returned failure for request: vtkInformation (0000017CBB2D35E0)
  Debug: Off
  Modified Time: 301563
  Reference Count: 1
  Registered Events: (none)
  Request: REQUEST_INFORMATION
  FORWARD_DIRECTION: 0
  ALGORITHM_AFTER_FORWARD: 1
[ERROR][VTK] 29.01.2019 11:15:07 [vtkITKArchetypeImageSeriesVectorReaderSeries (0000017CB56A52F0): vtkITKArchetypeImageSeriesReader::ExecuteInformation: Cannot open D:/DAN 1_0000.nhdr. ITK exception info: error in unknown: itk::ERROR: NrrdImageIO(0000017CBB075470)] (D:\D\S\Slicer-4101\Libs\vtkITK\vtkITKArchetypeImageSeriesReader.cxx:622) - ReadImageInformation: Error reading D:/DAN 1_0000.nhdr:
[nrrd] nrrdLoad: trouble reading "D:/DAN 1_0000.nhdr"
[nrrd] nrrdRead: trouble
[nrrd] _nrrdRead: trouble reading NRRD file
[nrrd] _nrrdFormatNRRD_read: hit end of header, but no "data file" given
[ERROR][VTK] 29.01.2019 11:15:07 [vtkCompositeDataPipeline (0000017CBAD2FEF0)] (D:\D\S\Slicer-4101-build\VTK\Common\ExecutionModel\vtkExecutive.cxx:782) - Algorithm vtkITKArchetypeImageSeriesVectorReaderSeries(0000017CB56A52F0) returned failure for request: vtkInformation (0000017CBB2CFB70)
  Debug: Off
  Modified Time: 303052
  Reference Count: 1
  Registered Events: (none)
  Request: REQUEST_INFORMATION
  FORWARD_DIRECTION: 0
  ALGORITHM_AFTER_FORWARD: 1
[ERROR][VTK] 29.01.2019 11:15:07 [vtkITKArchetypeImageSeriesVectorReaderFile (0000017CB56A5690): vtkITKArchetypeImageSeriesReader::ExecuteInformation: Cannot open D:/DAN 1_0000.nhdr. ITK exception info: error in unknown: itk::ERROR: NrrdImageIO(0000017CBB076280)] (D:\D\S\Slicer-4101\Libs\vtkITK\vtkITKArchetypeImageSeriesReader.cxx:622) - ReadImageInformation: Error reading D:/DAN 1_0000.nhdr:
[nrrd] nrrdLoad: trouble reading "D:/DAN 1_0000.nhdr"
[nrrd] nrrdRead: trouble
[nrrd] _nrrdRead: trouble reading NRRD file
[nrrd] _nrrdFormatNRRD_read: hit end of header, but no "data file" given
[ERROR][VTK] 29.01.2019 11:15:07 [vtkCompositeDataPipeline (0000017CBAD2FA40)] (D:\D\S\Slicer-4101-build\VTK\Common\ExecutionModel\vtkExecutive.cxx:782) - Algorithm vtkITKArchetypeImageSeriesVectorReaderFile(0000017CB56A5690) returned failure for request: vtkInformation (0000017CBB2D5070)
  Debug: Off
  Modified Time: 303147
  Reference Count: 1
  Registered Events: (none)
  Request: REQUEST_INFORMATION
  FORWARD_DIRECTION: 0
  ALGORITHM_AFTER_FORWARD: 1
[ERROR][VTK] 29.01.2019 11:15:07 [vtkITKArchetypeImageSeriesScalarReader (0000017CB56A6510): vtkITKArchetypeImageSeriesReader::ExecuteInformation: Cannot open D:/DAN 1_0000.nhdr. ITK exception info: error in unknown: itk::ERROR: NrrdImageIO(0000017CBB0779F0)] (D:\D\S\Slicer-4101\Libs\vtkITK\vtkITKArchetypeImageSeriesReader.cxx:622) - ReadImageInformation: Error reading D:/DAN 1_0000.nhdr:
[nrrd] nrrdLoad: trouble reading "D:/DAN 1_0000.nhdr"
[nrrd] nrrdRead: trouble
[nrrd] _nrrdRead: trouble reading NRRD file
[nrrd] _nrrdFormatNRRD_read: hit end of header, but no "data file" given
[ERROR][VTK] 29.01.2019 11:15:07 [vtkCompositeDataPipeline (0000017CBAD2FD10)] (D:\D\S\Slicer-4101-build\VTK\Common\ExecutionModel\vtkExecutive.cxx:782) - Algorithm vtkITKArchetypeImageSeriesScalarReader(0000017CB56A6510) returned failure for request: vtkInformation (0000017CBB2D25F0)
  Debug: Off
  Modified Time: 303930
  Reference Count: 1
  Registered Events: (none)
  Request: REQUEST_INFORMATION
  FORWARD_DIRECTION: 0
  ALGORITHM_AFTER_FORWARD: 1
[ERROR][VTK] 29.01.2019 11:15:07 [vtkMRMLNRRDStorageNode (0000017CB98F0F30)] (D:\D\S\Slicer-4101\Libs\MRML\Core\vtkMRMLNRRDStorageNode.cxx:189) - ReadData: This is not a nrrd file
[ERROR][VTK] 29.01.2019 11:15:07 [vtkMRMLVolumeArchetypeStorageNode (0000017CB8E0B5B0)] (D:\D\S\Slicer-4101\Libs\MRML\Core\vtkMRMLVolumeArchetypeStorageNode.cxx:379) - ReadData: Cannot read file as a volume of type DiffusionTensorVolume[fullName = D:/DAN 1_0000.nhdr]
	Number of files listed in the node = 0.
	File reader says it was able to read 1 files.
	File reader used the archetype file name of D:/DAN 1_0000.nhdr [reader 0th file name = D:/DAN 1_0000.nhdr]
FileFormatError
[ERROR][VTK] 29.01.2019 11:15:07 [vtkMRMLNRRDStorageNode (0000017CB98F6F40)] (D:\D\S\Slicer-4101\Libs\MRML\Core\vtkMRMLNRRDStorageNode.cxx:189) - ReadData: This is not a nrrd file
[ERROR][VTK] 29.01.2019 11:15:07 [vtkMRMLVolumeArchetypeStorageNode (0000017CB8E0B5B0)] (D:\D\S\Slicer-4101\Libs\MRML\Core\vtkMRMLVolumeArchetypeStorageNode.cxx:315) - ReadData: Failed to instantiate a file reader
[ERROR][VTK] 29.01.2019 11:15:07 [vtkMRMLVolumeArchetypeStorageNode (0000017CB8E0C690)] (D:\D\S\Slicer-4101\Libs\MRML\Core\vtkMRMLVolumeArchetypeStorageNode.cxx:379) - ReadData: Cannot read file as a volume of type Volume[fullName = D:/DAN 1_0000.nhdr]
	Number of files listed in the node = 0.
	File reader says it was able to read 1 files.
	File reader used the archetype file name of D:/DAN 1_0000.nhdr [reader 0th file name = D:/DAN 1_0000.nhdr]
FileFormatError

It seems that the file that you created is not valid (maybe end-of-line character is not what is expected or a new-line is missing from the end of the file, etc). You can download a working header file from here: https://1drv.ms/u/s!Arm_AFxB9yqHtuR5XyPS9kbrOrCPIA

Thanks for your answer. Stupid thing, but just adding a new empty line after the name of the mvl file :thinking:

1 Like

I followed along with your instructions to create the .nhdr file which I can now at least get the .mvl file from our Samsung RS85 loaded in as a volume. Question is what’s the easiest way to figure out the proper pixel start position and x y z size and spacing? I’ve tried just randomly changing the image spacing and origin with no success. Just see a bunch of white lines and dots. Any help is appreciated. Thanks!

A module was developed last week at the Slicer project week for finding out image dimensions: https://github.com/acetylsalicyl/SlicerRawImageGuess

The module could be improved to generate a .mhd header from the determined values.

@nagy.attila

Is there a trick to getting that extension loaded? I downloaded the rawimageguessmaster.zip and tried loading it in the extension manager. I keep getting an error:
No extension description found in archive ‘C:/Users/en12283/Downloads/SlicerRawImageGuess-master.zip’

I also extracted the files and tried that and it’s still not working. I’m sure I’m doing something wrong. Thanks again!

See instructions here: https://www.slicer.org/wiki/Documentation/Nightly/ScriptRepository#Community-contributed_modules

@nagy.attila Would you mind clean up and document the module and submit to the extension index so that people can more easily access it?

@e36alpine following the instructions is quite easy. You have to extract that zip wherever you want, and add the folders where every py file is from slicer/application settings/modules/aditional module paths. Restart slicer and that is.

By the way, I need some help using this module… How can we open mvl files with this module? I mean, when I load with this module ie the uss I’ve uploaded previously I get nothing on the screen even playing with the sliders and setting the same parameters of the nrrd file created. A couple of weeks ago I remembered I could see the images without touching any setting but know is impossible. I tried reinstalling everything again without success.

Hi Lassoan
Andras Lasso, is there any extension of 3D SLICER to read the .mvl file at present

Slicer currently cannot automatically load Samsung .mvl ultrasound files. Request your Samsung representative to provide you with an option to save images in DICOM or other open standard data format; or release specification of their proprietary file format.

However, you can still use https://github.com/acetylsalicyl/SlicerRawImageGuess extension to manually determine the image size and load the image.