# [vtkusers] How to transfer

xx_zx xuanaux at gmail.com
Tue Nov 18 11:44:40 EST 2008

```Thank you very much for your time!
Structures are indeed closed after I applied the method you shown me in the
example. However, the calculated volumes seem not right. They are extremely
larger than the volume calculated before. I think it is because the discrete
points are not perfect and have some noise points which degenerate the
performance of the vtkSurfaceReconstructionFilter. So I need to preprocess
the data before using vtkSurfaceReconstructionFilter. Do you think it is
feasible to do this?
Or, maybe I can calculate the volume of every slice by multiplying area of
every slice and slice depth, and add them up to get the overall volume.

Denis Barbier-5 wrote:
>
> On 2008/11/16 xx_zx wrote:
>>
>> Hi, Denis. Thanks a lot! I took your suggestion and it works!:-D
>>
>> However, I still have some troubles.
>> Some structures do not have closed surface. For example, in one of my
>> dataset, heart is reconstructed more like a bowl than a closed ellipsoid.
>> But the volume calculated by GetVolume() in vtkMassProperties does have
>> value and seems right. In this case, is the volume calculated by
>> GetVolume()
>> reliable?
>
> I had a closer look at vtkMassProperties and understand now what happens.
> Volume is computed by using the following formula, which is one the many
> ways to compute volume by using the divergence theorem:
>   Volume = (1/3) * integral(OM . N, M on volume boundary)
> where O is origin, N is unit outward normal at point M, and OM.N is dot
> product.
> This formula is valid only if object is closed, but integral can be
> computed
> with any triangulation.  For instance if you consider an half unit
> sphere centered
> at origin S={x*x+y*y+z*z=1, z >= 0}, the plane z=0 has no contribution to
> this
> integral and thus the result will be the same whether S is a cap or closed
> by
> z=0 plane.
> So this may be what you are seeing, a missing plane has no contribution
> to the end result because it contains origin.
>
> In order to test reliability of GetVolume(), you can apply rigid
> transformations
> (translations and rotations) to your object; if volume does not change,
> result
> is most certainly valid.
>
> Another very important point to keep in mind is that normals must be
> consistent
> over the whole boundary.
>
> I did not notice, but reconstructSurface example does not produce a closed
> surface, this is more visible after changing back face color.  A solution
> has
> been given at
>   http://www.vtk.org/pipermail/vtkusers/2007-August/092305.html
> (unfortunately this thread is broken, there are other messages in August
> 2007)
> Here is a modified reconstructSurface.tcl example with object being
> properly
> closed, you may apply similar changes in your case.
>
> Denis
>
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