Re: [Paraview] Cells and Points in a Structured Grid Volume

2010-02-27 Thread Moreland, Kenneth
In a 3D structured grid, there is the concept of points and cells and VTK does 
in fact differentiate the two.  In particular, 8 points make up a 
hexahedral-shaped voxel cell.  As is dictated by the topology, there is one 
fewer cell than points in each dimension.  For example, if the grid has 
512x512x128 points, it will have 511x511x127 cells.

The raw image reader simply assumes you want to load the data as point data and 
creates the grid accordingly.  I don't think there is any way to make it load 
the data as cells.  I can think of three ways to handle this.


 1.  Close your eyes, take a deep breath, and find the inner peace to simply 
let ParaView/VTK treat the data as point data.  I cannot think of any operation 
on cell data that can not be done on point data.  You just have to realize that 
ParaView will also let you do some operations that may not be appropriate for 
cell data (particularly those that interpolate the values in the cells).
 2.  Make a filter that converts the structured grid that has point data to one 
that has cell data.  It would simply create a new topology on the output with 
one more point in every dimension and then shallow copy the data as cell data.  
It should not be too hard to implement.  No, I am not volunteering.
 3.  Make a new reader that reads the data as cell data as it should.

I hope that helps.

-Ken


On 2/26/10 8:45 AM, "Christian Werner"  wrote:

Hello!

I am studying the Threshold Filter to dive more into the mechanics of
filtering and I just want to make sure I got the meaning of points and
cells right, especially when I have a structured grid volume as input.

Such input comes with some typical raw volume file which consists of,
lets say, 512x512x128 voxels all of them having some value.

Is it that this value is actually stored in a vtkPoints list that
contains uniformly distributed points in the volume? And a vtkCell in
this case gets the same value as the point because it contains only this
single point in its center? ( with value I mean what you get from
GetComponent(id,c) )

So if I had some arbitrary (non-structured) input, a cell's value would
be the average of all points lying inside the cell and changing the cell
layout, i.e. making all cells bigger would accordingly change the
cell-point relationship and thus the cells value?


Best regards,
Christian
___
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




     Kenneth Moreland
***  Sandia National Laboratories
***
*** *** ***  email: kmo...@sandia.gov
**  ***  **  phone: (505) 844-8919
***  web:   http://www.cs.unm.edu/~kmorel

___
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


Re: [Paraview] Cells and Points in a Structured Grid Volume

2010-02-28 Thread Christian Werner
Thank you very much. Now things have become a little clearer. Anyway 
there are a few things which I do not yet understand.


I see now from the source of the Threshold plugin that the data to be 
processed is actually obtained in three different ways:


vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();

vtkDataArray *inScalars = this->GetInputArrayToProcess(0,inputVector); 
//inputVector is the input information vector



where the latter seems to be the array containing the actual volume 
data. The decision if a cell or point goes through the thresholding 
criteria is made a little later:


keepCell = this->EvaluateComponents( inScalars, ptId );
or
keepCell = this->EvaluateComponents( inScalars, cellId );


This raises two questions:

1) are the ptId and cellId disjunct?
2) if yes, does that mean that the InputArray contains point AND cell 
data? This clearly would require additional memory which is bad if you 
are working with big volumes.


Also I see the use of a DataSet which seems to hold all the cells of the 
volume and each cell seems to contain points ( these must be 8, right? ) 
I guess these points store coordinates? At least there is still another 
array containing only IDs. It seems as if there actually is a bunch of 
redundant information stored when I read structured grid, or at least 
when executing the Threshold filter.


This would explain why the memory usage skyrockets when manipulating our 
700MB (small version!) volume.


I don't want to complain here about anything, that memory issue is 
another story. More important to me is that I understand the structure 
of this.



Best regards,
Christian




Moreland, Kenneth wrote:
In a 3D structured grid, there is the concept of points and cells and 
VTK does in fact differentiate the two. In particular, 8 points make 
up a hexahedral-shaped voxel cell. As is dictated by the topology, 
there is one fewer cell than points in each dimension. For example, if 
the grid has 512x512x128 points, it will have 511x511x127 cells.


The raw image reader simply assumes you want to load the data as point 
data and creates the grid accordingly. I don’t think there is any way 
to make it load the data as cells. I can think of three ways to handle 
this.


   1. Close your eyes, take a deep breath, and find the inner peace to
  simply let ParaView/VTK treat the data as point data. I cannot
  think of any operation on cell data that can not be done on
  point data. You just have to realize that ParaView will also let
  you do some operations that may not be appropriate for cell data
  (particularly those that interpolate the values in the cells).
   2. Make a filter that converts the structured grid that has point
  data to one that has cell data. It would simply create a new
  topology on the output with one more point in every dimension
  and then shallow copy the data as cell data. It should not be
  too hard to implement. No, I am not volunteering.
   3. Make a new reader that reads the data as cell data as it should.


