My answer is simple and perhaps the least elegant and accurate. But first, a comment on the previous answers:
Since your shape usually has the shape of a kidney (not convex), calculating the area of its convex hull will not be performed, and an alternative is to determine its concave body (see, for example, http://www.concavehull.com/home.php?main_menu= 1 ) and calculate its area. But defining a concave hull is much more complicated than a convex hull. Plus, tear points can cause problems in both the convex and concave shells.
Delaunay triangulation followed by cropping, as suggested in @Ed Staub's answer, might be a bit simpler.
My own suggestion is: How accurate are your surface calculations? I think not really. With a concave body or clipped Delaunay triangulation, you still have to make an arbitrary choice where the “border” of your figure is (the edge is not a sharp knife, and I see fragmentation dots splashing around It).
Therefore, a simpler algorithm can be just as good for your application.
Separate the image in an orthogonal grid. Scroll through all the "pixels" of the grid or squares; if the given square contains at least one point (or, possibly, two points?), mark the square as full, otherwise empty. Finally, add the area of all full squares. Bingo.
The only parameter is the resolution length (square size). Its value should be set to something similar to the trim length in the case of Delaunay triangulation, i.e. "The points in my form are closer to each other than this length, and indicates further than this length should be ignored."
Perhaps an additional parameter is the number of point thresholds for the square, which is considered complete. Maybe 2 would be nice to ignore the tip of the glasses, but that might determine the basic shape too much for your taste ... Try 1 and 2, and maybe take an average of both. Or use 1 and remove the squares that have no neighbors (game style). Cute, empty squares whose 8 neighbors are filled should be considered full to avoid holes in the middle of the form.
There is no end to how much this algorithm can be refined, but due to the arbitrariness inherent in defining the problem in your particular application, any refinement is probably the equivalent of the “polish Turk” algorithm.