Azzera filtri
Azzera filtri

problem with reading MRI image (dicom)

12 visualizzazioni (ultimi 30 giorni)
D C
D C il 19 Dic 2012
Risposto: abdalla gad il 24 Giu 2015
I use dicomread function and then the matrix seems to be ok(includes numbers >0), but when i want to display image using imshow function matlab always displays black background. I didn't have this problem with CT images. Did you have any problems like that?

Risposta accettata

Matt Kindig
Matt Kindig il 19 Dic 2012
Hi D C,
It's probably just a display issue. When using imshow, try setting the DisplayRange to autoscale, i.e.
imshow( DICOM_Matrix, 'DisplayRange', []);
  2 Commenti
D C
D C il 19 Dic 2012
It works! Thank you! But could you explain why this parameter 'DisplayRange' was needed?
Image Analyst
Image Analyst il 19 Dic 2012
It's not - you can use just [] alone. See my answer below.

Accedi per commentare.

Più risposte (4)

Image Analyst
Image Analyst il 19 Dic 2012
You probably have a uint16 image and are only using a small fraction of the 65535 allowable gray levels. If you don't specify a display range, it will put 0 to 0 on the display, and 65535 to 255 on the display (255 is the most an 8/24/32 bit color display can display). So if your max value is, say, 3000, it will show up as 3000/65535*255 = 12 gray levels and will be very dark - practically invisible. To have it autoscale so that the 3000 will get mapped to 255, use [], like this:
imshow(yourImageArray, []);
This will also work for floating point (single, double) images, which normally will show up as all white because it expects floating point images to be in the range 0-1. Do this and tell me what it says:
whos yourImageArray
max(yourImageArray(:)) % Don't use a semicolon
min(yourImageArray(:))
  4 Commenti
D C
D C il 19 Dic 2012
Modificato: D C il 19 Dic 2012
MRI has a range 0-50 and CT has a range -2260 to 2467, so I guess I'm unable in this case to compare/fuse images?
Image Analyst
Image Analyst il 19 Dic 2012
Why not? Why can't you just scale them with mat2gray()?

Accedi per commentare.


D C
D C il 20 Dic 2012
I meant I have to convert one of them. Thank you for all your help! That was pretty useful!

Wes
Wes il 9 Apr 2013
Hi there,
It seems like I have a similar problem with reading DICOMs. I have stored T2* maps in DICOM files (it is a long scan, so I have about 240 time points of each map). Matlab reads it in such a strange way, windowing however it's pleased ;-) For me, the important bit is to retain the actual voxel value when I read in images, so absolutely no scaling can be done by Matlab. Any idea how to achieve that?
Thanks!

abdalla gad
abdalla gad il 24 Giu 2015
hi.. plz i want to have code for read 3d mri dicom files

Categorie

Scopri di più su MRI in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by