[vtkusers] rendering a series of BMP images - revisited

Prathamesh Kulkarni prathameshmkulkarni at gmail.com
Mon Nov 29 14:55:59 EST 2010


Thanks, that takes care of most of my questions. I will try all these out.

- Prathamesh

On Mon, Nov 29, 2010 at 1:25 PM, David Gobbi <david.gobbi at gmail.com> wrote:

> If the images are greyscale, you should check to make sure that the reader
> is only reading in a single-component volume:
>
> reader.Update()
> print reader.GetOutput().GetNumberOfScalarComponents()
>
> If this returns 3 or 4, then your BMPs are actually RGB, but with R=B=G.
>  To be on the safe side, you should use vtkImageExtractComponents() so that
> you are only providing one component to the volume mapper.
>
> Even for greyscale, it is typical to have a vtkColorTransferFunction.  You
> can make it into a simple ramp:
>
> ctf = vtkColorTranferFunction()
> ctf.AddRGBPoint(0,    0.0, 0.0, 0.0)
> ctf.AddRGBPoint(255,  1.0, 1.0, 1.0)
>
> You can look at VTK/Examples/Medical/Python/Medical4.py, just note that the
> example is for a 16-bit volume with a pixel intensity range of around
> [0,1200] while your volume will have a pixel intensity range of [0,255].
>
>  - David
>
> On Mon, Nov 29, 2010 at 12:14 PM, Prathamesh Kulkarni <
> prathameshmkulkarni at gmail.com> wrote:
>
>> They are gary-scale images. Hence I don't use the color transfer function.
>> Is this correct? I increased the number of files from 5 to 20 and now it
>> shows me a volume but with intermediate slices blanked. I think this is a
>> problem of the opacity function, and I am trying to learn how to use it.
>> Please let me know if there is any example for it.
>>
>> Thanks,
>> Prathamesh
>>
>>
>> On Mon, Nov 29, 2010 at 1:02 PM, David Gobbi <david.gobbi at gmail.com>wrote:
>>
>>> Hi Prathamesh,
>>>
>>> The range is set by SetDataExtent(), which you do.
>>>
>>> But there are several unusual things about your application that you
>>> don't explain in your email.
>>> - Are the BMP files RGB or are they greyscale?
>>> - Did you mean to make a vtkColorTransferFunction for your volume?
>>> - Why only five slices?
>>>
>>>   - David
>>>
>>> On Mon, Nov 29, 2010 at 11:57 AM, Prathamesh Kulkarni <
>>> prathameshmkulkarni at gmail.com> wrote:
>>>
>>>> For that I used the SetFilePrefix() and SetFilePattern. Is there any
>>>> other way of setting the range of files?
>>>>
>>>> - Prathamesh
>>>>
>>>>
>>>> On Mon, Nov 29, 2010 at 12:50 PM, Darshan Pai <darshanpai at gmail.com>wrote:
>>>>
>>>>> You probably need to set the range of the files
>>>>>
>>>>>  On Mon, Nov 29, 2010 at 11:36 AM, Prathamesh Kulkarni <
>>>>> prathameshmkulkarni at gmail.com> wrote:
>>>>>
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I am trying to render a series of BMP images as a volume using Ray
>>>>>> Casting in vtk. However, what I see is only a single slice of image.
>>>>>>
>>>>>> Please point me out to where I am doing a mistake. My code is attached
>>>>>> below.
>>>>>>
>>>>>>
>>>>>>
>>>>>> #................................................................................................#
>>>>>>
>>>>>> import vtk
>>>>>> from vtk import *
>>>>>>
>>>>>> bmp_reader = vtk.vtkBMPReader()
>>>>>>
>>>>>> bmp_reader.SetFilePrefix('../sampleData/sample_')
>>>>>> bmp_reader.SetFilePattern('%s%d.bmp')
>>>>>>
>>>>>> #print bmp_reader
>>>>>>
>>>>>> height = 512
>>>>>> width = 496
>>>>>> depth = 5
>>>>>>
>>>>>> #this is default behaviour anyways..
>>>>>> bmp_reader.SetFileNameSliceOffset(1)
>>>>>> bmp_reader.SetFileNameSliceSpacing(1)
>>>>>>
>>>>>> #bmp_reader.SetNumberOfScalarComponents(3)
>>>>>> bmp_reader.SetDataSpacing(1, 1, 1)
>>>>>> bmp_reader.SetDataOrigin(0, 0, 0)
>>>>>> bmp_reader.SetDataExtent(0, width-1, 0, height-1, 0, depth-1)
>>>>>> bmp_reader.SetDataScalarTypeToUnsignedChar()
>>>>>>
>>>>>> alpha_channel_function = vtk.vtkPiecewiseFunction()
>>>>>> alpha_channel_function.AddPoint(20, 0.1)
>>>>>> alpha_channel_function.AddPoint(100, 1.0)
>>>>>>
>>>>>> volume_property = vtk.vtkVolumeProperty()
>>>>>> volume_property.SetScalarOpacity(alpha_channel_function)
>>>>>>
>>>>>> composite_function = vtk.vtkVolumeRayCastCompositeFunction()
>>>>>>  #volume_mapper = vtk.vtkVolumeRayCastMapper()
>>>>>> volume_mapper = vtk.vtkFixedPointVolumeRayCastMapper()
>>>>>>
>>>>>> #volume_mapper.SetVolumeRayCastFunction(composite_function)
>>>>>> volume_mapper.SetInput(bmp_reader.GetOutput())
>>>>>>
>>>>>> volume = vtk.vtkVolume()
>>>>>> volume.SetMapper(volume_mapper)
>>>>>> volume.SetProperty(volume_property)
>>>>>>
>>>>>> renderer = vtk.vtkRenderer()
>>>>>> render_window = vtk.vtkRenderWindow()
>>>>>> render_window_interactor = vtk.vtkRenderWindowInteractor()
>>>>>>
>>>>>> render_window.AddRenderer(renderer)
>>>>>> render_window_interactor.SetRenderWindow(render_window)
>>>>>>
>>>>>> renderer.AddVolume(volume)
>>>>>> renderer.SetBackground(1, 1, 1)
>>>>>> render_window.SetSize(500, 500)
>>>>>>
>>>>>> render_window_interactor.Initialize()
>>>>>> render_window.Render()
>>>>>> render_window_interactor.Start()
>>>>>>
>>>>>> _______________________________________________
>>>>>> Powered by www.kitware.com
>>>>>>
>>>>>> Visit other Kitware open-source projects at
>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>
>>>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>>>
>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101129/2865305d/attachment.htm>


More information about the vtkusers mailing list