I hope that helps.

-Ken


On 2/26/10 8:45 AM, "Christian Werner" 
 wrote:


Hello!

I am studying the Threshold Filter to dive more into the mechanics of
filtering and I just want to make sure I got the meaning of points and
cells right, especially when I have a structured grid volume as input.

Such input comes with some typical raw volume file which consists of,
lets say, 512x512x128 voxels all of them having some value.

Is it that this value is actually stored in a vtkPoints list that
contains uniformly distributed points in the volume? And a vtkCell in
this case gets the same value as the point because it contains
only this
single point in its center? ( with value I mean what you get from
GetComponent(id,c) )

So if I had some arbitrary (non-structured) input, a cell's value
would
be the average of all points lying inside the cell and changing
the cell
layout, i.e. making all cells bigger would accordingly change the
cell-point relationship and thus the cells value?


Best regards,
Christian
___
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




 Kenneth Moreland
*** Sandia National Laboratories
***
*** *** *** email: kmo...@sandia.gov
** *** ** phone: (505) 844-8919
*** web: http://www.cs.unm.edu/~kmorel 



___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/o

Re: [Paraview] Cells and Points in a Structured Grid Volume

2010-03-01 Thread Moreland, Kenneth
Please read The VTK User's Guide.  In particular, Chapter 12 talks about the 
structure, implementation, and interface of VTK data objects.  It should clear 
up lots of your questions.

http://www.kitware.com/products/books/vtkguide.html

The Threshold filter converts the data from a structured grid to an 
unstructured grid (because it changes the topology).  The connectivity and 
coordinates are no longer implicit, so they have to be stored in files.  Thus, 
running the Threshold filter can actually change your data a lot.  There is a 
longer discussion of this in The ParaView Tutorial, section 3.8.

http://www.paraview.org/Wiki/The_ParaView_Tutorial

-Ken


On 2/28/10 3:42 AM, "Christian Werner"  wrote:

Thank you very much. Now things have become a little clearer. Anyway
there are a few things which I do not yet understand.

I see now from the source of the Threshold plugin that the data to be
processed is actually obtained in three different ways:

vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();

vtkDataArray *inScalars = this->GetInputArrayToProcess(0,inputVector);
//inputVector is the input information vector


where the latter seems to be the array containing the actual volume
data. The decision if a cell or point goes through the thresholding
criteria is made a little later:

keepCell = this->EvaluateComponents( inScalars, ptId );
or
keepCell = this->EvaluateComponents( inScalars, cellId );


This raises two questions:

1) are the ptId and cellId disjunct?
2) if yes, does that mean that the InputArray contains point AND cell
data? This clearly would require additional memory which is bad if you
are working with big volumes.

Also I see the use of a DataSet which seems to hold all the cells of the
volume and each cell seems to contain points ( these must be 8, right? )
I guess these points store coordinates? At least there is still another
array containing only IDs. It seems as if there actually is a bunch of
redundant information stored when I read structured grid, or at least
when executing the Threshold filter.

This would explain why the memory usage skyrockets when manipulating our
700MB (small version!) volume.

I don't want to complain here about anything, that memory issue is
another story. More important to me is that I understand the structure
of this.


Best regards,
Christian




Moreland, Kenneth wrote:
> In a 3D structured grid, there is the concept of points and cells and
> VTK does in fact differentiate the two. In particular, 8 points make
> up a hexahedral-shaped voxel cell. As is dictated by the topology,
> there is one fewer cell than points in each dimension. For example, if
> the grid has 512x512x128 points, it will have 511x511x127 cells.
>
> The raw image reader simply assumes you want to load the data as point
> data and creates the grid accordingly. I don't think there is any way
> to make it load the data as cells. I can think of three ways to handle
> this.
>
>1. Close your eyes, take a deep breath, and find the inner peace to
>   simply let ParaView/VTK treat the data as point data. I cannot
>   think of any operation on cell data that can not be done on
>   point data. You just have to realize that ParaView will also let
>   you do some operations that may not be appropriate for cell data
>   (particularly those that interpolate the values in the cells).
>2. Make a filter that converts the structured grid that has point
>   data to one that has cell data. It would simply create a new
>   topology on the output with one more point in every dimension
>   and then shallow copy the data as cell data. It should not be
>   too hard to implement. No, I am not volunteering.
>3. Make a new reader that reads the data as cell data as it should.
>
>
> I hope that helps.
>
> -Ken
>
>
> On 2/26/10 8:45 AM, "Christian Werner"
>  wrote:
>
> Hello!
>
> I am studying the Threshold Filter to dive more into the mechanics of
> filtering and I just want to make sure I got the meaning of points and
> cells right, especially when I have a structured grid volume as input.
>
> Such input comes with some typical raw volume file which consists of,
> lets say, 512x512x128 voxels all of them having some value.
>
> Is it that this value is actually stored in a vtkPoints list that
> contains uniformly distributed points in the volume? And a vtkCell in
> this case gets the same value as the point because it contains
> only this
> single point in its center? ( with value I mean what you get from
> GetComponent(id,c) )
>
> So if I had some arbitrary (non-structured) input, a cell's value
> would
> be the average of all points lying inside the cell and changing
> the cell
> layout, i.e. making all cells bigger would accordingly change the
> cell-point relationship and thus the cells value?
>
>
>   

