Hemispheres merge

AIMS library and commands usage

Moderators: riviere, denghien

richards
Posts: 21
Joined: Mon Jun 12, 2006 3:21 pm

Hemispheres merge

Postby richards » Tue Jun 27, 2006 12:36 pm

Hi,

I have done a segmentation of a MRI picture of brain, so i got two different GIS pictures (one for left, one for right hemisphere).

But i want with to merge those two pictures to make only one with both hemispheres of the brain.

Does someone know if there is an Aims or Vip command able to do that ?

User avatar
Jean-Francois Mangin
Posts: 337
Joined: Mon Mar 01, 2004 10:24 am
Location: Neurospin, CEA, France
Contact:

Postby Jean-Francois Mangin » Tue Jun 27, 2006 12:50 pm

Try VipMerge or AimsMerge wiith the right options.
To Merge two grey level volume images, this sjould work:
"VipMerge -i image1 -m image2 -c s -o result".
Do "VipMerge -h" to know more

richards
Posts: 21
Joined: Mon Jun 12, 2006 3:21 pm

Postby richards » Tue Jun 27, 2006 1:12 pm

ok thank you !!

but i have another question

do you know if there is a way to remove the "white matter" on each hemisphere ?

with "remove" i mean to make the "white matter" in the black color

User avatar
Jean-Francois Mangin
Posts: 337
Joined: Mon Mar 01, 2004 10:24 am
Location: Neurospin, CEA, France
Contact:

Postby Jean-Francois Mangin » Tue Jun 27, 2006 2:34 pm

You can find some grey/white classification images in the pipeline.
A low tech one: L or Rgrey_white_ammon.ima,
A high tech one dedicated to the spherical grey/white interface.
R or Lcortex_ammon.ima.
A priori, the first one is more reliable, but this depends
on the quality of your data.

IF you want only grey matter, you can do a threshold:
"VipSingleThreshold -i image -t value_of_grey -mode eq -color b -o result"

To find more useful commandlines go there:
http://brainvisa.info/doc/html/shfjcomm ... mands.html

richards
Posts: 21
Joined: Mon Jun 12, 2006 3:21 pm

Postby richards » Tue Jun 27, 2006 4:51 pm

yes it perfectly worls with VipSingleThreshold !!

thank you !!

User avatar
Yann Cointepas
Posts: 316
Joined: Tue Jan 20, 2004 2:56 pm
Location: Neurospin, Saint Aubin, France
Contact:

Postby Yann Cointepas » Tue Jun 27, 2006 5:31 pm

I would recomand to use the more up-to-date AimsThreshold command:

Code: Select all

AimsThreshold -i image -t value_of_grey -m eq -b -o result

salemhannoun
Posts: 7
Joined: Tue Mar 27, 2007 2:08 pm
Location: france
Contact:

error in execution

Postby salemhannoun » Tue May 22, 2007 2:27 pm

hi,
i'm trying to write a code on python to add it like the pipeline of segmentation.
i used the same functions that u said before. but i'm not a good programer, so whenever i excecute they say that it is not working.
this is the code i used:

from neuroProcesses import *
import shfjGlobals, shelltools

name = 'Extract Grey and white matter'
userLevel=0

signature=Signature(
'left_grey_white', ReadDiskItem( 'Left Grey White Mask', 'GIS Image' ),
'right_grey_white', ReadDiskItem( 'Right Grey White Mask', 'GIS Image' ),
'grey', WriteDiskItem( 'Grey White Mask', 'GIS Image' ),
'white', WriteDiskItem( 'Grey White Mask', 'GIS Image' ),
)


# def initialization( self ):



def execution( self, context ):
temp = context.temporary ( 'GIS Image' )
context.system( 'VipMerge', '-i', self.left_grey_white, '-m',
self.right_grey_white, '-c', 's', '-o',
temp )
context.system( 'AimsThreshold', '-i', temp, '-t',
50, '-m', 'eq', '-b', 'o', self.grey() )
context.system( 'AimsThreshold', '-i', temp, '-t',
100, '-m', 'eq', '-b', 'o',
self.white() )


can u tell me what is wrong and what should i do?
with this code, i'm trying to merge 2 images that i got from the pipeline 2004 left anf right grey and white matter, then extract only the white matter and in another image only the grey matter

thank you a lot for ur help

User avatar
riviere
Site Admin
Posts: 1358
Joined: Tue Jan 06, 2004 12:21 pm
Location: CEA NeuroSpin, Saint Aubin, France
Contact:

Postby riviere » Wed May 23, 2007 2:13 am

Hi,
Well, we normally do not have time to debug everybody's programs... especially if the exact error message is not provided: "it is not working" is just not enough for us to understand where and why your program fails (and here python indentation is not preserved so we cannot see if it is OK or not).
But just at first glance, it seems that you are using processes parameters as functions (or methods): self.grey(), but they are not functions actually: they are variables: self.grey would work better here.
Denis

User avatar
Yann Cointepas
Posts: 316
Joined: Tue Jan 20, 2004 2:56 pm
Location: Neurospin, Saint Aubin, France
Contact:

Postby Yann Cointepas » Wed May 23, 2007 3:36 pm

Whenever you use a DiskItem object in a system call (for instance temp, self.left_grey_white, self.grey, etc. in your process), I would recommand to use fullPath method for Aims commands and fullName method for Vip commands. The difference is that fullName does not include the file extension (Vip commands do not want the extension). Here is a quickly copy/pasted/modified sample of your process:

