Using image sequence of medical scans as volume data in cycles I know it's possible to do this in BI, but I need your help to do this in cycles.
For now, I have a setup to use an image sequence as volume but it only shows 1 slice/frame. I'm using generated texture coordinates for easy mapping (0-1 on each axis). The images are mapped on XY and I would like to use normalized frame# as Z coordinate to map the sequence as a volume.  




Images sequence can be found here (I'm using 16-bit TIF files of MRBrain in this exemple).  

Any solution is welcome but try to keep it simple and user friendly :).

Final Edit:
I had a hard time choosing between Lemon's and PGmath's answers.
Lemon's is more user friendly and flexible, and uses the image sequence without any change inside blender.
PGmath's uses a 3rd party converter to make the sequence 1 single image, but allows GPU rendering.
Well, ImageMagick's command line is : "convert +append *.tif anim.tif" from the folder where the sequence is unzipped. Not so hard. That's why I accepted PGmath's answer.  



Now, i played with it, and here's the result.

The "volume" object contains the volume shader (playing with the color ramp gives funny things) and the boolean modifiers (turn them off to see the complete volume, but reduce the final density multiplier for better view).
The "Slice Control" arrow empty controls the slice position/rotation.
The "Texture Mapping" object controls...the mapping, if it need some tunning (position, rotation, scale, and then tiling if necessary?).
You can use an osl shader to do that.



The code in the capture above creates an osl node. Here are its inputs and outputs :

The input slots


Vector : the mapping position (in this config, this must be from object texture coordinates)
Directory : the folder where the image files can be found
Prefix : the image prefix (image are supposed to be in the format "prefix+counter+extension)
Extension : file extension including the dot
framePositions : the amount of position to form the file (ie to have 3 position like in "004", set it to 3)
zMax : the object elevation (I don't know if there is a way to find the object dimension and center in osl..). So for a default cube, set it to 2.
fromFrame : the first image number
toFrame : the last image number


The output slots


colorData : image data as a color output
nonColorData : image data as a non color output (here the image is encoded as non color in the tif files)


The code (see comments)

The principle is to use the Z (or here pos2) value to find the good image making the file name with it.

#include "stdosl.h"

shader volumeTexture(
    point Vector = P,
    string directory="//",
    string prefix="",
    int framePositions=3,
    string extension=".tif",
    float zMax = 2.0,
    int fromFrame = 1,
    int toFrame = 100,
    output color colorData = 1,
    output float nonColorData = 1,
)
{
    // Recenter the position around the object center to -1, 1 to 0, 1
    vector pos = 0.5 * (Vector + vector(1.0,1.0,1.0));

    // Calculate the image number
    int imageNum = (int)((1.0 + toFrame - fromFrame) * (pos[2] / (zMax * 0.5)));

    // Make a format string from the given length (ie "%03d")
    string frameFormat = concat( "%0", format( "%d", framePositions ), "d" );
    // Format the current frame/image number (ie "003")
    string imageFrame = format( frameFormat, toFrame - imageNum );
    // Make the full file name
    string fileName = concat( directory, prefix, imageFrame, extension );

    // Get the color from the texture
    colorData = texture( fileName, pos[0], pos[1] );
    nonColorData = texture( fileName, pos[0], pos[1] );
}


Here is the blend : 


Don't forget to set your rendering to CPU and to check 'open shading language'.