This may not answer your question.
I don't quite understand how you built the Image3D
object. I notice that the sphere doesn't seem to go where you put the points. For example, if I put the point right in the middle of the coordinate system, they end up out at the corners
p = {{50, 50, 50}};
r = {10};
spheres =
MapThread[RotateLeft[DiskMatrix[#1, {100, 100, 100}], #2] &, {r, p}];
i = Image3D[Plus @@ spheres, Axes -> True,
AxesLabel -> {"x", "y", "z"}, ImageSize -> 300];
obj = GraphicsComplex[p, Sphere[Range[z], r]];
gr = Graphics3D[obj, Axes -> True, AxesLabel -> {"x", "y", "z"},
PlotRange -> {{0, 100}, {0, 100}, {0, 100}}, ImageSize -> 300];
Grid[{{i,
gr}, {Show[i, gr, Axes -> True, ImageSize -> 300,
AxesLabel -> {"x", "y", "z"}], SpanFromLeft}}]

So if I try to recreate what I think you are going for, I do the following
p1 = N[p[[1]]];
r1 = N[r[[1]]];
table = Table[
If[EuclideanDistance[{x, y, z}, p1] <= r1, 1, 0], {z, 100}, {y,
100}, {x, 100}];
i2 = Image3D[table, Axes -> True, AxesLabel -> {"x", "y", "z"}]

Looks good, but if you try to use a less symmetric point as the center of the sphere, it gets all wonky (that's a technical term).
p1 = {10.0, 20.0, 30.0};
r1 = N[r[[1]]];
table = Table[
If[EuclideanDistance[{x, y, z}, p1] <= r1, 1, 0], {z, 100}, {y,
100}, {x, 100}];
i2 = Image3D[table, Axes -> True, AxesLabel -> {"x", "y", "z"}]

I don't understand why, but the only way I can get Image3D
to work is to apply Reverse
to two of the axes. The following works:
z = 1;
p = RandomInteger[100, {z, 3}];
r = RandomInteger[10, {z}];
i = Module[{p1, r1, table},
p1 = N[p[[1]]];
r1 = N[r[[1]]];
table =
Table[If[EuclideanDistance[{x, y, z}, p1] <= r1, 1, 0], {z,
100}, {y, 100}, {x, 100}];
Image3D[Reverse[table, {1, 2}], Axes -> True,
AxesLabel -> {"x", "y", "z"}]];
obj = GraphicsComplex[p, Sphere[Range[z], r]];
gr = Graphics3D[obj, Axes -> True, AxesLabel -> {"x", "y", "z"},
PlotRange -> {{0, 100}, {0, 100}, {0, 100}}];
Show[i, gr, Axes -> True]

To me, Image3D
is too buggy to use. Half the time I try to do something with it, it crashes my kernel. I want there to be a cool ListDensityPlot3D
function, but I'll have to wait I think.