First of all, the image you attach behaves weirdly when opened in ImageJ (I had to save it as .tiff and then convert to RGB and then back to 8-bits, I guess this is by the .png)
Ok, so, in ImageJ:
1-Adjust B&C so basically your bubbles are white and the background is black (Image>Adjust>B&C)
2-Smooth your image (Image>Process>Smooth)
3-Threshold your image (Image>Adjust>Threshold) and set the Th more convenient for you in this case
4-Process>Binary
>Close
>Fill holes
>Watershed
5-Analyze>Analyze particles
Here you can filter by size and by circularity.
For your image I used:
Size 100-Inf
Circularity 0.25-1.00
6-Save the ROIset and impose it to your original image to see if it fits well with what you expected.
I did this roughly, there maybe many other ways to do it. You may want to play around with parameters (size, circularity...). You can also write a Macro so you don't have to go each time step by step,
Once you have the ROIset you can get any kind of information regarding size and shape of your particles (Analyze> Set measurements and in the ROI manager More>Multimeasure)
The fields of the objects can be retrieved as variable A from the function [k, A] = boundary(...).
So, although the steps explained by J. Ramirez-Franco with ImageJ seem perfect, alternatively, they can be also perfromed in the very flexible environment of Matlab (the only point I am not sure about is Circularity analysis)