[Paraview] Open a bit image with Paraview

Samer Afach samer at icp.uni-stuttgart.de
Mon Jul 5 10:33:22 EDT 2010


Thank you so much. I'll start working on a python reader, if I could
create it, I will share it with the community.

Best regards,
Samer

Eric E. Monson wrote:
> Hey Samer,
>
> Part of my point was that I had trouble loading data into ParaView, so I was creating it within PV to see how it handled bit data. 
>
> It looks like you are right that the legacy VTK format supports bit attributes, so that may be your best bet for trying to get your data into PV. There are various warnings around, though, that you _must_ write your binary data in *BigEndian* format. I was able to create a data set in PV and then save it in legacy VTK and load it back in okay. I'll attach both binary and ascii version of this so you can compare the two to see how the binary is constructed. It looks like you just need a newline after the header part, and then your binary data written out as 8 bit characters, and then a newline at the end.
>
> I don't think that the VTK file formats can refer to data in another file, so if I understand you correctly it won't work as a markup language like .xmf files with HDF5. So, if you really need to stick with bit images you'll probably have to write the legacy VTK as a separate, single file.
>
> Good luck,
> -Eric
>
>   
> ------------------------------------------------------------------------
>
>
>
> On Jul 1, 2010, at 6:27 PM, samer at icp.uni-stuttgart.de wrote:
>
>   
>> Hello Eric,
>>
>> Thanks again that you're the one answering my questions. Well
>> unfortunately I haven't ever worked on python before, so it would be a
>> good idea to avoid it in the beginning till I find it the only solution to
>> my problem. Could you please tell me how you managed to open the bit
>> images with Paraview and/or VTK? even if it gives some errors, it's OK,
>> because I'm not asking for so much in the output, I just want to see some
>> simple 3D visualisation for my images.
>>
>> Actually I'm surprised, that in VTK I read in the manual that it's
>> supposed to accept the bit format, but it did not open on paraview when I
>> tried converting my binary images to VTK format by adding the appropriate
>> header. So did I miss something in that conversion? The header I added is
>> the following:
>>
>> # vtk DataFile Version 3.0
>> blablabla
>> BINARY
>> DATASET STRUCTURED_POINTS
>> DIMENSIONS 1024 1024 512
>> ORIGIN 0 0 0
>> SPACING 1 1 1
>> POINT_DATA 536870912
>> SCALARS OutArray bit 1
>> LOOKUP_TABLE default
>>
>>
>> Actually this discussion tempts me to ask the question, can I use VTK as a
>> markup language to open my data files? or should I install this header
>> into my data file so that both the data and the header are in one file?
>>
>> Thank you for your time.
>>
>> Best regards,
>> Samer
>>
>>
>>
>>     
>>> Hello Samer,
>>>
>>> Well, hopefully someone more knowledgeable will speak up if I'm wrong, but
>>> after playing around for a while I don't think you're going to be happy
>>> with ParaView's support (and probably VTK underneath) for image data with
>>> bit attributes. (For example, I couldn't get volume rendering to work, and
>>> I got some errors like: vtkOpenGLScalarsToColorsPainter (0x12a099f70):
>>> Cannot color by bit array, even though it _would_ actually color it.)
>>>
>>> I don't know of a reader offhand that will support single bit data
>>> attributes (I tried the old VTK and newer XML-based VTK formats and it
>>> didn't work well, and I'm not sure what other readers would work -- the
>>> .raw reader in ParaView also seems to have a limit of char at the small
>>> end). I have a feeling you could create a custom reader with the Python
>>> Programmable Source. You can look at some examples here:
>>>
>>> http://www.paraview.org/Wiki/Python_Programmable_Filter
>>> http://www.paraview.org/Wiki/Here_are_some_more_examples_of_simple_ParaView_3_python_filters.
>>>
>>> You can create a sample of this type of data directly in ParaView to see
>>> what is supported and not with single bit attributes:
>>>
>>> 1. Create a Wavelet Source
>>> 2. Apply a Python Programmable Filter
>>> Use this as the Script:
>>>
>>> # ---------------
>>> from paraview.vtk import vtkBitArray
>>> import random
>>>
>>> pdi = self.GetInputDataObject(0,0)
>>> pdo = self.GetOutputDataObject(0)
>>> pdo.ShallowCopy(pdi)
>>>
>>> ba = vtkBitArray()
>>> ba.SetNumberOfComponents(1)
>>> ba.SetNumberOfTuples(pdi.GetNumberOfPoints())
>>> ba.SetName('bits')
>>> for ii in range(ba.GetNumberOfTuples()):
>>> 	ba.SetTuple1(ii,round(random.random()))
>>>
>>> pdo.GetPointData().AddArray(ba)
>>> pdo.GetPointData().SetActiveScalars('bits')
>>> # ---------------
>>>
>>> You can see in the Information tab that a bit array is created, and you
>>> can try coloring by that array, but only Slice representation seems to
>>> work well. Contour filter seems to deal with it okay, though, so maybe
>>> this will still be useful to you.
>>>
>>> Talk to you later,
>>> -Eric
>>>
>>> ------------------------------------------------------
>>> Eric E Monson
>>> Duke Visualization Technology Group
>>>
>>>
>>> On Jun 30, 2010, at 6:16 PM, samer at icp.uni-stuttgart.de wrote:
>>>
>>>       
>>>> Hello guys,
>>>>
>>>> I have a binary image that consists of bits, every bit indicates to a
>>>> pixel (or voxel) in my 3D image. The file is nothing special, it's
>>>> simply
>>>> a contiguous file format I write as an output in a C++ program, I mean
>>>> it's not HDF or something common.
>>>> Is it possible to view this image in Paraview without being converted to
>>>> byte for every pixel? I mean is there a way that I could write an XML or
>>>> XDMF script that tells paraview how to view it?
>>>> I succeeded in viewing the image, but after converting every bit to a
>>>> byte, which means that the image is now 8 times bigger in size! this is
>>>> not effective at all I guess.
>>>>
>>>> I would appreciate an example very much.
>>>>
>>>> Thank you
>>>>
>>>> Regards,
>>>> Samer
>>>>
>>>> _______________________________________________
>>>> 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 ParaView Wiki at:
>>>> http://paraview.org/Wiki/ParaView
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>         
>
>   



More information about the ParaView mailing list