6
$\begingroup$

I have a object which is similar to the shape of irregular rock like this enter image description here

I would like to find the volume of this. How to do it?

If I have to find the volume, what are the things I would need. eg., If it is cylindrical, I would measure length and diameter. But, it is irregularly shaped. Like the above rock.

Where should I start? Couple of google search says something related to integration and contours. Somebody pls give me some handle :) I would say i'm very beginner level in math.

Many Thanks :)

Edit: 60 to 70% accuracy would be helpful.

enter image description here enter image description here

  • 1
    Based on the average mesurements of the 3rd picture - side view $d_{1}\times h_{1}=2.5\times 2.8\approx 7$ - front view $w_{2}\times h_{2}=2.8\times 2.8\approx 7.8$ - top view $w_{3}\times d_{3}=2.3\times 2.0\approx 4.6$ the approximate volume is $\frac{d_{1}+d_{3}}{2}\times \frac{h_{1}+h_{2}}{2}\times \frac{w_{2}+w_{3}}{2}=\frac{2.5+2.0}{2}\times \frac{2.8+2.8}{2}\times \frac{2.8+2.3}{2}\approx 16.$ I assumed the scale remains unchanged in the 3 views. Addapt according to the real lengths.2012-07-31

4 Answers 4

8

As your comment indicates, you're not interested in rocks so much as tumors.

One possible approach is to use a tomographic technique. Many medical imaging tools image the body using tomography: that is, examining the body one "slice" at a time.

If you have access to such tools, or can derive such an example, then what you want to do is cut the rock/tumor into many slices along some axis, and then compute the area of the tumor at that slice. This is a bit easier to do that doing it in three dimensions.

Then, you move forward by some $\Delta z$ along the $z$-axis (or whatever axis), and repeat.

Multiply each surface area by $\Delta z$, sum them, and you will get a good estimate. The estimate is better the smaller your $\Delta z$.

To compute the area of each "slice", you can do many things: fit a simpler shape to the data, perform Monte Carlo integration, or decompose the shape into a series of piecewise linear segments.

  • 1
    @celtschk Good point. If you have a digital image, you can use a simple threshold method to get the "area". A simple MATLAB script could be something like length(find(IMG > thresh))/prod(size(a)).2012-07-31
5

The easiest way (if you have a 3d model) is simple Monte Carlo integration. One builds a big bounding box around the "rock", and then randomly chooses a large number of points inside the box. The ratio of points inside the "rock" to the the number of total points, is the ratio of volumes. Since you can easily calculate the box's volume, you now also know the volume of the rock.

The task of finding whether or not a point is inside the rock is in general complex, but is simplified if you can assume that the rock is convex. In that case, you test each triangle that belongs to your 3D mesh: if the point is in the right side for all triangles, the point is inside.

  • 0
    There is an easier method for a 3D mesh (see my answer).2013-09-16
3

There is a very simple and elegant algorithm for calculating the volume of an arbitrary, closed mesh described in this paper (Zhang, Cha, and Tsuhan Chen. "Efficient feature extraction for 2D/3D objects in mesh representation." Image Processing, 2001. Proceedings. 2001 International Conference on. Vol. 3. IEEE, 2001. Page 2). The trick is to base a tetrahedron on each triangle and top it off at the origin and then sum up all volumes, signed by whether the triangle faces the origin.

0

If you don't want to use Archimedes' solution, and you know the material, you can look up the density and weigh the rock.