[vtkusers] vtkImageData to 3D CArray

Jothy jothybasu at gmail.com
Fri Aug 19 12:35:09 EDT 2011


Thanks for your suggestion! Will let you know how far I succeed.

I have something to read this weekend.

Jothy

On Fri, Aug 19, 2011 at 5:29 PM, David Gobbi <david.gobbi at gmail.com> wrote:

> Hi Jothy,
>
> 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.
>
>  - David
>
>
> 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
> > GetScalarComponentAsDouble(x,y,z,0).
> >
> > 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
> > GetscalarComponent.
> >
> > 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.
> >
> > Jothy
> >
> > 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
> >> google.
> >>
> >>  - 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110819/83f24914/attachment.htm>


More information about the vtkusers mailing list