-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft PR that targets the work done towards TrackMate v9. #263
Commits on Jul 7, 2024
-
The Labkit editor can be launched on all time-points at once.
Shift-click on the button.
Configuration menu - View commit details
-
Copy full SHA for e263f83 - Browse repository at this point
Copy the full SHA e263f83View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3757a83 - Browse repository at this point
Copy the full SHA 3757a83View commit details -
In Labkit editor, labels receive name and color from spots.
I am not so sure it is a good idea for the color...
Configuration menu - View commit details
-
Copy full SHA for f9c0b73 - Browse repository at this point
Copy the full SHA f9c0b73View commit details -
Configuration menu - View commit details
-
Copy full SHA for ee3b86a - Browse repository at this point
Copy the full SHA ee3b86aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8aaf763 - Browse repository at this point
Copy the full SHA 8aaf763View commit details -
Always start the editor in FUSED mode,
and use the white LUT when the imp is not displayed as a Composite.
Configuration menu - View commit details
-
Copy full SHA for 544b3df - Browse repository at this point
Copy the full SHA 544b3dfView commit details -
Don't crash when editing on images with 1 channel.
Noticed by @MiniMiette
Configuration menu - View commit details
-
Copy full SHA for 48594c2 - Browse repository at this point
Copy the full SHA 48594c2View commit details -
Configuration menu - View commit details
-
Copy full SHA for a788cf1 - Browse repository at this point
Copy the full SHA a788cf1View commit details -
Store labels on ints, not on shorts.
Otherwise we get crashes when we have more than 4k labels. Which is not what Labkit is optimized for but we will see that in a second time. In case we change our minds on the backing integer type, right now the labkit launcher and importer classes are generic.
Configuration menu - View commit details
-
Copy full SHA for b503a63 - Browse repository at this point
Copy the full SHA b503a63View commit details -
Fix reimporting labels with large IDs in 2D.
The re-importing of labels from Tabkit to TrackMate could fail for 2D images and labels with a large index. For instance, it failed consistently when trying to re-import labels with an index larger than 65643. This problem roots in the getSpots() method of LabkitImporter. It relies on a trick: We get the new label image, and create spots from this label image. But we want the new spots to keep track of the index in the label image they were generated from. For this, in 2D, we use the MaskUtils.fromLabelingWithRoi() method. These methods accept an image as last argument used to read a value in the label image within the spot, that is normally used for the quality value of the new spot. But the SpotRoiUtils.from2DLabelingWithRoi() method converted the extra image to ImagePlus (because I was lazy). So the label image was effectively cast on ushort for an IntegerType image, hence the problem with the max label being 65453. The solution is to rewrite the from2DLabelingWithRoi() so that it does not rely on converting to ImagePlus, but on good old iteration with imglib2.
Configuration menu - View commit details
-
Copy full SHA for 4d3a326 - Browse repository at this point
Copy the full SHA 4d3a326View commit details -
Configuration menu - View commit details
-
Copy full SHA for 39e16fc - Browse repository at this point
Copy the full SHA 39e16fcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2d9edce - Browse repository at this point
Copy the full SHA 2d9edceView commit details -
Configuration menu - View commit details
-
Copy full SHA for e4eb1bc - Browse repository at this point
Copy the full SHA e4eb1bcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8c9961b - Browse repository at this point
Copy the full SHA 8c9961bView commit details
Commits on Jul 9, 2024
-
Configuration menu - View commit details
-
Copy full SHA for e65687c - Browse repository at this point
Copy the full SHA e65687cView commit details -
The detection preview is cancelable.
Provided that the detector that is called is cancelable.
Configuration menu - View commit details
-
Copy full SHA for 1d95bea - Browse repository at this point
Copy the full SHA 1d95beaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0bd86ec - Browse repository at this point
Copy the full SHA 0bd86ecView commit details -
Detection preview panel tweak.
Make sure the detection preview panel is slanted at the bottom of its display.
Configuration menu - View commit details
-
Copy full SHA for d6fdfb5 - Browse repository at this point
Copy the full SHA d6fdfb5View commit details
Commits on Jul 10, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 3b93eed - Browse repository at this point
Copy the full SHA 3b93eedView commit details -
Fixed a difficult bug with the LabKit editor reimporter.
The bug was causing weird issues with unedited spots being deleted, unedited spots being duplicated etc. It took me really long to understand the cause. It was hidden in the step where we go from a label image to a collection of spots. Because spots are polygons, with simplified contours, there might be some pixels on the edges of the object that are not strictly inside the label. In this importer, we read the label value in one go, by storing it in the QUALITY value of the spot, in the MaskUtils class. But since the spots have simplified contours, and since the QUALITY value is the maximal value iterated over, our approach might fail on border cases: - when the contout is approximated and include pixels from another object - and when this object has a label value higher than the lael of the spot. This commit include a temporary fix: we reiterate over the spot but takes the median value iterated over, to make sure we read the correct value for the label. Other attempts will follow, for reference. But a true fix involves making a method that returns a map from label value to spot.
Configuration menu - View commit details
-
Copy full SHA for de5de59 - Browse repository at this point
Copy the full SHA de5de59View commit details -
Another fix for the LabKit reimporter bug.
This time we fix it by creating spots that do not have a simplified contours. In that case we strictly iterate over the pixels inside label and get the correct value. However the created spots have a pixelated aspect (contours are not simplified), which might not be what the user wants. We should let them choose. Still not the perfect solution, as mentionned in the previous commmit.
Configuration menu - View commit details
-
Copy full SHA for 2c56943 - Browse repository at this point
Copy the full SHA 2c56943View commit details -
Configuration menu - View commit details
-
Copy full SHA for fc19713 - Browse repository at this point
Copy the full SHA fc19713View commit details -
Configuration menu - View commit details
-
Copy full SHA for f886b65 - Browse repository at this point
Copy the full SHA f886b65View commit details
Commits on Jul 11, 2024
-
Use the new label immg to spot method to get spots AND the label they come from.
Configuration menu - View commit details
-
Copy full SHA for d1ca968 - Browse repository at this point
Copy the full SHA d1ca968View commit details -
In LabKit editor, offer to simplify the contour of modified spots.
Also better message when closing the editor.
Configuration menu - View commit details
-
Copy full SHA for aa9dc52 - Browse repository at this point
Copy the full SHA aa9dc52View commit details
Commits on Jul 12, 2024
-
Let the user edit a ROI in the image with the LabKit editor.
If a ROI exists in the input image when launching the LabKit editor, only the image and the spots present in the ROI are sent to the editor. Spots touching the borders are not imported.
Configuration menu - View commit details
-
Copy full SHA for 73c85db - Browse repository at this point
Copy the full SHA 73c85dbView commit details
Commits on Jul 17, 2024
-
Fix panning not working when the TrackMate tool is selected.
Normally pressing space and dragging should move the view, as for normal ImageJ tools. The removed line was preventing it.
Configuration menu - View commit details
-
Copy full SHA for 186520e - Browse repository at this point
Copy the full SHA 186520eView commit details
Commits on Jul 18, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 28666c3 - Browse repository at this point
Copy the full SHA 28666c3View commit details -
Fix bug in LabKit editor: avoid spot ID and label conflicts.
When editing a sub-portion of the image, the spots outside the ROI are not imported in the editor. It is possible that the user creates a new label in LabKit that will have the same id that an existing spot outside the ROI. Before this fix, the spots in that case were replaced by the new ones, creating a mess. The fix consists in reminding what spots are imported in the LabKit editor, then compariing to this list the new ids when reimporting from the editor.
Configuration menu - View commit details
-
Copy full SHA for faa87b9 - Browse repository at this point
Copy the full SHA faa87b9View commit details
Commits on Jul 19, 2024
-
Custom LabKit frame and segmentation component.
Simplified, removing the menu, the segmentation features and the segmenter features. Somply done by copy-pasting Matthias classes and removing the lines with the features to prune.
Configuration menu - View commit details
-
Copy full SHA for 8ccd3ee - Browse repository at this point
Copy the full SHA 8ccd3eeView commit details -
Fix another bug with the LabKit importer.
This time it was due to confusion between a map from spot ID to spots, and a map from label value to spot. I fixed it by rewriting everything in terms of label values in the labeling. So we do not need to keep track of the spot ID anymore. The labels could be anything. They are still equal to spot ID + 1, because it is convenient to debug.
Configuration menu - View commit details
-
Copy full SHA for 2f9583e - Browse repository at this point
Copy the full SHA 2f9583eView commit details
Commits on Jul 22, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 72d60f3 - Browse repository at this point
Copy the full SHA 72d60f3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 64bc4b4 - Browse repository at this point
Copy the full SHA 64bc4b4View commit details -
Configuration menu - View commit details
-
Copy full SHA for d88b61e - Browse repository at this point
Copy the full SHA d88b61eView commit details -
WIP: Iterative intersection with a plane.
Still not good enough, the vertices are not iterated in a monotonic manner.
Configuration menu - View commit details
-
Copy full SHA for d768bd1 - Browse repository at this point
Copy the full SHA d768bd1View commit details -
Unother attempt, using an edge and a face map.
Better but still not good enough: some points on the contours are repeated.
Configuration menu - View commit details
-
Copy full SHA for c82ef9e - Browse repository at this point
Copy the full SHA c82ef9eView commit details -
We actually don't need the vertex list. The edge list is sufficient.
Also do not add duplicate points on the contour (happens often when there is no smoothing). Still not good: there are some cases where the loop breaks too early.
Configuration menu - View commit details
-
Copy full SHA for d290e93 - Browse repository at this point
Copy the full SHA d290e93View commit details -
Configuration menu - View commit details
-
Copy full SHA for b86e7dc - Browse repository at this point
Copy the full SHA b86e7dcView commit details -
Rework the demo of mesh intersection.
Much cleaner. Still does not work for not simple meshes. Probably because of border cases where we have vertices that lie exactly on the plane we are interesecting with.
Configuration menu - View commit details
-
Copy full SHA for 0141aa7 - Browse repository at this point
Copy the full SHA 0141aa7View commit details -
A simple data structure to store a 3D mesh in a Spot object.
This class is the 3D counterpart of SpotRoi. It stores the object shape as a mesh, and has (for now) a few methods to facilitate painting it and creating it. The mesh are stored with coordinates relative to the spot center (mesh center is at 0,0,0). The same for the bounding box. The mesh coordinates are expected to be in physical coordinates, not pixel coordinates.
Configuration menu - View commit details
-
Copy full SHA for 8eccba4 - Browse repository at this point
Copy the full SHA 8eccba4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 72ed47f - Browse repository at this point
Copy the full SHA 72ed47fView commit details -
Utility method for SpotRoi: generate XY coordinates
and write them in holders provided by the user.
Configuration menu - View commit details
-
Copy full SHA for 6b99872 - Browse repository at this point
Copy the full SHA 6b99872View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1f215f2 - Browse repository at this point
Copy the full SHA 1f215f2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2d46afb - Browse repository at this point
Copy the full SHA 2d46afbView commit details -
Paint 3D meshes in the HyperStackViewer.
We simply reslice the mesh at the Z slice currently displayed, and paint the intersection as a collection of segments. I also took the opportunity to refactor a bit the SpotOverlay. Right now this works but is not optimal: 1/ There are weird stuff happening at the *top* of the mesh: it's like we miss some part of it. 2/ The slice routine generates a list of disconnected segments. It does not show when we paint them, but maybe would be nice to reconstruct the collection of contours resulting from the intersection of a mesh with a plane. 3/ We could optimize the slice() routinemaybe by having an index that sorts triangles by their minZ value, and another index that sorts them by their maxZ value. This way we could quickly retrieve the triangles to sort by two binary-search and one set intersection.
Configuration menu - View commit details
-
Copy full SHA for 7bab2dc - Browse repository at this point
Copy the full SHA 7bab2dcView commit details -
Configuration menu - View commit details
-
Copy full SHA for f0118a2 - Browse repository at this point
Copy the full SHA f0118a2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0302c28 - Browse repository at this point
Copy the full SHA 0302c28View commit details -
Temporary store meshes in absolute physical coordinates.
While we try to make better slices.
Configuration menu - View commit details
-
Copy full SHA for 7aebecd - Browse repository at this point
Copy the full SHA 7aebecdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 01f6eaa - Browse repository at this point
Copy the full SHA 01f6eaaView commit details -
Non working version of a pixel iterator.
It is working for simple meshes but the ones we have have too many border cases and make it fail.
Configuration menu - View commit details
-
Copy full SHA for 9007614 - Browse repository at this point
Copy the full SHA 9007614View commit details -
Configuration menu - View commit details
-
Copy full SHA for 94d9f4a - Browse repository at this point
Copy the full SHA 94d9f4aView commit details -
Configuration menu - View commit details
-
Copy full SHA for c7a420d - Browse repository at this point
Copy the full SHA c7a420dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 68590ff - Browse repository at this point
Copy the full SHA 68590ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for c72231f - Browse repository at this point
Copy the full SHA c72231fView commit details -
Configuration menu - View commit details
-
Copy full SHA for e848698 - Browse repository at this point
Copy the full SHA e848698View commit details -
Configuration menu - View commit details
-
Copy full SHA for e44c9fa - Browse repository at this point
Copy the full SHA e44c9faView commit details -
Yeaaahh! Working version of a pixel iterator.
At least on star-convex objects, but does not assume they are. Still very tiny final border cases, where the iteration stops early at the poles of an object, but it's nothing unsurmontable. Tomorrow.
Configuration menu - View commit details
-
Copy full SHA for da9e346 - Browse repository at this point
Copy the full SHA da9e346View commit details -
Configuration menu - View commit details
-
Copy full SHA for b2b4ade - Browse repository at this point
Copy the full SHA b2b4adeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3e0b212 - Browse repository at this point
Copy the full SHA 3e0b212View commit details -
Configuration menu - View commit details
-
Copy full SHA for 81b5b6a - Browse repository at this point
Copy the full SHA 81b5b6aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2717711 - Browse repository at this point
Copy the full SHA 2717711View commit details -
Implement quality measurement on the 3D object.
Without using the mesh actually, we use the bitmask provided.
Configuration menu - View commit details
-
Copy full SHA for 1406b8d - Browse repository at this point
Copy the full SHA 1406b8dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8cafcc5 - Browse repository at this point
Copy the full SHA 8cafcc5View commit details -
Configuration menu - View commit details
-
Copy full SHA for e6ac80e - Browse repository at this point
Copy the full SHA e6ac80eView commit details -
Add methods to SpotUtil to return suitable iterables in 2D and 3D.
With this simple change we get intensity measurements in 3D in a mesh for free.
Configuration menu - View commit details
-
Copy full SHA for 3de035b - Browse repository at this point
Copy the full SHA 3de035bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 90de0ff - Browse repository at this point
Copy the full SHA 90de0ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for 1dc136b - Browse repository at this point
Copy the full SHA 1dc136bView commit details -
Temporary couple to imagej-mesh-io 0.1.3-SNAPSHOT.
So that we can have reading from an input stream.
Configuration menu - View commit details
-
Copy full SHA for 67c8352 - Browse repository at this point
Copy the full SHA 67c8352View commit details -
Serialization and deserialization of spot meshes to file.
The meshes are saved in a ZIP file next to the TrackMate XML file. If the TrackMate file is called: trackmate-file.xml, then the file that stores the meshes for the model are in a zip file called trackmate-file.xml.meshes This zip file just contains the meshes as PLY files, named with the spots ID. If a spot has an ID equal to 1234, then the PLY file that stores its mesh is named 1234.ply in the zip file. If the zip file does not contain such a file then it means that this spot does not have a mesh. If there is not .meshes file, it means that no spot have a mesh. Possible improvement: read all meshes at once, instead of opening and closing the zip file for every spot.
Configuration menu - View commit details
-
Copy full SHA for e5c9232 - Browse repository at this point
Copy the full SHA e5c9232View commit details -
Configuration menu - View commit details
-
Copy full SHA for d157924 - Browse repository at this point
Copy the full SHA d157924View commit details -
Recompute face normals after loading mesh.
They are not saved not retrieved by the PLY file reader. Should they?
Configuration menu - View commit details
-
Copy full SHA for 15ebfde - Browse repository at this point
Copy the full SHA 15ebfdeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4fb0e59 - Browse repository at this point
Copy the full SHA 4fb0e59View commit details -
WIP: Rework the Z-slicing of meshes.
Try to build actual contours across Z sections of the object, reusing the ray casting things we have for the iteration. Very preliminary and has cases where it does not work. Also has a lot of room for optimization and refactoring.
Configuration menu - View commit details
-
Copy full SHA for 0ecf26d - Browse repository at this point
Copy the full SHA 0ecf26dView commit details -
When everything is bugged, they are important.
Configuration menu - View commit details
-
Copy full SHA for 17584f7 - Browse repository at this point
Copy the full SHA 17584f7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 28b1da2 - Browse repository at this point
Copy the full SHA 28b1da2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3f2d8d4 - Browse repository at this point
Copy the full SHA 3f2d8d4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9334c9c - Browse repository at this point
Copy the full SHA 9334c9cView commit details -
Configuration menu - View commit details
-
Copy full SHA for ddab834 - Browse repository at this point
Copy the full SHA ddab834View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4d7f326 - Browse repository at this point
Copy the full SHA 4d7f326View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5815d27 - Browse repository at this point
Copy the full SHA 5815d27View commit details -
Configuration menu - View commit details
-
Copy full SHA for 23ded95 - Browse repository at this point
Copy the full SHA 23ded95View commit details -
Configuration menu - View commit details
-
Copy full SHA for 61b665d - Browse repository at this point
Copy the full SHA 61b665dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 591b0e1 - Browse repository at this point
Copy the full SHA 591b0e1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a95a39 - Browse repository at this point
Copy the full SHA 6a95a39View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6969ba4 - Browse repository at this point
Copy the full SHA 6969ba4View commit details -
Use the contours we got from the ZSlicer. Perform ray cast along the X axis. Count how many intersection we crosses to determine whether we are inside or outside. Works when the slice has several disjoint contours and when some contours are surrounding the exterior of the mesh (holes inside the slice). Relatively optimized: - Once per spot: get all the Z slices. Involves iterating once through all the triangles, sorting 2 arrays and a few binary search. - Once per X line: compute intersections of a ray along the X axis with all the contours. - Once per pixel: binary search against intersection to know how many of them we crossed.
Configuration menu - View commit details
-
Copy full SHA for 1c57081 - Browse repository at this point
Copy the full SHA 1c57081View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6ea2074 - Browse repository at this point
Copy the full SHA 6ea2074View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3670974 - Browse repository at this point
Copy the full SHA 3670974View commit details -
Meshes are stored centered at (0,0,0)
They and translated on the fly when iterating over pixels, saving and diplaying.
Configuration menu - View commit details
-
Copy full SHA for 1b1a323 - Browse repository at this point
Copy the full SHA 1b1a323View commit details -
Create a proper mask from the input before using the mask detector.
A small routine builds a view of the input (that should be a mask) where all pixels greater than 0 are set to 1 and to 0 otherwise. In the case of meshes, this allows using the marching cube algorithm on real type, interpolating at 0.5 between 0 and 1, and having smoother meshes than when using the marching cube on boolean types.
Configuration menu - View commit details
-
Copy full SHA for f6f8552 - Browse repository at this point
Copy the full SHA f6f8552View commit details -
Configuration menu - View commit details
-
Copy full SHA for a7ca064 - Browse repository at this point
Copy the full SHA a7ca064View commit details -
Mesh slices can be painted filled.
Holes in slices are properly handled. But only in the case of contours generated by meshes that are manifold and two-manifold.
Configuration menu - View commit details
-
Copy full SHA for bee190f - Browse repository at this point
Copy the full SHA bee190fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7acabe5 - Browse repository at this point
Copy the full SHA 7acabe5View commit details -
Precompute and store a cache of Z-slices for meshes.
We don't want to recompute them every time we have to paint the spot-meshes, or iterate through their pixel. And we have an optimized version of the ZSlicer that computes Z-slices in batch with several Zs. This makes the display and iteration in the TrackMate app much much faster for large meshes. The difficulty is that we need to specify a scale in XY and in Z (to simplify the contours, and compute the Z positions of the intersections with the image stack slices). But we don't want to store these scales - which are the pixel size typically - in the model, that should be independent of a reference to an image. The solution in this commit consists in receiving these scales when we require the precomputed Z-slices: the cache is then recomputed if needed, and we have these scales in the code when we require the Z-slices
Configuration menu - View commit details
-
Copy full SHA for b44d73b - Browse repository at this point
Copy the full SHA b44d73bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 55ada3b - Browse repository at this point
Copy the full SHA 55ada3bView commit details -
Can manually scale meshes in size.
Not sure it is useful, but we can do it for normal spots, rois and now meshes.
Configuration menu - View commit details
-
Copy full SHA for 34f314e - Browse repository at this point
Copy the full SHA 34f314eView commit details -
Configuration menu - View commit details
-
Copy full SHA for b559b28 - Browse repository at this point
Copy the full SHA b559b28View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0c39749 - Browse repository at this point
Copy the full SHA 0c39749View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5352cf0 - Browse repository at this point
Copy the full SHA 5352cf0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5766a3b - Browse repository at this point
Copy the full SHA 5766a3bView commit details -
Support making single spots with possibly hollow meshes.
That is: we do not rely on connected components to separate mesh, but instead simply use the ImgLib2 regions.
Configuration menu - View commit details
-
Copy full SHA for abf748f - Browse repository at this point
Copy the full SHA abf748fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 617150a - Browse repository at this point
Copy the full SHA 617150aView commit details -
Configuration menu - View commit details
-
Copy full SHA for f017db6 - Browse repository at this point
Copy the full SHA f017db6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9d90aae - Browse repository at this point
Copy the full SHA 9d90aaeView commit details -
Recompute the Z-slices when changing the radius.
Nevermind the XY changes optimization.
Configuration menu - View commit details
-
Copy full SHA for c468c42 - Browse repository at this point
Copy the full SHA c468c42View commit details -
Configuration menu - View commit details
-
Copy full SHA for b3cf8b5 - Browse repository at this point
Copy the full SHA b3cf8b5View commit details -
Add flag for detectors that can return 3D shape,
and interfaces for analyzers that can exploit it.
Configuration menu - View commit details
-
Copy full SHA for dc9a6d9 - Browse repository at this point
Copy the full SHA dc9a6d9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 036ddc6 - Browse repository at this point
Copy the full SHA 036ddc6View commit details -
Configuration menu - View commit details
-
Copy full SHA for fa44f79 - Browse repository at this point
Copy the full SHA fa44f79View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0c39513 - Browse repository at this point
Copy the full SHA 0c39513View commit details -
Configuration menu - View commit details
-
Copy full SHA for 03d63e1 - Browse repository at this point
Copy the full SHA 03d63e1View commit details -
Fit an ellipsoid to the convex-Hull of a 3D mesh. Adapted from Yury Petrov's EllipsoidFit MATLAB function and KalebKE ellipsoidfit (Apache license) TODO: Test!
Configuration menu - View commit details
-
Copy full SHA for b05ed56 - Browse repository at this point
Copy the full SHA b05ed56View commit details -
Configuration menu - View commit details
-
Copy full SHA for 20c2cbf - Browse repository at this point
Copy the full SHA 20c2cbfView commit details -
JUnit test for the ellipsoid fitter.
Contains a routine to generate the mesh of an ellipsoid programmatically.
Configuration menu - View commit details
-
Copy full SHA for e1c3e31 - Browse repository at this point
Copy the full SHA e1c3e31View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6b54c96 - Browse repository at this point
Copy the full SHA 6b54c96View commit details -
Configuration menu - View commit details
-
Copy full SHA for 59ad971 - Browse repository at this point
Copy the full SHA 59ad971View commit details -
Spot is now an interface, with 3 derived class.
Spot -> the main interface, used by default in trackers. Define basic methods to get and store feature values. SpotBase -> Plain spots, like for TrackMate v<7 SpotRoi -> spot has a polygon as a contour in 2D SpotMesh -> spot has a 3D mesh More elegant and extensible to app consuming TrackMate trackers with special objects.
Configuration menu - View commit details
-
Copy full SHA for c26debe - Browse repository at this point
Copy the full SHA c26debeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 0edbc1e - Browse repository at this point
Copy the full SHA 0edbc1eView commit details -
Configuration menu - View commit details
-
Copy full SHA for d048129 - Browse repository at this point
Copy the full SHA d048129View commit details -
Configuration menu - View commit details
-
Copy full SHA for c217b23 - Browse repository at this point
Copy the full SHA c217b23View commit details -
Configuration menu - View commit details
-
Copy full SHA for fba3747 - Browse repository at this point
Copy the full SHA fba3747View commit details -
Configuration menu - View commit details
-
Copy full SHA for 075bbd7 - Browse repository at this point
Copy the full SHA 075bbd7View commit details -
- Make fields private, replace by public methods. - Review iteration over coordinates. - More sensible convenience methods.
Configuration menu - View commit details
-
Copy full SHA for 5447f63 - Browse repository at this point
Copy the full SHA 5447f63View commit details -
Configuration menu - View commit details
-
Copy full SHA for 77c3603 - Browse repository at this point
Copy the full SHA 77c3603View commit details -
Simply make the mesh field private, accessible via a public method.
Configuration menu - View commit details
-
Copy full SHA for 4e2769b - Browse repository at this point
Copy the full SHA 4e2769bView commit details -
WIP: An action to export all the meshes in a model to a PLY file series.
So that they can be opened as a time series in ParaView.
Configuration menu - View commit details
-
Copy full SHA for 1155b5e - Browse repository at this point
Copy the full SHA 1155b5eView commit details -
Configuration menu - View commit details
-
Copy full SHA for d3cdbc6 - Browse repository at this point
Copy the full SHA d3cdbc6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0aaf302 - Browse repository at this point
Copy the full SHA 0aaf302View commit details -
Configuration menu - View commit details
-
Copy full SHA for b07d1c6 - Browse repository at this point
Copy the full SHA b07d1c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1966635 - Browse repository at this point
Copy the full SHA 1966635View commit details -
Configuration menu - View commit details
-
Copy full SHA for cd07ac3 - Browse repository at this point
Copy the full SHA cd07ac3View commit details -
Rework the 2D and 3D detection utils.
We have now 3D meshes that we get via the marching cubes. This algorithm behaves slightly differently for grayscale + threshold and mask images, so we have to implement that in TrackMate. First: split the shape-related methods of MaskUtils in two utility classes SpotRoiUtils and SpotMeshUtils so as to avoid having a single gigantic class. With grayscale thresholded image, the marching cube algorithm can return nice, smooth, interpolated meshes, which is what we want in a biological context. So there is now in SpotMeshUtils a method that exploits this in the following manner: The grayscale marching-cube algorithm is used to create one big mesh from the source image. It is then split in connected-components to create single spot objects. However, to deal with possible holes in objects, meshes are possibly re-merged based on full inclusion of their bounding-box. For instance, a hollow sphere would be represented by two connected-components, yielding two meshes. But because the small one isincluded in the big one, they are merged in this method so that the hole is properly included in the shape representation. When dealing with masks as inputs, we want to generate a mesh that can retrieve the exact pixel content of the mask when iterated. So a separate method convert the mask into a label image, and each of its connected-component is treated separately to generate a mesh. We will use the grayscale marching-cube algorithm, using a threshold value of 0.5 on the bit-masks resulting from connected-component analysis of the label image generated from the mask.
Configuration menu - View commit details
-
Copy full SHA for 8d7bb4c - Browse repository at this point
Copy the full SHA 8d7bb4cView commit details -
Configuration menu - View commit details
-
Copy full SHA for c78002e - Browse repository at this point
Copy the full SHA c78002eView commit details -
Configuration menu - View commit details
-
Copy full SHA for ed99c4b - Browse repository at this point
Copy the full SHA ed99c4bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 04a1b56 - Browse repository at this point
Copy the full SHA 04a1b56View commit details -
Configuration menu - View commit details
-
Copy full SHA for 260f871 - Browse repository at this point
Copy the full SHA 260f871View commit details -
A UI tool to build a selection of feature analyzers and save it to disk.
Later we will make the GUI sessions use the saved selection, so that users can choose what they want to compute or not. Might be handy for some features that are long to compute. Contrast and SNR I am looking at you. And actually you are deselected by default now.
Configuration menu - View commit details
-
Copy full SHA for 47bfbf1 - Browse repository at this point
Copy the full SHA 47bfbf1View commit details -
Configuration menu - View commit details
-
Copy full SHA for af4d012 - Browse repository at this point
Copy the full SHA af4d012View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0f4bf9b - Browse repository at this point
Copy the full SHA 0f4bf9bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 00ebafa - Browse repository at this point
Copy the full SHA 00ebafaView commit details -
Also abides to user spot analyser selection after detection step.
Because morphology analyzers (2D or 3D) are added only after detection step (they are added at this moment, because we need to know whether the detector can return the spot shape).
Configuration menu - View commit details
-
Copy full SHA for 14d7ca6 - Browse repository at this point
Copy the full SHA 14d7ca6View commit details -
Configuration menu - View commit details
-
Copy full SHA for bde9aef - Browse repository at this point
Copy the full SHA bde9aefView commit details -
Convenience class to run 2D+Z segmentation algos in 3D.
A SpotDetector for 3D images that work by running a spot segmentation algorithm on 2D slices, and merging results using a tracker. This yield a label image that is then converted to 3D meshes using the LabelImageDetector. This is a convenience class, made to be used in specialized SpotDetectorFactory with specific choices of detector and merging strategy.
Configuration menu - View commit details
-
Copy full SHA for f8fca46 - Browse repository at this point
Copy the full SHA f8fca46View commit details -
Fix bug in analyzer selection.
When using the configure(Settings) method, the morphology analyzers were not added to the Settings object, even when selected.
Configuration menu - View commit details
-
Copy full SHA for 1c2bc75 - Browse repository at this point
Copy the full SHA 1c2bc75View commit details -
The GUI honors the user selection when computing spot features.
The spot feature analyzer factories are directly read from the user selection.
Configuration menu - View commit details
-
Copy full SHA for abc68b5 - Browse repository at this point
Copy the full SHA abc68b5View commit details -
Use again the custom 2D iteration routine for SpotRoi.
I was using it before and trash it in the overhaul. But this one is about 30x faster. So let's put it back, with some adapting. Noticed by @Mini-Miette
Configuration menu - View commit details
-
Copy full SHA for 8be3b4e - Browse repository at this point
Copy the full SHA 8be3b4eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9bfeed9 - Browse repository at this point
Copy the full SHA 9bfeed9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4986865 - Browse repository at this point
Copy the full SHA 4986865View commit details -
Make sure the user selection of analyzers are added in priority order.
This is crucial, as some analyzers depend on others to have been computed. This is implemented following the priority of the analyzer factories, which is known by the provider. The provider returns a list of keys, in priority order, so we must make sure to reproduce this order with the user selection. Hence the gymnastic in the configure(Settings) method.
Configuration menu - View commit details
-
Copy full SHA for d1994b8 - Browse repository at this point
Copy the full SHA d1994b8View commit details -
Implement quality measurement on the 3D object.
Without using the mesh actually, we use the bitmask provided.
Configuration menu - View commit details
-
Copy full SHA for a3b4587 - Browse repository at this point
Copy the full SHA a3b4587View commit details -
Spot is now an interface, with 3 derived class.
Spot -> the main interface, used by default in trackers. Define basic methods to get and store feature values. SpotBase -> Plain spots, like for TrackMate v<7 SpotRoi -> spot has a polygon as a contour in 2D SpotMesh -> spot has a 3D mesh More elegant and extensible to app consuming TrackMate trackers with special objects.
Configuration menu - View commit details
-
Copy full SHA for edd086c - Browse repository at this point
Copy the full SHA edd086cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 592ac97 - Browse repository at this point
Copy the full SHA 592ac97View commit details -
Configuration menu - View commit details
-
Copy full SHA for e684cc4 - Browse repository at this point
Copy the full SHA e684cc4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4667f14 - Browse repository at this point
Copy the full SHA 4667f14View commit details -
Configuration menu - View commit details
-
Copy full SHA for fe5692d - Browse repository at this point
Copy the full SHA fe5692dView commit details -
WIP: A new viewer for TrackMate based on the BVV.
Adapting the demo from Tobias. This currently requires the 'mesh' branch in the bvv repo to work. Right now it can display the 3D image (possibly multi-channel) over time, along with the meshes in spots (if there is no mesh, nothing is shown). There is still so much to do but this is cool!
Configuration menu - View commit details
-
Copy full SHA for 800bf01 - Browse repository at this point
Copy the full SHA 800bf01View commit details -
Modified so that the color of individual meshes can be changed at runtime. We also add a white halo so that object contours are visible over the black background.
Configuration menu - View commit details
-
Copy full SHA for 4f8a301 - Browse repository at this point
Copy the full SHA 4f8a301View commit details -
The BVV view abides to the spot color settings.
Can be changed live using TrackMate display settings panels.
Configuration menu - View commit details
-
Copy full SHA for 30008d4 - Browse repository at this point
Copy the full SHA 30008d4View commit details -
Configuration menu - View commit details
-
Copy full SHA for c3c5213 - Browse repository at this point
Copy the full SHA c3c5213View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a36f12 - Browse repository at this point
Copy the full SHA 6a36f12View commit details -
Configuration menu - View commit details
-
Copy full SHA for a5a5dd5 - Browse repository at this point
Copy the full SHA a5a5dd5View commit details -
Fix OverlapTracker not working if the first frame was devoid of visib…
…le spots. Noticed by Laura Xénard @Mini-Miette Fix #260
Configuration menu - View commit details
-
Copy full SHA for 5311e4a - Browse repository at this point
Copy the full SHA 5311e4aView commit details -
Put a test drive in a try/catch block so that we can get exceptions.
One bug of my Eclipse installation results in not having exceptions shown in the console.
Configuration menu - View commit details
-
Copy full SHA for ed2b1af - Browse repository at this point
Copy the full SHA ed2b1afView commit details -
Configuration menu - View commit details
-
Copy full SHA for 584494c - Browse repository at this point
Copy the full SHA 584494cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 03f2635 - Browse repository at this point
Copy the full SHA 03f2635View commit details -
Configuration menu - View commit details
-
Copy full SHA for cef0048 - Browse repository at this point
Copy the full SHA cef0048View commit details -
Configuration menu - View commit details
-
Copy full SHA for 39be943 - Browse repository at this point
Copy the full SHA 39be943View commit details -
Configuration menu - View commit details
-
Copy full SHA for bba11ef - Browse repository at this point
Copy the full SHA bba11efView commit details -
Configuration menu - View commit details
-
Copy full SHA for ccf59da - Browse repository at this point
Copy the full SHA ccf59daView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6f71df7 - Browse repository at this point
Copy the full SHA 6f71df7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3c21ae7 - Browse repository at this point
Copy the full SHA 3c21ae7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e7b473 - Browse repository at this point
Copy the full SHA 1e7b473View commit details -
WIP: on Process2DZ, assign quality, work well with ROIs.
Does not work yet, if the zmin is not 0.
Configuration menu - View commit details
-
Copy full SHA for 098be7a - Browse repository at this point
Copy the full SHA 098be7aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6b20fe8 - Browse repository at this point
Copy the full SHA 6b20fe8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2a695e7 - Browse repository at this point
Copy the full SHA 2a695e7View commit details -
Configuration menu - View commit details
-
Copy full SHA for a0ecff5 - Browse repository at this point
Copy the full SHA a0ecff5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3bf50b1 - Browse repository at this point
Copy the full SHA 3bf50b1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0bbb6e6 - Browse repository at this point
Copy the full SHA 0bbb6e6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 70b968a - Browse repository at this point
Copy the full SHA 70b968aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 27eee1d - Browse repository at this point
Copy the full SHA 27eee1dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 708c9d9 - Browse repository at this point
Copy the full SHA 708c9d9View commit details -
Update to non-SNAPSHOT version of bigvolumeviewer.
This version is deployed on maven.imagej.net. Tobias made a special branch for TrackMate, and the difference I could identify is the presence of a method that returns the camera view. See the diff in TrackMateBVV.
Configuration menu - View commit details
-
Copy full SHA for 4706120 - Browse repository at this point
Copy the full SHA 4706120View commit details -
WIP: Trying to implement transparency of meshes.
Right now we don't "see through" the meshes. They simply get darker.
Configuration menu - View commit details
-
Copy full SHA for 00b889d - Browse repository at this point
Copy the full SHA 00b889dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 829de7e - Browse repository at this point
Copy the full SHA 829de7eView commit details -
Spot is now an interface, with 3 derived class.
Spot -> the main interface, used by default in trackers. Define basic methods to get and store feature values. SpotBase -> Plain spots, like for TrackMate v<7 SpotRoi -> spot has a polygon as a contour in 2D SpotMesh -> spot has a 3D mesh More elegant and extensible to app consuming TrackMate trackers with special objects.
Configuration menu - View commit details
-
Copy full SHA for 19042fa - Browse repository at this point
Copy the full SHA 19042faView commit details -
Rework the 2D and 3D detection utils.
We have now 3D meshes that we get via the marching cubes. This algorithm behaves slightly differently for grayscale + threshold and mask images, so we have to implement that in TrackMate. First: split the shape-related methods of MaskUtils in two utility classes SpotRoiUtils and SpotMeshUtils so as to avoid having a single gigantic class. With grayscale thresholded image, the marching cube algorithm can return nice, smooth, interpolated meshes, which is what we want in a biological context. So there is now in SpotMeshUtils a method that exploits this in the following manner: The grayscale marching-cube algorithm is used to create one big mesh from the source image. It is then split in connected-components to create single spot objects. However, to deal with possible holes in objects, meshes are possibly re-merged based on full inclusion of their bounding-box. For instance, a hollow sphere would be represented by two connected-components, yielding two meshes. But because the small one isincluded in the big one, they are merged in this method so that the hole is properly included in the shape representation. When dealing with masks as inputs, we want to generate a mesh that can retrieve the exact pixel content of the mask when iterated. So a separate method convert the mask into a label image, and each of its connected-component is treated separately to generate a mesh. We will use the grayscale marching-cube algorithm, using a threshold value of 0.5 on the bit-masks resulting from connected-component analysis of the label image generated from the mask.
Configuration menu - View commit details
-
Copy full SHA for 31468ec - Browse repository at this point
Copy the full SHA 31468ecView commit details -
Configuration menu - View commit details
-
Copy full SHA for a2c4252 - Browse repository at this point
Copy the full SHA a2c4252View commit details -
Depend on imglib2-mesh preview, not on net-imagej-mesh.
Still a WIP: several utility methods in TrackMate about meshes are now in the imglib2-mesh dep.
Configuration menu - View commit details
-
Copy full SHA for 3a985a9 - Browse repository at this point
Copy the full SHA 3a985a9View commit details -
Use the scale method of the spot interface.
We don't have SpotShape anymore.
Configuration menu - View commit details
-
Copy full SHA for d5a96e4 - Browse repository at this point
Copy the full SHA d5a96e4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 10182e2 - Browse repository at this point
Copy the full SHA 10182e2View commit details -
Try to do without deprecated method.
Given the message, we might see an error depending on the java JRE that runs. Using the Zulu one, this passes.
Configuration menu - View commit details
-
Copy full SHA for c881229 - Browse repository at this point
Copy the full SHA c881229View commit details -
Configuration menu - View commit details
-
Copy full SHA for cb1027b - Browse repository at this point
Copy the full SHA cb1027bView commit details -
Configuration menu - View commit details
-
Copy full SHA for fdf16db - Browse repository at this point
Copy the full SHA fdf16dbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 80b27ba - Browse repository at this point
Copy the full SHA 80b27baView commit details -
Configuration menu - View commit details
-
Copy full SHA for 2b5b26b - Browse repository at this point
Copy the full SHA 2b5b26bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8e7c24b - Browse repository at this point
Copy the full SHA 8e7c24bView commit details -
Make the mesh of a SpotMesh setable.
Also stop exposing the bounding-box.
Configuration menu - View commit details
-
Copy full SHA for bafff8b - Browse repository at this point
Copy the full SHA bafff8bView commit details -
Return the actual BufferMesh class when we expose the mesh of a SpotM…
…esh. TODO: use this in dependent methods.
Configuration menu - View commit details
-
Copy full SHA for 7e25850 - Browse repository at this point
Copy the full SHA 7e25850View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9c2c176 - Browse repository at this point
Copy the full SHA 9c2c176View commit details -
Configuration menu - View commit details
-
Copy full SHA for 83925c2 - Browse repository at this point
Copy the full SHA 83925c2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 346f5d1 - Browse repository at this point
Copy the full SHA 346f5d1View commit details -
- Actually run the tasks in multithreaded fashion (forgot to shutdown the executor service). - Notify the views that the spots have changed, including the 3D view. Takes a little delay but it's fine.
Configuration menu - View commit details
-
Copy full SHA for 536089f - Browse repository at this point
Copy the full SHA 536089fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9a7e46a - Browse repository at this point
Copy the full SHA 9a7e46aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 03411c9 - Browse repository at this point
Copy the full SHA 03411c9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 06eeb95 - Browse repository at this point
Copy the full SHA 06eeb95View commit details -
Configuration menu - View commit details
-
Copy full SHA for 71dae84 - Browse repository at this point
Copy the full SHA 71dae84View commit details -
Add a 'basic' setting panel to the mesh smoother.
It filters with mu = 1., lambda -0, which is like applying heavy Laplace smoothing.
Configuration menu - View commit details
-
Copy full SHA for c515e9c - Browse repository at this point
Copy the full SHA c515e9cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7cf06fe - Browse repository at this point
Copy the full SHA 7cf06feView commit details -
WIP: Smooth mask or label before generating mesh to smooth it.
Incomplete: miss the 2D case.
Configuration menu - View commit details
-
Copy full SHA for bb97d01 - Browse repository at this point
Copy the full SHA bb97d01View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6a8ecf5 - Browse repository at this point
Copy the full SHA 6a8ecf5View commit details -
Optionally check for the presence of a parameter in a settings map.
Does not return an error if the parameter is not there, but if it is, checks that it is of the expected class.
Configuration menu - View commit details
-
Copy full SHA for c6d9b63 - Browse repository at this point
Copy the full SHA c6d9b63View commit details -
- Mouse wheel listener. - Method to dis/enable all sub component.
Configuration menu - View commit details
-
Copy full SHA for 3366157 - Browse repository at this point
Copy the full SHA 3366157View commit details -
Configuration menu - View commit details
-
Copy full SHA for 596c57e - Browse repository at this point
Copy the full SHA 596c57eView commit details -
Implement smoothing of images before segmentation.
Changes in the core methods in MaskUtils, SpotMeshUtils and SpotRoiUtils: - They take a smoothingScale double parameter. - If negative, it is ignored, and the segmentation (by mask, threshold and label image) processes directly on the input image. - Otherwise, the inputs are filtered by a Gaussian filter with sigmas derived from the specified scale. In 2D and 3D. Even for the bitmasks of the label image. This yields much smoother meshes and contour, of a smoothness controlled by the scale. - This is different from the 'simplify' flag, that prunes the contour and the mesh, but still 'sticks' to the shape in the input without filtering.
Configuration menu - View commit details
-
Copy full SHA for 1b27485 - Browse repository at this point
Copy the full SHA 1b27485View commit details -
Configuration menu - View commit details
-
Copy full SHA for 65789e2 - Browse repository at this point
Copy the full SHA 65789e2View commit details -
Configuration menu - View commit details
-
Copy full SHA for f79151e - Browse repository at this point
Copy the full SHA f79151eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 81d4650 - Browse repository at this point
Copy the full SHA 81d4650View commit details -
Configuration menu - View commit details
-
Copy full SHA for c78f094 - Browse repository at this point
Copy the full SHA c78f094View commit details -
Move the shader files to the resources folder.
So that they are properly included when compiling with maven.
Configuration menu - View commit details
-
Copy full SHA for 949ad61 - Browse repository at this point
Copy the full SHA 949ad61View commit details -
Configuration menu - View commit details
-
Copy full SHA for ca5790b - Browse repository at this point
Copy the full SHA ca5790bView commit details -
Configuration menu - View commit details
-
Copy full SHA for ef67b22 - Browse repository at this point
Copy the full SHA ef67b22View commit details -
Configuration menu - View commit details
-
Copy full SHA for e021eab - Browse repository at this point
Copy the full SHA e021eabView commit details -
Add a button to launch LabKit in the configure views panel of the wiz…
…ard. But because the other table, trackscheme and bvv buttons take too much place, we don't see it without resizing the window.
Configuration menu - View commit details
-
Copy full SHA for a2f899d - Browse repository at this point
Copy the full SHA a2f899dView commit details -
Rework and improve the import method of the spot editor.
- We don't depend on labels anymore, but directly operate and compare the index images (before modification and after). Because the index is directly related to the spot ID, we can get a match from previous spot to novel spot in an easy manner. - The spots from the edited version are created directly from the novel index image, using something adapted from the label image detector code, so again, just one pass. We use the fact that we can provide it with a 'quality' image, and read the index of the label image 'under' the spot and write it into its quality value. This way we can retrieve the id of the matching previous spot in an easy manner. - The price to pay for not working with labels anymore is that we don't have access to the label name, but that's life. - We make only one pass over the image to collect the ids of the spots that have been modified, instead of one pass per spot. Also, this pass is multithreaded (thanks LoopBuilder). - I have also learned that I should not use weakListeners() if I am doing something with threads inside the listener. Using listeners() instead works, but I do not know why the other one does not. Probably something arcane with Java WeakReferences being collected. - As a result of all this the performance is much better than before and the 'return to TrackMate' should happen without the user noticing the process.
Configuration menu - View commit details
-
Copy full SHA for 1d2f2f9 - Browse repository at this point
Copy the full SHA 1d2f2f9View commit details -
Try to fix LegacyService error.
This test fails because of the LegacyService, see the stack trace below. If I add the static { net.imagej.patcher.LegacyInjector.preinit(); } initializer block as suggested here: https://forum.image.sc/t/imagej-legacy-error/23013 then the test passes in Eclipse, but still fails in Maven. So this commit at least adds the initializer so that it works in Eclipse. Note that it still fails on Maven, and proably with deploy actions too. [INFO] Running fiji.plugin.trackmate.TrackMatePluginTest [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.787 s <<< FAILURE! -- in fiji.plugin.trackmate.TrackMatePluginTest [ERROR] fiji.plugin.trackmate.TrackMatePluginTest.testTrackMateRegistration -- Time elapsed: 0.787 s <<< ERROR! java.lang.ExceptionInInitializerError at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:250) at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:260) at org.junit.runners.BlockJUnit4ClassRunner$2.runReflectiveCall(BlockJUnit4ClassRunner.java:309) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) Caused by: java.lang.RuntimeException: Found incompatible ImageJ class at net.imagej.patcher.LegacyEnvironment.initialize(LegacyEnvironment.java:112) at net.imagej.patcher.LegacyEnvironment.applyPatches(LegacyEnvironment.java:494) at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:400) at net.imagej.patcher.LegacyInjector.preinit(LegacyInjector.java:379) at fiji.plugin.trackmate.TrackMatePluginTest.<clinit>(TrackMatePluginTest.java:40) ... 28 more Caused by: java.lang.RuntimeException: Cannot load class: ij.gui.ImageWindow (loader: sun.misc.Launcher$AppClassLoader@18b4aac2) It appears that this class was already defined in the class loader! Please make sure that you initialize the LegacyService before using any ImageJ 1.x class. You can do that by adding this static initializer: static { LegacyInjector.preinit(); } To debug this issue, start the JVM with the option: -javaagent:/Users/tinevez/.m2/repository/net/imagej/ij1-patcher/1.2.6/ij1-patcher-1.2.6.jar To enforce pre-initialization, start the JVM with the option: -javaagent:/Users/tinevez/.m2/repository/net/imagej/ij1-patcher/1.2.6/ij1-patcher-1.2.6.jar=init at net.imagej.patcher.CodeHacker.javaAgentHint(CodeHacker.java:826) at net.imagej.patcher.CodeHacker.loadClass(CodeHacker.java:805) at net.imagej.patcher.CodeHacker.loadClasses(CodeHacker.java:853) at net.imagej.patcher.LegacyInjector.injectHooks(LegacyInjector.java:114) at net.imagej.patcher.LegacyEnvironment.initialize(LegacyEnvironment.java:100) ... 32 more Caused by: java.lang.ClassFormatError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: "ij/gui/ImageWindow" at javassist.util.proxy.DefineClassHelper$Java7.defineClass(DefineClassHelper.java:182) at javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:260) at javassist.ClassPool.toClass(ClassPool.java:1240) at javassist.CtClass.toClass(CtClass.java:1392) at net.imagej.patcher.CodeHacker.loadClass(CodeHacker.java:799) ... 35 more
Configuration menu - View commit details
-
Copy full SHA for 8f1731a - Browse repository at this point
Copy the full SHA 8f1731aView commit details -
Fix reimporting labels with large IDs in 2D.
The re-importing of labels from Tabkit to TrackMate could fail for 2D images and labels with a large index. For instance, it failed consistently when trying to re-import labels with an index larger than 65643. This problem roots in the getSpots() method of LabkitImporter. It relies on a trick: We get the new label image, and create spots from this label image. But we want the new spots to keep track of the index in the label image they were generated from. For this, in 2D, we use the SpotRoiUtils.from2DLabelingWithRoi() method. These methods accept an image as last argument used to read a value in the label image within the spot, that is normally used for the quality value of the new spot. But the SpotRoiUtils.from2DLabelingWithRoi() method converted the extra image to ImagePlus (because I was lazy). So the label image was effectively cast on ushort for an IntegerType image, hence the problem with the max label being 65453. The solution is to rewrite the from2DLabelingWithRoi() so that it does not rely on converting to ImagePlus, but on good old iteration with imglib2.
Configuration menu - View commit details
-
Copy full SHA for 6acda1e - Browse repository at this point
Copy the full SHA 6acda1eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 408c55a - Browse repository at this point
Copy the full SHA 408c55aView commit details -
Moving the plugin implementation out of the test class and removing the legacy injector make the test pass in maven.
Configuration menu - View commit details
-
Copy full SHA for 4af96fe - Browse repository at this point
Copy the full SHA 4af96feView commit details -
Configuration menu - View commit details
-
Copy full SHA for 550acd2 - Browse repository at this point
Copy the full SHA 550acd2View commit details -
All labeling methods now use the double[] origin to reposition spots.
Instead of the interval, so that this is consistent across TrackMate.
Configuration menu - View commit details
-
Copy full SHA for eaacf0d - Browse repository at this point
Copy the full SHA eaacf0dView commit details -
Configuration menu - View commit details
-
Copy full SHA for ec838c8 - Browse repository at this point
Copy the full SHA ec838c8View commit details -
Configuration menu - View commit details
-
Copy full SHA for fad1317 - Browse repository at this point
Copy the full SHA fad1317View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e7f026 - Browse repository at this point
Copy the full SHA 1e7f026View commit details -
Keep imagej-legacy out of the dependency tree
This works around a test failure in TrackMatePluginTest caused by the original ImageJ classes being loaded too soon. There are other ways of working around this problem, such as creating a SciJava context more eagerly, but it's a distraction from the business of testing TrackMate, and anyway we don't need imagej-legacy on the classpath. The only reason labkit-ui has imagej-legacy as a dependency is for one line of code, which can be refactored to avoid it, so hopefully the exclusion will be able to disappear later after labkit-ui is updated.
Configuration menu - View commit details
-
Copy full SHA for 6096c52 - Browse repository at this point
Copy the full SHA 6096c52View commit details -
* Avoid SNAPSHOT versions. * Factor out version pins to properties. * Avoid jogamp *-main uber-JARs.
Configuration menu - View commit details
-
Copy full SHA for 3a84a1b - Browse repository at this point
Copy the full SHA 3a84a1bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4365b76 - Browse repository at this point
Copy the full SHA 4365b76View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7a6a291 - Browse repository at this point
Copy the full SHA 7a6a291View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4f55ac0 - Browse repository at this point
Copy the full SHA 4f55ac0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8c178da - Browse repository at this point
Copy the full SHA 8c178daView commit details -
Configuration menu - View commit details
-
Copy full SHA for 093f273 - Browse repository at this point
Copy the full SHA 093f273View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3431b7d - Browse repository at this point
Copy the full SHA 3431b7dView commit details -
Add required methods in SpotRoiUtils.
We want to retrieve spots as a map feom labels to corresponding spots.
Configuration menu - View commit details
-
Copy full SHA for b4ebc58 - Browse repository at this point
Copy the full SHA b4ebc58View commit details -
Configuration menu - View commit details
-
Copy full SHA for b2207c1 - Browse repository at this point
Copy the full SHA b2207c1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 19e981a - Browse repository at this point
Copy the full SHA 19e981aView commit details -
Fixed one more bug with the labkit importer.
When editing the whole movie, if the label of a new spot was using the label of an existing spot in another time-point, the existing one was removed. Because the new spot was identified as a modification of the existing one. The solution is to pass to the importer only the list of existing spots in the current time-frame.
Configuration menu - View commit details
-
Copy full SHA for ddd2520 - Browse repository at this point
Copy the full SHA ddd2520View commit details
Commits on Jul 23, 2024
-
Add a methods to return the map of label to spots in a labeling image.
Counterpart to the same one in SpotRoiUtils. Nota: the methods signature order should be harmonized between the two utility classes.
Configuration menu - View commit details
-
Copy full SHA for c2823c6 - Browse repository at this point
Copy the full SHA c2823c6View commit details -
Support editing in 3D in the LabKit editor.
There is one discrepancy with the 2D part, linked to TrackMate: In 2D, one connected components will give one spot, even if several connected components belong to the same label. In 3D, it is possible to have one spot made of several disconnected components. Will have to document this.
Configuration menu - View commit details
-
Copy full SHA for 9535eae - Browse repository at this point
Copy the full SHA 9535eaeView commit details -
Configuration menu - View commit details
-
Copy full SHA for cb3fc83 - Browse repository at this point
Copy the full SHA cb3fc83View commit details -
Add the smoothing scale param to the 2D labeling methods as well.
Not implemented yet, but at least symmetric with the 2D case.
Configuration menu - View commit details
-
Copy full SHA for 12dcb90 - Browse repository at this point
Copy the full SHA 12dcb90View commit details -
Configuration menu - View commit details
-
Copy full SHA for c075ffc - Browse repository at this point
Copy the full SHA c075ffcView commit details