External Email - Use Caution        

That's great to hear!

One gotcha I just noticed: the vertex indices we compute there (your 'k', my 
'mbc') are zero-based, and both R and Matlab use one-based indexing.

So we must add 1 to all of them to get the correct voxels from the volume!

It should be 

   brain[mbc+1] = 255L;

in my version, and

   k = k+1

in yours (step 9).

Best,

Tim



> On April 21, 2020 at 9:17 AM "Safi Ullah ." <[email protected]> wrote:
> 
> 
>         External Email - Use Caution        
> 
> Thank you Dr.Tim
> 
> I figured out the issue just an hour ago. I was saving the memory and using
> int8(xyz) which restricted the values to [-128 to 127]. I was to post my
> solution.
> 
> Thankyou so much
> 
> Regards,
> 
> Safi
> 
> On Tue, Apr 21, 2020 at 4:06 PM Tim Schäfer <[email protected]> wrote:
> 
> >         External Email - Use Caution
> >
> > Hi Safi,
> >
> > you definitely need the inverse tkr_vox2ras transform, that is correct.
> > Also your approach in general seems fine, I tried it in R, and I get the
> > expected results:
> >
> > (My subject is called 'subject1', and I put the created midbrain label
> > into 'label/mdb.label' in its directory.)
> >
> > ---------------
> > library("fsbrain")
> > library("freesurferformats")
> >
> > # load label and apply ras2vox to the coords to get voxel indices
> > lbl = read.fs.label("~/data/subject1_only/subject1/label/mdb.label",
> > full=TRUE)
> > coords = cbind(lbl$vertexdata$coord1, lbl$vertexdata$coord2,
> > lbl$vertexdata$coord3)
> > mbc = apply.transform(coords, ras2vox_tkr())
> >
> > # load the brain volume and mark the midbrain voxels
> > brain = read.fs.mgh("~/data/subject1_only/subject1/mri/brain.mgz",
> > drop=TRUE)
> > brain[mbc] = 255L; # mark the midbrain region in white (full intensity)
> >
> > volvis.lightbox(vol.boundary.box(brain,apply = T)/255)
> > # see attached image, the white part is the label
> > ---------------
> >
> >
> > I would check first whether the values in 'mdb_label_inv' and 'mdb_label'
> > make sense. E.g., are the former all positive integers, and is the length
> > of both matrices equal to the number of voxels in your midbrain label.
> >
> > Best,
> >
> > Tim
> >
> > --
> > Dr. Tim Schäfer
> > Postdoc Computational Neuroimaging
> > Department of Child and Adolescent Psychiatry, Psychosomatics and
> > Psychotherapy
> > University Hospital Frankfurt, Goethe University Frankfurt am Main, Germany
> >
> >
> > > On April 20, 2020 at 11:37 AM "Safi Ullah ." <[email protected]>
> > wrote:
> > >
> > >
> > >         External Email - Use Caution
> > >
> > > Hello Programmers and Freesurfer Experts,
> > > Can any body please help me? Specially programmers are requested. I want
> > to
> > > copy the voxels values from a volume (which is read in a matlab struct)
> > > using the coordinates given in the label file. which transformation do i
> > > need to correctly map the coordinates from label file over to  mri.vol
> > > matrix?
> > >
> > > Warm Regards,
> > >
> > > Safi
> > >
> > >
> > > On Mon, Apr 20, 2020 at 12:12 AM Safi Ullah . <[email protected]>
> > wrote:
> > >
> > > > Thank you Doug,
> > > > I tried all the transformation matrices (although as per case 1 of the
> > > > referred link, i need only inv(tkrvox2ras) which is present in the MRI
> > > > struct). but no one is able to map to the desired label location.
> > > > Let me explain my scenario little more, may be i am missing something.
> > > > *My Task:* I want to find out the coordinates of a certain tissue, let
> > > > say midbrain, which can be used in matlab to read/process the tissue
> > voxel
> > > > values.
> > > > *My Pipeline:*
> > > > *Step 1*>   recon-all -all -i
> > > >
> > $SUBJECTS_DIR/PPMI_3817_MR_T1-anatomical_Br_20140129144055847_S184115_I410987.nii
> > > > -s test -brainstem-structures     %
> > > > PPMI_3817_MR_T1-anatomical_Br_20140129144055847_S184115_I410987.nii is
> > the
> > > > volume, downloaded from PPMI. As I am interested in midbrain only, so
> > using
> > > > the -brainstem-substructure flag.
> > > > *Step 2*> recon-all -s test -brainstem-structures
> > > > *Step 3*> mri_vol2label --c
> > > > $SUBJECTS_DIR/test/mri/brainstemSsLabels.v10.FSvoxelSpace.mgz --id 173
> > --l
> > > > mdb.label
> > > > Now at matlab command line
> > > > *Step 4*> mri_segtd =
> > > > MRIread('path/to/test/mri/brainstemSsLabels.v10.FSvoxelSpace.mgz');   %
> > > > mri_segtd is a matlab struct containing transformation matrices and
> > > > volumetric data e.t.c.
> > > > *Step 5*> mdb_label = read_label(path/to/mdb.label);
> > > > *Step 6*> mdb_label(:,4) = 1 ;  % to make the label file ready for
> > > > transformation (following the instructions of the referred link)
> > > >
> > > > Now if I want to copy the voxels data from
> > > > brainstemSsLabels.v10.FSvoxelSpace.mgz into a test matrix as per the
> > > > coordinates given in label matrix mdb_label
> > > > *Step 7*> test_vol =  mri_segtd.vol*0 ; %to create a blank matrix of
> > same
> > > > size of MRI volume
> > > > *Step 8*> Now transforming mdb_label using tkrvox2ras transformation
> > > > matrix
> > > > > mdb_label_inv = int8(inv(mri_segtd.tkrvox2ras)*mdb_label');
> > > > *Step 9*> Now copying the voxel data from  mri_segtd to test_vol
> > > > > for i = 1:length( mdb_label )
> > > > >        k =  mdb_label_inv(i,:,:,:);
> > > > >        test_vol(k(1),k(2),k(3)) = mri_segtd(k(1),k(2),k(3));
> > > > > end
> > > >
> > > > Now when I view the resultant test_vol and the original segmented vol
> > mri_segtd
> > > > using imshow or imshow3d (
> > > >
> > https://www.mathworks.com/matlabcentral/fileexchange/47463-imshow3dfull)
> > > > both are not same, which meant the coordinates in the  mdb_label_inv
> > are
> > > > incorrect.
> > > > even when I tried  test_vol(k(1),k(2),k(3)) = 1; to check whether the
> >  mdb_label_inv
> > > > matrix carry the midbrain shape or not, that was even not correct.
> > please
> > > > look at the attached images.
> > > > I also tried other transformation matrices given in the struct. but no
> > > > success.
> > > >
> > > > [image: image.png]
> > > > Any help shall be highly appreciated.
> > > >
> > > > Warm Regards,
> > > >
> > > > Safi
> > > >
> > > > On Thu, Apr 16, 2020 at 1:04 AM Douglas N. Greve <
> > [email protected]>
> > > > wrote:
> > > >
> > > >>
> > > >>
> > > >> On 4/15/2020 11:17 AM, Safi Ullah . wrote:
> > > >>
> > > >>         External Email - Use Caution
> > > >> Dear Freesurfers,
> > > >>
> > > >> I recently started working on an brain sMRI related project. I have a
> > > >> minor (may be a major) issue.
> > > >> when I generate label files for a tissue e.g midbrain by using the
> > > >> command
> > > >> mri_vol2label --c $SUBJECTS_DIR/bert/mri/brainstemSsLabels.v10.mgz
> > --id
> > > >> 173
> > > >> --l midbrain.label
> > > >>  or in voxel space
> > > >> mri_vol2label --c
> > > >> $SUBJECTS_DIR/bert/mri/brainstemSsLabels.v10.FSvoxelSpace.mgz --id
> > 173 --l
> > > >> midbrain1.label
> > > >> 👉Now I want to lad the label file and the MRI volume,
> > > >> brainstemSsLabels.v10 , in Matlab (I can do this by using MRIread
> > > >> function given in FSmatlab directory. the function read mri in a
> > matlab
> > > >> struct, which along with other info also contain a 'vol' 3D data
> > matrix)
> > > >>
> > > >> read_label.m will read in the label
> > > >> MRIread.m will load the volume
> > > >>
> > > >> 👉 Using the coordinates given in label file, how to extract a
> > specific
> > > >> slice, row, column from a matlab matrix? as the label file need some
> > > >> transformation, I dont know this part.
> > > >>
> > > >> See this page for converting between coordinates
> > > >> https://surfer.nmr.mgh.harvard.edu/fswiki/CoordinateSystems
> > > >>
> > > >>
> > > >> Any help shall be highly appreciated.
> > > >>
> > > >> Regards,
> > > >>
> > > >> Safi
> > > >>
> > > >>
> > > >> <
> > https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon>
> > Virus-free.
> > > >> www.avast.com
> > > >> <
> > https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link
> > >
> > > >>
> > > >> _______________________________________________
> > > >> Freesurfer mailing [email protected]://
> > mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
> > > >>
> > > >>
> > > >> _______________________________________________
> > > >> Freesurfer mailing list
> > > >> [email protected]
> > > >> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
> > > >
> > > >
> > > _______________________________________________
> > > Freesurfer mailing list
> > > [email protected]
> > > https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
> > _______________________________________________
> > Freesurfer mailing list
> > [email protected]
> > https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
> _______________________________________________
> Freesurfer mailing list
> [email protected]
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer

-- 
Tim Schäfer

_______________________________________________
Freesurfer mailing list
[email protected]
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer

Reply via email to