As you found out, morphological things will change the shape of the binary blobs. This is a case for dbscan.
You can get all the (row, column) coordinates of the binary image from
[rows, columns] = find(binaryImage);
or if you prefer x,y
[y, x] = find(binaryImage);
help dbscan
See my attached dbscan demo, and adapt it. See in the picture below with randomly placed points, it found 7 clusters of points that were close to each other, and 10 isolated points that were not close enough to any other points to be considered as being part of a cluster.