janba / GEL

A library of geometry processing tools for computer graphics
95 stars 23 forks source link

Higher sampling on highly anisotropic "botanical-like" paths #70

Closed kdmarrett closed 10 months ago

kdmarrett commented 11 months ago

I wonder if you have any advice on best practice to make the skeletal node sampling higher along paths. I've brought the skeleton quality factor to near zero (.01) and the skeleton grow factor very high (128) with the multi-scale skeletonization method and the node sampling along paths is unchanged and still not high enough:

Screenshot 2023-11-27 150303

I suspect this is due to the fact that imaging has erroneously stretched the surface in the z-dimension by a factor of about 6:

fcyl=280-it=25-fg= 031

..thereby causing the expanding sphere during LS search to be forced to get larger (lower frequency sampling) just to encompass the flattened z vertices and create a separator of the path.

It seems like there are two solutions to gain a natively higher frequency sampling via local separators (note: I do not want to simply interpolate the output skeleton because as you know getting arbitrarily higher frequency sampling calculated directly from the mesh is actually biologically relevant data and also helps get accurate centerlines that are even less sensitive to noise, thereby needing less smoothing).

1) Calculate the skeleton with LS to get a symmetric centerline. Find/save? the mapping from each skeletal node to its skeletal atom, the set of original surface vertices associated with it. Scale the z-dim distance of vertices to their skeletal node to remove the erroneous flatness. Recompute LS, this time the sampling will be very high ?? because the paths are symmetric.

2) Above would take some time and may possibly still not have very high sampling due to the default sampling method parameters. I'm using the multi-scale skeletonization method with the default sampling method. I suspect there is an alternate sampling method that allows more leniency for nodes repeatedly included in the LS expanding spheres during calculation. Maybe I should simply change the sampling parameter to achieve the higher sampling I'm discussing? If so, what do you suggest?

Thank you again,

janba commented 10 months ago

Maybe you could simply scale the input graph by 1/6 in the z direction? The search for local separators is geometrically informed, so even if the graph would then be denser in the z direction, it might work. Alternatively, you could upsample in the xy direction - making the process much slower. In any case, I think that achieving isotropy in the input is key. However, this is a hunch. Let me know if you find a path forward.

kdmarrett commented 10 months ago

thank you makes sense