Ah, Christian, you helped me realize my problem.
I was ceil'ing later in my calculation that I should have.
Wrong:
gifWi = 4500 = ceil( 90 * 1.25 * 40 )
Right:
gifWi = 4520 = ceil( 90 * 1.25 ) * 40
With this change, everything works as I expect.
Thanks very much for pointing out this error to me.
Best regards,
- BettyAnn
On Tue, 15 Apr 2008 22:34:42 +0100, Christian F. Beckmann <[log in to unmask]>
wrote:
>Hi
>
>Yes, 4500 = 90*40*1.25, but that means that each single slice would be
>90*1.25 =112.5 pixels wide - not an integer!
>
>Short answer is to decrease the -s parameter, e.g. -s 1.24 will give
>you what you want with a final plot of size 4480 pixels or to keep it
>at 1.25 and increase max width to 4520
>
>Long answer is that the width/height of the plots are calculated so
>that the aspect ratio is approximately right when mapped into pixel
>space. The width parameter of the -A or -S option specifies the
>_maximum_ width you want to allow.
>Given your multiplier of 1.25 you end up with multiples of 113
>(round(90 * 1,25)) in x dim and then get 4407 = 113 *39 as 113*40 =
>4520 exceeds your chosen max width. The final slice then ends up in
>the next row. With a multiplier of 1.24 you get multiples of 112 and
>40*112 = 4480.
>hth
>Christian
>
>
>On 15 Apr 2008, at 19:53, Bettyann Chodkowski wrote:
>> Hi Steve,
>>
>> I'm at a loss as to how to fix this problem. I have tracked down
>> where the problem first appears.
>>
>> The output .ppm from slicer is not what I expected. When I use the -
>> A 4500 (90*1.25*40) switch,
>> I expected the output .ppm file to be 4500 pixels wide with 40
>> slices on a single row.
>>
>> Instead the output .ppm file is 4407 pixels wide --
>> (90*1.25*39)+padding -- with 39 slices on a
>> single row and the last slice on a second row.
>>
>> The voxel size for the input volume to slicer is:
>>
>> % alias avwdim
>> avwhd !* | egrep "(dim[0-4]|orient|descrip)"
>> % avwdim 20050930_5_1R_002_39dup_redux_6504
>> dim0 3
>> dim1 90
>> dim2 86
>> dim3 40
>> dim4 1
>> pixdim0 0.0000000000
>> pixdim1 0.4379999936
>> pixdim2 0.4379999936
>> pixdim3 2.2999999523
>> pixdim4 1.0000000000
>> descrip FSL4.0
>> orient 0
>>
>> So the images wrap onto a second row. How can I stop the wrapping
>> and keep all slices on the
>> same row? Does it have to do with the pixel dims?
>>
>> The reason I ask this is because I want to create a ppm/gif file
>> with a single row of all slices.
>> I then chop it up into 8-many segments (each with 5 slices) that
>> then get stacked one on top of
>> the other.
>> But I am getting the chopping points wrong because the ppm/gif file
>> is not 4500 in width but
>> (4407 with 2rows).
>> This problem does not occur when slicer is called with no -s <scale>
>> switch.
>>
>> This is the code I am running (perl calling fsl utilities):
>>
>> fslroi /home/bettyann/data/20050930_5_1R_002_39dup
>> /tmp/20050930_5_1R_002_39dup_redux_6504 213 90 189 86 0 40 0 1
>>
>> fslstats /tmp/20050930_5_1R_002_39dup_redux_6504 -r
>> 30886.435547 742457.375000
>>
>> avwhd /tmp/20050930_5_1R_002_39dup_redux_6504 | cat -v | egrep
>> '^dim[1-3]' | sed -e
>> 's/^dim. *//'
>> 90
>> 86
>> 40
>> xDim >>90<< yDim >>86<< zDim >>40<<
>> gifWi = 4500 x gifHi = 108
>> numPerRow = 5; rows = 8; wi = 563; hi = 108
>>
>> [[ where:
>> gifWi = 4500 = ceil( 90 * 1.25 * 40 )
>> gifHi = 108 = ceil( 86 * 1.25 )
>> wi = 563 = ceil( 90 * 1.25 * 5 )
>> hi = 108 = ceil( 86 * 1.25 )
>> ]]
>>
>> slicer /tmp/20050930_5_1R_002_39dup_redux_6504 -lut greyscale -s
>> 1.25 -u -i
>> 30886.435547 742457.375000 -A 4500 tmp.ppm
>> convert -colors 100 tmp.ppm gif:tmp.gif
>>
>> # crop gifFile and stack
>> convert -background black -bordercolor grey10 -crop 563x108+0+0
>> tmp.gif -crop
>> 563x108+563+0 tmp.gif -crop 563x108+1126+0 tmp.gif -crop
>> 563x108+1689+0 tmp.gif -
>> crop 563x108+2252+0 tmp.gif -crop 563x108+2815+0 tmp.gif -crop
>> 563x108+3378+0
>> tmp.gif -crop 563x108+3941+0 tmp.gif -append -bordercolor grey10
>> -border 1x1 tmp.gif
>>
>> Any suggestions as to how to get these numbers correct into/from
>> slicer? All help is appreciated.
>>
>> Thanks,
>> - BettyAnn
>>
>>
>>
>>> Hi - the dimension issues probably either relate to padding (see:
>>>
>>> http://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=ind0802&L=FSL&P=R24346&I=-
>> 3&X=3A4B33738BF1244419&Y=steve%40fmrib.ox.ac.uk&m=11357
>>>
>>> ), or getting the output pixel dimensions right given different voxel
>>> side lengths in the different directions (the output pixels have to
>>> map to the right real-world aspect ratio not voxel counts).
>>>
>>> Wrt sagittal slices, you would do something like
>>>
>>> slicer inVol -x -1 pic1.ppm -x -2 pic2.ppm etc.
>>>
>>> If you want the -A switch to apply in a different direction you would
>>> need to first use fslswapdim
>>>
>>> Cheers.
>>>
>>>
>>>
>>>
>>>
>>> On 14 Apr 2008, at 22:49, Bettyann Chodkowski wrote:
>>>> Hi All,
>>>>
>>>> I am using FSL v3.3 on unix/sun solaris although I did use v4.0.2,
>>>> too, with the same results.
>>>>
>>>> I am trying to use slicer to create a "lightbox" view as a gif file.
>>>> The input volume dimensions are [ 90 x 86 x 40 ] (after using
>>>> avwroi+
>>>> +/fslroi).
>>>>
>>>> The commands I use are:
>>>> % slicer inVol -lut greyscale -s 1.25 -u -i 0 742470 -A 4500
>>>> inVol.ppm
>>>> % convert -colors 100 inVol.ppm gif:inVol.gif
>>>>
>>>> I expected the output ppm/gif files to have these dimensions:
>>>> x: 90 * 40 * 1.25 = 4500 (ie, xdim * numSlices * slicerScale)
>>>> y: 86 * 1.25 = 107.5 (ydim * slicerScale)
>>>>
>>>> (Not sure what to do with fractional voxels -- floor or ceil?)
>>>>
>>>> But the resulting ppm/gif files do not have the dimensions I
>>>> expected:
>>>>
>>>> % montage -verbose inVol.ppm /dev/null
>>>> inVol.ppm PNM 4407x216+0+0 PseudoClass 256c 8-bit 929.6kb 0.080u
>>>> 0:01
>>>>
>>>> % montage -verbose inVol.gif /dev/null
>>>> inVol.gif GIF 4407x216+0+0 PseudoClass 128c 8-bit 255.1kb 0.120u
>>>> 0:01
>>>>
>>>> Can anyone help me with my confusion?
>>>>
>>>>
>>>> Also, in light of a previous question about using slicer to get a
>>>> sagittal view, I see the -x/y/z
>>>> <slice> switch. Do I need to specify each slice I want:
>>>>
>>>> slicer inVol ... -x -1 -2 -3 ... inVol.ppm
>>>> or
>>>> slicer inVol ... -x -1 -x -2 -x -3 ... inVol.ppm
>>>>
>>>> Is there an equivalent to the -A switch but for the other
>>>> orientations (sagittal and coronal)?
>>>>
>>>>
>>>> Thanks for any help,
>>>> - BettyAnn
>>>>
>>>
>>>
>>> -----------------------------------------------------------------------
---
>> -
>>> 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
>>> -----------------------------------------------------------------------
---
>> -
>>>
===========================================================
>> ==============
>===========================================================
==============
|