general-discussion > niak_coord_world2vox problem
Showing 1-2 of 2 posts
Sep 8, 2011 09:09 PM | Alexis Machado
niak_coord_world2vox problem
First sorry for the french language:
Bonjour Pierre
Nous utilisons la version niak enregistre dans
'/data/aces/aces1/pbellec/public/basc-10-2010
Jai une image minc: XXX.mnc dont voici la description
Lorsque je fais mincinfo jai:
image dimensions: xspace zspace yspace
dimension name length step start
-------------- ------ ---- -----
xspace 176 1 -87.5
yspace 240 -1 140
zspace 256 -1 128
Lorsque je fais:
mincinfo -attvalue xspace:direction_cosines XXX.mnc
1 -0 0
mincinfo -attvalue yspace:direction_cosines XXX.mnc
0 1 -0
mincinfo -attvalue zspace:direction_cosines XXX.mnc
0 0 1
Jai des coordonnees d'optodes NIRS dans le referenciel world ( source en rouge
detecteurs en bleu sur les images). je veux les exprimer dans un repere voxel
pour les afficher sous matlab avec la segmentation de la peau du sujet (
extraite avec les outils mfip MEG )
Voici la procedure suivi:
1- Recuperer la matrice de transformation voxel-world:
[HDR,VOL] = niak_read_vol('PA80_mri.mnc'); %
>>HDR.info.dimension_order='yzx'
>>HDR.info.dimension=[240 256 176]
>>HDR.info.mat=
0 0 1 -87.5000000000000
-1 0 0 140
0 -1 0 128
0 0 0 1
On peut remarquer dans cette derniere matrice que la base (que jappelle ux uy uz) world (lignes) est
ordonnee ux uy uz alors que la base voxel (colonnes) que jappelle ex ey ez est
ordonnees ey ez ex (Cela parait coherent avec HDR.info.dimension_order).
La derniere colonne represente startx starty startz ( voir mincinfo)
2- Tansformer les coordonnes world en coordonnees voxels avec la fonction niak_coord_world2vox
opt.flag_zero='true';
opt.flag_round='true';
srcPos=niak_coord_world2vox(srcPos,HDR.info.mat,opt);
detPos=niak_coord_world2vox(detPos,HDR.info.mat,opt);
3-Matlab indice correction ( typique a notre application)
srcPos=-srcPos;
detPos=-detPos;
4- Affichage : on a un probleme de recalage ( Comme si on avait des
rotations non correctes)
jai cependant trouve une solution :
La matrice HDR.info.mat ne me semblait pas correcte par rapport a ce que jai pu
voir en litterature je lai donc change manuellement pour tester. Les dimensions sont ordonnees ux uy uz pour les lignes (espace world) et ex ey
ez pour les colonnes (espace voxel) ce qui donne:
HDR.info.mat=[1 0 0 -87.5;
0 -1 0 140 ;
0 0 -1 128
0 0 0 1];
Et la en appliquant les etapes 2 3 4 jarrive alors a un bon recalage : voir
figure )
Le mem phenomene a ete observe chez un autre sujet
Penses tu pouvoir me dire d'ou vient ce comportement:
Est ce un bug de la fonction niak?
Une mauvaise utilisation ou comprehension du processus de transformation ?
Merci beaucoup
Alexis
Bonjour Pierre
Nous utilisons la version niak enregistre dans
'/data/aces/aces1/pbellec/public/basc-10-2010
Jai une image minc: XXX.mnc dont voici la description
Lorsque je fais mincinfo jai:
image dimensions: xspace zspace yspace
dimension name length step start
-------------- ------ ---- -----
xspace 176 1 -87.5
yspace 240 -1 140
zspace 256 -1 128
Lorsque je fais:
mincinfo -attvalue xspace:direction_cosines XXX.mnc
1 -0 0
mincinfo -attvalue yspace:direction_cosines XXX.mnc
0 1 -0
mincinfo -attvalue zspace:direction_cosines XXX.mnc
0 0 1
Jai des coordonnees d'optodes NIRS dans le referenciel world ( source en rouge
detecteurs en bleu sur les images). je veux les exprimer dans un repere voxel
pour les afficher sous matlab avec la segmentation de la peau du sujet (
extraite avec les outils mfip MEG )
Voici la procedure suivi:
1- Recuperer la matrice de transformation voxel-world:
[HDR,VOL] = niak_read_vol('PA80_mri.mnc'); %
>>HDR.info.dimension_order='yzx'
>>HDR.info.dimension=[240 256 176]
>>HDR.info.mat=
0 0 1 -87.5000000000000
-1 0 0 140
0 -1 0 128
0 0 0 1
On peut remarquer dans cette derniere matrice que la base (que jappelle ux uy uz) world (lignes) est
ordonnee ux uy uz alors que la base voxel (colonnes) que jappelle ex ey ez est
ordonnees ey ez ex (Cela parait coherent avec HDR.info.dimension_order).
La derniere colonne represente startx starty startz ( voir mincinfo)
2- Tansformer les coordonnes world en coordonnees voxels avec la fonction niak_coord_world2vox
opt.flag_zero='true';
opt.flag_round='true';
srcPos=niak_coord_world2vox(srcPos,HDR.info.mat,opt);
detPos=niak_coord_world2vox(detPos,HDR.info.mat,opt);
3-Matlab indice correction ( typique a notre application)
srcPos=-srcPos;
detPos=-detPos;
4- Affichage : on a un probleme de recalage ( Comme si on avait des
rotations non correctes)
jai cependant trouve une solution :
La matrice HDR.info.mat ne me semblait pas correcte par rapport a ce que jai pu
voir en litterature je lai donc change manuellement pour tester. Les dimensions sont ordonnees ux uy uz pour les lignes (espace world) et ex ey
ez pour les colonnes (espace voxel) ce qui donne:
HDR.info.mat=[1 0 0 -87.5;
0 -1 0 140 ;
0 0 -1 128
0 0 0 1];
Et la en appliquant les etapes 2 3 4 jarrive alors a un bon recalage : voir
figure )
Le mem phenomene a ete observe chez un autre sujet
Penses tu pouvoir me dire d'ou vient ce comportement:
Est ce un bug de la fonction niak?
Une mauvaise utilisation ou comprehension du processus de transformation ?
Merci beaucoup
Alexis
Sep 13, 2011 11:09 PM | Alexis Machado
RE: niak_coord_world2vox problem : Solved
Problem Solved
Bonjour
Nous avons finament regle le probleme qui venait de lexportation des coordonnees sous brainvisa
Apres verification le code niak_coord_world2vox .m ne contient vraisemblablement aucun bugs
Desole pour le post
Alexis
Bonjour
Nous avons finament regle le probleme qui venait de lexportation des coordonnees sous brainvisa
Apres verification le code niak_coord_world2vox .m ne contient vraisemblablement aucun bugs
Desole pour le post
Alexis
