a new visualization technique using SPM and Blender



Create a new directory in <spm-directory>/toolbox/ and unzip all files into this new folder. Add this folder to the Matlab search path (e.g. with the command "addpath"). Restart SPM.

Time-resolved voxeldata

At first glance, it might appear very complex and interminable to create voxeldata images with Blender, particularly if you are not familiar with Blender. But once you know the key principles of Blender, you can create powerful and complex images and animations.

1. Click on TASKS - Tools - Voxeldata - "Image series". The new "image series"-job appears in the SPM batch window.

2. Source Images: Select the image sequence for which the time-resolved depiction should be created. In this example, we choosed the freely available functional images of an attention study conducted by Büchel et al. 1997.

3. Result File Type: Choose whether you which to generate the data in the analyze-file format or in the voxeldata file format that can be visualized in Blender. In both conditions you can now enter the location where the output file should be created.

4. Signal Threshold: Any values below this real number are set to zero in the functional images for the computation of the time-resolved depiction.

5. Interpolation Frames: Number of Frames that should be calculated between two functional images. If, for example, the animation has a frame rate of 25 FPS and the TR of the functional images was 3 sec, 75 interpolated frames would yield to a depiction of BOLD signal changes in realtime.

6. Interpolation type: choose between a linear and bezier-like (e.g. ease-in and -out) interpolation from one functional image to the next one.

7. Contrast type: choose between contrasting the functional image according to a baseline or to the previous image

8. Baseline - Baseline images: The functional images representing the baseline of an experimental condition.

9. Minimum Threshold: The minimum value that should survive the computed time-resolved image

10. Maximum Threshold: The maximum value that should survive the computed time-resolved image

11. Translate value: Shifts the computed values by the given value. Usuallly this is not needed as Blender supports also value shifts.

12. Scale value: A factor that can be multiplied with the computed values.

13. Voxelstrength: Number of frames, a voxel have to survive the thresholds. With larger values only voxels are depicted that show a stable increase of activation over a certain experimental block while lower values lead more to temporally shorter effects and noise.

14. Normalize difference: If 'Yes', the variance across all voxels is normalized.

15. Click 'run'.

16. Open the Blender version downloaded here, with one of the template files given on the download site.

17. In the lower left panel click on 'Texture' and select one of the textures you wish to configure.

18. In the lower right panel you can now click on open to select the voxeldata file that you previously created with BrianBlend.

19. Do that also for the other textures (e.g. anatomical and functional texture).

20. At the right side of the texture panel you can configure the colorband for each texture

21. Click on 'Render' or on 'Animate' to create a picture or an animation. On the Output-Panel you can determine where the animation should be saved. If you rendered a picture, press F3 to save the image.

22. To increase the quality of the image (which increases rendering time), decrease the step size for rays and scattering (red dots in the picture).


You do not see anything? Here are some tips!

- With the arrow keys you can determine the frame which you would like to render. The frame number is displayed in the bottom left corner of the 3d panel. Check, if you are e.g. in frame 1.

- Check whether the "Still" function is selected. With this function you can determine one frame that should be always rendered independent from the current frame in Blender.

- On the same panel you can increase and decrease the intensity of the voxelvalues with the intensity-slider