context.system( 'VipMerge', '-i', self.left_grey_white.fullName(), '-m',
self.right_grey_white.fullName(), '-c', 's', '-o',
temp.fullName() )
context.system( 'AimsThreshold', '-i', temp.fullPath(), '-t',
50, '-m', 'eq', '-b', 'o', self.grey.fullPath() )
context.system( 'AimsThreshold', '-i', temp.fullPath(), '-t',
100, '-m', 'eq', '-b', 'o',
self.white.fullPath() )

However, fullPath usage is not mandatory(since it is impicitely used when a DiskItem is converted to a string to build the command line. In that case you can directly use the DiskItem without parentheses.

salemhannoun
Posts: 7
Joined: Tue Mar 27, 2007 2:08 pm
Location: france
Contact:

Postby salemhannoun » Thu May 24, 2007 4:42 pm

bonjour,
premièrement merci pour votre aide.
j'ai fait ce que vous m'aviez dit, j'ai reécrit le code que vous m'avez donné mais ca n'a pas marché, il m'a donné le message d'erreur suivant:

Traitement Extract Grey and white matter 1 démarré sur 2007/05/24 17:35<bound method File.fullPath of 'C:\\Program Files\\SHFJ_pack-stable-win32-3.0.2\\a.ima'> is not a valid number


dans Extract Grey and white matter 1 RuntimeError: Commande système terminée avec une valeur non nulle : 1

neuroProcesses.py (1641) in _processExecution:
result = process.execution( self )
ExtractGreyWhite.py (59) in execution:
50, '-m', 'eq', '-b', 'o', self.grey.fullPath )
neuroProcessesGUI.py (932) in system:
ret = apply( ExecutionContextGUI.system, (self,) + args, kwargs )
neuroProcesses.py (1721) in system:
raise RuntimeError( _t_( 'System command exited with non null value : %s' ) % str( ret ) )



j'ai essayer les 2 methodes avec et sans les parenthèses pres de fullpath, mais il me dit la même chose.
que dois-je faire?
je vous remercie pour l'aide

salemhannoun
Posts: 7
Joined: Tue Mar 27, 2007 2:08 pm
Location: france
Contact:

Postby salemhannoun » Thu May 24, 2007 4:47 pm

excuse me for my mistake, i forgot that i should write in english
hi,
first thank you for all ur help.
i did what u told me to do, i wrote the code that u gave me but it did not work, it gave me the following error message:

Traitement Extract Grey and white matter 1 démarré sur 2007/05/24 17:35<bound method File.fullPath of 'C:\\Program Files\\SHFJ_pack-stable-win32-3.0.2\\a.ima'> is not a valid number


dans Extract Grey and white matter 1 RuntimeError: Commande système terminée avec une valeur non nulle : 1

neuroProcesses.py (1641) in _processExecution:
result = process.execution( self )
ExtractGreyWhite.py (59) in execution:
50, '-m', 'eq', '-b', 'o', self.grey.fullPath )
neuroProcessesGUI.py (932) in system:
ret = apply( ExecutionContextGUI.system, (self,) + args, kwargs )
neuroProcesses.py (1721) in system:
raise RuntimeError( _t_( 'System command exited with non null value : %s' ) % str( ret ) )



i tried the 2 methods with and without the parenteses next to fullpath, but the error messege is the same.
what shoud i do?
thank you for all your help

User avatar
riviere
Site Admin
Posts: 1358
Joined: Tue Jan 06, 2004 12:21 pm
Location: CEA NeuroSpin, Saint Aubin, France
Contact:

Postby riviere » Thu May 24, 2007 6:20 pm

There is a mistake in the output file parameter of AimsTheshold:

Code: Select all

context.system( 'AimsThreshold', '-i', temp.fullPath(), '-t',
                50, '-m', 'eq', '-b', 'o', self.grey.fullPath() )

the '-' is missing on the 'o' switch, should be:

Code: Select all

context.system( 'AimsThreshold', '-i', temp.fullPath(), '-t',
                50, '-m', 'eq', '-b', '-o', self.grey.fullPath() )

this can explain that self.grey is not understood as the output filename, but here the output filename is 'o' and self.grey is understood as the following parameter not already specified, namely the '-u' parameter: second threshold, which should be a numeric value, hence the error.

Denis

salemhannoun
Posts: 7
Joined: Tue Mar 27, 2007 2:08 pm
Location: france
Contact:

hi

Postby salemhannoun » Tue May 29, 2007 9:28 am

hi
thanks for the help it worked without any errors.

but now i have another problem:
for the grey matter the code worked perfectly, i saw the grey matter alone on a window by itself.
but the whithe matter did not work, i only see a black screen.
the code for the white matter was:

context.system( 'AimsThreshold', '-i', temp.fullPath(), '-t',
100, '-m', 'eq', '-b', '-o', self.grey.fullPath() )

instead of the grey value 50 i changed it and replaced it by 100 the value of white matter that i know.

what should i do to make it work for the white matter?
thanks for your help

User avatar
riviere
Site Admin
Posts: 1358
Joined: Tue Jan 06, 2004 12:21 pm
Location: CEA NeuroSpin, Saint Aubin, France
Contact:

Postby riviere » Thu May 31, 2007 12:06 am

Hi,
I guess the images values are just not what you think they are. In our pipeline, the grey/white values are 100/200, not 50/100...
Denis


Return to “AIMS”

Who is online

Users browsing this forum: No registered users and 0 guests