I wondering about calculating Connectivity

Hi, I`m Jeon from South Korea.

I used BoneJ plugin for analyzing connectivity.
Actually, I couldnt fully understand about calculation algorithm.

According to user guide of BoneJ,

  1. Calculation of Euler characteristic for each voxel. -------------------------- (1)
  2. Summing (1) for entire structure (is it right?) ------------------------------ (2)
  3. Calculation of the Euler characteristic of the entire sample ---------------------- (3)
  4. Calculation of Δ(χ)

here is my questions,

  1. Calculation method of Euler characteristic
    χ = v - e + f - n, (v,e,f,n is vertices, edges, faces, voxels, respectively) right ?
    Then, at (1), what is the number of n ? is it just 1? because this calculation is for each voxel

  2. Actually, what is the difference between (2) and (3) ?
    In detail, (2) means summing to give an Euler characteristic for bone (χ)
    and (3) means the Euler characteristic of the bone sample as though it is floating in space (χ = ∑δχ)

    maybe,… (2) was considered the addition theorem (χ (A∪B) = χ (A) + χ (B) - χ (A∩B))
    or… (3) was calculation for entire structure ( only one calculation)

    I couldnt understand difference of theirs… and very confused.

  3. and, what is Δ(χ) ?
    It means the bone sample’s contribution to the Euler characteristic of the bone to which it was connected.

    It didnt mean enough to me.

    Can you explain more about it ?


Please take a look at the papers that the plugin is based on, linked to from BoneJ’s documentation. This plugin takes a bit of thinking about before it makes sense - I am glad that you are thinking about it!

That’s not how the algorithm works in practice. It looks at each voxel’s neighbourhood and assigns a small component of the Euler characteristic based on a look-up table that is hard coded in the plugin.

You’re right to point out this ambiguity. I fixed the documentation.

I usually worked with images that were completely filled with trabeculae, so, some of the trabeculae touched the sides of the image and these would have been connected to the piece of bone that the image was cropped out of. So, what should we do with these connections that have been cut by intersection with the image boundaries? They were connections in the bone, but if we consider the image as if it were isolated from the parent bone, the cut connections are not topological loops any more. The first calculation of χ treats the image as though pixels touching the sides are not connected to anything outside the image. The second calculation, of Δ(χ), treats the pixels touching the sides of the image as though they are connected to something outside the image. This adjustment is made to allow you to treat the connections in the image as part of the larger structure in which your image represents a smaller subvolume.

Please be careful with this algorithm - it’s very sensitive to noise on the surface of your foreground phase, which can form false loops that the algorithm detects as real connections. It’s important to do some smoothing steps prior to Connectivity. (e.g. dilating and eroding a few times, Gaussian blur, or whatever works for your images.)


Hi Jeon,

Euler characteristic can be defined in different ways. This definition works for polyhedra. Personally I found it easier to understand χ through the Betti number definition χ = b_0 - b_1 + b_2, where b_0 is the number of objects, b_1 the number of “handles”, and b_2 the number of cavities, i.e. “enclosed holes”.

Toriwaki & Yonekura found out you can calculate the χ of the image by summing up the Δχ of each 2 * 2 * 2 voxel neighbourhood in the image. Δχ describes how much a part contributes to or alters the χ of the whole.

Δχ can also be used to estimate how much the image stack contributes to the χ of the object its cut from, i.e. you assume that your sample is only a piece of larger whole. Each voxel lining the edges of the image stack affects connectivity. Thus BoneJ first reports χ as if your object were independent and floating free in space. In effect the stack is treated as if it was two voxels larger in each dimension. Then it displays the Δχ value that you can use to estimate how well connected this sub-sample is to the whole. See Odgaard & Gundersen for more details. Unfortunately, to add to the ambiguity, what other implementations of the algorithm often report as χ is actually χ + Δχ.

Best regards,