Re: [Paraview] Cells and Points in a Structured Grid Volume

2010-03-01 Thread John Mitchell

Not sure if this is the appropriate thread:

What happens in parallel if a connectivity array for a given cell has 
point id's that are off-processor?  
Suppose:


   * processor P0 owns points x1, x2, x3 -- numCells = 3;  cell c1(x1)
 connectivity = {x2, x8}
   * processor P1 owns point x4, x5, x6,x7,x8 -- numCells = 4;  cell c8
 (x8) connectivity = {x7, x2}

What I have found is that setting global Ids on P0 for connectivity 
associated with c1 causes problems?  Does that make sense?  Is there a 
work around?


Thanks,
John



Moreland, Kenneth wrote:
Please read /The VTK User’s Guide/.  In particular, Chapter 12 talks 
about the structure, implementation, and interface of VTK data 
objects.  It should clear up lots of your questions.


http://www.kitware.com/products/books/vtkguide.html


The Threshold filter converts the data from a structured grid to an 
unstructured grid (because it changes the topology).  The connectivity 
and coordinates are no longer implicit, so they have to be stored in 
files.  Thus, running the Threshold filter can actually change your 
data a lot.  There is a longer discussion of this in /The ParaView 
Tutorial/, section 3.8.


http://www.paraview.org/Wiki/The_ParaView_Tutorial


-Ken


On 2/28/10 3:42 AM, "Christian Werner" 
 wrote:


Thank you very much. Now things have become a little clearer. Anyway
there are a few things which I do not yet understand.

I see now from the source of the Threshold plugin that the data to be
processed is actually obtained in three different ways:

vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();

vtkDataArray *inScalars = this->GetInputArrayToProcess(0,inputVector);
//inputVector is the input information vector


where the latter seems to be the array containing the actual volume
data. The decision if a cell or point goes through the thresholding
criteria is made a little later:

keepCell = this->EvaluateComponents( inScalars, ptId );
or
keepCell = this->EvaluateComponents( inScalars, cellId );


This raises two questions:

1) are the ptId and cellId disjunct?
2) if yes, does that mean that the InputArray contains point AND cell
data? This clearly would require additional memory which is bad if you
are working with big volumes.

Also I see the use of a DataSet which seems to hold all the cells
of the
volume and each cell seems to contain points ( these must be 8,
right? )
I guess these points store coordinates? At least there is still
another
array containing only IDs. It seems as if there actually is a bunch of
redundant information stored when I read structured grid, or at least
when executing the Threshold filter.

This would explain why the memory usage skyrockets when
manipulating our
700MB (small version!) volume.

I don't want to complain here about anything, that memory issue is
another story. More important to me is that I understand the structure
of this.


Best regards,
Christian




Moreland, Kenneth wrote:
> In a 3D structured grid, there is the concept of points and cells and
> VTK does in fact differentiate the two. In particular, 8 points make
> up a hexahedral-shaped voxel cell. As is dictated by the topology,
> there is one fewer cell than points in each dimension. For
example, if
> the grid has 512x512x128 points, it will have 511x511x127 cells.
>
> The raw image reader simply assumes you want to load the data as
point
> data and creates the grid accordingly. I don’t think there is any way
> to make it load the data as cells. I can think of three ways to
handle
> this.
>
>1. Close your eyes, take a deep breath, and find the inner
peace to
>   simply let ParaView/VTK treat the data as point data. I cannot
>   think of any operation on cell data that can not be done on
>   point data. You just have to realize that ParaView will
also let
>   you do some operations that may not be appropriate for cell
data
>   (particularly those that interpolate the values in the cells).
>2. Make a filter that converts the structured grid that has point
>   data to one that has cell data. It would simply create a new
>   topology on the output with one more point in every dimension
>   and then shallow copy the data as cell data. It should not be
>   too hard to implement. No, I am not volunteering.
>3. Make a new reader that reads the data as cell data as it
should.
>
>
> I hope that helps.
>
> -Ken
>
>
> On 2/26/10 8:45 AM, "Christian Werner"
>  wrote:
>
> Hello!
>
> I am studying the Threshold Filter to dive more into the
mechanics of
> filtering and I j

