How to determine volume from a picture?

  • Context: Undergrad 
  • Thread starter Thread starter skrat
  • Start date Start date
  • Tags Tags
    Picture Volume
Click For Summary

Discussion Overview

The discussion revolves around determining the volume of a balloon from a still image, specifically the last frame before it bursts. Participants explore various methods for calculating volume based on surface area, considering both theoretical and practical approaches.

Discussion Character

  • Exploratory
  • Technical explanation
  • Mathematical reasoning
  • Debate/contested

Main Points Raised

  • One participant describes their attempt to calculate the volume of a balloon using a program that exports coordinates from an image, but they encounter issues with the resulting volumes not making sense.
  • Another participant suggests using the formula for the volume of a sphere and proposes that the volume can be approximated as a function of the area of the projected surface.
  • A different participant acknowledges the challenge of calculating the volume of multiple balloons and expresses concern that approximating with spheres may not detect small volume differences accurately.
  • Several participants discuss the method of rotating a curve around the x-axis to calculate volume, referencing the disk method for solids of revolution.
  • One participant mentions the need for image adjustments to ensure symmetry and questions whether there are more efficient methods to achieve the same precision.
  • Another suggestion involves analyzing multiple frames leading up to the balloon's explosion to improve volume estimation, considering the physics of inflation and potential fitting of formulas to the data.
  • A participant proposes projecting points onto a newly defined coordinate system to facilitate calculations, suggesting a method of interpolation between points for better accuracy.

Areas of Agreement / Disagreement

Participants express various methods and ideas, but there is no consensus on a single best approach. Multiple competing views and techniques are presented, and the discussion remains unresolved regarding the most effective method for volume calculation.

Contextual Notes

Limitations include the dependence on the symmetry of the balloon, the accuracy of the image processing software, and the potential for small volume differences to be undetectable with certain approximation methods.

skrat
Messages
740
Reaction score
8
Hello,

It's my first time here on this forum and if my English is bad, than I at least hope I have chosen the right topic.

Well, let me describe my problem: Imagine a .jpg with a balloon. What I have to do is determine a volume of it in the moment before it blows up. So in reality I have a movie, but I used a program where I can move frame by frame to get the last frame before the balloon explodes.

Now, how can I determine the volume from surface? I tried to use this http://getdata-graph-digitizer.com/ , a program that can export .txt file of coordinates. But when I put this .txt file into "homemade" program written in Java to calculate the proper integral, the volumes don't make any sense and I am 100% sure that my program works properly and I even checked the units 25 times.

Is there any other way to do is more elegant and as precise as possible? (Let's say that balloon is totally symmetrical).

Please help!
 

Attachments

  • Capture.JPG
    Capture.JPG
    22.4 KB · Views: 509
Physics news on Phys.org
When you say "surface" you mean the surface seen projected onto the plane, not the surface of the three dimensional balloon, right? Let's start with a simpler version. A sphere, with radius R, has volume [itex](4/3)\pi R^3[/itex] and projects onto any plane as a circle of radius R, having area [itex]\pi R^2[/itex]. Therefore the volume is [itex]((4/3)\pi R^3)/(\pi R^2)= (4/3)R[/itex] times the area.

For the more complicated version, approximate the volume as a sum of spheres of differing radii.
 
HallsofIvy said:
When you say "surface" you mean the surface seen projected onto the plane, not the surface of the three dimensional balloon, right?

Yes, I mean surface seen projected onto the plane.

hmmm... It's a good idea. But the problem is that I have to calculate the volume of 20 balloons. As you probably know, the difference between the volumes before explosion should be zero if the balloons were ideal, since they are not, I expect some difference. However, I am afraid that this approximation with spheres is not good enough to "detect" the small difference, unless of course , I try to minimize the spheric radius as much as possible.

Your idea works in theory, but honestly said, I have no idea how to write that in java or c+.
 
Do you mean by surface the purple curve? If yes, you could rotate this curve around the "x-axis" as shown here. You would have to adjust the jpeg to make the balloon symmetrical around the x-axis.

The idea is to http://calculus-geometry.hubpages.com/hub/Disk-Method-Volume-of-Solid-of-Revolution to get the volume.
 
Last edited by a moderator:
Using the grid, you could select some representative points on the boundary of the balloon (say, on the pink like) and fit a curve to them. Rotating the curve around the x-axis by the usual integration should give you a pretty good approximation.
 
Edgardo said:
Do you mean by surface the purple curve? If yes, you could rotate this curve around the "x-axis" as shown here. You would have to adjust the jpeg to make the balloon symmetrical around the x-axis.

The idea is to http://calculus-geometry.hubpages.com/hub/Disk-Method-Volume-of-Solid-of-Revolution to get the volume.

Well yes, that is exactly what I did. This purple curve is full of points which I can manually put there with the program written above (Graph Digitzer). This program than exports X and Y coordinates of all the points in .txt file.
Later I used my own program written in .java to calculate the integral: [tex]V=\pi \int_{a}^{b}f(x)^{2}dx[/tex] where for [tex]f(x)=\frac{f(x_{n+1})+f(x_{n})}{2}[/tex] and [tex]dx=x_{n+1}-x_{n}[/tex]

I hope this sounds good?

I was just wondering if there is a better method to do this? Because for this, I had to use a lot of photoshop to rotate the picture until the balloon was perfectly horizontal ( because all balloons were not straight - see attachment) in order to get the integral as precise as possible. If anybody is thinking that was silly, well he is right, I could simply define new coordinate system but, sadly software I used - Graph Digitizer, does not have that option and even if it did, it would be extremely hard to determine units.

So is there a simpler and faster version how to do this with the same or even better precision. Fitting a curve? Well yes, another option too, but the fact is that the difference between the volumes is so small that the software might use the same functions for every balloon - meaning the same volume for all of them
 

Attachments

  • balon3.jpg
    balon3.jpg
    12.5 KB · Views: 503
Last edited by a moderator:
skrat said:
Is there any other way to do is more elegant and as precise as possible?

I don't claim to have a definite method, but I'll suggest that you consider several frames preceeding the blow up. Sometimes you get a better estimate of the final value of a process by fitting a formula to an interval of it instead of just trying to estimate the final value by itself.

You might be able to bring more physics into the analysis. For example, is the balloon being inflated by a source that is roughly at constant pressure over several frames just before the balloon blows up? Is there a known solution to an idealized version of the experiment? (e.g. blowing up a perfectly spherical ballon). Does the formula for the idealized version suggest fitting some linear or quadratic formulat for V(t) to several frames of data?
 
skrat said:
Well yes, that is exactly what I did. This purple curve is full of points which I can manually put there with the program written above (Graph Digitzer). This program than exports X and Y coordinates of all the points in .txt file.

Since the vector from the first point (of all the purple points) to the last point is more-or-less the principle axis of your balloon you could take that vector as your x-axis and take the 2D vector orthogonal to that as your y-axis. Just project each of your purple points onto that y-axis then square and multiply by pi and add it all up (and you probably want to just linearly interpolate in between any two subsequent purple points).
 

Similar threads

  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 10 ·
Replies
10
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 16 ·
Replies
16
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K