Indeed - also, there may be an issue with your version of FSLView not
starting with a correct intensity display range, you might try
changing that by hand - the next version will solve that.
Cheers.
On 26 May 2007, at 16:37, Ged Ridgway wrote:
> Hi,
>
> Isn't this just the standard NIfTI intensity mapping using
> "scl_slope" of 0.00326 (and scl_inter, which I assume here is 0)?
>
> avwhd spm5/templates/EPI.nii | grep -E 'data_type|scl'
> data_type UINT8
> scl_slope 0.003260
> scl_inter 0.000000
>
> E.g. using Matlab/SPM5:
>
> V = spm_vol(fullfile(spm('Dir'),'templates','EPI.nii'))
> img = spm_read_vols(V);
> max(img(:))
> fid = fopen(V.fname);
> dat = fread(fid, inf, 'uint8');
> max(dat)
> max(dat)*V.pinfo(1)
>
> shows the behaviour I'd expect. max(dat) is 255, but the image
> intensities read in via spm_read_vols (and presumably FSL?) are
> scaled by scl_slope. This is helpful with e.g. spm5/tpm/grey.nii
> where the scaling allows meaningful 0-to-1 probabilities to be
> stored as UINT8.
>
> By copying all the header information, including scl_slope, your
> binary 1 maps to 1*scl_slope or 0.003260.
>
> avwmaths is then casting this to zero, instead of setting an
> appropriate scl_slope on the output volume. I'm not sure if this is
> a bug or a feature... Though I believe SPM5 usually recomputes
> scl_slope for the output volume so that the raw data can be
> efficiently stored in the chosen data-type, while the intensities
> remain the same.
>
> In any case, feature or bug, if you make scl_slope 1 in your binary
> mask header, all should be well. E.g. use avwedithd.
>
> HTH,
> Ged
>
>
> Alle Meije Wink wrote:
>> That is what I found strange as well!
>> As I said earlier, I know how segmented.nii is written, I know
>> that there are only 0 and 1 voxels in that image. I opened it in
>> MriCro though, and all the in-mask voxels show value 1 / .003260
>> (I guess that means the vvalue stored in the voxel array is 1, but
>> in some way this represents 0.003260).
>> The header is cloned from the template. I know that is not the
>> `cleanest' way to go about. That's probably why the range etc are
>> not set to 0..1.
>> Fact is that before avwmaths++ I see the shape of the mask, and
>> voxels that are stored as 1. After avwmaths they are gone, so more
>> happens than just a type conversion. Probably header information
>> is used?
>> Where should I send the data, if you want to have a look?
>> Thanks
>> AM
>> Christian Beckmann wrote:
>>> Hi,
>>>
>>> Your segmented.nii does not appear to be a binary image at all,
>>> the robust range is 0 - 0.003260. How did you deal with the
>>> header information in the new image then? Did you simply clone
>>> the header from the epi template? This also already appears to be
>>> inconsistent wrt to it's range and the data type. ? Maybe it's
>>> indeed worthwhile to upload the data. What happens when you load
>>> the original epp.nii and segmented.nii into fslview - what values
>>> are reporte? The behaviour of avwstats++ is as I expect it to be
>>> - all values are cast to 0.
>>> cheers
>>> christian
>>>
>>>
>>>
>>> On 25 May 2007, at 23:16, Alle Meije Wink wrote:
>>>
>>>> Hi Christian,
>>>>
>>>> Hmm, well I did the same now with the diagnostics on our EPI
>>>> template (which is basically the MNI template, but thresholded
>>>> for air and with the eyes removed). That is a 16-bit image.
>>>>
>>>> ================================================
>>>> $ export FSLOUTPUTTYPE=NIFTI
>>>> $ avwhd++ EPI.nii | head -4
>>>> filename EPI.nii
>>>>
>>>> sizeof_hdr 348
>>>> data_type INT16
>>>> $ avwstats++ EPI.nii -r -R
>>>> 0.000000 0.547875 0.000000 0.831373
>>>> $ segmentIm EPI.nii
>>>> segmented image segmented.nii written (2 regions [1 clusters])
>>>> $ avwhd++ segmented.nii | head -4
>>>> filename segmented.nii
>>>>
>>>> sizeof_hdr 348
>>>> data_type INT16
>>>> $ avwstats++ segmented.nii -r -R
>>>> 0.000000 0.003260 0.000000 0.003260
>>>> $ avwmaths++ segmented.nii segmentedBYTE.nii -odt char
>>>> $ avwhd++ segmentedBYTE.nii.gz |head -4
>>>> filename segmentedBYTE.nii
>>>>
>>>> sizeof_hdr 348
>>>> data_type UINT8
>>>> $ avwstats++ segmentedBYTE.nii -r -R
>>>> 0.000000 0.000000 0.000000 0.000000
>>>> ================================================
>>>>
>>>> So first the diagnostics on the template. It's a 16-bit image.
>>>> Its voxel values are just the same as the 8-bit MNI template, so
>>>> not sure what the output of avwstats means.
>>>> After that, segmenting the EPI template. 2 regions: the
>>>> background and the brain. The diagnostics: still 16-bit data
>>>> type, voxel values are 0 and 1 (I wrote the program that wrote
>>>> the voxels), again not sure what avwstats output means.
>>>> After that, cast the segmented image to char. The header shows
>>>> that the data type has been changed. The stats show zero all...
>>>>
>>>> There's more happening there than just a type cast!!!!
>>>>
>>>> How can a integer-valued image have these float-valued stats?
>>>>
>>>> Would it help if I send you the images involved?
>>>>
>>>> I'm running
>>>> Linux 3 2.6.10-1.771_FC2smp #1 SMP Mon Mar 28 01:10:51 EST 2005
>>>> i686 i686 i386 GNU/Linux
>>>>
>>>> And the FSL I'm using for this is a compiled version of FSL-3.3.8
>>>>
>>>> Thanks,
>>>> Alle Meije
>>>>
>>>> Christian Beckmann <[log in to unmask]> wrote: Hi,
>>>>
>>>> I can't replicate this on my laptop (mac os x). Instead, it
>>>> works as
>>>> expected - if I create a binary mask and then do the type
>>>> conversion
>>>> I still have the mask intact. AFAIK avwmaths does not use division
>>>> but simply casts the values to the required type in the ususal c+
>>>> + way.
>>>>
>>>> Here is what I did:
>>>> i) load in avg152 in fslview and create a binary mask, save this to
>>>>
>>>> [Josi:~] avwhd avg152T1_brain-mask.nii.gz
>>>> filename avg152T1_brain-mask.nii.gz
>>>> sizeof_hdr 348
>>>> data_type INT16
>>>> ...
>>>>
>>>> This is a binary file:
>>>>
>>>> [Josi:~] avwstats avg152T1_brain-mask.nii.gz -r -R
>>>> 0.000000 1.000000 0.000000 1.000000
>>>>
>>>> When using avwmaths++ to convert the file
>>>>
>>>> [Josi:~] avwmaths++ avg152T1_brain-mask.nii.gz test -odt char
>>>>
>>>> it remains a binary mask
>>>> [Josi:~] avwstats test -r -R
>>>> 0.000000 1.000000 0.000000 1.000000
>>>>
>>>> and has the desired type
>>>>
>>>> [Josi:~] avwhd test
>>>> filename test.nii.gz
>>>> sizeof_hdr 348
>>>> data_type UINT8
>>>> ...
>>>>
>>>> I guess we need to investigate - what platform are you running this
>>>> on and did you compile yourself?
>>>> cheers
>>>> christian
>>>>
>>>>
>>>> Yahoo! Mail is the world's favourite email. Don't settle for
>>>> less, sign up for your free account today.
>>>
>>> ____
>>> Christian F. Beckmann
>>> University Research Lecturer
>>> Oxford University Centre for Functional MRI of the Brain (FMRIB)
>>> John Radcliffe Hospital, Headington, Oxford OX3 9DU, UK.
>>> [log in to unmask] http://www.fmrib.ox.ac.uk/~beckmann
>>> tel: +44 1865 222551 fax: +44 1865 222717
>>>
------------------------------------------------------------------------
---
Stephen M. Smith, Professor of Biomedical Engineering
Associate Director, Oxford University FMRIB Centre
FMRIB, JR Hospital, Headington, Oxford OX3 9DU, UK
+44 (0) 1865 222726 (fax 222717)
[log in to unmask] http://www.fmrib.ox.ac.uk/~steve
------------------------------------------------------------------------
---
|