Comments (14)
We have quite a bit of research results riding on the old school Skeletonize3D_ and AnalyzeSkeleton_ so improvements on that stuff would be very welcome! @alessandrofelder, what do you think? We should check out the thinning ops @kephale created!
from sciview.
See imagej/imagej-ops#63 (as this should go to imagej-ops
, no?)
from sciview.
@imagejan it probably should go in imagej-ops
but I believe that we do not have a graph data structure in ops yet. I got a little anxious about adding data structures to imagej-ops
after DefaultMesh
was added with some data structure dependencies that are now leading to big performance penalties in SciView.
Note that thinning has been merged and closed: imagej/imagej-ops#317
from sciview.
@kephale @rimadoma I agree that we do not need "the idiosyncrasies of the kind of graph AnalyzeSkeleton_ produces, e.g. storing the coordinates of all the voxels of a "junction" i.e. node.", but I can see that having access to the original skeletonization voxels may have some advantages for improving our high-level bone-biology-oriented command: for example, approximating a trabecula as a straight line as we're doing it now is probably too simplistic, so in the future, we might want to measure angles along the direction of the original structure (as given by the first 3 or so pixels, as done in the TriplePointAngle command) and not the graph structure. Would it be easy to keep this route open when we switch to a new graph library?
from sciview.
There have been some recent discussions about this w.r.t. https://jgrapht.org/
from sciview.
Interesting stuff! I agree that improvements would be welcome - in particular, it would avoid us using the Legacy code of AnalyzeSkeleton, and possibly see how different the results of our command are if we use different thinning algos?
from sciview.
@alessandrofelder Exactly! The missing piece here is creating a graph from a thinned image to be able to analyze the geometry of the skeleton (e.g. trabecular angles). Our tools would also need some work, because they're so heavily dependent on AnalyzeSkeleton_ etc. Maybe we shouldn't worry about migrating that stuff to sc.fiji.AnalyzeSkeleton_ until we check how we could benefit from this modern stuff? I wonder what @iarganda thinks...
from sciview.
@kephale At least we don't really have need for the idiosyncrasies of the kind of graph AnalyzeSkeleton_
produces, e.g. storing the coordinates of all the voxels of a "junction" i.e. node. Depending on whether that stuff would be generally useful, we could use an existing graph library, but we should hear @iarganda on this.
from sciview.
Sure, the graph-based skeletonization stuff that I wrote uses a Clojure library, so I'm expecting to have to port the code anyway.
from sciview.
And @tferr may have an opinion here as well, no?
from sciview.
It is worth noting that @tinevez and @tpietzsch could care once the discussion starts to narrow down on a specific graph library.
from sciview.
Hello @rimadoma and everybody else!
Creating a simple graph containing all the voxel information of the skeleton was really useful for me but I can see how the specific representation of junctions could be a problem to transfer that graph to a more general library. What do you guys have in mind to use from such a library?
from sciview.
- Topological comparisons between skeletons
- Using skeletons to control animations by creating tracks for cameras in SciView
- In the non-thinning based skeletonization code that I wrote (that uses Clojure graph libraries), approximate skeletons can be created from imperfect segmentations (i.e. a false gap in the segmentation ensures that thinning-based skeletonizations can never connect 2 regions, leading to topological defects)
Probably some other stuff, like tracks from cell tracking, etc..
from sciview.
Note that assimp has some support for skeleton I/O https://github.com/kotlin-graphics/assimp/blob/master/src/main/kotlin/assimp/SkeletonMeshBuilder.kt
from sciview.
Related Issues (20)
- Clicking on mesh brings up context menu in wrong location HOT 5
- Reset scene does not remove `Node`s from the inspector tree
- sciview often hangs on startup from Main.kt HOT 7
- sciview hangs on shutdown from Main.kt HOT 4
- Follow up on Controls improvements HOT 3
- Left/right rotation is always around the absolute Y axis, not camera relative
- Volume Timeseries demo yields OpenCL error HOT 2
- Add atmosphere background shader from scenery
- the node property panels (basic and rotation) always unfold HOT 3
- Optimize histogram calculation HOT 2
- Render issues when Windows Display scaling is not 100% HOT 1
- Exception when handling histograms
- Laggy behavior after using transfer function editor HOT 1
- Add support for adjusting range of histogram in transfer function HOT 1
- Issues starting sciview with Fiji HOT 1
- Protein deletion is very slow HOT 1
- Adding objects to the scene breaks for some object types HOT 4
- generateUniqueName is called twice in the open() member function HOT 3
- Adding a group to a Volume and then removing the group doesn't update the object inspector. HOT 6
- Bug: mouse hover over transfer function editor turns TF black HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sciview.