Let's look at your data in more detail. The image has a black frame around it which is taken into account! This means, that binarizing using "BlackFraction"
as Niki did will lead to an incorrect result.
In fact, if you take this into account, then the frame alone contains more than 5% of your total density. Let's calculate the amount of density we want:
img = RemoveAlphaChannel[
ColorConvert[Import["https://i.stack.imgur.com/T76kp.png"],
"Grayscale"]];
data = ImageData[ColorNegate[img], "Real"];
thresh = .95*Total[Flatten[data]]
(* 5539.33 *)
By removing only the frame, we are well below this threshold
Total[Flatten[ArrayPad[data, -10]]]
(* 4972.88 *)
Let us remove this and calculate the 95% boundary correctly
data = ArrayPad[data, -10];
thresh = .95*Total[Flatten[data]]
(* 4724.23 *)
To create a centered disk that we can use as a mask, we can use DiskMatrix
. This can be used with varying radii until we find the correct one that meets the wanted threshold:
densityDifference[r_?NumericQ] :=
Total[Flatten[data*DiskMatrix[r, Dimensions[data]]]] - thresh
FindRoot[densityDifference[r], {r, 50, 100}, Method -> "Secant"]
(* about 69 *)
HighlightImage[
img,
Image@DiskMatrix[69, Reverse@ImageDimensions[img]]
]
