[vtkusers] vtkImageData to 3D CArray
david.gobbi at gmail.com
Fri Aug 19 12:29:50 EDT 2011
I'm not telling you to not use a C array. What I'm telling you is
that you should use a 1D C array with strides for each dimension.
Do not use a 3D C array. Read up on strides and learn how to use
them. You'll thank me later.
On Fri, Aug 19, 2011 at 10:23 AM, Jothy <jothybasu at gmail.com> wrote:
> Thanks for your reply.
> I don't need to do any image processing with that C array. I need to get the
> scalar values at [x,y,z] for a huge list of points from the vtkImageData
> (they are randomly located). First I tried with
> But it's too slow (for my purpose, 20-30 secs). After some Google search, I
> came to know that acessing array with  will be much faster that
> I even looked at vtkImageIterator, it only has methods span, begin,end. Most
> importantly I need to copy those scalar values for later uses, so mere
> scalar pointers won't help. That's why I am trying to do it with a c array.
> On Fri, Aug 19, 2011 at 5:15 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>> Hi Jothy,
>> You probably don't want to create a 3D C array. In C, all dimensions
>> of a C array except for the first dimension must be constant. So if
>> you have variables N and M and you try doing this:
>> short myarray[N][M];
>> then you will get a compile error. Multidimensional C arrays are
>> pretty much useless for image processing, people generally use a
>> 1D array and strides/increments. Do a search for "array strides" on
>> - David
>> On Fri, Aug 19, 2011 at 9:54 AM, Jothy <jothybasu at gmail.com> wrote:
>> > Hi all,
>> > I am trying to create a 3D C array form vtkImageData. I tried
>> > vtkImageExport, but I seems like only exporting it as a 1D array. Is
>> > there
>> > any other filter or how to convert it to a 3D array? I am new to c++ and
>> > I
>> > don't find any matrix manipulation function as in MATLAb or Python in c
>> > std
>> > lib.
>> > Thank you
>> > Jothy
More information about the vtkusers