Re: [Paraview] Cells and Points in a Structured Grid Volume

2010-03-01 Thread Moreland, Kenneth
The points are duplicated on all processes that have cells that point to them.

-Ken


On 3/1/10 11:04 AM, "John Mitchell"  wrote:

Not sure if this is the appropriate thread:

What happens in parallel if a connectivity array for a given cell has point 
id's that are off-processor?
Suppose:

 *   processor P0 owns points x1, x2, x3 -- numCells = 3;  cell c1(x1) 
connectivity = {x2, x8}
 *
 *   processor P1 owns point x4, x5, x6,x7,x8 -- numCells = 4;  cell c8 (x8) 
connectivity = {x7, x2}
 *

What I have found is that setting global Ids on P0 for connectivity associated 
with c1 causes problems?  Does that make sense?  Is there a work around?

Thanks,
John



Moreland, Kenneth wrote:
 Re: [Paraview] Cells and Points in a Structured Grid Volume Please read The 
VTK User's Guide.  In particular, Chapter 12 talks about the structure, 
implementation, and interface of VTK data objects.  It should clear up lots of 
your questions.


http://www.kitware.com/products/books/vtkguide.html


The Threshold filter converts the data from a structured grid to an 
unstructured grid (because it changes the topology).  The connectivity and 
coordinates are no longer implicit, so they have to be stored in files.  Thus, 
running the Threshold filter can actually change your data a lot.  There is a 
longer discussion of this in The ParaView Tutorial, section 3.8.


http://www.paraview.org/Wiki/The_ParaView_Tutorial


-Ken


On 2/28/10 3:42 AM, "Christian Werner"  wrote:


Thank you very much. Now things have become a little clearer. Anyway
there are a few things which I do not yet understand.

I see now from the source of the Threshold plugin that the data to be
processed is actually obtained in three different ways:

vtkPointData *pd=input->GetPointData(), *outPD=output->GetPointData();
vtkCellData *cd=input->GetCellData(), *outCD=output->GetCellData();

vtkDataArray *inScalars = this->GetInputArrayToProcess(0,inputVector);
//inputVector is the input information vector


where the latter seems to be the array containing the actual volume
data. The decision if a cell or point goes through the thresholding
criteria is made a little later:

keepCell = this->EvaluateComponents( inScalars, ptId );
or
keepCell = this->EvaluateComponents( inScalars, cellId );


This raises two questions:

1) are the ptId and cellId disjunct?
2) if yes, does that mean that the InputArray contains point AND cell
data? This clearly would require additional memory which is bad if you
are working with big volumes.

Also I see the use of a DataSet which seems to hold all the cells of the
volume and each cell seems to contain points ( these must be 8, right? )
I guess these points store coordinates? At least there is still another
array containing only IDs. It seems as if there actually is a bunch of
redundant information stored when I read structured grid, or at least
when executing the Threshold filter.

This would explain why the memory usage skyrockets when manipulating our
700MB (small version!) volume.

I don't want to complain here about anything, that memory issue is
another story. More important to me is that I understand the structure
of this.


Best regards,
Christian




Moreland, Kenneth wrote:
> In a 3D structured grid, there is the concept of points and cells and
> VTK does in fact differentiate the two. In particular, 8 points make
> up a hexahedral-shaped voxel cell. As is dictated by the topology,
> there is one fewer cell than points in each dimension. For example, if
> the grid has 512x512x128 points, it will have 511x511x127 cells.
>
> The raw image reader simply assumes you want to load the data as point
> data and creates the grid accordingly. I don't think there is any way
> to make it load the data as cells. I can think of three ways to handle
> this.
>
>1. Close your eyes, take a deep breath, and find the inner peace to
>   simply let ParaView/VTK treat the data as point data. I cannot
>   think of any operation on cell data that can not be done on
>   point data. You just have to realize that ParaView will also let
>   you do some operations that may not be appropriate for cell data
>   (particularly those that interpolate the values in the cells).
>2. Make a filter that converts the structured grid that has point
>   data to one that has cell data. It would simply create a new
>   topology on the output with one more point in every dimension
>   and then shallow copy the data as cell data. It should not be
>   too hard to implement. No, I am not volunteering.
>3. Make a new reader that reads the data as cell data as it should.
>
>
> I hope that helps.
>
> -Ken
>
>
> On 2/26/10 8:45 AM, "Christian Werner"
>  wrote:
>
> Hello!
>
> I am studying the Threshold Filter to dive more into the mechanics of